查看: 1574|回复: 7

[已经解决] 状态剩余回合数值如何调用?

[复制链接]
梦石
0
星屑
216
在线时间
77 小时
注册时间
2008-4-24
回帖
139
发表于 2013-8-10 19:36:48 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 小空弟 于 2013-8-10 19:41 编辑

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

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

此外,在Sideview里面看到这么一段
[pre lang="ruby" line="1"]class Game_Battler
  #--------------------------------------------------------------------------
  # ● 判断状态还要持续几回合
  #     state_id : 状态ID
  #--------------------------------------------------------------------------
  def state_hold(state_id)
    if $data_states[state_id].hold_turn <= 0
      return nil
    end
    nnn = @state_turns[state_id]
    return nnn >= 0 ? nnn : 0
  end
end[/pre]

但state_hold这样用:damage = enemy.state_hold(22) * 100 或 damage = member.state_hold(22) * 100 也报错。到底这个Game_battler里面的state_hold(state_id)应该怎么用?
玩游戏总是不如做游戏的感觉好。所以喜欢做RPG
缅怀邓爷爷。
梦石
0
星屑
47
在线时间
976 小时
注册时间
2011-4-30
回帖
846
发表于 2013-8-10 21:44:56 | 显示全部楼层
小空弟 发表于 2013-8-10 21:07
多谢,但是依然出问题。
不是想知道意义吗?
直接上范例吧。修改处在脚本“系统设定”之1273行

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

搜索“sta17”

点评

没想到用了另一种思路。多谢!认可了。  发表于 2013-8-10 21:51

评分

参与人数 1星屑 +100 梦石 +1 收起 理由
Luciffer + 100 + 1 认可答案

查看全部评分

湿滑落式骑!
回复

使用道具 举报

梦石
0
星屑
47
在线时间
976 小时
注册时间
2011-4-30
回帖
846
发表于 2013-8-10 19:40:29 | 显示全部楼层
本帖最后由 羞射了 于 2013-8-10 19:43 编辑

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

PS:这个是Xp的,VX估计差不多吧,查了下VX是state_turns
湿滑落式骑!
回复

使用道具 举报

梦石
0
星屑
216
在线时间
77 小时
注册时间
2008-4-24
回帖
139
 楼主| 发表于 2013-8-10 19:46:12 | 显示全部楼层
本帖最后由 小空弟 于 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#
玩游戏总是不如做游戏的感觉好。所以喜欢做RPG
缅怀邓爷爷。
回复

使用道具 举报

梦石
0
星屑
47
在线时间
976 小时
注册时间
2011-4-30
回帖
846
发表于 2013-8-10 20:16:19 | 显示全部楼层
本帖最后由 羞射了 于 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
湿滑落式骑!
回复

使用道具 举报

梦石
0
星屑
216
在线时间
77 小时
注册时间
2008-4-24
回帖
139
 楼主| 发表于 2013-8-10 20:45:28 | 显示全部楼层
羞射了 发表于 2013-8-10 20:16
battler是指$game_party.actors[序号] 或 $game_troop.enemies[序号]

对class Battler 来说就是self ...


不在class Game_Battler里使用
在另外一个类里面,貌似没法调用。例如
[pre lang="ruby" line="1"]class State
  def slip_damage
    damage = self.state_turns[$data_states[162]]*100
end
end
class Game_Battler
   #.......
end[/pre]
仍然报错。那么不同的两个类,我该怎么调用呢?
玩游戏总是不如做游戏的感觉好。所以喜欢做RPG
缅怀邓爷爷。
回复

使用道具 举报

梦石
0
星屑
47
在线时间
976 小时
注册时间
2011-4-30
回帖
846
发表于 2013-8-10 20:53:46 | 显示全部楼层
本帖最后由 羞射了 于 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 读取你想要的那个数值,虽然我不知道这有什么意义……

个人觉得并不需要新建一个类。
湿滑落式骑!
回复

使用道具 举报

梦石
0
星屑
216
在线时间
77 小时
注册时间
2008-4-24
回帖
139
 楼主| 发表于 2013-8-10 21:07:48 | 显示全部楼层
本帖最后由 小空弟 于 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

玩游戏总是不如做游戏的感觉好。所以喜欢做RPG
缅怀邓爷爷。
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部