升级加点脚本

来源:互联网 发布:linux tmp 编辑:程序博客网 时间:2024/04/28 22:50

LEVEL_UP_POINT = 5  # 每升一级所增加的点数
LEVEL_UP_VARIABLE = 100  # 储存角色点数的变量编号与角色id编号的差值
#==============================================================================
# ■ Window_Lvup
#------------------------------------------------------------------------------
#  显示升级状态窗口。
#==============================================================================
class Window_Lvup < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     actor : 角色
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, 640, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_actor_graphic(@actor, 0, 0)
    self.contents.font.size = 16
    draw_actor_name(@actor, 80, 0)
    draw_actor_level(@actor, 80, 24)
    draw_actor_now_exp(@actor, 80, 48)
    draw_actor_next_exp(@actor, 80, 72)
    draw_actor_hp(@actor, 0, 126, 172)
    draw_actor_sp(@actor, 0, 152, 172)
    draw_actor_parameter(@actor, 0, 176, 0)
    draw_actor_parameter(@actor, 0, 200, 1)
    draw_actor_parameter(@actor, 0, 224, 2)
    draw_actor_parameter(@actor, 0, 248, 3)
    draw_actor_parameter(@actor, 0, 272, 4)
    draw_actor_parameter(@actor, 0, 296, 5)
    draw_actor_parameter(@actor, 0, 320, 6)
    draw_actor_parameter(@actor, 0, 344, 7)
    draw_actor_parameter(@actor, 0, 370, 8)
    draw_actor_parameter(@actor, 0, 394, 9)
    draw_actor_parameter(@actor, 0, 418, 10)
  end
end

#==============================================================================
# ■ Scene_Lvup
#------------------------------------------------------------------------------
#  处理升级画面的类。
#==============================================================================
class Scene_Lvup
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     actor_index : 角色索引
  #     menu_index : 选项起始位置
  #--------------------------------------------------------------------------
  def initialize(actor_index = 0 , menu_index = 0)
    @actor_index = actor_index
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
  def main
    s1 = "增加体质"
    s2 = "增加力量"
    s3 = "增加耐力"
    s4 = "增加魔力"
    s5 = "增加敏捷"
    s6 = "退出"
    #@actor = $game_party.actors[@actor_index]
    @actor = $game_actors[@actor_index]
    @lvup_window = Window_Lvup.new(@actor)
    @command = Window_Command.new(150,[s1,s2,s3,s4,s5,s6])
    @command.x = 340
    @command.y = 220
    @command.active = true
    Graphics.transition(40, "Graphics/Transitions/" + $data_system.battle_transition)
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      update
      # 如果切换画面就中断循环
      if $scene != self
        break
      end
    end
    # 准备过渡
    Graphics.freeze
    # 释放窗口
    @command.dispose
    @lvup_window.dispose
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    # 刷新窗口
    @command.update
    @lvup_window.update
    #=============================================================
    # 按下 B 键的情况下
    #=============================================================
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 切换到菜单画面
      $scene = Scene_Menu.new
      return
    end
    #=============================================================
    # 按下 C 键的情况下
    #=============================================================
    if Input.trigger?(Input::C)
      if $game_variables[@actor.id + LEVEL_UP_VARIABLE] > 0
        if @command.index == 0
          @actor.ti += 1
          @actor.hp = @actor.maxhp
          $game_variables[@actor.id + LEVEL_UP_VARIABLE] -= 1
          $game_system.se_play($data_system.decision_se)
          @lvup_window.refresh
        elsif @command.index == 1
          @actor.str += 1
          $game_variables[@actor.id + LEVEL_UP_VARIABLE] -= 1
          $game_system.se_play($data_system.decision_se)
          @lvup_window.refresh
        elsif @command.index == 2
          @actor.dex += 1
          $game_variables[@actor.id + LEVEL_UP_VARIABLE] -= 1
          $game_system.se_play($data_system.decision_se)
          @lvup_window.refresh
        elsif @command.index == 3
          @actor.int += 1
          @actor.sp = @actor.maxsp
          $game_variables[@actor.id + LEVEL_UP_VARIABLE] -= 1
          $game_system.se_play($data_system.decision_se)
          @lvup_window.refresh
        elsif @command.index == 4
          @actor.min += 1
          $game_variables[@actor.id + LEVEL_UP_VARIABLE] -= 1
          $game_system.se_play($data_system.decision_se)
          @lvup_window.refresh
        elsif @command.index == 5
          $game_system.se_play($data_system.decision_se)
          # 切换到菜单画面
          $scene = Scene_Menu.new
        end
      else
        if @command.index == 5
          $game_system.se_play($data_system.decision_se)
          # 切换到菜单画面
          $scene = Scene_Menu.new
        else
          $game_system.se_play($data_system.buzzer_se)
        end
      end
    end
  end
end

原创粉丝点击