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

Project1

 找回密码
 注册会员
搜索
查看: 2313|回复: 2
打印 上一主题 下一主题

[已经解决] 请问:睡眠状态不能战斗,这个程序设定在哪个地方?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4169
在线时间
258 小时
注册时间
2013-10-13
帖子
815
跳转到指定楼层
1
发表于 2021-3-15 15:08:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
请问:睡眠状态不能战斗,这个程序设定在哪个地方?
另外,
  def add_state(state_id, force = false)
    # 无法附加本状态的情况下
    unless state?(state_id)
      # 状态 ID 追加到 @states 序列中
      @states.push(state_id)
      # 选项 [当作 HP 0 的状态] 有效的情况下
      if $data_states[state_id].zero_hp
        # HP 更改为 0
        @hp = 0
      end
      # 所有状态的循环
      for i in 1...$data_states.size
        # 状态变化 (+) 处理
        if $data_states[state_id].plus_state_set.include?(i)
          add_state(i)
        end
        # 状态变化 (-) 处理
        if $data_states[state_id].minus_state_set.include?(i)
          remove_state(i)
        end
      end
    end
这么add_state能放套在方法add_state中?

Lv5.捕梦者

梦石
0
星屑
39016
在线时间
5717 小时
注册时间
2006-11-10
帖子
6619
2
发表于 2021-3-16 00:43:55 | 只看该作者
在 restriction  这里, 你按F1搜索restriction可以看到它的解释

全局搜索 restriction, 看看无法行动的状态(restriction == 4)是被怎么处理的, 应该能了解哪里限制了吧

至于add_state为什么可以套娃, 因为套娃并没有产生死循环, 因此就可以这样用

具体解释就是:  unless state?(state_id) 的条件限制了"附加上这个状态的时候就不会调用", 因此,无论怎么套娃, 哪怕让你把所有状态都套上,那也是有"尽头"的, 所以就不会出现堆栈过深的错误咯

点评

谢谢刀王!  发表于 2021-3-16 15:37

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 02:28

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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