Project1

标题: 我想问个问题 关于 分歧判断的问题 [打印本页]

作者: z2z4    时间: 2014-11-19 18:51
标题: 我想问个问题 关于 分歧判断的问题
本帖最后由 z2z4 于 2014-11-19 20:11 编辑

因为 我装了些 脚本 跟装备有关的

就是分歧的时候 判断 某个角色的武器  已经带上了 就是判断不到 就好像没带上一样

不知道 是什么方法被改了   我的装备内容 有 强化类的 会改变 武器名的

找到了这一段


RUBY 代码复制
  1. class RPG::Weapon < RPG::EquipItem
  2.   attr_accessor :weapon_id
  3.   #--------------------------------------------------------------------------
  4.   # ● 固有IDを設定する
  5.   #--------------------------------------------------------------------------
  6.   def identify_id=(value)
  7.     @weapon_id = value
  8.   end
  9.   #--------------------------------------------------------------------------
  10.   # ● 固有IDを取得(判定用)
  11.   #--------------------------------------------------------------------------
  12.   def self.identify_id
  13.     @weapon_id
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # ● 固有IDを取得
  17.   #--------------------------------------------------------------------------
  18.   def identify_id
  19.     return @weapon_id
  20.   end
  21.   #--------------------------------------------------------------------------
  22.   # ● 同ーオブジェクトか判定します。
  23.   #--------------------------------------------------------------------------
  24.   def equal?(obj)
  25.     return false unless obj.is_a?(RPG::Weapon)
  26.     if obj.weapon_id == nil
  27.       return obj.id == id
  28.     end
  29.     return obj.weapon_id == @weapon_id
  30.   end
  31. end

作者: taroxd    时间: 2014-11-19 19:24
本帖最后由 taroxd 于 2014-11-20 12:28 编辑

没记错的话,分歧判断是使用数据库的实例做判断的。你的强化武器脚本可能生成了一个新的,不同于数据库中的武器,因此导致判断失败。

但是,RPG::BaseItem 中有 id 属性。善用这个属性应该还是能够判断的。即:判断角色的武器中是否有id==指定的数的。

爪机环境,别问我怎么写。问 @VIPArcher 去。
作者: VIPArcher    时间: 2014-11-20 11:20
未测试
  1. class Game_Interpreter
  2.   def weapons_include?(actor_id,equip_id)
  3.     equips = []
  4.     $game_actors[actor_id].weapons.each {|equip| equips.push equip.id }
  5.     equips.include?(equip_id)
  6.   end
  7.   def armors_include?(actor_id,equip_id)
  8.     equips = []
  9.     $game_actors[actor_id].armors.each {|equip| equips.push equip.id }
  10.     equips.include?(equip_id)
  11.   end
  12. end
复制代码
事件脚本或者分歧条件-脚本输入 weapons_include?(角色ID,武器ID)判断该角色是否装备该武器
护具同理armors_include?(角色ID,防具ID)

作者: taroxd    时间: 2014-11-20 12:29
VIPArcher 发表于 2014-11-20 11:20
未测试事件脚本或者分歧条件-脚本输入 weapons_include?(角色ID,武器ID)判断该角色是否装备该武器
护具同理 ...

http://taroxd.github.io/rgss/Tar ... AE%BE%E7%BD%AE.html

说起来我在这里定义的 weapon? 似乎满足要求……
虽然参数名称是 weapon,但是传入 id 也是可以的
作者: z2z4    时间: 2014-11-21 19:42
标题: VIPArcher 大神 我在问个问题
他这个  是判断 这个装备的ID  判断不到  用你刚刚那个 怎么改进 这个脚本里

RUBY 代码复制
  1. def weapons_include?(actor_id,equip_id)
  2.     equips = []
  3.     $game_actors[actor_id].weapons.each {|equip| equips.push equip.identify_id }
  4.     equips.include?(equip_id)
  5.   end


RUBY 代码复制
  1. result = 0
  2.     equip_flag = []
  3.     for earray in RGSSLAB_049::IDS.keys
  4.       equip_flag.clear
  5.       for warray in earray[0]
  6.         if weapons.include?($data_weapons[warray])
  7.           equip_flag.push(true)
  8.         else
  9.           equip_flag.push(false)
  10.         end
  11.       end



作者: z2z4    时间: 2014-11-21 19:42
if weapons.include?($data_weapons[warray])  他这个  肯定判断不到 装备ID的
作者: taroxd    时间: 2014-11-21 20:10
z2z4 发表于 2014-11-21 19:42
if weapons.include?($data_weapons[warray])  他这个  肯定判断不到 装备ID的

weapons.any? {|equip| equips.identify_id == warray }
作者: z2z4    时间: 2014-11-21 20:14
  1.   #--------------------------------------------------------------------------
  2.   # ● 判断武器是否带上了
  3.   #--------------------------------------------------------------------------  
  4.   def weapons_include?(equip_id)
  5.     equips = []
  6.     weapons.each {|equip| equips.push equip.identify_id }
  7.     equips.include?(equip_id)
  8.   end
  9.   #--------------------------------------------------------------------------
  10.   # ● 判断防具是否带上了
  11.   #--------------------------------------------------------------------------  
  12.   def armors_include?(equip_id)
  13.     equips = []
  14.     armors.each {|equip| equips.push equip.identify_id }
  15.     equips.include?(equip_id)
  16.   end
复制代码

作者: z2z4    时间: 2014-11-21 20:14
  1. for equip_id in earray[0]
  2. if weapons_include?(equip_id)
复制代码
这样好像也行
作者: chd114    时间: 2014-11-22 07:26
你用到强化武器的话,你判断的只是个母本武器(数据库的设置的武器的ID),实际上同样的装备已经不是数据库里的那个ID了···




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