查看: 2520|回复: 4

[已经解决] 请问如何制作附加自身状态的武器?

[复制链接]
梦石
0
星屑
50
在线时间
1 小时
注册时间
2014-12-28
回帖
6
发表于 2014-12-28 14:17:44 | 显示全部楼层 |阅读模式

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

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

×
比如我编辑了一个狂热状态,增加速度,灵巧,然后在钢枪上状态变化栏中选择,结果这个狂热状态是加到目标上的……我想加到武器携带者身上。
谢谢
梦石
0
星屑
50
在线时间
1 小时
注册时间
2014-12-28
回帖
6
 楼主| 发表于 2014-12-28 14:19:08 | 显示全部楼层
还有请问状态变化中的加减号是什么意思

点评

'+'表示给目标对象附加该状态,附加成功与否还要看对方的状态有效度;'-'表示给目标对象移除该状态,一定会成功。  发表于 2014-12-28 19:10
回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2014-12-28 19:08:52 | 显示全部楼层
武器不同于防具,没有“自动状态”这一说,因此如果要让武器附加自动状态要想别的办法才行。
第一步,让武器也有自动状态这一属性,如果不能理解下面的脚本,最少要记住它的用法。
[pre lang="Ruby"]module RPG
  class Weapon
    alias rb_description_20141228 description
    def description
      return rb_description_20141228.gsub(/%autostate\[\d+\]/, "")
    end
    def auto_state_id
      /%autostate\[(\d+)\]/ =~ rb_description_20141228
      return $1.nil? ? 0 : $1.to_i
    end
  end
end[/pre]
这样我们就可以设置武器的自动状态ID了,那么如何设置呢?方法就是在武器的物品说明那一行加入'%autostate[状态ID]'这一行字即可,这里为了和防具统一,一个武器只能有一个自动状态。
第二步,方法接入
现在我们为武器定义了自动状态,但是方法还没有接入到脚本中。更改角色自动状态的脚本在Game_Actor下,因此我们要在这里改改。
在398行,也就是if id == 0 or $game_party.weapon_number(id) > 0这一句的后面,加上:
[pre lang="Ruby"]update_auto_state($data_weapons[@weapon_id], $data_weapons[id])[/pre]
然后在第73行,也就是刷新自动状态那里加入:
[pre lang="Ruby"]update_auto_state(nil, $data_weapons[@weapon_id])[/pre]
这样方法算是接入了,可以启动游戏看的效果。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
1 小时
注册时间
2014-12-28
回帖
6
 楼主| 发表于 2014-12-30 08:48:32 | 显示全部楼层
RyanBern 发表于 2014-12-28 19:08
武器不同于防具,没有“自动状态”这一说,因此如果要让武器附加自动状态要想别的办法才行。
第一步,让武 ...

谢谢指导,我用了设置公共事件附加状态也可以解决,但是需要触发,测试时不能用。
另外请问,武器状态和防具状态是有没有办法叠加起来?谢谢。

点评

如果用我提供的那个思路,应该可以叠加。  发表于 2014-12-30 12:47
回复

使用道具 举报

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
回帖
914
发表于 2014-12-30 12:19:08 | 显示全部楼层
本帖最后由 幻耶 于 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

点评

可怜的 self 君……  发表于 2014-12-30 17:19
囡囚囨囚囨図囨囧
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部