Project1

标题: 还是冷却脚本的问题··· [打印本页]

作者: chd114    时间: 2014-9-27 15:35
标题: 还是冷却脚本的问题···
本帖最后由 chd114 于 2014-9-26 22:47 编辑

RUBY 代码复制
  1. class RPG::Skill < RPG::UsableItem
  2.   def cool_time
  3.     @note.each_line{|line|
  4.     case line
  5.     when /\<(?:CD)[ ]*(\d+)\>/
  6.       return $1.to_i
  7.     when /\<(?:CDS)[ ]*(\d+)\>/
  8.       return $1.to_i
  9.     end
  10.     }
  11.     return 0
  12.   end
  13. end
  14. #==============================================================================
  15. # ■ Game_Actor
  16. #------------------------------------------------------------------------------
  17. #  管理角色的类。
  18. #   本类在 Game_Actors 类 ($game_actors) 的内部使用。
  19. #   具体使用请查看 Game_Party 类 ($game_party) 。
  20. #==============================================================================
  21.  
  22. class Game_Battler
  23.   #--------------------------------------------------------------------------
  24.   # ● 初始化对象
  25.   #--------------------------------------------------------------------------
  26.   alias skill_cool_time_initialize initialize
  27.   def initialize
  28.     skill_cool_time_initialize
  29.     @skill_cool_time=[]
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 应用技能/物品的效果★
  33.   #--------------------------------------------------------------------------
  34.   alias skill_cool_time_item_apply item_apply
  35.   def item_apply(user, item)
  36.     skill_cool_time_item_apply(user,item)
  37.     if item.is_a?(RPG::Skill)
  38.       user.set_cool_time(item)
  39.     end
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● 设置技能冷却时间
  43.   #--------------------------------------------------------------------------
  44.   def set_cool_time(skill)
  45.     if skill.cool_time
  46.       @skill_cool_time[skill.id] = skill.cool_time
  47.     end
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 回合结束处理
  51.   #--------------------------------------------------------------------------
  52.   alias skill_cool_time_on_turn_end on_turn_end
  53.   def on_turn_end
  54.     skill_cool_time_on_turn_end
  55.     @skill_cool_time.each_index{|index|
  56.     @skill_cool_time[index] -= 1 if @skill_cool_time[index] and @skill_cool_time[index] > 0
  57.     }
  58.   end
  59.   #--------------------------------------------------------------------------
  60.   # ● 技能是否正在冷却
  61.   #--------------------------------------------------------------------------
  62.   def skill_cooling?(skill)
  63.     @skill_cool_time[skill.id] and @skill_cool_time[skill.id] != 0
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   # ● 获取冷却回合
  67.   #--------------------------------------------------------------------------
  68.   def skill_cool_turn(skill)
  69.     @skill_cool_time[skill.id] ? @skill_cool_time[skill.id] : 0
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ★ 增加与减少冷却回合(作死用)
  73.   #--------------------------------------------------------------------------
  74.   def skill_cool_add(skill,y)
  75.     if y<0
  76.       if @skill_cool_time[skill.id]>-y
  77.         @skill_cool_time[skill.id]+=y
  78.       else
  79.         @skill_cool_time[skill.id]=0
  80.       end
  81.     else
  82.       @skill_cool_time[skill.id]+=y
  83.     end
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● 检查技能的使用条件
  87.   #--------------------------------------------------------------------------
  88.   alias skill_cool_time_skill_conditions_met? skill_conditions_met?
  89.   def skill_conditions_met?(skill)
  90.     skill_cool_time_skill_conditions_met?(skill) && !skill_cooling?(skill)
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ● 战斗结束处理
  94.   #--------------------------------------------------------------------------
  95.   alias skill_cool_time_on_battle_end on_battle_end
  96.   def on_battle_end
  97.     if $game_switches[2]!=true
  98.       skill_cool_time_on_battle_end
  99.       @skill_cool_time.clear
  100.     end
  101.   end
  102. end
  103. #==============================================================================
  104. # ■ Window_SkillList
  105. #------------------------------------------------------------------------------
  106. #  技能画面中,显示技能的窗口。
  107. #==============================================================================
  108.  
  109. class Window_SkillList < Window_Selectable
  110.   #--------------------------------------------------------------------------
  111.   # ● 绘制项目★
  112.   #--------------------------------------------------------------------------
  113.   alias skill_cool_time_draw_item draw_item
  114.   def draw_item(index)
  115.     skill = @data[index]
  116.     if skill
  117.       if @actor.skill_cooling?(skill)
  118.         rect = item_rect(index)
  119.         w = (skill.cool_time - @actor.skill_cool_turn(skill)).to_f / skill.cool_time
  120.         draw_gauge(rect.x,rect.y,rect.width,w,text_color(5),text_color(13))
  121.       end
  122.     end
  123.     skill_cool_time_draw_item(index)
  124.   end
  125. end


RUBY 代码复制
  1. skill_cool_time_on_battle_end
  2.       @skill_cool_time.clear
这次的问题就是关于战斗结束后立刻结束技能CD的情况(测试之后才发现这个结束技能CD是一次性结束全部)···找到了这两行脚本,然后希望能给备注加个标记,就像@迷糊的安安 的那个技能消耗物品那种,在备注里面的物品数量后面加上UN就会变成持有X号物品Y个就可以使用技能而不需要消耗Y个X号物品使得部分技能无法在战斗结束后立刻结束CD···

果断@invwindy ···




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