Project1

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

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

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

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

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

找到了这一段


[pre lang="ruby" line="1"]class RPG::Weapon < RPG::EquipItem
  attr_accessor :weapon_id
  #--------------------------------------------------------------------------
  # ● 固有IDを設定する
  #--------------------------------------------------------------------------
  def identify_id=(value)
    @weapon_id = value
  end
  #--------------------------------------------------------------------------
  # ● 固有IDを取得(判定用)
  #--------------------------------------------------------------------------
  def self.identify_id
    @weapon_id
  end
  #--------------------------------------------------------------------------
  # ● 固有IDを取得
  #--------------------------------------------------------------------------
  def identify_id
    return @weapon_id
  end
  #--------------------------------------------------------------------------
  # ● 同ーオブジェクトか判定します。
  #--------------------------------------------------------------------------
  def equal?(obj)
    return false unless obj.is_a?(RPG::Weapon)
    if obj.weapon_id == nil
      return obj.id == id
    end
    return obj.weapon_id == @weapon_id
  end
end[/pre]
作者: 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  判断不到  用你刚刚那个 怎么改进 这个脚本里

[pre lang="ruby" line="1"]  def weapons_include?(actor_id,equip_id)
    equips = []
    $game_actors[actor_id].weapons.each {|equip| equips.push equip.identify_id }
    equips.include?(equip_id)
  end[/pre]

[pre lang="ruby" line="1"]    result = 0
    equip_flag = []
    for earray in RGSSLAB_049::IDS.keys
      equip_flag.clear
      for warray in earray[0]
        if weapons.include?($data_weapons[warray])
          equip_flag.push(true)
        else
          equip_flag.push(false)
        end
      end[/pre]


作者: 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! X5.0