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

Project1

 找回密码
 注册会员
搜索
查看: 1767|回复: 9

[已经过期] 装备判定

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3121
在线时间
1860 小时
注册时间
2010-6-19
帖子
1204
发表于 2022-7-28 21:50:07 | 显示全部楼层 |阅读模式

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

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

x
在武器界面装备武器时出现脚本错误,来个大佬帮忙看看啥情况~


RUBY 代码复制
  1. # ■装备判断
  2. #==============================================================================
  3. # ■ Game_Actor
  4. #------------------------------------------------------------------------------
  5. #  处理角色的类。本类在 Game_Actors 类 ($game_actors)
  6. # 的内部使用、Game_Party 类请参考 ($game_party) 。
  7. #==============================================================================
  8.  
  9. # 判断能否装备。
  10. class Game_Actor < Game_Battler
  11.   def can_equip?(equip)
  12.     if equip.is_a?(RPG::Weapon)
  13.       set = $data_classes[@class_id].weapon_set
  14.     else
  15.       set = $data_classes[@class_id].armor_set
  16.     end
  17.     return set.include?(equip.id)
  18.   end
  19. end


1.png

Lv3.寻梦者

梦石
0
星屑
4436
在线时间
378 小时
注册时间
2012-11-8
帖子
272
发表于 2022-7-29 08:38:54 | 显示全部楼层
can_equip?这个方法你传入的是什么参数?传入的参数应该是RPG::Weapon或RPG::Armor的实例对象,比如$data_weapons[x]或$data_armors[y]之类的
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3121
在线时间
1860 小时
注册时间
2010-6-19
帖子
1204
 楼主| 发表于 2022-7-29 12:50:08 | 显示全部楼层
qq634488405 发表于 2022-7-29 08:38
can_equip?这个方法你传入的是什么参数?传入的参数应该是RPG::Weapon或RPG::Armor的实例对象,比如$data_w ...

不懂….我只知道在装备武器和装备栏的时候,里面是有一个空的格子,点空格子的时候,可以把身上的武器或装备拆下来,现在的问题是,一点那个空白的格子就弹出脚本错误

点评

空白肯定出错,判断下equip为nil就return true  发表于 2022-7-29 13:32
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
24047
在线时间
4983 小时
注册时间
2016-3-8
帖子
1613
发表于 2022-7-29 13:29:16 | 显示全部楼层
return true if equip.nil?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3121
在线时间
1860 小时
注册时间
2010-6-19
帖子
1204
 楼主| 发表于 2022-7-29 14:49:00 | 显示全部楼层
alexncf125 发表于 2022-7-29 13:29
return true if equip.nil?


# 判断能否装备。
class Game_Actor < Game_Battler
  def can_equip?(equip)
    if equip.is_a?(RPG::Weapon)
      set = $data_classes[@class_id].weapon_set
    else
      set = $data_classes[@class_id].armor_set
    end
#   return set.include?(equip.id)
    return true if equip.nil?
  end
end

这样直接装备都不能装了
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3121
在线时间
1860 小时
注册时间
2010-6-19
帖子
1204
 楼主| 发表于 2022-7-29 15:45:49 | 显示全部楼层
qq634488405 发表于 2022-7-29 08:38
can_equip?这个方法你传入的是什么参数?传入的参数应该是RPG::Weapon或RPG::Armor的实例对象,比如$data_w ...

我这么改目前好像没出错,应该没问题吧?

  1. # 判断能否装备。
  2. class Game_Actor < Game_Battler
  3.   def can_equip?(equip)
  4.     if equip.is_a?(RPG::Weapon)
  5.       set = $data_classes[@class_id].weapon_set
  6.     else
  7.       set = $data_classes[@class_id].armor_set
  8.     end
  9.    
  10.     # 装备为无时
  11.     if equip.nil?
  12.       # 返回
  13.       return true
  14.     else
  15.       # 穿戴装备
  16.       return set.include?(equip.id)
  17.     end
  18.    
  19.   end
  20. end
复制代码

点评

虽然采用了楼上提出的方法,不过位置可以直接放在def的下一行更直接。但是执行效果和你的是一样的,在这种小函数就不考虑效率问题了。  发表于 2022-7-30 00:26
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6483
在线时间
119 小时
注册时间
2020-1-8
帖子
234
发表于 2022-7-29 19:24:59 | 显示全部楼层
你发的帖子,好些都是一个问题……。
你可以使用RMXP原本的方法,Game_Actor#equippable?,这个方法就避免了item 为nil 报错的情况。

点评

因为要把工程移到Rgu的工程里,好多原先可以用的脚本都不兼容了要修改,自己也不太懂  发表于 2022-7-29 19:36
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-28 18:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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