Project1

标题: 脚本应该如何正确调用其他类的方法? [打印本页]

作者: 鹿羽1091    时间: 2022-8-5 19:41
标题: 脚本应该如何正确调用其他类的方法?
我现在初学脚本,想做一个当身上有特定状态的时候会禁止奔跑的脚本,目前已经写出来了,但是不知道为什么无法运行
如图

上面的是程序里在Game_BattlerBase类中用于判断是否有特定状态的原代码,我没有改,第二个是原有代码里一个引用了state?方法的代码。然后我改写了Game_CharacterBase里的real_move_speed方法,引入了状态识别的方法

结果在运行的时候弹出错误说没有在Game_BattlerBase类里找到state?方法
明明之前自己都调用了state?方法用来判断有没有无法战斗状态,现在又说没有这个方法,我想知道我写的程序问题出在哪里,应该怎么改
求大佬指教
作者: alexncf125    时间: 2022-8-5 20:15
  1. class Game_Player < Game_Character
  2.   alias :state_cannot_dash? :dash?
  3.   def dash?
  4.     return false if $game_party.members.any? {|actor| actor.state?(26)}
  5.     return state_cannot_dash?
  6.   end
  7. end
复制代码

作者: 鹿羽1091    时间: 2022-8-5 20:36
本帖最后由 鹿羽1091 于 2022-8-5 20:50 编辑
alexncf125 发表于 2022-8-5 20:15


谢谢,确实是我想要的效果
虽然我大概猜出原因了,但我还是想请教一下我的代码为什么会出现这样的结果
作者: alexncf125    时间: 2022-8-5 20:54
本帖最后由 alexncf125 于 2022-8-5 21:15 编辑

Game_BattlerBase是一个父类...

return false if $game_party.members.any? {|actor| actor.state?(26)}中,
actor是Game_Actor的实例, 而Game_Actor是Game_BattlerBase的子类(Game_Battler)的子类...
所以 实例actor 可以调用其父类的父类的state?方法

而且很明显, 用Game_BattlerBase.state?没有指明是在判定谁的状态
作者: 鹿羽1091    时间: 2022-8-5 21:57
alexncf125 发表于 2022-8-5 20:54
Game_BattlerBase是一个父类...

return false if $game_party.members.any? {|actor| actor.state?(26)}中 ...

基本明白了,谢谢大佬指点




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1