设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 11699|回复: 10
打印 上一主题 下一主题

[已发主站] [RMVA]装备等级、属性限制 Ver 1.2

[复制链接]

Lv4.逐梦者

梦石
0
星屑
6855
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

跳转到指定楼层
1
发表于 2012-7-24 00:56:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 后知后觉 于 2012-7-26 00:06 编辑


这个貌似已经有一个现成脚本了.只是好像有bug而作者又很久没上了.所以我就......

【更新日志】
Ver1.2 2012-7-25
  增加【装备画面光标在物品栏不符条件的装备上时,状态窗口也会显示角色在装上该装备后的属性】的功能
  增加【商店画面状态窗口显示因等级、属性限制而无法使用的装备对角色属性影响的信息】的功能
Ver1.1 2012-7-24
  增加【不够要求的装备在装备画面的物品栏也会显示.名字颜色减淡】的功能

【代码如下】

  1. #==============================================================================
  2. # ■ 装备等级、属性限制 作者:后知后觉 2012-7-25 Ver:1.2
  3. #--------------------------------------------------------------------------
  4. #    本脚本来自 www.66rpg.com 使用或转载请保留此信息。
  5. #--------------------------------------------------------------------------
  6. #~   说明:
  7. #~     限制的属性只会计算人物当前的基础属性.装备、状态增加的属性不会计算在内
  8. #~     默认给武器、护甲增加一行说明.说明内容是需要的各种限制信息
  9. #~     但默认帮助窗口一共只能显示2行内容.
  10. #~     因此你在数据库设置武器、护甲说明的时候
  11. #~     如果设置了2行内容.那么这新增加的第3行将无法显示出来.
  12. #~   设置:
  13. #~     在武器、护甲的备注里写入下面格式的内容表示要做要求.
  14. #~       <lv 数值>    等级限制
  15. #~       <mhp 数值>   最大HP限制
  16. #~       <mmp 数值>   最大MP限制
  17. #~       <atk 数值>   物理攻击限制
  18. #~       <pdf 数值>   物理防御限制
  19. #~       <mat 数值>   魔法攻击限制
  20. #~       <mdf 数值>   魔法防御限制
  21. #~       <agi 数值>   敏捷限制
  22. #~       <luk 数值>   幸运限制
  23. #==============================================================================
  24. #==============================================================================
  25. # ■ RPG::EquipItem
  26. #==============================================================================

  27. class RPG::EquipItem < RPG::BaseItem
  28.   ParamName = ["mhp","mmp","atk","pdf","mat","mdf","agi","luk"]
  29.   def description
  30.     return @hzhj_desc if @hzhj_desc
  31.     @hzhj_desc = @description.clone + "\n\\}"
  32.     hzhj = " "
  33.     if level_limit > 0
  34.       hzhj = "装备要求 "
  35.       @hzhj_desc += sprintf("%s%s:%d ", hzhj, Vocab.level, level_limit)
  36.     end
  37.     for i in 0..7
  38.       if params_limit(i) > 0
  39.         hzhj = "" if hzhj == "装备要求 "
  40.         hzhj = "装备要求 " if hzhj == " "
  41.         @hzhj_desc += sprintf("%s%s:%d ", hzhj, Vocab.param(i), params_limit(i))
  42.       end
  43.     end
  44.     @hzhj_desc
  45.   end
  46.   def level_limit
  47.     if /<lv (\d+?)>/i =~ @note
  48.       return $1.to_i
  49.     else
  50.       return 0
  51.     end
  52.   end
  53.   def params_limit(param_id)
  54.     if /<#{ParamName[param_id]} (\d+?)>/i =~ @note
  55.       return $1.to_i
  56.     else
  57.       return 0
  58.     end
  59.   end
  60. end
  61. #==============================================================================
  62. # ■ Game_BattlerBase
  63. #==============================================================================

  64. class Game_BattlerBase
  65.   #--------------------------------------------------------------------------
  66.   # ● 判定物品是否可以装备
  67.   #--------------------------------------------------------------------------
  68.   alias original_equippable? equippable?
  69.   def equippable?(item)
  70.     original_equippable?(item) && equip_params_ok?(item)
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 判定物品是否可以装备
  74.   #--------------------------------------------------------------------------
  75.   def equip_params_ok?(item)
  76.     return true if enemy?
  77.     return false if item.level_limit > level
  78.     for param_id in 0..7
  79.       value = param_base(param_id) + @param_plus[param_id]
  80.       value = [[value, param_max(param_id)].min, param_min(param_id)].max.to_i
  81.       return false if item.params_limit(param_id) > value
  82.     end
  83.     return true
  84.   end
  85. end
  86. #==============================================================================
  87. # ■ Game_Actor
  88. #==============================================================================

  89. class Game_Actor < Game_Battler
  90.   #--------------------------------------------------------------------------
  91.   # ● 强制更换装备
  92.   #--------------------------------------------------------------------------
  93.   def hzhj_force_change_equip(slot_id, item)
  94.     @equips[slot_id].object = item if original_equippable?(item) || !item
  95.   end
  96. end
  97. #==============================================================================
  98. # ■ Window_EquipItem
  99. #==============================================================================

  100. class Window_EquipItem < Window_ItemList
  101.   #--------------------------------------------------------------------------
  102.   # ● 查询使用列表中是否含有此物品
  103.   #--------------------------------------------------------------------------
  104.   def include?(item)
  105.     return true if item == nil
  106.     return false unless item.is_a?(RPG::EquipItem)
  107.     return false if @slot_id < 0
  108.     return false if item.etype_id != @actor.equip_slots[@slot_id]
  109.     return @actor.original_equippable?(item)
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # ● 查询此文件是否可以装备
  113.   #--------------------------------------------------------------------------
  114.   def enable?(item)
  115.     return true unless item
  116.     return @actor.equippable?(item)
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   # ● 更新帮助内容
  120.   #--------------------------------------------------------------------------
  121.   def update_help
  122.     super
  123.     if @actor && @status_window
  124.       temp_actor = Marshal.load(Marshal.dump(@actor))
  125.       temp_actor.hzhj_force_change_equip(@slot_id, item)
  126.       @status_window.set_temp_actor(temp_actor)
  127.     end
  128.   end
  129. end
  130. #==============================================================================
  131. # ■ Window_ShopStatus
  132. #==============================================================================




  133. class Window_ShopStatus < Window_Base
  134.   #--------------------------------------------------------------------------
  135.   # ● 绘制角色的装备信息
  136.   #--------------------------------------------------------------------------
  137.   def draw_actor_equip_info(x, y, actor)
  138.     enabled = actor.equippable?(@item)
  139.     change_color(normal_color, enabled)
  140.     draw_text(x, y, 112, line_height, actor.name)
  141.     item1 = current_equipped_item(actor, @item.etype_id)
  142.     draw_actor_param_change(x, y, actor, item1) if actor.original_equippable?(@item)
  143.     draw_item_name(item1, x, y + line_height, enabled)
  144.   end
  145. end

复制代码

评分

参与人数 6星屑 +524 +6 收起 理由
Shy07 + 6 主站收录
包子丶 + 14 最多了。。
sszny + 10 塞糖
hys111111 + 100
Luciffer + 200 精品文章
lsu666666 + 200 精品文章

查看全部评分












你知道得太多了

Lv2.观梦者

萌の包子

梦石
0
星屑
619
在线时间
155 小时
注册时间
2012-7-22
帖子
175
2
发表于 2012-7-24 09:15:45 | 只看该作者
可是条件不符合时它不会显示,,,可以改成条件不符时物品变黑吗?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6855
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

3
 楼主| 发表于 2012-7-24 12:16:59 | 只看该作者
包子丶 发表于 2012-7-24 09:15
可是条件不符合时它不会显示,,,可以改成条件不符时物品变黑吗?

再试试看.多多测试!

点评

原来已经有了啊。。  发表于 2012-7-25 12:19
谢谢,如果做好了给我发信息哦。  发表于 2012-7-25 12:18











你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
49 小时
注册时间
2012-7-10
帖子
5
4
发表于 2012-7-24 15:26:24 | 只看该作者
不能装备名字变淡的功能很实用,原来的就不显示,无法和身上的装备进行对比啊
回复 支持 0 反对 1

使用道具 举报

Lv2.观梦者

萌の包子

梦石
0
星屑
619
在线时间
155 小时
注册时间
2012-7-22
帖子
175
5
发表于 2012-7-25 12:20:40 | 只看该作者
貌似有一个BUG..就是物品颜色变淡的话选定了能力值没有显示变化。。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6855
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

6
 楼主| 发表于 2012-7-26 00:15:24 | 只看该作者
本帖最后由 后知后觉 于 2012-7-26 00:18 编辑
包子丶 发表于 2012-7-25 12:20
貌似有一个BUG..就是物品颜色变淡的话选定了能力值没有显示变化。。


因为无法装备.所以状态窗口显示的是该位置无装备时的角色属性.

点评

非常谢谢你!! VIP+9999999999999999999999  发表于 2012-7-27 22:10











你知道得太多了

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (超级版主)

嗜谎者

梦石
2
星屑
17337
在线时间
3909 小时
注册时间
2010-9-12
帖子
9654

极短24评委极短23评委极短22评委极短21评委开拓者

7
发表于 2012-7-26 00:26:03 | 只看该作者
刚好可以用在新玩的坑里面,后大人果然很触。。。

点评

↓ 可是我觉得VA的结构组织有点繁琐  发表于 2012-7-28 11:15
这个其实算是简单的了.关键是要会找位置和找准位置......RMVA默认脚本的结构很赞...  发表于 2012-7-28 09:22
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
396 小时
注册时间
2009-7-22
帖子
34
8
发表于 2012-7-26 09:47:09 | 只看该作者
本帖最后由 ANN244 于 2012-7-26 09:53 编辑

请问一下有办法兼容下面这个商店物品分类脚本吗?

http://www4.plala.or.jp/findias/ ... _ct_shop/index.html

这个分类脚本在使用时与装备等级、属性限制脚本出现冲突
是在增加了【商店画面状态窗口显示因等级、属性限制而无法使用的装备对角色属性影响的信息】的功能后才出现的问题

其他方面则暂时没有发现bug
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6855
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

9
 楼主| 发表于 2012-7-26 11:12:31 | 只看该作者
ANN244 发表于 2012-7-26 09:47
请问一下有办法兼容下面这个商店物品分类脚本吗?

http://www4.plala.or.jp/findias/codecrush/material/v ...

商店部分其实我就只改了一行.不过改的那个方法是重定义所以就冲突了...
把这个商店脚本放在装备限制脚本的下面.也就是更靠近 Main 脚本的位置.
就可以保证这个商店脚本功能完整正常运行.
如果想要在商店的状态窗口里增加这次我更新的商店的这个功能.
就找到这个商店脚本的第 1071 行左右能看到这样的一段内容.

  1.   #--------------------------------------------------------------------------
  2.   # ● アクターの能力値変化を描画
  3.   #--------------------------------------------------------------------------
  4.   def draw_actor_param_change(x, y, actor, item1, prm_id, enabled)
  5.     rect = Rect.new(x, y, contents.width - 4 - x, line_height)
  6.     change = @item.params[prm_id] - (item1 ? item1.params[prm_id] : 0)
  7.     change_color(system_color, enabled)
  8.     draw_text(rect, $data_system.terms.params[prm_id])
  9.     if enabled
  10.       change_color(param_change_color(change), enabled)
  11.       draw_text(rect, sprintf("%+d", change), 2)
  12.     else
  13.       change_color(normal_color, enabled)
  14.       draw_text(rect, "―", 2)
  15.     end
  16.   end
复制代码
在这一行
  def draw_actor_param_change(x, y, actor, item1, prm_id, enabled)
的下面加一行
    enabled = actor.original_equippable?(@item)
就可以了.
改完后就是这样.就只增加了这一行.别的都没动


  1.   #--------------------------------------------------------------------------
  2.   # ● アクターの能力値変化を描画
  3.   #--------------------------------------------------------------------------
  4.   def draw_actor_param_change(x, y, actor, item1, prm_id, enabled)
  5.     enabled = actor.original_equippable?(@item)
  6.     rect = Rect.new(x, y, contents.width - 4 - x, line_height)
  7.     change = @item.params[prm_id] - (item1 ? item1.params[prm_id] : 0)
  8.     change_color(system_color, enabled)
  9.     draw_text(rect, $data_system.terms.params[prm_id])
  10.     if enabled
  11.       change_color(param_change_color(change), enabled)
  12.       draw_text(rect, sprintf("%+d", change), 2)
  13.     else
  14.       change_color(normal_color, enabled)
  15.       draw_text(rect, "―", 2)
  16.     end
  17.   end
复制代码

点评

刚刚试了一下,成功了,非常感谢!麻烦到你真的不好意思  发表于 2012-7-26 11:22











你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
154
在线时间
664 小时
注册时间
2011-9-25
帖子
241
10
发表于 2012-7-29 15:58:59 | 只看该作者
这个装备限制脚本是我搜集的同类脚本的最好的~感谢LZ~
期待LZ出个负重脚本嘿嘿~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-21 17:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表