Project1

标题: 状态剩余回合数值如何调用? [打印本页]

作者: 小空弟    时间: 2013-8-10 19:36
标题: 状态剩余回合数值如何调用?
本帖最后由 小空弟 于 2013-8-10 19:41 编辑

无论XP、VX、VA,状态剩余回合数都是困扰我很久的问题

看在Game_Battler里面可以调用出一个状态剩余回合数值,貌似是@state_turns[state_id],不知对不对。
但是我想在class State里面调用这个值,就不知道怎么调出来,每次都报错。
即便使用了class State < Game_Battler 也不对。本人脚本还是凌乱。
请教应该怎么在另外一个类里面调用另外一个类的变量啊?不要用$了,那个乱得更厉害。

此外,在Sideview里面看到这么一段
RUBY 代码复制
  1. class Game_Battler
  2.   #--------------------------------------------------------------------------
  3.   # ● 判断状态还要持续几回合
  4.   #     state_id : 状态ID
  5.   #--------------------------------------------------------------------------
  6.   def state_hold(state_id)
  7.     if $data_states[state_id].hold_turn <= 0
  8.       return nil
  9.     end
  10.     nnn = @state_turns[state_id]
  11.     return nnn >= 0 ? nnn : 0
  12.   end
  13. end


但state_hold这样用:damage = enemy.state_hold(22) * 100 或 damage = member.state_hold(22) * 100 也报错。到底这个Game_battler里面的state_hold(state_id)应该怎么用?

作者: 羞射了    时间: 2013-8-10 19:40
本帖最后由 羞射了 于 2013-8-10 19:43 编辑

导入战斗者battler
battler.states_turn[$data_states[状态编号].id]

PS:这个是Xp的,VX估计差不多吧,查了下VX是state_turns
作者: 小空弟    时间: 2013-8-10 19:46
本帖最后由 小空弟 于 2013-8-10 19:49 编辑
羞射了 发表于 2013-8-10 19:40
导入战斗者battler
battler.states_turn[$data_states[状态编号].id]


damage = battler.state_turns[$data_states[162]] *100
报错
undefied local variables or method  "battler" for#
作者: 羞射了    时间: 2013-8-10 20:16
本帖最后由 羞射了 于 2013-8-10 20:17 编辑
小空弟 发表于 2013-8-10 19:46
damage = battler.state_turns[$data_states[162]] *100
报错
undefied local variables or method  "ba ...


battler是指$game_party.actors[序号] 或 $game_troop.enemies[序号]

对class Battler 来说就是self
作者: 小空弟    时间: 2013-8-10 20:45
羞射了 发表于 2013-8-10 20:16
battler是指$game_party.actors[序号] 或 $game_troop.enemies[序号]

对class Battler 来说就是self ...


不在class Game_Battler里使用
在另外一个类里面,貌似没法调用。例如
RUBY 代码复制
  1. class State
  2.   def slip_damage
  3.     damage = self.state_turns[$data_states[162]]*100
  4. end
  5. end
  6. class Game_Battler
  7.    #.......
  8. end

仍然报错。那么不同的两个类,我该怎么调用呢?
作者: 羞射了    时间: 2013-8-10 20:53
本帖最后由 羞射了 于 2013-8-10 21:01 编辑

class State
  def initialize(battler)
    @battler = battler
  end
  def slip_damage
    damage = @battler.state_turns[$data_states[162]]*100
   return damage
end
end

这样在@statez = State.new(导入battler) 之后,可以用 x = @statez. slip_damage 读取你想要的那个数值,虽然我不知道这有什么意义……

个人觉得并不需要新建一个类。
作者: 小空弟    时间: 2013-8-10 21:07
本帖最后由 小空弟 于 2013-8-10 21:15 编辑
羞射了 发表于 2013-8-10 20:53
class State
  def initialize(battler)
    @battler = battler


多谢,但是依然出问题。
不是想知道意义吗?
直接上范例吧。修改处在脚本“系统设定”之1273行

其实还有一点是
Game_Battler里面已经有了
def initialize
@state_turns = {}   
end
我只想直接调用Game_Battler里面的东西,但是在别的类里面想用还真是不会。

Project3.rar

571.1 KB, 下载次数: 28


作者: 羞射了    时间: 2013-8-10 21:44
小空弟 发表于 2013-8-10 21:07
多谢,但是依然出问题。
不是想知道意义吗?
直接上范例吧。修改处在脚本“系统设定”之1273行

Project3.zip (587.77 KB, 下载次数: 59)

搜索“sta17”




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