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

Project1

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

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

[复制链接]

Lv2.观梦者

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
帖子
1431
跳转到指定楼层
1
发表于 2014-11-19 18:51:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2014-11-19 19:24:59 手机端发表。 | 只看该作者
本帖最后由 taroxd 于 2014-11-20 12:28 编辑

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

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

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

点评

好复杂 0 0  发表于 2014-11-19 20:06
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

3
发表于 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 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

4
发表于 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 更推荐用这个。

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
帖子
1431
5
 楼主| 发表于 2014-11-21 19:42:03 | 只看该作者

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


点评

你把第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
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
帖子
1431
6
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

7
发表于 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 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
帖子
1431
8
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
帖子
1431
9
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 18:28

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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