查看: 2113|回复: 0

[已经过期] 还是冷却脚本的问题···

[复制链接]
梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2014-9-27 15:35:10 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 chd114 于 2014-9-26 22:47 编辑

[pre lang="ruby" line="1"]
class RPG::Skill < RPG::UsableItem
  def cool_time
    @note.each_line{|line|
    case line
    when /\<(?:CD)[ ]*(\d+)\>/
      return $1.to_i
    when /\<(?:CDS)[ ]*(\d+)\>/
      return $1.to_i
    end
    }
    return 0
  end
end
#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
#  管理角色的类。
#   本类在 Game_Actors 类 ($game_actors) 的内部使用。
#   具体使用请查看 Game_Party 类 ($game_party) 。
#==============================================================================

class Game_Battler
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #--------------------------------------------------------------------------
  alias skill_cool_time_initialize initialize
  def initialize
    skill_cool_time_initialize
    @skill_cool_time=[]
  end
  #--------------------------------------------------------------------------
  # ● 应用技能/物品的效果★
  #--------------------------------------------------------------------------
  alias skill_cool_time_item_apply item_apply
  def item_apply(user, item)
    skill_cool_time_item_apply(user,item)
    if item.is_a?(RPG::Skill)
      user.set_cool_time(item)
    end
  end
  #--------------------------------------------------------------------------
  # ● 设置技能冷却时间
  #--------------------------------------------------------------------------
  def set_cool_time(skill)
    if skill.cool_time
      @skill_cool_time[skill.id] = skill.cool_time
    end
  end
  #--------------------------------------------------------------------------
  # ● 回合结束处理
  #--------------------------------------------------------------------------
  alias skill_cool_time_on_turn_end on_turn_end
  def on_turn_end
    skill_cool_time_on_turn_end
    @skill_cool_time.each_index{|index|
    @skill_cool_time[index] -= 1 if @skill_cool_time[index] and @skill_cool_time[index] > 0
    }
  end
  #--------------------------------------------------------------------------
  # ● 技能是否正在冷却
  #--------------------------------------------------------------------------
  def skill_cooling?(skill)
    @skill_cool_time[skill.id] and @skill_cool_time[skill.id] != 0
  end
  #--------------------------------------------------------------------------
  # ● 获取冷却回合
  #--------------------------------------------------------------------------
  def skill_cool_turn(skill)
    @skill_cool_time[skill.id] ? @skill_cool_time[skill.id] : 0
  end
  #--------------------------------------------------------------------------
  # ★ 增加与减少冷却回合(作死用)
  #--------------------------------------------------------------------------
  def skill_cool_add(skill,y)
    if y<0
      if @skill_cool_time[skill.id]>-y
        @skill_cool_time[skill.id]+=y
      else
        @skill_cool_time[skill.id]=0
      end
    else
      @skill_cool_time[skill.id]+=y
    end
  end
  #--------------------------------------------------------------------------
  # ● 检查技能的使用条件
  #--------------------------------------------------------------------------
  alias skill_cool_time_skill_conditions_met? skill_conditions_met?
  def skill_conditions_met?(skill)
    skill_cool_time_skill_conditions_met?(skill) && !skill_cooling?(skill)
  end
  #--------------------------------------------------------------------------
  # ● 战斗结束处理
  #--------------------------------------------------------------------------
  alias skill_cool_time_on_battle_end on_battle_end
  def on_battle_end
    if $game_switches[2]!=true
      skill_cool_time_on_battle_end
      @skill_cool_time.clear
    end
  end
end
#==============================================================================
# ■ Window_SkillList
#------------------------------------------------------------------------------
#  技能画面中,显示技能的窗口。
#==============================================================================

class Window_SkillList < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 绘制项目★
  #--------------------------------------------------------------------------
  alias skill_cool_time_draw_item draw_item
  def draw_item(index)
    skill = @data[index]
    if skill
      if @actor.skill_cooling?(skill)
        rect = item_rect(index)
        w = (skill.cool_time - @actor.skill_cool_turn(skill)).to_f / skill.cool_time
        draw_gauge(rect.x,rect.y,rect.width,w,text_color(5),text_color(13))
      end
    end
    skill_cool_time_draw_item(index)
  end
end[/pre]

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

果断@invwindy ···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

在本版发帖返回顶部