Project1

标题: 请问如何制作附加自身状态的武器? [打印本页]

作者: 未来的勇气重生    时间: 2014-12-28 14:17
标题: 请问如何制作附加自身状态的武器?
比如我编辑了一个狂热状态,增加速度,灵巧,然后在钢枪上状态变化栏中选择,结果这个狂热状态是加到目标上的……我想加到武器携带者身上。
谢谢
作者: 未来的勇气重生    时间: 2014-12-28 14:19
还有请问状态变化中的加减号是什么意思
作者: RyanBern    时间: 2014-12-28 19:08
武器不同于防具,没有“自动状态”这一说,因此如果要让武器附加自动状态要想别的办法才行。
第一步,让武器也有自动状态这一属性,如果不能理解下面的脚本,最少要记住它的用法。
RUBY 代码复制
  1. module RPG
  2.   class Weapon
  3.     alias rb_description_20141228 description
  4.     def description
  5.       return rb_description_20141228.gsub(/%autostate\[\d+\]/, "")
  6.     end
  7.     def auto_state_id
  8.       /%autostate\[(\d+)\]/ =~ rb_description_20141228
  9.       return $1.nil? ? 0 : $1.to_i
  10.     end
  11.   end
  12. end

这样我们就可以设置武器的自动状态ID了,那么如何设置呢?方法就是在武器的物品说明那一行加入'%autostate[状态ID]'这一行字即可,这里为了和防具统一,一个武器只能有一个自动状态。
第二步,方法接入
现在我们为武器定义了自动状态,但是方法还没有接入到脚本中。更改角色自动状态的脚本在Game_Actor下,因此我们要在这里改改。
在398行,也就是if id == 0 or $game_party.weapon_number(id) > 0这一句的后面,加上:
RUBY 代码复制
  1. update_auto_state($data_weapons[@weapon_id], $data_weapons[id])

然后在第73行,也就是刷新自动状态那里加入:
RUBY 代码复制
  1. update_auto_state(nil, $data_weapons[@weapon_id])

这样方法算是接入了,可以启动游戏看的效果。
作者: 未来的勇气重生    时间: 2014-12-30 08:48
RyanBern 发表于 2014-12-28 19:08
武器不同于防具,没有“自动状态”这一说,因此如果要让武器附加自动状态要想别的办法才行。
第一步,让武 ...

谢谢指导,我用了设置公共事件附加状态也可以解决,但是需要触发,测试时不能用。
另外请问,武器状态和防具状态是有没有办法叠加起来?谢谢。
作者: 幻耶    时间: 2014-12-30 12:19
本帖最后由 幻耶 于 2014-12-30 12:20 编辑

大约在 Game_Actor 的402行添加红色部分,先得为武器勾选一个属性:例如,当武器附带6号属性时,就可以给装备者附加14号状态
  #--------------------------------------------------------------------------
  # ● 变更装备
  #     equip_type : 装备类型
  #     id    : 武器 or 防具 ID  (0 为解除装备)
  #--------------------------------------------------------------------------
  def equip(equip_type, id)
    case equip_type
    when 0  # 武器
      if id == 0 or $game_party.weapon_number(id) > 0
        $game_party.gain_weapon(@weapon_id, 1)
        @weapon_id = id
        $game_party.lose_weapon(id, 1)
        if $game_actors[@actor_id].weapon_id > 0 and $data_weapons[id].element_set.include?(6)
          $game_actors[@actor_id].add_state(14)
        else
          $game_actors[@actor_id].remove_state(14)
        end

      end




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