查看: 2170|回复: 2

[已经解决] 如何使某一类的状态仅能同时存在x个?

[复制链接]
梦石
0
星屑
50
在线时间
178 小时
注册时间
2011-2-6
回帖
41
发表于 2014-7-27 18:31:25 | 显示全部楼层 |阅读模式

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

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

×
恩,举个例子的话……
比如在游戏中考虑到角色要消化,所以每一种食物使用效果其实都是获得一个持续恢复的状态。但是又怕玩家狂吃海塞,所以限制一下这种食物状态同一时间只能存在三个,达到上限时如果有新的出现,则将最早出现的状态直接结束。
另外,游戏中也有如缓慢恢复魔法之类的持续恢复状态,与食物状态互不影响,不占用限额……所以最好不要判断特性,在备注里加个标签来判断可以么?

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-7-27 18:42:53 | 显示全部楼层
本帖最后由 taroxd 于 2014-7-27 19:44 编辑

[pre lang="ruby" line="1"]
class Game_Battler
  STATE_20140727 = {
    [4,5,6,7,8] => 3, # 4,5,6,7,8 号状态只能出现 3 个
    [9,10,11] => 2,
  }

  alias cs_20140727 clear_states
  def clear_states
    cs_20140727
    @states_by_time = []
  end

  alias as_20140727 add_state
  def add_state(state_id)
    @states_by_time.push(state_id)
    as_20140727(state_id)
    STATE_20140727.each do |list, max|
      if list.count {|id| state?(id) } > max
        remove_state(@states_by_time.find {|id| list.include?(id) })
      end
    end
  end

  alias rs_20140727 remove_state
  def remove_state(state_id)
    @states_by_time.delete(state_id)
    rs_20140727(state_id)
  end
end[/pre]
依旧未测试

点评

没有在第二次测试中发现问题。谢谢大大~  发表于 2014-7-27 20:18

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 (ΦωΦ)

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
178 小时
注册时间
2011-2-6
回帖
41
 楼主| 发表于 2014-7-27 19:37:11 | 显示全部楼层
taroxd 发表于 2014-7-27 18:42
class Game_Battler
  STATE_20140727 = {
    [4,5,6,7,8] => 3, # 4,5,6,7,8 号状态只能出现 3 个

利用道具附加状态来,在非战斗的情况测试了下。
貌似有角色被打上a,b状态后再打上c,a因为c而消失后在bc状态消失前不能再打上a的问题……(;´Д`)

点评

重新弄了一下,不过还是没有测试  发表于 2014-7-27 19:44
啊,抱歉,貌似按照状态优先级排序了- - 我去弄弄  发表于 2014-7-27 19:40
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部