查看: 810|回复: 4

有事请教

  [复制链接]
头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-1-20
回帖
18
发表于 2009-5-8 06:25:01 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
回帖
1912
发表于 2009-5-8 07:03:34 | 显示全部楼层
      # 所有状态的循环
      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
这一段是在对一个战斗者添加状态时执行的,for 循环遍历数据库中的所有状态,如果发现某状态是当前 add_state 将要添加的状态的附加状态,就再次调用 add_state 添加该状态;如果发现某状态是当前 add_state 将要添加的状态的解除状态,就调用 remove_state 解除该状态~可以看出这里 add_state 有一个递归调用的过程,附加状态添加后再次添加附加状态的附加状态,直到没有附加状态或者状态已经添加了(递归的出口)
    # 无法强制附加的情况下
    unless force
      # 已存在的状态循环
      for i in @states
        # 新的状态和已经存在的状态 (-) 同时包含的情况下、
        # 本状态不包含变化为新状态的状态变化 (-)
        # (ex : 战斗不能与附加中毒同时存在的场合)
        if $data_states.minus_state_set.include?(state_id) and
           not $data_states[state_id].minus_state_set.include?(i)
          # 过程结束
          return
        end
      end
    end
这一段是在状态不是被强制添加的情况下,遍历战斗者当前已有的状态,如果已有的状态中包含会解除即将要添加的状态的状态,或者当前要添加的状态会解除任何一个当前已有的状态,那么就直接结束整个添加状态的过程,因为不能让有解除关系的两个状态同时存在,比如战斗不能和其它状态不能同时存在~
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-1-20
回帖
18
 楼主| 发表于 2009-5-8 15:08:54 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
回帖
1912
发表于 2009-5-8 15:19:44 | 显示全部楼层
你打开数据库,切换到“状态”选项卡,右手边就可以设置附加/解除某状态~
意思就是说,当附加这个状态的时候自动附加/解除另一个状态

你看默认的战斗不能设置,除了战斗不能状态本身,其它状态全部都是减号,也就是当战斗不能状态被附加时自动解除其它所有状态~
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-1-20
回帖
18
 楼主| 发表于 2009-5-8 18:42:43 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部