查看: 1981|回复: 9

[已经解决] 我想问个问题 关于 分歧判断的问题

[复制链接]
梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
回帖
1111
发表于 2014-11-19 18:51:43 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 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]
RPG魔塔:http://rpg.blue/thread-254429-1-1.html
魔塔2:http://rpg.blue/thread-303601-1-1.html
魔塔3: 制作中...MV

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-11-19 19:24:59 来自手机 | 显示全部楼层
本帖最后由 taroxd 于 2014-11-20 12:28 编辑

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

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

爪机环境,别问我怎么写。问 @VIPArcher 去。

点评

好复杂 0 0  发表于 2014-11-19 20:06
回复

使用道具 举报

无限の剣制

梦石
0
星屑
10445
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2014-11-20 11:20:13 | 显示全部楼层
未测试
  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)

点评

原来 我找到答案了 原来 iddentify_id 不是装备ID  发表于 2014-11-24 19:59
上次没搞懂 数字写了 3 装备ID 是7 这样都能行 最后 我换了个 装备 就全不行了  发表于 2014-11-24 19:41
weapons.any? {|item| item.identify_id == warray } 好像没用 之前好像判断有误  发表于 2014-11-24 19:40
牛逼 搞定  发表于 2014-11-21 18:40
id 改成 identify_id 试试  发表于 2014-11-21 18:02

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-11-20 12:29:45 | 显示全部楼层
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 也是可以的

点评

要是传脚本生成的装备实例,用默认的就好了…… 另外我不知道那个脚本有没有动 Game_BaseItem  发表于 2014-11-20 17:15
应该也可以把那个脚本生成的装备实例传进来吧,不过改一改用id判断比较简单。  发表于 2014-11-20 13:30

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 更推荐用这个。

查看全部评分

回复

使用道具 举报

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
回帖
1111
 楼主| 发表于 2014-11-21 19:42:03 | 显示全部楼层

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]

点评

你把第6行改成这样试试吧weapons.any? {|item| item.identify_id == warray }  发表于 2014-11-21 20:12
RPG魔塔:http://rpg.blue/thread-254429-1-1.html
魔塔2:http://rpg.blue/thread-303601-1-1.html
魔塔3: 制作中...MV
回复

使用道具 举报

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
回帖
1111
 楼主| 发表于 2014-11-21 19:42:47 | 显示全部楼层
if weapons.include?($data_weapons[warray])  他这个  肯定判断不到 装备ID的

点评

那是 VIP 没写好。见楼下  发表于 2014-11-21 20:11
他这个是 事件脚本里调用的 脚本里的调用 我不会用  发表于 2014-11-21 20:10
这个就是默认的判断方法。改成 VIP 那样的新方法就好了  发表于 2014-11-21 20:07
我放到 新建的工程里 就会正常 因为 我装了 这个强化装备脚本的关系 所以判断不到  发表于 2014-11-21 20:07
这是个 装备套装 脚本 脚本很少 我发的这里 主要是 判断装备的 因为 装备带了 判断不到  发表于 2014-11-21 20:06
RPG魔塔:http://rpg.blue/thread-254429-1-1.html
魔塔2:http://rpg.blue/thread-303601-1-1.html
魔塔3: 制作中...MV
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-11-21 20:10:29 | 显示全部楼层
z2z4 发表于 2014-11-21 19:42
if weapons.include?($data_weapons[warray])  他这个  肯定判断不到 装备ID的

weapons.any? {|equip| equips.identify_id == warray }

点评

原来 我找到答案了 原来 iddentify_id 不是装备ID  发表于 2014-11-24 20:00
之前那个 好像判断的不是 装备ID 好像是装备类型的ID  发表于 2014-11-24 18:34
以前 我修改的 那个 判断好像不行 用了你这个 说 identify_id 未定义  发表于 2014-11-24 18:08
我这个写法 也可以 不过 也可以用吗?  发表于 2014-11-21 20:19
好像 我用了 其他 方法 也可以了  发表于 2014-11-21 20:14

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
回帖
1111
 楼主| 发表于 2014-11-21 20:14:32 | 显示全部楼层
  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
复制代码
RPG魔塔:http://rpg.blue/thread-254429-1-1.html
魔塔2:http://rpg.blue/thread-303601-1-1.html
魔塔3: 制作中...MV
回复

使用道具 举报

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
回帖
1111
 楼主| 发表于 2014-11-21 20:14:58 | 显示全部楼层
  1. for equip_id in earray[0]
  2. if weapons_include?(equip_id)
复制代码
这样好像也行
RPG魔塔:http://rpg.blue/thread-254429-1-1.html
魔塔2:http://rpg.blue/thread-303601-1-1.html
魔塔3: 制作中...MV
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2014-11-22 07:26:21 | 显示全部楼层
你用到强化武器的话,你判断的只是个母本武器(数据库的设置的武器的ID),实际上同样的装备已经不是数据库里的那个ID了···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部