Project1

标题: 如何使角色在更换装备的同时变更变量 [打印本页]

作者: coco1068    时间: 2017-5-21 21:25
标题: 如何使角色在更换装备的同时变更变量
要求是例如
主角穿上铜剑,变量1增加100点,脱下铜剑之后变量1减少100点。
要可以重复判断的。
之前试过用公共事件并行处理,但是只能处理一次,但是我可能会更换多次装备。
而且我可能有很多件装备,所以求教有没有什么方法可以达到。
作者: coco1068    时间: 2017-5-22 18:10
不知道怎么回复希望不会被认为灌水,差不多是负重系统之类的,可是我可能改变的是一些自己设置的变量,例如魅力,良知之类什么的。
作者: guoxiaomi    时间: 2017-5-22 18:45
本帖最后由 guoxiaomi 于 2017-5-22 21:11 编辑

修改interpreter里面对应的command


Game_Actor 里的第 390 - 432 行是关于更换装备的方法,其中 equip_type = 0~3 是武器防具的种类, id 是武器防具的编号。
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 变更装备
  3.   #     equip_type : 装备类型
  4.   #     id    : 武器 or 防具 ID  (0 为解除装备)
  5.   #--------------------------------------------------------------------------
  6.   def equip(equip_type, id)
  7.     case equip_type
  8.     when 0  # 武器
  9.       if id == 0 or $game_party.weapon_number(id) > 0
  10.         $game_party.gain_weapon(@weapon_id, 1)
  11.         @weapon_id = id
  12.         $game_party.lose_weapon(id, 1)
  13.       end
  14.     when 1  # 盾
  15.       if id == 0 or $game_party.armor_number(id) > 0
  16.         update_auto_state($data_armors[@armor1_id], $data_armors[id])
  17.         $game_party.gain_armor(@armor1_id, 1)
  18.         @armor1_id = id
  19.         $game_party.lose_armor(id, 1)
  20.       end
  21.     when 2  # 头
  22.       if id == 0 or $game_party.armor_number(id) > 0
  23.         update_auto_state($data_armors[@armor2_id], $data_armors[id])
  24.         $game_party.gain_armor(@armor2_id, 1)
  25.         @armor2_id = id
  26.         $game_party.lose_armor(id, 1)
  27.       end
  28.     when 3  # 身体
  29.       if id == 0 or $game_party.armor_number(id) > 0
  30.         update_auto_state($data_armors[@armor3_id], $data_armors[id])
  31.         $game_party.gain_armor(@armor3_id, 1)
  32.         @armor3_id = id
  33.         $game_party.lose_armor(id, 1)
  34.       end
  35.     when 4  # 装饰品
  36.       if id == 0 or $game_party.armor_number(id) > 0
  37.         update_auto_state($data_armors[@armor4_id], $data_armors[id])
  38.         $game_party.gain_armor(@armor4_id, 1)
  39.         @armor4_id = id
  40.         $game_party.lose_armor(id, 1)
  41.       end
  42.     end
  43.   end

接着后面写或者这样做:
RUBY 代码复制
  1. class Game_Actor < Game_Battler
  2.   alias _change_variables_equip equip
  3.   def equip(equip_type, id)
  4.     # 装备 10 号武器时
  5.     if (equip_type == 0 && id == 10)
  6.       $game_variables[1] += 100
  7.     end
  8.     # 脱下 10 号装备时
  9.     if @weapon_id == 10
  10.       if (equip_type == 0 && id != 10)
  11.         $game_variables[1] -= 100
  12.       end
  13.     end
  14.     # 执行原来更换装备的方法
  15.     _change_variables_equip(equip_type, id)
  16.   end
  17. end

作者: soulsaga    时间: 2017-5-22 19:03
用负重脚本然后把载重改成1号变量不就好了?
作者: cinderelmini    时间: 2017-5-22 19:42
XP做这种多方面的自定义属性的扩展大概只能把装备的名字或者说明搞了来做扩展,
但是非常麻烦而且容易和别的相关扩展系统冲突,
如果刚入坑而且这种想法还有其他方面的话建议用VA来填坑,起码有个万能的备注栏可以做各种扩展……
(说了半天等于没说……←_←
作者: soulsaga    时间: 2017-5-22 20:01
就算给你装脱装能增减变量但是不能控制符合要求才能装备上的话还是白搭啊..所以乖乖用负重脚本才是上策..
作者: coco1068    时间: 2017-5-25 13:20
soulsaga 发表于 2017-5-22 20:01
就算给你装脱装能增减变量但是不能控制符合要求才能装备上的话还是白搭啊..所以乖乖用负重脚本才是上策.. ...

然而_(:з」∠)_并没有找到XP的负重脚本,我只找到了VA和VX的。
作者: soulsaga    时间: 2017-5-25 14:15
本帖最后由 soulsaga 于 2017-5-25 14:25 编辑
coco1068 发表于 2017-5-25 13:20
然而_(:з」∠)_并没有找到XP的负重脚本,我只找到了VA和VX的。


http://ytomy.sakura.ne.jp/tkool/ ... p/equip_ext_xp.html
用这个脚本..把EP名改成魅力就行了吧..

自己研究..
作者: coco1068    时间: 2017-5-25 23:30
guoxiaomi 发表于 2017-5-22 18:45
修改interpreter里面对应的command


Game_Actor 里的第 390 - 432 行是关于更换装备的方法,其 ...

Q A Q用的时候报错了,是直接把第二段脚本插在第一段的后面么??
作者: guoxiaomi    时间: 2017-5-25 23:43
coco1068 发表于 2017-5-25 23:30
Q A Q用的时候报错了,是直接把第二段脚本插在第一段的后面么??

可能是我说的比较隐晦?第一段脚本就是原来游戏里的脚本,发出来只是告诉你这个功能要在哪里去改动,所以不用管。
作者: coco1068    时间: 2017-5-26 01:32
guoxiaomi 发表于 2017-5-25 23:43
可能是我说的比较隐晦?第一段脚本就是原来游戏里的脚本,发出来只是告诉你这个功能要在哪里去改动,所以 ...

然后如果我想添加下一件装备的时候是不是直接再复制一次代码然后修改编号就可以了?还是需要更改语句?
作者: guoxiaomi    时间: 2017-5-26 06:29
coco1068 发表于 2017-5-26 01:32
然后如果我想添加下一件装备的时候是不是直接再复制一次代码然后修改编号就可以了?还是需要更改语句? ...

复制4-13行的内容到15行的前面。
作者: coco1068    时间: 2017-5-26 14:01
guoxiaomi 发表于 2017-5-26 06:29
复制4-13行的内容到15行的前面。

完全解决了,真的十分感谢。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1