查看: 2557|回复: 4

[已经解决] 脚本应该如何正确调用其他类的方法?

[复制链接]
梦石
0
星屑
45
在线时间
3 小时
注册时间
2022-8-4
回帖
2
发表于 2022-8-5 19:41:48 | 显示全部楼层 |阅读模式

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

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

×
我现在初学脚本,想做一个当身上有特定状态的时候会禁止奔跑的脚本,目前已经写出来了,但是不知道为什么无法运行
如图
屏幕截图1.png
上面的是程序里在Game_BattlerBase类中用于判断是否有特定状态的原代码,我没有改,第二个是原有代码里一个引用了state?方法的代码。然后我改写了Game_CharacterBase里的real_move_speed方法,引入了状态识别的方法
屏幕截图2.png
结果在运行的时候弹出错误说没有在Game_BattlerBase类里找到state?方法
明明之前自己都调用了state?方法用来判断有没有无法战斗状态,现在又说没有这个方法,我想知道我写的程序问题出在哪里,应该怎么改
求大佬指教
梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2022-8-5 20:15:48 | 显示全部楼层
  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
复制代码
回复

使用道具 举报

梦石
0
星屑
45
在线时间
3 小时
注册时间
2022-8-4
回帖
2
 楼主| 发表于 2022-8-5 20:36:56 | 显示全部楼层
本帖最后由 鹿羽1091 于 2022-8-5 20:50 编辑


谢谢,确实是我想要的效果
虽然我大概猜出原因了,但我还是想请教一下我的代码为什么会出现这样的结果
回复

使用道具 举报

梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2022-8-5 20:54:42 | 显示全部楼层
本帖最后由 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?没有指明是在判定谁的状态
回复

使用道具 举报

梦石
0
星屑
45
在线时间
3 小时
注册时间
2022-8-4
回帖
2
 楼主| 发表于 2022-8-5 21:57:35 | 显示全部楼层
alexncf125 发表于 2022-8-5 20:54
Game_BattlerBase是一个父类...

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

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

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部