Project1

标题: 技能冷却 [打印本页]

作者: feizhaodan    时间: 2012-3-21 19:47
标题: 技能冷却
本帖最后由 feizhaodan 于 2012-3-22 12:44 编辑

在VA默认战斗系统上增加技能冷却时间系统。使用一个技能后在一定回合内不可以使用。
  1. class RPG::Skill < RPG::UsableItem
  2.   def cool_time
  3.     @note.each_line{|line|
  4.     case line
  5.     when /\<(?:冷却时间)[ ]*(\d+)\>/
  6.       return $1.to_i
  7.     end
  8.     }
  9.     return 0
  10.   end
  11. end
  12. #==============================================================================
  13. # ■ Game_Actor
  14. #------------------------------------------------------------------------------
  15. #  管理角色的类。
  16. #   本类在 Game_Actors 类 ($game_actors) 的内部使用。
  17. #   具体使用请查看 Game_Party 类 ($game_party) 。
  18. #==============================================================================

  19. class Game_Battler
  20.   #--------------------------------------------------------------------------
  21.   # ● 初始化对象
  22.   #--------------------------------------------------------------------------
  23.   alias skill_cool_time_initialize initialize
  24.   def initialize
  25.     skill_cool_time_initialize
  26.     @skill_cool_time=[]
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 应用技能/物品的效果
  30.   #--------------------------------------------------------------------------
  31.   alias skill_cool_time_item_apply item_apply
  32.   def item_apply(user, item)
  33.     skill_cool_time_item_apply(user,item)
  34.     if item.is_a?(RPG::Skill)
  35.       user.set_cool_time(item)
  36.     end
  37.   end
  38.   #--------------------------------------------------------------------------
  39.   # ● 设置技能冷却时间
  40.   #--------------------------------------------------------------------------
  41.   def set_cool_time(skill)
  42.     if skill.cool_time
  43.       @skill_cool_time[skill.id] = skill.cool_time
  44.     end
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ● 回合结束处理
  48.   #--------------------------------------------------------------------------
  49.   alias skill_cool_time_on_turn_end on_turn_end
  50.   def on_turn_end
  51.     skill_cool_time_on_turn_end
  52.     @skill_cool_time.each_index{|index|
  53.     @skill_cool_time[index] -= 1 if @skill_cool_time[index] and @skill_cool_time[index] > 0
  54.     }
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 技能是否正在冷却
  58.   #--------------------------------------------------------------------------
  59.   def skill_cooling?(skill)
  60.     @skill_cool_time[skill.id] and @skill_cool_time[skill.id] != 0
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ● 获取冷却回合
  64.   #--------------------------------------------------------------------------
  65.   def skill_cool_turn(skill)
  66.     @skill_cool_time[skill.id] ? @skill_cool_time[skill.id] : 0
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● 检查技能的使用条件
  70.   #--------------------------------------------------------------------------
  71.   alias skill_cool_time_skill_conditions_met? skill_conditions_met?
  72.   def skill_conditions_met?(skill)
  73.     skill_cool_time_skill_conditions_met?(skill) && !skill_cooling?(skill)
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● 战斗结束处理
  77.   #--------------------------------------------------------------------------
  78.   alias skill_cool_time_on_battle_end on_battle_end
  79.   def on_battle_end
  80.     skill_cool_time_on_battle_end
  81.     @skill_cool_time.clear
  82.   end
  83. end
  84. #==============================================================================
  85. # ■ Window_SkillList
  86. #------------------------------------------------------------------------------
  87. #  技能画面中,显示技能的窗口。
  88. #==============================================================================

  89. class Window_SkillList < Window_Selectable
  90.   #--------------------------------------------------------------------------
  91.   # ● 绘制项目
  92.   #--------------------------------------------------------------------------
  93.   alias skill_cool_time_draw_item draw_item
  94.   def draw_item(index)
  95.     skill = @data[index]
  96.     if skill
  97.       if @actor.skill_cooling?(skill)
  98.         rect = item_rect(index)
  99.         w = (skill.cool_time - @actor.skill_cool_turn(skill)).to_f / skill.cool_time
  100.         draw_gauge(rect.x,rect.y,rect.width,w,text_color(5),text_color(13))
  101.       end
  102.     end
  103.     skill_cool_time_draw_item(index)
  104.   end
  105. end
  106.       
复制代码
使用方法:
在技能的备注栏内输入
  1. <冷却时间 x>
复制代码
x改为冷却的回合数。
作者: hcm    时间: 2012-3-21 21:09
是个好东西,就是那个冷却条的位置有些碍眼,是在100多行那里改吧?
作者: MSQ    时间: 2012-3-22 12:25
看到了好东西~~=W=

话说这种RUBY代码如何复制?

点复制代码没效果,手动复制就全部变为一行了,囧~~
作者: load_ing    时间: 2012-3-22 13:57
能加入一个使用某技能或者物品可以立即结束CD的效果否
作者: tang19990919    时间: 2012-3-25 17:13
这个脚本好像应该和CP战斗脚本一起用效果好得多吧?
作者: kapoleo    时间: 2012-3-28 19:11
请问这个技能冷却可不可以将一个技能变成在一场战斗中只能使用一次?
作者: 冰舞蝶恋    时间: 2012-3-29 19:37
黑白。hi~
话说其实个人觉得回合制的话技能冷却很多余,即时的才好嘛
作者: 杂兵天下    时间: 2012-3-29 20:38
我能不能说一下,曾经被封号的@阿尔西斯的马甲发过这个东西?
作者: MSQ    时间: 2012-3-30 18:55
FZD君好人呀~~居然换了代码框~~QAQ~~感激不尽
作者: shalicheng2    时间: 2012-4-11 12:28
角本无力…我是直接用状态做的…一个技能附加一个禁用该技能X回合的事件状态…
作者: wangssthao    时间: 2012-4-11 12:36
回合制游戏 设置这个是不是有点~~~感觉怪怪的
作者: eric4514    时间: 2013-3-23 20:43
問什麼我既能冷卻時即能可以用?
腳本衝突?
作者: 暧昧的呼吸    时间: 2013-5-5 09:10
怎么没用啊%…………
作者: feizhaodan    时间: 2013-5-5 09:37
暧昧的呼吸 发表于 2013-5-5 09:10
怎么没用啊%…………

试着把这个脚本放到Main上面一个。可能和其他脚本发生冲突。
也记得往要有冷却的技能的备注栏里放
  1. <冷却时间 x>
复制代码
,x是冷却时间
作者: KB.Driver    时间: 2013-5-5 16:08
支持一下。
另外请教一下,看到别人的游戏中有些技能设计成为战斗中只能使用1次,请问是用什么方法做到的?
作者: 563548341    时间: 2013-7-22 11:54
为什么我的不行?没有冷却的。。。
作者: a1578032454    时间: 2013-7-24 16:23
有木有ARPG版 = =,相对回合制而言,ARPG更需要它.
作者: 屈风    时间: 2013-10-9 12:53
- -不知道该说啥 虽然RPG用不上 还是先下了 坐等将来有用到的那天
作者: 晴兰    时间: 2013-10-9 15:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: 我爱吴悦淇    时间: 2013-10-10 13:51
这CD脚本真不错,如果是XP,且加到xas就更好了
作者: 雷欧亦炫    时间: 2013-10-27 11:33
昨天又挖坟了,希望不要扣我分
有XAS系统的冷却吗?[VA]
作者: chd114    时间: 2014-9-20 22:20
  1. @skill_cool_time[skill.id] and @skill_cool_time[skill.id] != 0
复制代码
NoMeThodError是什么错误
作者: caixiaojun    时间: 2015-12-24 15:59
跪求清除冷却的代码怎么写
比如我用了10号技能,然后在10号技能触发时加一行代码,效果是把11号技能的冷却时间清0,怎么写?




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