Project1

标题: 如何使某一类的状态仅能同时存在x个? [打印本页]

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

RUBY 代码复制
  1. class Game_Battler
  2.   STATE_20140727 = {
  3.     [4,5,6,7,8] => 3, # 4,5,6,7,8 号状态只能出现 3 个
  4.     [9,10,11] => 2,
  5.   }
  6.  
  7.   alias cs_20140727 clear_states
  8.   def clear_states
  9.     cs_20140727
  10.     @states_by_time = []
  11.   end
  12.  
  13.   alias as_20140727 add_state
  14.   def add_state(state_id)
  15.     @states_by_time.push(state_id)
  16.     as_20140727(state_id)
  17.     STATE_20140727.each do |list, max|
  18.       if list.count {|id| state?(id) } > max
  19.         remove_state(@states_by_time.find {|id| list.include?(id) })
  20.       end
  21.     end
  22.   end
  23.  
  24.   alias rs_20140727 remove_state
  25.   def remove_state(state_id)
  26.     @states_by_time.delete(state_id)
  27.     rs_20140727(state_id)
  28.   end
  29. end

依旧未测试
作者: 888000    时间: 2014-7-27 19:37
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的问题……(;´Д`)





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1