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

Project1

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

[讨论] 和我一起读脚本--state_full?(state_id)

[复制链接]

Lv4.逐梦者

梦石
0
星屑
14116
在线时间
2142 小时
注册时间
2019-1-24
帖子
1121

R考场第七期纪念奖

跳转到指定楼层
1
发表于 2022-10-7 15:29:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 miantouchi 于 2022-10-7 15:36 编辑

很久没有发新帖子了,最近重拾XP部分,发现以前很多地方都忘记了。
所以,今天和大家一起读下大家常见的一段代码。感谢之前菜刀大大的指点。
以下内容大部分是菜刀大大的讲解加上个人在细节上面的完善,
算是给我们这些小白的学习笔记了。

首先贴上今天要研究的代码部分如下图。

我一直以来对于这一段算是一知半解,没有理解透彻。注释里面写的判断状态是否为full?
我开始从字面理解,判断状态是否为 full,状态是否是满的?
为了能详解了解,我们先看下这段代码里面一些重要组成部分。


我们发现,
@states是数组类型、
@states_turn是哈希表

hold_trun回合经过后 auto_release_prob % 的概率解除。
首先我们看下第一段代码
  def state?(state_id)
    # 如果符合被附加的状态的条件就返回 ture
    return @states.include?(state_id)
  end
从这里看出来传入了状态ID,返回@states里面是否包含了这个状态ID,包含则返回true反之则false。至此第一段解读完毕。

下面看下第二段代码如下:
@states_turn是哈希表格式,但是就是保存数据格式是什么样的还不是太清楚,下面我测试下看看。

我让怪物使用火炎,状态变化里面加上 毒、睡眠、呆滞这3种状态。

上图加入打印出内容。


由此可见,@states_turn是按 状态=>持续回合 这样的方式保存
那 @states_turn[state_id] == -1 在什么时候等于-1呢?
全局搜索下。

然后我们再看看force是什么东西,什么时候变成ture的。继续全局搜索。


我们发现add_state和remove_state这两个方法用到了force,最后发现用于装备自动状态处。
也就是说:当持续回合 == -1 的时候, 这个-1是用于装备赋予的状态, 也就是自动状态, 此时不会重复赋予, 因此不会中状态

下面看下第三段代码如下:
return @states_turn[state_id] == $data_states[state_id].hold_turn
持续回合 == 设定的回合数时, 返回 true, 也就是,不能中状态

最后总结下,3种情况。
1、当没有中该状态的时候, 返回false,  也就是, 此时就可以中状态
2、当持续回合 == -1 的时候, 这个-1是用于装备赋予的状态, 也就是自动状态, 此时不会重复赋予, 因此不会中状态
3、持续回合 == 设定的回合数时, 返回 true, 也就是,不能中状态
所以得到个结果,  什么情况下可以中状态,  没有中该状态的时候,  以及中了该状态, 但是不是刚刚中(也就是持续回
合不等于设定回合)的时候, 就可以中。

知道这些个人感觉还是有用的,最起码知道内部数据构造及原理,并且可以改造他,其他的大家发挥想象了。
预计下次还是读关于这部分的,个人感觉教程也不能写的太细,太细反而啰嗦,看得迷糊。




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

本版积分规则

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

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

GMT+8, 2024-4-28 23:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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