| 
嗯,功能如题目所说,其他的不多说了,直接放图放脚本。
x
加入我们,或者,欢迎回来。您需要 登录 才可以下载或查看,没有帐号?注册会员  希望收脚本的客官能留个评论。
 
 
   
 
 ### 跑步时长限制 by Calendar99#module CLD99  module DASH_TIME_LIMIT    # 跑步最长持续时间(单位:帧)    MAX_DASH_TIME = 90     # 显示体力    DISPLAY_TIME_LIMIT = true     # 体力较多时的颜色    COLOR1 = Color.new(0, 0, 255)     # 体力较少时的颜色    COLOR2 = Color.new(255, 0, 0)  endend class Game_Player  attr_reader :dash_time  alias initialize_for_dash_with_time_limit initialize  def initialize    initialize_for_dash_with_time_limit    @dash_time = CLD99::DASH_TIME_LIMIT::MAX_DASH_TIME  end  alias dash_without_time_limit dash?  def dash?    dash_without_time_limit && @dash_time > 0  end  alias update_for_dash_with_time_limit update  def update    update_for_dash_with_time_limit    if moving? && dash_without_time_limit      @dash_time = [@dash_time - 1, 0].max    else      @dash_time = [@dash_time + 1, CLD99::DASH_TIME_LIMIT::MAX_DASH_TIME].min    end  endend class Sprite_Character  alias update_for_dash_time update  def update    update_for_dash_time    return unless character.is_a?(Game_Player)    return unless CLD99::DASH_TIME_LIMIT::DISPLAY_TIME_LIMIT    if character.dash_time < CLD99::DASH_TIME_LIMIT::MAX_DASH_TIME      display_dash_time    else      hide_dash_time    end  end  def display_dash_time    if !@sprite_dash_time      @sprite_dash_time = Sprite.new      @sprite_dash_time.ox = 16      @sprite_dash_time.oy = 4    end    if !@sprite_dash_time.bitmap      @bmp_dash_time1 = Bitmap.new(32, 8)      @bmp_dash_time1.fill_rect(0, 0, 32, 8, CLD99::DASH_TIME_LIMIT::COLOR1)      @bmp_dash_time2 = Bitmap.new(32, 8)      @bmp_dash_time2.fill_rect(0, 0, 32, 8, CLD99::DASH_TIME_LIMIT::COLOR2)    end    @sprite_dash_time.x = self.x    @sprite_dash_time.y = self.y + 4    rate = character.dash_time / CLD99::DASH_TIME_LIMIT::MAX_DASH_TIME.to_f    @sprite_dash_time.bitmap = rate < 0.3 ? @bmp_dash_time2 : @bmp_dash_time1    @sprite_dash_time.src_rect.width = 32 * rate    @sprite_dash_time.visible = true  end  def hide_dash_time    return unless @sprite_dash_time    @sprite_dash_time.visible = false      end  alias dispose_for_dash_time dispose  def dispose    dispose_for_dash_time    @sprite_dash_time.dispose if @sprite_dash_time    @bmp_dash_time1.dispose if @bmp_dash_time1    @bmp_dash_time2.dispose if @bmp_dash_time2  endend
## 
# 跑步时长限制 by Calendar99 
# 
module CLD99 
  module DASH_TIME_LIMIT 
    # 跑步最长持续时间(单位:帧) 
    MAX_DASH_TIME = 90 
  
    # 显示体力 
    DISPLAY_TIME_LIMIT = true 
  
    # 体力较多时的颜色 
    COLOR1 = Color.new(0, 0, 255) 
  
    # 体力较少时的颜色 
    COLOR2 = Color.new(255, 0, 0) 
  end 
end 
  
class Game_Player 
  attr_reader :dash_time 
  alias initialize_for_dash_with_time_limit initialize 
  def initialize 
    initialize_for_dash_with_time_limit 
    @dash_time = CLD99::DASH_TIME_LIMIT::MAX_DASH_TIME 
  end 
  alias dash_without_time_limit dash? 
  def dash? 
    dash_without_time_limit && @dash_time > 0 
  end 
  alias update_for_dash_with_time_limit update 
  def update 
    update_for_dash_with_time_limit 
    if moving? && dash_without_time_limit 
      @dash_time = [@dash_time - 1, 0].max 
    else 
      @dash_time = [@dash_time + 1, CLD99::DASH_TIME_LIMIT::MAX_DASH_TIME].min 
    end 
  end 
end 
  
class Sprite_Character 
  alias update_for_dash_time update 
  def update 
    update_for_dash_time 
    return unless character.is_a?(Game_Player) 
    return unless CLD99::DASH_TIME_LIMIT::DISPLAY_TIME_LIMIT 
    if character.dash_time < CLD99::DASH_TIME_LIMIT::MAX_DASH_TIME 
      display_dash_time 
    else 
      hide_dash_time 
    end 
  end 
  def display_dash_time 
    if !@sprite_dash_time 
      @sprite_dash_time = Sprite.new 
      @sprite_dash_time.ox = 16 
      @sprite_dash_time.oy = 4 
    end 
    if !@sprite_dash_time.bitmap 
      @bmp_dash_time1 = Bitmap.new(32, 8) 
      @bmp_dash_time1.fill_rect(0, 0, 32, 8, CLD99::DASH_TIME_LIMIT::COLOR1) 
      @bmp_dash_time2 = Bitmap.new(32, 8) 
      @bmp_dash_time2.fill_rect(0, 0, 32, 8, CLD99::DASH_TIME_LIMIT::COLOR2) 
    end 
    @sprite_dash_time.x = self.x 
    @sprite_dash_time.y = self.y + 4 
    rate = character.dash_time / CLD99::DASH_TIME_LIMIT::MAX_DASH_TIME.to_f 
    @sprite_dash_time.bitmap = rate < 0.3 ? @bmp_dash_time2 : @bmp_dash_time1 
    @sprite_dash_time.src_rect.width = 32 * rate 
    @sprite_dash_time.visible = true 
  end 
  def hide_dash_time 
    return unless @sprite_dash_time 
    @sprite_dash_time.visible = false     
  end 
  alias dispose_for_dash_time dispose 
  def dispose 
    dispose_for_dash_time 
    @sprite_dash_time.dispose if @sprite_dash_time 
    @bmp_dash_time1.dispose if @bmp_dash_time1 
    @bmp_dash_time2.dispose if @bmp_dash_time2 
  end 
end 
 |