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

Project1

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

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

[复制链接]

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

1
发表于 2017-5-22 18:45:53 | 显示全部楼层
本帖最后由 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

评分

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

查看全部评分

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

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

2
发表于 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 网络脚本 *
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

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

复制4-13行的内容到15行的前面。
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-5 18:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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