Project1

标题: 豪华版技能冷却的运用不想用半逗号设置怎么改 [打印本页]

作者: 小坤酱    时间: 2011-3-7 19:03
标题: 豪华版技能冷却的运用不想用半逗号设置怎么改
↓这个脚本 因为我有弄一个连击脚本 使用方法也是在技能后边用半逗号然后+数字 。
这样一来就变成了连击了-_- 想改成半句号“.”来隔开 要怎么改嘞
  1. #=======================================================================
  2. #  豪华版技能冷却系统 By 绿发的Eclair
  3. #  使用方法:在特技名称后面用半角逗号分割,写上冷却回合数。
  4. #  比如 十字斩,10 就是特技 十字斩 冷却10个回合了。
  5. #  注意这个冷却是敌我通用的,不只是我方,敌人也不会使用冷却中的技能哦。
  6. #  不想让特技窗口中显示冷却回合数, $冷却时间显示 = false 就行了。
  7. #  冲突性:存在,但是除了RTAB外似乎整合难度不大。
  8. #=======================================================================
  9. $冷却时间显示 = true
  10. module RPG
  11.   class Skill
  12.   def cold
  13.     return @name.split(/,/)[1]
  14.   end
  15.   def name(actor = nil)
  16.     if $冷却时间显示 and actor != nil and actor.cold[@id] != nil
  17.       a = (@name.split(/,/)[0] == nil ? 0 : @name.split(/,/)[0])
  18.       return a + "(" + actor.cold[@id].to_s + "回合冷却)"
  19.     else
  20.       return (@name.split(/,/)[0] == nil ? 0 : @name.split(/,/)[0])
  21.     end
  22.   end
  23.   end
  24. end
  25. class Game_Battler
  26.   attr_accessor :cold
  27.   alias initialize_cold :initialize
  28.   def initialize
  29.     @cold = {}
  30.     initialize_cold
  31.   end
  32.   def set_cold(key,val)
  33.     return if @cold[key] == nil
  34.     @cold[key] += val
  35.     @cold.delete(key) if @cold[key] <= 0
  36.   end
  37.   alias skill_can_use_addcold :skill_can_use?
  38.   def skill_can_use?(skill_id)
  39.     return false if @cold[skill_id] != nil
  40.     skill_can_use_addcold(skill_id)
  41.   end
  42. end
  43. class Scene_Battle
  44.   alias make_skill_action_result_addcold :make_skill_action_result
  45.   def make_skill_action_result
  46.     make_skill_action_result_addcold
  47.     if @skill.cold.to_i != 0
  48.     @active_battler.cold[@skill.id] = @skill.cold.to_i
  49.     end
  50.   end
  51.   alias start_phase4_addcold :start_phase4
  52.   def start_phase4
  53.     for i in $game_party.actors + $game_troop.enemies
  54.       for j in i.cold.keys
  55.       i.set_cold(j,-1)
  56.       end  
  57.     end  
  58.     start_phase4_addcold
  59.   end   
  60. end  
  61. class Window_Skill < Window_Selectable
  62.     def draw_item(index)
  63.     skill = @data[index]
  64.     if @actor.skill_can_use?(skill.id)
  65.       self.contents.font.color = normal_color
  66.     else
  67.       self.contents.font.color = disabled_color
  68.     end
  69.     x = 4 + index % 2 * (288 + 32)
  70.     y = index / 2 * 32
  71.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  72.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  73.     bitmap = RPG::Cache.icon(skill.icon_name)
  74.     opacity = self.contents.font.color == normal_color ? 255 : 128
  75.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  76.     if $scene.is_a?(Scene_Battle)
  77.     self.contents.draw_text(x + 28, y, 204, 32, skill.name(@actor), 0)
  78.     else
  79.     self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
  80.     end
  81.     self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
  82.   end
  83. end

  84. class Game_Enemy < Game_Battler
  85.     def make_action
  86.     # 清除当前行动
  87.     self.current_action.clear
  88.     # 无法行动的情况
  89.     unless self.movable?
  90.       # 过程结束
  91.       return
  92.     end
  93.     # 抽取现在有效的行动
  94.     available_actions = []
  95.     rating_max = 0
  96.     for action in self.actions
  97.       # 确认回合条件
  98.       n = $game_temp.battle_turn
  99.       a = action.condition_turn_a
  100.       b = action.condition_turn_b
  101.       if (b == 0 and n != a) or
  102.          (b > 0 and (n < 1 or n < a or n % b != a % b))
  103.         next
  104.       end
  105.       # 确认 HP 条件
  106.       if self.hp * 100.0 / self.maxhp > action.condition_hp
  107.         next
  108.       end
  109.       if self.cold[action.skill_id] != nil
  110.         next
  111.       end
  112.       # 确认等级条件
  113.       if $game_party.max_level < action.condition_level
  114.         next
  115.       end
  116.       # 确认开关条件
  117.       switch_id = action.condition_switch_id
  118.       if switch_id > 0 and $game_switches[switch_id] == false
  119.         next
  120.       end
  121.       # 符合条件 : 添加本行动
  122.       available_actions.push(action)
  123.       if action.rating > rating_max
  124.         rating_max = action.rating
  125.       end
  126.     end
  127.     # 最大概率值作为 3 合计计算(0 除外)
  128.     ratings_total = 0
  129.     for action in available_actions
  130.       if action.rating > rating_max - 3
  131.         ratings_total += action.rating - (rating_max - 3)
  132.       end
  133.     end
  134.     # 概率合计不为 0 的情况下
  135.     if ratings_total > 0
  136.       # 生成随机数
  137.       value = rand(ratings_total)
  138.       # 设置对应生成随机数的当前行动
  139.       for action in available_actions
  140.         if action.rating > rating_max - 3
  141.           if value < action.rating - (rating_max - 3)
  142.             self.current_action.kind = action.kind
  143.             self.current_action.basic = action.basic
  144.             self.current_action.skill_id = action.skill_id
  145.             self.current_action.decide_random_target_for_enemy
  146.             return
  147.           else
  148.             value -= action.rating - (rating_max - 3)
  149.           end
  150.         end
  151.       end
  152.     end
  153.   end
  154. end
  155. #=======================================================================
  156. #豪华版技能冷却系统
  157. #=======================================================================


复制代码

作者: Soy_meng    时间: 2011-3-7 20:19
改.split(/,/)
作者: 小坤酱    时间: 2011-3-7 20:51
本帖最后由 小坤酱 于 2011-3-7 21:08 编辑

回复 Soy_meng 的帖子

噗 用ctrl+f搜(/./)  全部改了之后成这样了。
作者: 小传子    时间: 2011-3-9 16:36
@name.split(/■/)
- -,
有些字符是不能用的
作者: 小传子    时间: 2011-3-9 16:43


  1. #=====================================================================
  2. # ■ 技能冷却
  3. #——————————————————————————————
  4. #  实现技能有冷却时间
  5. #=====================================================================


  6. #方法:设置 技能ID + 100号状态,该状态为技能冷却时间
  7. #    使用技能后,会获得该状态,该状态若解除,技能可用。
  8. #    解除方法自定,若设置成若干回合100%解除则与常规冷却无异。
  9.    
  10. #注意:对于冷却一回合,到底是下一回合解除,还是隔一回合冷却
  11. #    不同战斗系统,有差异,需要测试后定着。
  12.    
  13. #    需要为该状态命名才能使冷却生效
  14. #    设置状态定量为0 ,以免会在状态栏显示出来
  15.    
  16. #     技能冷却对敌方也有效
  17. #可能的冲突,无。若冲突,请查看○标志的地方

  18. #
  19. #==============================================================================
  20. # ■ Scene_Battle (分割定义 4)
  21. #------------------------------------------------------------------------------
  22. #  处理战斗画面的类。
  23. #==============================================================================

  24. class Scene_Battle
  25.   #--------------------------------------------------------------------------
  26.   # ● 生成特技行动结果
  27.   #--------------------------------------------------------------------------
  28.   alias swtf_make_skill_action_result make_skill_action_result
  29.   def make_skill_action_result
  30.     swtf_make_skill_action_result
  31.     if $data_states[@skill.id+100] != nil and $data_states[@skill.id+100].name != ""
  32.       @active_battler.add_state(@skill.id + 100) #附加状态
  33.     end
  34.    
  35.   end#make_skill_action_result
  36.   
  37.   
  38. end#class Scene_Battle


  39. #==============================================================================
  40. # ■ Game_Battler (分割定义 3)
  41. #------------------------------------------------------------------------------
  42. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  43. # 超级类来使用。
  44. #==============================================================================

  45. class Game_Battler
  46.   #--------------------------------------------------------------------------
  47.   # ● 可以使用特技的判定
  48.   #     skill_id : 特技 ID
  49.   #--------------------------------------------------------------------------
  50.   alias swtf_skill_can_use? skill_can_use?
  51.   def skill_can_use?(skill_id)
  52.     if state?(skill_id+100)
  53.       return false
  54.     end
  55.    
  56.    
  57.       if self.hp > self.maxhp/2 and skill_id==92
  58. return false
  59. end


  60.    
  61.     if $data_skills[skill_id].sp_cost > self.sp
  62.       return false
  63.     end
  64.     # 战斗不能的情况下不能使用
  65.     if dead?
  66.       return false
  67.     end
  68.     # 沉默状态的情况下、物理特技以外的特技不能使用
  69.       if [0,10,25,50,80,90,100,150].include?($data_skills[skill_id].atk_f) and self.restriction == 1
  70.       return false
  71.     end
  72.    
  73.    
  74.    
  75.     swtf_skill_can_use?(skill_id)
  76.   end #skill_can_use?(skill_id)
  77.   
  78.   
  79.   
  80. end #class Game_Battler

复制代码
如果不想有其他冲突的话,
作者: 小坤酱    时间: 2011-3-9 18:06
回复 传说VS天涯 的帖子

这个脚本我有看过额  主要是我觉得比较麻烦- -
因为我冷却的 最多只有3个回合 能不能只弄3个状态就行的?
作者: IamI    时间: 2011-3-9 18:15
把所有split里的/,/换成你要的字符就行。建议用€这种罕见的符号,不要用.或者\,不然会被转义。

绿发的脚本么......怀念一下




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