Project1
标题: 我想问个问题 关于 分歧判断的问题 [打印本页]
作者: z2z4 时间: 2014-11-19 18:51
标题: 我想问个问题 关于 分歧判断的问题
本帖最后由 z2z4 于 2014-11-19 20:11 编辑
因为 我装了些 脚本 跟装备有关的
就是分歧的时候 判断 某个角色的武器 已经带上了 就是判断不到 就好像没带上一样
不知道 是什么方法被改了 我的装备内容 有 强化类的 会改变 武器名的
找到了这一段
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
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
作者: taroxd 时间: 2014-11-19 19:24
本帖最后由 taroxd 于 2014-11-20 12:28 编辑
没记错的话,分歧判断是使用数据库的实例做判断的。你的强化武器脚本可能生成了一个新的,不同于数据库中的武器,因此导致判断失败。
但是,RPG::BaseItem 中有 id 属性。善用这个属性应该还是能够判断的。即:判断角色的武器中是否有id==指定的数的。
爪机环境,别问我怎么写。问 @VIPArcher 去。
作者: VIPArcher 时间: 2014-11-20 11:20
未测试- class Game_Interpreter
- def weapons_include?(actor_id,equip_id)
- equips = []
- $game_actors[actor_id].weapons.each {|equip| equips.push equip.id }
- equips.include?(equip_id)
- end
- def armors_include?(actor_id,equip_id)
- equips = []
- $game_actors[actor_id].armors.each {|equip| equips.push equip.id }
- equips.include?(equip_id)
- end
- 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 判断不到 用你刚刚那个 怎么改进 这个脚本里
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
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
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
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
作者: 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
- #--------------------------------------------------------------------------
- # ● 判断武器是否带上了
- #--------------------------------------------------------------------------
- def weapons_include?(equip_id)
- equips = []
- weapons.each {|equip| equips.push equip.identify_id }
- equips.include?(equip_id)
- end
- #--------------------------------------------------------------------------
- # ● 判断防具是否带上了
- #--------------------------------------------------------------------------
- def armors_include?(equip_id)
- equips = []
- armors.each {|equip| equips.push equip.identify_id }
- equips.include?(equip_id)
- end
复制代码
作者: z2z4 时间: 2014-11-21 20:14
- for equip_id in earray[0]
- if weapons_include?(equip_id)
复制代码 这样好像也行
作者: chd114 时间: 2014-11-22 07:26
你用到强化武器的话,你判断的只是个母本武器(数据库的设置的武器的ID),实际上同样的装备已经不是数据库里的那个ID了···
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |