查看: 5299|回复: 16

[已经解决] 如何使角色在更换装备的同时变更变量

[复制链接]
梦石
0
星屑
482
在线时间
67 小时
注册时间
2016-7-21
回帖
10
发表于 2017-5-21 21:25:24 | 显示全部楼层 |阅读模式

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

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

×
要求是例如
主角穿上铜剑,变量1增加100点,脱下铜剑之后变量1减少100点。
要可以重复判断的。
之前试过用公共事件并行处理,但是只能处理一次,但是我可能会更换多次装备。
而且我可能有很多件装备,所以求教有没有什么方法可以达到。

点评

没理解错的话这是要做装备负重系统?  发表于 2017-5-22 13:48
梦石
0
星屑
482
在线时间
67 小时
注册时间
2016-7-21
回帖
10
 楼主| 发表于 2017-5-22 18:10:23 | 显示全部楼层
不知道怎么回复希望不会被认为灌水,差不多是负重系统之类的,可是我可能改变的是一些自己设置的变量,例如魅力,良知之类什么的。
回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2017-5-22 18:45:53 | 显示全部楼层
本帖最后由 guoxiaomi 于 2017-5-22 21:11 编辑

修改interpreter里面对应的command


Game_Actor 里的第 390 - 432 行是关于更换装备的方法,其中 equip_type = 0~3 是武器防具的种类, id 是武器防具的编号。
[pre lang="ruby" line="390"]  #--------------------------------------------------------------------------
  # ● 变更装备
  #     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)
      end
    when 1  # 盾
      if id == 0 or $game_party.armor_number(id) > 0
        update_auto_state($data_armors[@armor1_id], $data_armors[id])
        $game_party.gain_armor(@armor1_id, 1)
        @armor1_id = id
        $game_party.lose_armor(id, 1)
      end
    when 2  # 头
      if id == 0 or $game_party.armor_number(id) > 0
        update_auto_state($data_armors[@armor2_id], $data_armors[id])
        $game_party.gain_armor(@armor2_id, 1)
        @armor2_id = id
        $game_party.lose_armor(id, 1)
      end
    when 3  # 身体
      if id == 0 or $game_party.armor_number(id) > 0
        update_auto_state($data_armors[@armor3_id], $data_armors[id])
        $game_party.gain_armor(@armor3_id, 1)
        @armor3_id = id
        $game_party.lose_armor(id, 1)
      end
    when 4  # 装饰品
      if id == 0 or $game_party.armor_number(id) > 0
        update_auto_state($data_armors[@armor4_id], $data_armors[id])
        $game_party.gain_armor(@armor4_id, 1)
        @armor4_id = id
        $game_party.lose_armor(id, 1)
      end
    end
  end[/pre]
接着后面写或者这样做:
[pre lang="ruby"]class Game_Actor < Game_Battler
  alias _change_variables_equip equip
  def equip(equip_type, id)
    # 装备 10 号武器时
    if (equip_type == 0 && id == 10)
      $game_variables[1] += 100
    end
    # 脱下 10 号装备时
    if @weapon_id == 10
      if (equip_type == 0 && id != 10)
        $game_variables[1] -= 100
      end
    end
    # 执行原来更换装备的方法
    _change_variables_equip(equip_type, id)
  end
end[/pre]

评分

参与人数 1星屑 +50 梦石 +1 收起 理由
RyanBern + 50 + 1 6

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 1 0

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2017-5-22 19:03:58 | 显示全部楼层
用负重脚本然后把载重改成1号变量不就好了?
回复

使用道具 举报

梦石
0
星屑
9716
在线时间
2775 小时
注册时间
2008-9-5
回帖
3458

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

发表于 2017-5-22 19:42:00 | 显示全部楼层
XP做这种多方面的自定义属性的扩展大概只能把装备的名字或者说明搞了来做扩展,
但是非常麻烦而且容易和别的相关扩展系统冲突,
如果刚入坑而且这种想法还有其他方面的话建议用VA来填坑,起码有个万能的备注栏可以做各种扩展……
(说了半天等于没说……←_←
回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2017-5-22 20:01:22 | 显示全部楼层
就算给你装脱装能增减变量但是不能控制符合要求才能装备上的话还是白搭啊..所以乖乖用负重脚本才是上策..
回复

使用道具 举报

梦石
0
星屑
482
在线时间
67 小时
注册时间
2016-7-21
回帖
10
 楼主| 发表于 2017-5-25 13:20:23 | 显示全部楼层
soulsaga 发表于 2017-5-22 20:01
就算给你装脱装能增减变量但是不能控制符合要求才能装备上的话还是白搭啊..所以乖乖用负重脚本才是上策.. ...

然而_(:з」∠)_并没有找到XP的负重脚本,我只找到了VA和VX的。

点评

听人说VX的跟XP通用?不知是不是真的..  发表于 2017-5-25 13:21
回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2017-5-25 14:15:24 | 显示全部楼层
本帖最后由 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名改成魅力就行了吧..

自己研究..
回复

使用道具 举报

梦石
0
星屑
482
在线时间
67 小时
注册时间
2016-7-21
回帖
10
 楼主| 发表于 2017-5-25 23:30:56 | 显示全部楼层
guoxiaomi 发表于 2017-5-22 18:45
修改interpreter里面对应的command


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

Q A Q用的时候报错了,是直接把第二段脚本插在第一段的后面么??

点评

把第二段脚本插在main前。如果还有报错,把报错截图发上来吧  发表于 2017-5-25 23:41
回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2017-5-25 23:43:23 | 显示全部楼层
coco1068 发表于 2017-5-25 23:30
Q A Q用的时候报错了,是直接把第二段脚本插在第一段的后面么??

可能是我说的比较隐晦?第一段脚本就是原来游戏里的脚本,发出来只是告诉你这个功能要在哪里去改动,所以不用管。

点评

{:2_276:}其实是我自己理解错了,我以为是直接插入在原代码里面,原来是插在main前面。(这几天看代码看傻了),问题已经解决了,谢谢!  发表于 2017-5-26 00:22
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部