设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1471|回复: 1
打印 上一主题 下一主题

[已经解决] 音量问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
82 小时
注册时间
2010-6-22
帖子
37
跳转到指定楼层
1
发表于 2011-5-12 23:23:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
可以弄在进入菜单时BGM音量降为20%,在地图画面BGM音量还原为100%吗
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. class Scene_Save
  5.   #--------------------------------------------------------------------------
  6.   # ● 写入存档数据
  7.   #     file : 写入用文件对像 (已经打开)
  8.   #--------------------------------------------------------------------------
  9.   def write_save_data(file)
  10.     # 生成描绘存档文件用的角色图形
  11.     characters = []
  12.     for i in 0...[$game_party.actors.size,4].min
  13.       actor = $game_party.actors[i]
  14.       characters.push([actor.character_name, actor.character_hue])
  15.     end
  16.     # 写入描绘存档文件用的角色数据
  17.     Marshal.dump(characters, file)
  18.     # 写入测量游戏时间用画面计数
  19.     Marshal.dump(Graphics.frame_count, file)
  20.     # 增加 1 次存档次数
  21.     $game_system.save_count += 1
  22.     # 保存魔法编号
  23.     # (将编辑器保存的值以随机值替换)
  24.     $game_system.magic_number = $data_system.magic_number
  25.     # 写入各种游戏对像
  26.     Marshal.dump($game_system, file)
  27.     Marshal.dump($game_switches, file)
  28.     Marshal.dump($game_variables, file)
  29.     Marshal.dump($game_self_switches, file)
  30.     Marshal.dump($game_screen, file)
  31.     Marshal.dump($game_actors, file)
  32.     Marshal.dump($game_party, file)
  33.     Marshal.dump($game_troop, file)
  34.     Marshal.dump($game_map, file)
  35.     Marshal.dump($game_player, file)
  36.   end
  37. end

  38. class Scene_Battle
  39.   #--------------------------------------------------------------------------
  40.   # ● 设置物品或特技对像方的战斗者
  41.   #     scope : 特技或者是物品的范围
  42.   #--------------------------------------------------------------------------
  43.   def set_target_battlers(scope)
  44.     # 行动方的战斗者是敌人的情况下
  45.     if @active_battler.is_a?(Game_Enemy)
  46.       # 效果范围分支
  47.       case scope
  48.       when 1  # 敌单体
  49.         index = @active_battler.current_action.target_index
  50.         @target_battlers.push($game_party.smooth_target_actor(index))
  51.       when 2  # 敌全体
  52.         for actor in 0...[$game_party.actors.size,4].min
  53.           if $game_party.actors[actor].exist?
  54.             @target_battlers.push($game_party.actors[actor])
  55.           end
  56.         end
  57.       when 3  # 我方单体
  58.         index = @active_battler.current_action.target_index
  59.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  60.       when 4  # 我方全体
  61.         for enemy in $game_troop.enemies
  62.           if enemy.exist?
  63.             @target_battlers.push(enemy)
  64.           end
  65.         end
  66.       when 5  # 我方单体 (HP 0)
  67.         index = @active_battler.current_action.target_index
  68.         enemy = $game_troop.enemies[index]
  69.         if enemy != nil and enemy.hp0?
  70.           @target_battlers.push(enemy)
  71.         end
  72.       when 6  # 我方全体 (HP 0)
  73.         for enemy in $game_troop.enemies
  74.           if enemy != nil and enemy.hp0?
  75.             @target_battlers.push(enemy)
  76.           end
  77.         end
  78.       when 7  # 使用者
  79.         @target_battlers.push(@active_battler)
  80.       end
  81.     end
  82.     # 行动方的战斗者是角色的情况下
  83.     if @active_battler.is_a?(Game_Actor)
  84.       # 效果范围分支
  85.       case scope
  86.       when 1  # 敌单体
  87.         index = @active_battler.current_action.target_index
  88.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  89.       when 2  # 敌全体
  90.         for enemy in $game_troop.enemies
  91.           if enemy.exist?
  92.             @target_battlers.push(enemy)
  93.           end
  94.         end
  95.       when 3  # 我方单体
  96.         index = @active_battler.current_action.target_index
  97.         @target_battlers.push($game_party.smooth_target_actor(index))
  98.       when 4  # 我方全体
  99.         for actor in 0...[$game_party.actors.size,4].min
  100.           if $game_party.actors[actor].exist?
  101.             @target_battlers.push($game_party.actors[actor])
  102.           end
  103.         end
  104.       when 5  # 我方单体 (HP 0)
  105.         index = @active_battler.current_action.target_index
  106.         actor = $game_party.actors[index]
  107.         if actor != nil and actor.hp0?
  108.           @target_battlers.push(actor)
  109.         end
  110.       when 6  # 我方全体 (HP 0)
  111.         for actor in 0...[$game_party.actors.size,4].min
  112.           if $game_party.actors[actor] != nil and $game_party.actors[actor].hp0?
  113.             @target_battlers.push($game_party.actors[actor])
  114.           end
  115.         end
  116.       when 7  # 使用者
  117.         @target_battlers.push(@active_battler)
  118.       end
  119.     end
  120.   end  
  121.   #--------------------------------------------------------------------------
  122.   # ● 生成行动循序
  123.   #--------------------------------------------------------------------------
  124.   def make_action_orders
  125.     # 初始化序列 @action_battlers
  126.     @action_battlers = []
  127.     # 添加敌人到 @action_battlers 序列
  128.     for enemy in $game_troop.enemies
  129.       @action_battlers.push(enemy)
  130.     end
  131.     # 添加角色到 @action_battlers 序列
  132.     for actor in 0...[$game_party.actors.size,4].min
  133.       @action_battlers.push($game_party.actors[actor])
  134.     end
  135.     # 确定全体的行动速度
  136.     for battler in @action_battlers
  137.       battler.make_action_speed
  138.     end
  139.     # 按照行动速度从大到小排列
  140.     @action_battlers.sort! {|a,b|
  141.       b.current_action.speed - a.current_action.speed }
  142.   end
  143.   #--------------------------------------------------------------------------
  144.   # ● 开始结束战斗回合
  145.   #--------------------------------------------------------------------------
  146.   def start_phase5
  147.     # 转移到回合 5
  148.     @phase = 5
  149.     # 演奏战斗结束 ME
  150.     $game_system.me_play($game_system.battle_end_me)
  151.     # 还原为战斗开始前的 BGM
  152.     $game_system.bgm_play($game_temp.map_bgm)
  153.     # 初始化 EXP、金钱、宝物
  154.     exp = 0
  155.     gold = 0
  156.     treasures = []
  157.     # 循环
  158.     for enemy in $game_troop.enemies
  159.       # 敌人不是隐藏状态的情况下
  160.       unless enemy.hidden
  161.         # 获得 EXP、增加金钱
  162.         exp += enemy.exp
  163.         gold += enemy.gold
  164.         # 出现宝物判定
  165.         if rand(100) < enemy.treasure_prob
  166.           if enemy.item_id > 0
  167.             treasures.push($data_items[enemy.item_id])
  168.           end
  169.           if enemy.weapon_id > 0
  170.             treasures.push($data_weapons[enemy.weapon_id])
  171.           end
  172.           if enemy.armor_id > 0
  173.             treasures.push($data_armors[enemy.armor_id])
  174.           end
  175.         end
  176.       end
  177.     end
  178.     # 限制宝物数为 6 个
  179.     treasures = treasures[0..5]
  180.     # 获得 EXP
  181.     for i in 0...[$game_party.actors.size,4].min
  182.       actor = $game_party.actors[i]
  183.       if actor.cant_get_exp? == false
  184.         last_level = actor.level
  185.         actor.exp += exp
  186.         if actor.level > last_level
  187.           @status_window.level_up(i)
  188.         end
  189.       end
  190.     end
  191.     # 获得金钱
  192.     $game_party.gain_gold(gold)
  193.     # 获得宝物
  194.     for item in treasures
  195.       case item
  196.       when RPG::Item
  197.         $game_party.gain_item(item.id, 1)
  198.       when RPG::Weapon
  199.         $game_party.gain_weapon(item.id, 1)
  200.       when RPG::Armor
  201.         $game_party.gain_armor(item.id, 1)
  202.       end
  203.     end
  204.     # 生成战斗结果窗口
  205.     @result_window = Window_BattleResult.new(exp, gold, treasures)
  206.     # 设置等待计数
  207.     @phase5_wait_count = 100
  208.   end
  209.   #--------------------------------------------------------------------------
  210.   # ● 转到输入下一个角色的命令
  211.   #--------------------------------------------------------------------------
  212.   def phase3_next_actor
  213.     # 循环
  214.     begin
  215.       # 角色的明灭效果 OFF
  216.       if @active_battler != nil
  217.         @active_battler.blink = false
  218.       end
  219.       # 最后的角色的情况
  220.       if @actor_index == [$game_party.actors.size-1,3].min
  221.         # 开始主回合
  222.         start_phase4
  223.         return
  224.       end
  225.       # 推进角色索引
  226.       @actor_index += 1
  227.       @active_battler = $game_party.actors[@actor_index]
  228.       @active_battler.blink = true
  229.     # 如果角色是在无法接受指令的状态就再试
  230.     end until @active_battler.inputable?
  231.     # 设置角色的命令窗口
  232.     phase3_setup_command_window
  233.   end
  234. end

  235. class Arrow_Actor < Arrow_Base  
  236.   #--------------------------------------------------------------------------
  237.   # ● 刷新画面
  238.   #--------------------------------------------------------------------------
  239.   def update
  240.     super
  241.     # 光标右
  242.     if Input.repeat?(Input::RIGHT)
  243.       $game_system.se_play($data_system.cursor_se)
  244.       @index += 1
  245.       @index %= [$game_party.actors.size,4].min
  246.     end
  247.     # 光标左
  248.     if Input.repeat?(Input::LEFT)
  249.       $game_system.se_play($data_system.cursor_se)
  250.       @index += $game_party.actors.size - 1
  251.       @index %= [$game_party.actors.size,4].min
  252.     end
  253.     # 设置活动块坐标
  254.     if self.actor != nil
  255.       self.x = self.actor.screen_x
  256.       self.y = self.actor.screen_y
  257.     end
  258.   end
  259. end

  260. #==============================================================================
  261. # ■ Window_Target
  262. #------------------------------------------------------------------------------
  263. #  物品画面与特技画面的、使用对像角色选择窗口。
  264. #==============================================================================

  265. class Window_Target < Window_Selectable
  266. #--------------------------------------------------------------------------
  267. # ● 初始化对像
  268. #--------------------------------------------------------------------------
  269. def initialize
  270.    super(0, 0, 336, 480)
  271.    self.contents = Bitmap.new(width - 32, $game_party.actors.size*112)
  272.    self.z += 10
  273.    @item_max = 999#$game_party.actors.size
  274.    @top_row = 0
  275.    refresh
  276. end
  277. #--------------------------------------------------------------------------
  278. # ● 刷新
  279. #--------------------------------------------------------------------------
  280. def refresh
  281.    self.contents.clear
  282.    for i in 0...$game_party.actors.size
  283.      x = 4
  284.      y = i * 112
  285.      actor = $game_party.actors[i]
  286.      draw_actor_name(actor, x, y)
  287.      draw_actor_class(actor, x + 144, y)
  288.      draw_actor_level(actor, x + 8, y + 32)
  289.      draw_actor_state(actor, x + 8, y + 64)
  290.      draw_actor_hp(actor, x + 152, y + 32)
  291.      draw_actor_sp(actor, x + 152, y + 64)
  292.    end
  293. end  
  294. #--------------------------------------------------------------------------
  295. # ● 刷新光标矩形
  296. #--------------------------------------------------------------------------
  297. def update_cursor_rect   
  298.    # 光标位置 -1 为全选、-2 以下为单独选择 (使用者自身)
  299.    if @index <= -2
  300.      self.cursor_rect.set(0, (@index + 10) * 112, self.width - 32, 96)
  301.    elsif @index == -1
  302.      self.cursor_rect.set(0, 0, self.width - 32, @item_max * 112 - 20)
  303.    else
  304.      tpy = @index * 112 - self.oy
  305.      self.cursor_rect.set(0, tpy, self.width - 32, 96)
  306.      if @index < @top_row
  307.        @top_row = @index
  308.        self.oy = @top_row *112
  309.      end
  310.      if @index > @top_row+3
  311.        @top_row = @index-3
  312.        self.oy = @top_row *112
  313.      end
  314.    end   
  315. end
  316. end
  317. #==============================================================================
  318. # ■ Window_MenuStatus
  319. #------------------------------------------------------------------------------
  320. #  显示菜单画面和同伴状态的窗口。
  321. #==============================================================================

  322. class Window_MenuStatus < Window_Selectable
  323.   #--------------------------------------------------------------------------
  324.   # ● 初始化目标
  325.   #--------------------------------------------------------------------------
  326.   def initialize
  327.     super(0, 0, 480, 480)
  328.     self.contents = Bitmap.new(width - 32,  $game_party.actors.size*112)
  329.     refresh
  330.     @top_row = 0
  331.     self.active = false
  332.     self.index = -1
  333.   end
  334.   #--------------------------------------------------------------------------
  335.   # ● 刷新
  336.   #--------------------------------------------------------------------------
  337.   def refresh
  338.     self.contents.clear
  339.     @item_max = $game_party.actors.size
  340.     for i in 0...$game_party.actors.size
  341.       x = 64
  342.       y = i * 112
  343.       if i <=3
  344.         self.contents.font.color = Color.new(255,255,0,255)
  345.         self.contents.draw_text(x,y,340,32,"[出战]",2)
  346.         self.contents.font.color = normal_color
  347.       else
  348.         self.contents.font.color = Color.new(255,255,0,255)
  349.         self.contents.draw_text(x,y,340,32,"[出战]",2)
  350.         self.contents.font.color = normal_color
  351.       end      
  352.       actor = $game_party.actors[i]
  353.       draw_actor_graphic(actor, x - 40, y + 80)
  354.       draw_actor_name(actor, x, y)
  355.       draw_actor_class(actor, x + 144, y)
  356.       draw_actor_level(actor, x, y + 32)
  357.       draw_actor_state(actor, x + 90, y + 32)
  358.       draw_actor_exp(actor, x, y + 64)
  359.       draw_actor_hp(actor, x + 236, y + 32)
  360.       draw_actor_sp(actor, x + 236, y + 64)
  361.     end
  362.   end
  363.   #--------------------------------------------------------------------------
  364.   # ● 刷新光标矩形
  365.   #--------------------------------------------------------------------------
  366.   def update_cursor_rect
  367.     if @index < 0
  368.       self.cursor_rect.empty
  369.     else
  370.       tpy = @index * 112 - self.oy
  371.       self.cursor_rect.set(0, tpy, self.width - 32, 96)
  372.       if @index < @top_row
  373.         @top_row = @index
  374.         self.oy = @top_row *112
  375.       end
  376.       if @index > @top_row+3
  377.         @top_row = @index-3
  378.         self.oy = @top_row *112
  379.       end
  380.     end
  381.   end
  382. end

  383. class Game_Party
  384.   #--------------------------------------------------------------------------
  385.   # ● 全灭判定
  386.   #--------------------------------------------------------------------------
  387.   def all_dead?
  388.     # 同伴人数为 0 的情况下
  389.     if $game_party.actors.size == 0
  390.       return false
  391.     end
  392.     # 同伴中无人 HP 在 0 以上
  393.     for i in 0..3
  394.       if @actors[i] != nil and@actors[i].hp >0
  395.         return false
  396.       end
  397.     end
  398.     # 全灭
  399.     return true
  400.   end
  401.   #--------------------------------------------------------------------------
  402.   # ● 加入同伴
  403.   #     actor_id : 角色 ID
  404.   #--------------------------------------------------------------------------
  405.   def add_actor(actor_id)
  406.     # 获取角色
  407.     actor = $game_actors[actor_id]
  408.     # 同伴人数未满 4 人、本角色不在队伍中的情况下
  409.     if not @actors.include?(actor)
  410.       # 添加角色
  411.       @actors.push(actor)
  412.       # 还原主角
  413.       $game_player.refresh
  414.     end
  415.   end
  416. end

  417. #==============================================================================
  418. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  419. #==============================================================================


  420. class Scene_Menu
  421. # --------------------------------
  422.   def initialize(menu_index = 0)
  423.     @menu_index = menu_index
  424.     @changer = 0
  425.     @where = 0
  426.     @checker = 0


  427.   end
  428. # --------------------------------
  429.   def main
  430.     s1 = $data_system.words.item
  431.     s2 = $data_system.words.skill
  432.     s3 = $data_system.words.equip
  433.     s4 = "人物状态"
  434.     s5 = "储存进度"
  435.     s6 = "离开游戏"
  436.     s7 = "队形整理"
  437.     s8 = "任务记录"
  438.     s9 = "冒险记录"
  439.     s10= "升级加点"
  440.     s11= "卡片附魔"
  441.     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7, s8, s9,s10,s11])
  442.     @command_window.index = @menu_index
  443.     if $game_party.actors.size == 0
  444.       @command_window.disable_item(0)
  445.       @command_window.disable_item(1)
  446.       @command_window.disable_item(2)
  447.       @command_window.disable_item(3)
  448.     end
  449.     if $game_system.save_disabled
  450.       @command_window.disable_item(4)
  451.     end
  452.     if $game_party.actors.size == 1
  453.       @command_window.disable_item(6)
  454.     end
  455.     @playtime_window = Window_Gold1.new
  456.     @playtime_window.x = 0
  457.     @playtime_window.y = 380
  458.     @gold_window = Window_Gold.new
  459.     @gold_window.x = 0
  460.     @gold_window.y = 416
  461.     @status_window = Window_MenuStatus.new
  462.     @status_window.x = 160
  463.     @status_window.y = 0
  464.     Graphics.transition
  465.     loop do
  466.       Graphics.update
  467.       Input.update
  468.       update
  469.       if $scene != self
  470.         break
  471.       end
  472.     end
  473.     Graphics.freeze
  474.     @command_window.dispose
  475.     @playtime_window.dispose
  476.     @gold_window.dispose
  477.     @status_window.dispose
  478.   end
  479. # --------------------------------
  480.   def update
  481.     @command_window.update
  482.     @playtime_window.update
  483.     @gold_window.update
  484.     @status_window.update
  485.     if @command_window.active
  486.       update_command
  487.       return
  488.     end
  489.     if @status_window.active
  490.       update_status
  491.       return
  492.     end
  493.   end
  494. # --------------------------------
  495.   def update_command
  496.     if Input.trigger?(Input::B)
  497.       $game_system.se_play($data_system.cancel_se)
  498.       
  499.       $scene = Scene_Map.new
  500.       return
  501.     end
  502.     if Input.trigger?(Input::C)
  503.       if $game_party.actors.size == 0 and @command_window.index < 4
  504.         $game_system.se_play($data_system.buzzer_se)
  505.         return
  506.       end
  507.       if $game_party.actors.size == 1 and @command_window.index ==6
  508.         $game_system.se_play($data_system.buzzer_se)
  509.         return
  510.       end
  511.       case @command_window.index
  512.       when 0
  513.         $game_system.se_play($data_system.decision_se)
  514.         $scene = Scene_Item.new
  515.       when 1
  516.         $game_system.se_play($data_system.decision_se)
  517.         @command_window.active = false
  518.         @status_window.active = true
  519.         @status_window.index = 0
  520.       when 2
  521.         $game_system.se_play($data_system.decision_se)
  522.         @command_window.active = false
  523.         @status_window.active = true
  524.         @status_window.index = 0
  525.       when 3
  526.         $game_system.se_play($data_system.decision_se)
  527.         @command_window.active = false
  528.         @status_window.active = true
  529.         @status_window.index = 0
  530.       when 4
  531.         if $game_system.save_disabled
  532.           $game_system.se_play($data_system.buzzer_se)
  533.           return
  534.         end
  535.         $game_system.se_play($data_system.decision_se)
  536.         $scene = Scene_Save.new
  537.       when 5
  538.      $game_system.se_play($data_system.decision_se)
  539.         $scene = Scene_End.new
  540.       when 6
  541.         $game_system.se_play($data_system.decision_se)
  542.         @checker = 0
  543.         @command_window.active = false
  544.         @status_window.active = true
  545.         @status_window.index = 0
  546.       when 7
  547.         $game_system.se_play($data_system.decision_se)
  548.         @command_window.active = false
  549.         @status_window.active = true
  550.         @status_window.index = 0
  551.       when 8
  552.         $game_system.se_play($data_system.decision_se)
  553.         @command_window.active = false
  554.         @status_window.active = true
  555.         @status_window.index = 0
  556.           when 9
  557.         $game_system.se_play($data_system.decision_se)
  558.          $scene = Scene_Lvup.new
  559.          when 10
  560.               $game_system.se_play($data_system.decision_se)
  561.               $scene = Materia_Shop.new
  562.               
  563.       end
  564.       return
  565.     end
  566.   end
  567. # --------------------------------
  568.   def update_status
  569.     if Input.trigger?(Input::B)
  570.       $game_system.se_play($data_system.cancel_se)
  571.       @command_window.active = true
  572.       @status_window.active = false
  573.       @status_window.index = -1
  574.       return
  575.     end
  576.     if Input.trigger?(Input::C)
  577.       case @command_window.index
  578.       when 1
  579.         if $game_party.actors[@status_window.index].restriction >= 2
  580.           $game_system.se_play($data_system.buzzer_se)
  581.           return
  582.         end
  583.         $game_system.se_play($data_system.decision_se)
  584.         $scene = Scene_Skill.new(@status_window.index)
  585.       when 2
  586.         $game_system.se_play($data_system.decision_se)
  587.         $scene = Scene_Equip.new(@status_window.index)
  588.       when 3
  589.         $game_system.se_play($data_system.decision_se)
  590.         $scene = Scene_Status.new(@status_window.index)
  591.       when 6
  592.         $game_system.se_play($data_system.decision_se)
  593.         if @checker == 0
  594.           @changer = $game_party.actors[@status_window.index]
  595.           @where = @status_window.index
  596.           @checker = 1
  597.         else
  598.           $game_party.actors[@where] = $game_party.actors[@status_window.index]
  599.           $game_party.actors[@status_window.index] = @changer
  600.           @checker = 0
  601.           @status_window.refresh
  602.         end
  603.       when 7
  604.         $game_system.se_play($data_system.decision_se)
  605.         $scene = Scene_Task.new
  606.       when 8
  607.         $game_system.se_play($data_system.decision_se)
  608.          $scene =  Scene_youmother.new
  609.   #      $scene = Scene_MonsterBook.new
  610.         when 9
  611.         $game_system.se_play($data_system.decision_se)
  612.         $scene = Scene_Lvup.new
  613.         when 10
  614.              $game_system.se_play($data_system.decision_se)
  615.              $scene = Materia_Shop.new
  616.       end
  617.       return
  618.     end
  619.   end
  620. end



  621.     #插件(升级加点,换队伍顺序,人物介绍,动态行走图)

  622. #==============================================================================
  623. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  624. #==============================================================================


  625. # 作者: 柳柳
  626. #
  627. # 说明:这是功能我再比较早期的时候发布在幻森,不过那时候比较笨,方法很糟糕
  628. #       这次是拿上就可以用的。
  629. #
  630. # 感谢:Claimh的脚本使我想起这个功能重做了一遍,本想直接用他的,不过他的算法过分
  631. #       冗余了,没好意思用。
  632. #==============================================================================
  633. # 使用方法:默认情况下把静态图变为了走步图。如果想自行修改,提供功能如下:
  634. #
  635. # 角色走步图:draw_walk_actor_graphic
  636. # 角色转向图:draw_turn_actor_graphic
  637. #
  638. # 回复原有静态角色图:删除100行以后的内容。修改下面这个变量可以更改行走速度
  639. #==============================================================================

  640. WALK_REFRESH_FRAME_SPEED = 10 # 刷新的速度,越大越慢,你可以改为3左右试试看

  641. #==============================================================================
  642. # Window_Base
  643. #==============================================================================
  644. class Window_Base < Window
  645.   #--------------------------------------------------------------------------
  646.   # 初始化方法
  647.   #--------------------------------------------------------------------------
  648.   alias initialize_walk initialize
  649.   def initialize(x, y, width, height)
  650.     initialize_walk(x, y, width, height)
  651.     @start_walk = false
  652.     @turn_index = 0
  653.     @turn_phase = 0
  654.   end
  655.   #--------------------------------------------------------------------------
  656.   # ★  角色行走图
  657.   #     actor : 角色
  658.   #     x     : 描绘的 X 坐标
  659.   #     y     : 描绘的 Y 坐标
  660.   #--------------------------------------------------------------------------
  661.   def draw_walk_actor_graphic(actor, x, y)
  662.     bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
  663.     cw = bitmap.width / 4
  664.     ch = bitmap.height / 4
  665.     @start_turn = true
  666.     case @turn_phase
  667.     when 0
  668.       x_x = 0
  669.     when 1
  670.       x_x = cw
  671.     when 2
  672.       x_x = cw * 2
  673.     when 3
  674.       x_x = cw * 3
  675.     end
  676.     src_rect = Rect.new(x_x, 0, cw, ch)
  677.     self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  678.   end
  679.   #--------------------------------------------------------------------------
  680.   # ★  角色转向图
  681.   #     actor : 角色
  682.   #     x     : 描绘的 X 坐标
  683.   #     y     : 描绘的 Y 坐标
  684.   #--------------------------------------------------------------------------
  685.   def draw_turn_actor_graphic(actor, x, y)
  686.     bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
  687.     cw = bitmap.width / 4
  688.     ch = bitmap.height / 4
  689.     @start_turn = true
  690.     case @turn_phase
  691.     when 0
  692.       x_x = 0
  693.     when 1
  694.       x_x = ch
  695.     when 2
  696.       x_x = ch * 3
  697.     when 3
  698.       x_x = ch * 2
  699.     end
  700.     src_rect = Rect.new(0, x_x, cw, ch)
  701.     self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  702.   end
  703.   #--------------------------------------------------------------------------
  704.   #  更新(可别使用刷新,玩命耗费内存= =)
  705.   #--------------------------------------------------------------------------
  706.   alias walk_update update
  707.   def update
  708.     walk_update
  709.     if @start_turn == true
  710.       @turn_index += 1
  711.       if @turn_index == WALK_REFRESH_FRAME_SPEED
  712.         refresh
  713.         @turn_index = 0
  714.         @turn_phase = (@turn_phase+1)%4
  715.       end
  716.     end
  717.   end  
  718. end

  719. #==============================================================================
  720. # Window_Base
  721. #==============================================================================
  722. class Window_Base < Window
  723.   #--------------------------------------------------------------------------
  724.   # 把原有静态图改为动态走步图
  725.   #--------------------------------------------------------------------------
  726.   def draw_actor_graphic(actor, x, y)
  727.     draw_walk_actor_graphic(actor, x, y)
  728.   end
  729. end

  730. #==============================================================================
  731. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  732. #==============================================================================

  733. #==============================================================================
  734. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  735. #==============================================================================


  736. # 脚本使用设定:

  737. LEVEL_UP_POINT = 3  # 每升一级所增加的点数
  738. LEVEL_UP_VARIABLE = 100  # 储存角色点数的变量编号与角色id编号的差值
  739.                          # 默认情况 = 100,
  740.                          # 则是数据库里1号角色的加点数存于101号变量
  741.                          # 3号角色的加点数存于103号变量。
  742.                          # 你可以直接操作变量赠与角色可分配点数

  743. # 每增加一次点数,各项能力值的变化:357-410行
  744.                         
  745. # 使用方法介绍:

  746. # 本脚本不会取代原升级功能 也就是说,默认的升级还在,但可以用这个功能手动追加点数。
  747. # 如果你想纯粹使用手动加点(而升级不提升能力),只要把数据库中角色升级能力,
  748. # 1-99级全部等于一个相同数值就行了。

  749. # 呼唤加点场景的方法:$scene = Scene_Lvup.new(角色编号,返回菜单编号)。
  750. # 默认都是0号

  751. # 加点场景中,page up,page down换人,如果想加点完毕后返回地图,
  752. # 464行$scene = Scene_Menu.new(0)改为$scene = Scene_Map.new

  753. # 推荐脚本搭配:魔法商店脚本,两者结合,制作自由型RPG

  754. #==============================================================================
  755. # ■ Window_Command
  756. #------------------------------------------------------------------------------
  757. #  一般的命令选择行窗口。(追加定义)
  758. #==============================================================================
  759. class Window_Command < Window_Selectable
  760.   #--------------------------------------------------------------------------
  761.   # ● 项目有效化
  762.   #     index : 项目编号
  763.   #--------------------------------------------------------------------------
  764.   def able_item(index)
  765.     draw_item(index, normal_color)
  766.   end
  767. end
  768. #==============================================================================
  769. # ■ Game_Actor
  770. #------------------------------------------------------------------------------
  771. #  处理角色的类。(再定义)
  772. #==============================================================================
  773. class Game_Actor < Game_Battler
  774.   #--------------------------------------------------------------------------
  775.   # ● 更改 EXP
  776.   #     exp : 新的 EXP
  777.   #--------------------------------------------------------------------------
  778.   def exp=(exp)
  779.     @exp = [[exp, 9999999].min, 0].max
  780.     # 升级
  781.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  782.       @level += 1
  783.       # 增加4点可自由分配的点数
  784.       $game_variables[self.id + LEVEL_UP_VARIABLE] += LEVEL_UP_POINT
  785.       # 学会特技
  786.       for j in $data_classes[@class_id].learnings
  787.         if j.level == @level
  788.           learn_skill(j.skill_id)
  789.         end
  790.       end
  791.     end
  792.     # 降级
  793.     while @exp < @exp_list[@level]
  794.       @level -= 1
  795.     end
  796.     # 修正当前的 HP 与 SP 超过最大值
  797.     @hp = [@hp, self.maxhp].min
  798.     @sp = [@sp, self.maxsp].min
  799.   end
  800. end
  801. #==============================================================================
  802. # ■ Window_Base
  803. #------------------------------------------------------------------------------
  804. #  游戏中全部窗口的超级类(追加定义)
  805. #==============================================================================
  806. class Window_Base < Window
  807.   #--------------------------------------------------------------------------
  808.   # ● 描绘 HP
  809.   #     actor : 角色
  810.   #     x     : 描画目标 X 坐标
  811.   #     y     : 描画目标 Y 坐标
  812.   #     width : 描画目标的宽
  813.   #--------------------------------------------------------------------------
  814.   def draw_actor_hp_lvup(actor, x, y)
  815.     self.contents.font.color = system_color
  816.     self.contents.draw_text(x , y, 96, 32, "最大" + $data_system.words.hp)
  817.     if $temp_hp == 0
  818.       self.contents.font.color = normal_color
  819.       self.contents.draw_text(x + 120 , y, 48, 32, actor.maxhp.to_s, 2)
  820.     else
  821.       maxhp = actor.maxhp + $temp_hp
  822.       self.contents.font.color = Color.new(255, 128, 128, 255)
  823.       self.contents.draw_text(x + 120 , y, 48, 32, maxhp.to_s ,2)
  824.       self.contents.font.color = normal_color      
  825.       self.contents.draw_text(x + 155, y, 36, 32, "( ", 2)
  826.       if $temp_hp >=0
  827.         self.contents.font.color = Color.new(255, 128, 128, 255)
  828.         self.contents.draw_text(x + 155, y, 36, 32, " +",2)
  829.       else
  830.         self.contents.font.color = Color.new(255,255,0,255)
  831.         self.contents.draw_text(x + 155, y, 36, 32, " -",2)
  832.       end
  833.       self.contents.draw_text(x + 200, y, 36, 32, $temp_hp.to_s, 2)
  834.       self.contents.font.color = normal_color
  835.       self.contents.draw_text(x + 215, y, 36, 32, ")", 2)
  836.     end
  837.   end
  838.   #--------------------------------------------------------------------------
  839.   # ● 描绘 SP
  840.   #     actor : 角色
  841.   #     x     : 描画目标 X 坐标
  842.   #     y     : 描画目标 Y 坐标
  843.   #     width : 描画目标的宽
  844.   #--------------------------------------------------------------------------
  845.   def draw_actor_sp_lvup(actor, x, y)
  846.     self.contents.font.color = system_color
  847.     self.contents.draw_text(x , y, 96, 32, "最大" + $data_system.words.sp)
  848.     if $temp_sp == 0
  849.       self.contents.font.color = normal_color
  850.       self.contents.draw_text(x + 120 , y, 48, 32, actor.maxsp.to_s, 2)
  851.     else
  852.       maxsp = actor.maxsp + $temp_sp
  853.       self.contents.font.color = Color.new(255, 128, 128, 255)
  854.       self.contents.draw_text(x + 120 , y, 48, 32, maxsp.to_s ,2)
  855.       self.contents.font.color = normal_color      
  856.       self.contents.draw_text(x + 155, y, 36, 32, "( ", 2)
  857.       if $temp_sp >=0
  858.         self.contents.font.color = Color.new(255, 128, 128, 255)
  859.         self.contents.draw_text(x + 155, y, 36, 32, " +",2)
  860.       else
  861.         self.contents.font.color = Color.new(255,255,0,255)
  862.         self.contents.draw_text(x + 155, y, 36, 32, " -",2)
  863.       end
  864.       self.contents.draw_text(x + 200, y, 36, 32, $temp_sp.to_s, 2)
  865.       self.contents.font.color = normal_color
  866.       self.contents.draw_text(x + 215, y, 36, 32, ")", 2)
  867.     end
  868.   end
  869.   #--------------------------------------------------------------------------
  870.   # ● 描绘能力值
  871.   #     actor : 角色
  872.   #     x     : 描画目标 X 坐标
  873.   #     y     : 描画目标 Y 坐标
  874.   #     type  : 能力值种类 (0~4)
  875.   #--------------------------------------------------------------------------
  876.   def draw_actor_lvup(actor, x, y, type)   
  877.     # 定义数字颜色
  878.     lvup = normal_color
  879.     upcolor = Color.new(255, 128, 128, 255)
  880.     self.contents.font.color = normal_color   
  881.     case type
  882.     when 0
  883.       parameter_name = $data_system.words.str
  884.       parameter_value = actor.str
  885.       parameter_value_temp = parameter_value + $temp_str
  886.       if $temp_str != 0
  887.         lvup = upcolor
  888.         self.contents.draw_text(x + 256, y, 16, 32, "(")
  889.         if $temp_str >= 0
  890.           self.contents.font.color = lvup
  891.           self.contents.draw_text(x + 272, y, 80, 32, "+",0)
  892.         else
  893.           self.contents.font.color = Color.new(255,255,0,255)
  894.           self.contents.draw_text(x + 272, y, 80, 32, "-",0)
  895.         end        
  896.         self.contents.draw_text(x + 272, y, 80, 32, $temp_str.abs.to_s,1)
  897.         self.contents.font.color = normal_color
  898.         self.contents.draw_text(x + 272, y, 80, 32, ")", 2)
  899.       end
  900.     when 1
  901.       parameter_name = $data_system.words.dex
  902.       parameter_value = actor.dex
  903.       parameter_value_temp = parameter_value + $temp_dex
  904.       if $temp_dex != 0
  905.         lvup = upcolor
  906.         self.contents.draw_text(x + 256, y, 16, 32, "(")
  907.         if $temp_dex >= 0
  908.           self.contents.font.color = lvup
  909.           self.contents.draw_text(x + 272, y, 80, 32, "+",0)
  910.         else
  911.           self.contents.font.color = Color.new(255,255,0,255)
  912.           self.contents.draw_text(x + 272, y, 80, 32, "-",0)
  913.         end        
  914.         self.contents.draw_text(x + 272, y, 80, 32, $temp_dex.abs.to_s,1)
  915.         self.contents.font.color = normal_color
  916.         self.contents.draw_text(x + 272, y, 80, 32, ")", 2)
  917.       end
  918.     when 2
  919.       parameter_name = $data_system.words.agi
  920.       parameter_value = actor.agi
  921.       parameter_value_temp = parameter_value + $temp_agi
  922.       if $temp_agi != 0
  923.         lvup = upcolor
  924.         self.contents.draw_text(x + 256, y, 16, 32, "(")
  925.         if $temp_agi >= 0
  926.           self.contents.font.color = lvup
  927.           self.contents.draw_text(x + 272, y, 80, 32, "+",0)
  928.         else
  929.           self.contents.font.color = Color.new(255,255,0,255)
  930.           self.contents.draw_text(x + 272, y, 80, 32, "-",0)
  931.         end        
  932.         self.contents.draw_text(x + 272, y, 80, 32, $temp_agi.abs.to_s,1)
  933.         self.contents.font.color = normal_color
  934.         self.contents.draw_text(x + 272, y, 80, 32, ")", 2)
  935.       end
  936.     when 3
  937.       parameter_name = $data_system.words.int
  938.       parameter_value = actor.int
  939.       parameter_value_temp = parameter_value + $temp_int
  940.       if $temp_int != 0
  941.         lvup = upcolor
  942.         self.contents.draw_text(x + 256, y, 16, 32, "(")
  943.         if $temp_int >= 0
  944.           self.contents.font.color = lvup
  945.           self.contents.draw_text(x + 272, y, 80, 32, "+",0)
  946.         else
  947.           self.contents.font.color = Color.new(255,255,0,255)
  948.           self.contents.draw_text(x + 272, y, 80, 32, "-",0)
  949.         end        
  950.         self.contents.draw_text(x + 272, y, 80, 32, $temp_int.abs.to_s,1)
  951.         self.contents.font.color = normal_color
  952.         self.contents.draw_text(x + 272, y, 80, 32, ")", 2)
  953.       end
  954.     when 4
  955.       parameter_name = "剩余点数"
  956.       parameter_value = $point
  957.       if $point != 0
  958.         lvup = upcolor
  959.       end
  960.     end   
  961.     self.contents.font.color = system_color
  962.     self.contents.draw_text(x, y, 120, 32, parameter_name)
  963.     self.contents.font.color = normal_color
  964.     self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s)   
  965.     if type != 4
  966.       self.contents.draw_text(x + 150, y, 36, 32, "→")
  967.     end  
  968.     self.contents.font.color = lvup
  969.     self.contents.draw_text(x + 180, y, 60, 32, parameter_value_temp.to_s)
  970.     self.contents.font.color = normal_color        
  971.   end
  972. end
  973. #==============================================================================
  974. # ■ Window_lvup
  975. #------------------------------------------------------------------------------
  976. #  显示升级状态窗口。
  977. #==============================================================================
  978. class Window_Lvup < Window_Base
  979.   #--------------------------------------------------------------------------
  980.   # ● 初始化对像
  981.   #     actor : 角色
  982.   #--------------------------------------------------------------------------
  983.   def initialize(actor)
  984.     super(0, 0, 512, 320)
  985.     self.contents = Bitmap.new(width - 32, height - 32)
  986.     @actor = actor
  987.     refresh
  988.   end  
  989.   #--------------------------------------------------------------------------
  990.   # ● 刷新
  991.   #--------------------------------------------------------------------------
  992.   def refresh
  993.     self.contents.clear
  994.     draw_actor_graphic(@actor, 40, 112)
  995.     draw_actor_name(@actor, 4, 0)
  996.     draw_actor_class(@actor, 4 + 144, 0)
  997.     draw_actor_level(@actor, 96, 32)
  998.     draw_actor_state(@actor, 96, 64)   
  999.     draw_actor_hp_lvup(@actor, 96+128, 32)
  1000.     draw_actor_sp_lvup(@actor, 96+128, 64)
  1001.     draw_actor_lvup(@actor, 96, 128, 0)
  1002.     draw_actor_lvup(@actor, 96, 160, 1)
  1003.     draw_actor_lvup(@actor, 96, 192, 2)
  1004.     draw_actor_lvup(@actor, 96, 224, 3)
  1005.     draw_actor_lvup(@actor, 96, 256, 4)
  1006.   end
  1007. end
  1008. #==============================================================================
  1009. # ■ Window_Help
  1010. #------------------------------------------------------------------------------
  1011. #  特技及物品的说明、角色的状态显示的窗口。
  1012. #==============================================================================
  1013. class Window_Lvup_Help < Window_Base
  1014.   #--------------------------------------------------------------------------
  1015.   # ● 初始化对像
  1016.   #--------------------------------------------------------------------------
  1017.   def initialize
  1018.     super(0, 320, 640, 160)
  1019.     self.contents = Bitmap.new(width - 32, height - 32)
  1020.     @test = "" #——这个东西用来检测,节约内存专用
  1021.   end  
  1022.   #--------------------------------------------------------------------------
  1023.   # ● 设置文本
  1024.   #--------------------------------------------------------------------------
  1025.   def lvup_text(text1, text2 = nil, text3 = nil, text4 = nil)
  1026.     if @test != text1
  1027.       @test = text1
  1028.     else
  1029.       return
  1030.     end   
  1031.     self.contents.clear
  1032.     self.contents.font.color = normal_color
  1033.     self.contents.draw_text(4, 0, self.width - 40, 32, text1)
  1034.     if text2 != nil
  1035.       self.contents.draw_text(4 , 32, self.width - 40, 32, text2)
  1036.     end
  1037.     self.contents.font.size -= 4
  1038.     if text3 != nil
  1039.       self.contents.draw_text(4 , 64, self.width - 40, 32, text3)
  1040.     end
  1041.     if text4 != nil
  1042.       self.contents.draw_text(4 , 96, self.width - 40, 32, text4)
  1043.     end
  1044.     self.contents.font.size += 4
  1045.   end
  1046. end
  1047. #==============================================================================
  1048. # ■ Scene_lvup
  1049. #------------------------------------------------------------------------------
  1050. #  处理升级画面的类。
  1051. #==============================================================================
  1052. class Scene_Lvup
  1053.   #--------------------------------------------------------------------------
  1054.   # ● 初始化对像
  1055.   #     actor_index : 角色索引
  1056.   #     menu_index : 选项起始位置
  1057.   #--------------------------------------------------------------------------
  1058.   def initialize(actor_index = 0 , menu_index = 0)
  1059.     @actor_index = actor_index
  1060.     @menu_index = menu_index
  1061.   end
  1062.   #--------------------------------------------------------------------------
  1063.   # ● 主处理
  1064.   #--------------------------------------------------------------------------
  1065.   def main
  1066.     s1 = "增加体力"
  1067.     s2 = "增加"+$data_system.words.str
  1068.     s3 = "增加"+$data_system.words.dex
  1069.     s4 = "增加"+$data_system.words.agi
  1070.     s5 = "增加"+$data_system.words.int
  1071.     s6 = "确认加点"
  1072.     s7 = "点数重置"
  1073.     @command_window = Window_Command.new(128, [s1, s2, s3, s4, s5, s6, s7])
  1074.     @command_window.index = @menu_index
  1075.     # 获取角色
  1076.     @actor = $game_party.actors[@actor_index]
  1077.     # 将角色的剩余点数带入
  1078.     $point = $game_variables[@actor.id + LEVEL_UP_VARIABLE]   
  1079.     # 初始化临时量
  1080.     $temp_str = 0
  1081.     $temp_dex = 0
  1082.     $temp_agi = 0
  1083.     $temp_int = 0
  1084.     $temp_hp = 0
  1085.     $temp_sp = 0
  1086.     #=========================================================================
  1087.     # 特别提示:这些设置也可以使用小数,但是可能出现0值意外错误
  1088.     #  (各种编程语言都有这种意外),建议还是使用整数,正负不限
  1089.     #=========================================================================
  1090.     # 每提升一次力量,提升多少附加能力
  1091.     #=========================================================================
  1092.     @str_hp = 2     # 每提升一次力量附加提升多少HP
  1093.     @str_sp = 2     # 每提升一次力量附加提升多少SP
  1094.     @str_dex = 1    # 每提升一次力量附加提升多少灵巧
  1095.     @str_agi = 1    # 每提升一次力量附加提升多少速度
  1096.     @str_int = 0    # 每提升一次力量附加提升多少魔力
  1097.     @str_str = 5    # 每提升一次力量附加提升多少力量
  1098.     #=========================================================================
  1099.     # 每提升一次灵巧,提升多少附加能力
  1100.     #=========================================================================
  1101.     @dex_hp = 3     # 每提升一次灵巧附加提升多少HP
  1102.     @dex_sp = 2     # 每提升一次灵巧附加提升多少SP
  1103.     @dex_str = 1    # 每提升一次灵巧附加提升多少力量
  1104.     @dex_agi = 1    # 每提升一次灵巧附加提升多少速度
  1105.     @dex_int = 0    # 每提升一次灵巧附加提升多少魔力
  1106.     @dex_dex = 5    # 每提升一次灵巧附加提升多少灵巧
  1107.     #=========================================================================
  1108.     # 每提升一次速度,提升多少附加能力
  1109.     #=========================================================================
  1110.     @agi_hp = 3     # 每提升一次速度附加提升多少HP
  1111.     @agi_sp = 2     # 每提升一次速度附加提升多少SP
  1112.     @agi_str = 1    # 每提升一次速度附加提升多少力量
  1113.     @agi_dex = 1    # 每提升一次速度附加提升多少灵巧
  1114.     @agi_int = 0    # 每提升一次速度附加提升多少魔力
  1115.     @agi_agi = 2    # 每提升一次速度附加提升多少速度
  1116.     #=========================================================================
  1117.     # 每提升一次魔力,提升多少附加能力
  1118.     #=========================================================================
  1119.     @int_hp = 1     # 每提升一次魔力附加提升多少HP
  1120.     @int_sp = 10    # 每提升一次魔力附加提升多少SP
  1121.     @int_str = -1   # 每提升一次魔力附加提升多少力量
  1122.     @int_dex = -1   # 每提升一次魔力附加提升多少灵巧
  1123.     @int_agi = -1   # 每提升一次魔力附加提升多少速度
  1124.     @int_int = 10   # 每提升一次魔力附加提升多少魔力
  1125.     #=========================================================================
  1126.     # 每提升一次体力,提升多少附加能力
  1127.     #=========================================================================
  1128.     @hp = 15       # 每提升一次体力提升多少HP
  1129.     @sp = 10       # 每提升一次体力提升多少SP
  1130.     @hp_str = -1   # 每提升一次体力提升多少力量
  1131.     @hp_dex = -1   # 每提升一次体力提升多少速度
  1132.     @hp_agi = -1   # 每提升一次体力提升多少灵巧
  1133.     @hp_int = -1   # 每提升一次体力提升多少魔力   
  1134.     # 定义说明文字
  1135.     @text_hp_sc = "体力可以增加生存的能力,可以延长生存的时间!"
  1136.     @text_str_sc = $data_system.words.str + "可以增加物理攻击和物理技能的威力!"
  1137.     @text_dex_sc = $data_system.words.dex + "可以提高攻击的命中率和必杀!"
  1138.     @text_agi_sc = $data_system.words.agi + "可以提高回避、命中、逃跑成功率!"
  1139.     @text_int_sc = $data_system.words.int + "可以提高魔法的效果,可以增加1点魔法!"
  1140.     @text_save = "保存分配情况并返回游戏"
  1141.     @text_reset= "重新分配能力点数"
  1142.     @text_2 = "每增加一次此项能力值,可以提升能力值"
  1143.     @text_hp = "最大" + $data_system.words.hp + "值"
  1144.     @text_sp = "最大" + $data_system.words.sp + "值"
  1145.     @text_str = "最大" + $data_system.words.str + "值"
  1146.     @text_dex = "最大" + $data_system.words.dex + "值"
  1147.     @text_agi = "最大" + $data_system.words.agi + "值"
  1148.     @text_int = "最大" + $data_system.words.int + "值"
  1149.     s_disable
  1150.     # 生成状态窗口
  1151.     @lvup_window = Window_Lvup.new(@actor)
  1152.     @lvup_window.x = 128
  1153.     @lvup_window.y = 0   
  1154.     # 生成帮助窗口并初始化帮助文本
  1155.     @help_window = Window_Lvup_Help.new   
  1156.     # 执行过渡
  1157.     Graphics.transition(0, "Graphics/Transitions/" + $data_system.battle_transition)
  1158.     # 主循环
  1159.     loop do
  1160.       # 刷新游戏画面
  1161.       Graphics.update
  1162.       # 刷新输入信息
  1163.       Input.update
  1164.       # 刷新画面
  1165.       update
  1166.       # 如果切换画面就中断循环
  1167.       if $scene != self
  1168.         break
  1169.       end
  1170.     end
  1171.     # 准备过渡
  1172.     Graphics.freeze
  1173.     # 释放窗口
  1174.     @command_window.dispose
  1175.     @lvup_window.dispose
  1176.     @help_window.dispose
  1177.   end
  1178.   #--------------------------------------------------------------------------
  1179.   # ● 刷新画面
  1180.   #--------------------------------------------------------------------------
  1181.   def update
  1182.     # 刷新窗口
  1183.     @command_window.update
  1184.     # 选项明暗判断(因为太消耗资源,所以屏蔽掉了)
  1185.     s_disable
  1186.     @lvup_window.update
  1187.     #=============================================================
  1188.     # 按下 B 键的情况下
  1189.     #=============================================================
  1190.     if Input.trigger?(Input::B)
  1191.       # 演奏取消 SE
  1192.       $game_system.se_play($data_system.cancel_se)
  1193.       # 切换到地图画面
  1194.       $scene = Scene_Menu.new(9)
  1195.       return
  1196.     end
  1197.     #=============================================================
  1198.     # 按下 C 键的情况下
  1199.     #=============================================================
  1200.     if Input.trigger?(Input::C)      
  1201.       if @command_window.index == 5
  1202.           # 演奏确定 SE
  1203.         $game_system.se_play($data_system.decision_se)
  1204.         # 将角色的剩余点数带回
  1205.         $game_variables[@actor.id + LEVEL_UP_VARIABLE] = $point
  1206.         # 将角色点数实际加上
  1207.         @actor.str += $temp_str
  1208.         @actor.dex += $temp_dex
  1209.         @actor.agi += $temp_agi
  1210.         @actor.int += $temp_int
  1211.         @actor.maxhp += $temp_hp
  1212.         @actor.maxsp += $temp_sp
  1213.         # 切换到地图画面
  1214.         $scene = Scene_Menu.new(9)
  1215.         return
  1216.       end
  1217.       if @command_window.index == 6
  1218.           # 演奏确定 SE
  1219.         $game_system.se_play($data_system.cancel_se)
  1220.           # 将角色的剩余点数带入
  1221.         $point = $game_variables[@actor.id + LEVEL_UP_VARIABLE]   
  1222.           # 初始化临时量
  1223.         $temp_str = 0
  1224.         $temp_dex = 0
  1225.         $temp_agi = 0
  1226.         $temp_int = 0
  1227.         $temp_hp = 0
  1228.         $temp_sp = 0
  1229.         @lvup_window.refresh
  1230.         return
  1231.       end
  1232.       if $point == 0
  1233.         # 演奏冻结 SE
  1234.         $game_system.se_play($data_system.buzzer_se)
  1235.         return
  1236.       end
  1237.       case @command_window.index
  1238.       when 0
  1239.         # 演奏确定 SE
  1240.         $game_system.se_play($data_system.decision_se)
  1241.         $temp_hp += @hp
  1242.         $temp_sp += @sp
  1243.         $temp_str += @hp_str
  1244.         $temp_dex += @hp_dex
  1245.         $temp_agi += @hp_agi
  1246.         $temp_int += @hp_int
  1247.         $point -= 1
  1248.         @lvup_window.refresh
  1249.         s_disable
  1250.         return
  1251.       when 1
  1252.         # 演奏确定 SE
  1253.         $game_system.se_play($data_system.decision_se)
  1254.         $temp_str += @str_str
  1255.         $temp_hp += @str_hp
  1256.         $temp_sp += @str_sp
  1257.         $temp_dex += @str_dex
  1258.         $temp_agi += @str_agi
  1259.         $temp_int += @str_int
  1260.         $point -= 1
  1261.         @lvup_window.refresh
  1262.         s_disable
  1263.         return
  1264.       when 2
  1265.         # 演奏确定 SE
  1266.         $game_system.se_play($data_system.decision_se)
  1267.         $temp_dex += @dex_dex
  1268.         $temp_hp += @dex_hp
  1269.         $temp_sp += @dex_sp
  1270.         $temp_str += @dex_str
  1271.         $temp_agi += @dex_agi
  1272.         $temp_int += @dex_int
  1273.         $point -= 1
  1274.         @lvup_window.refresh
  1275.         s_disable
  1276.         return
  1277.       when 3
  1278.         # 演奏确定 SE
  1279.         $game_system.se_play($data_system.decision_se)
  1280.         $temp_agi += @agi_agi
  1281.         $temp_hp += @agi_hp
  1282.         $temp_sp += @agi_sp
  1283.         $temp_str += @agi_str
  1284.         $temp_dex += @agi_dex
  1285.         $temp_int += @agi_int
  1286.         $point -= 1
  1287.         @lvup_window.refresh
  1288.         s_disable
  1289.         return
  1290.       when 4
  1291.         # 演奏确定 SE
  1292.         $game_system.se_play($data_system.decision_se)
  1293.         $temp_int += @int_int
  1294.         $temp_hp += @int_hp
  1295.         $temp_sp += @int_sp
  1296.         $temp_str += @int_str
  1297.         $temp_dex += @int_dex
  1298.         $temp_agi += @int_agi
  1299.         $point -= 1
  1300.         @lvup_window.refresh
  1301.         s_disable
  1302.         return
  1303.       end
  1304.     end
  1305.     #=============================================================
  1306.     # 什么都没有按下的情况
  1307.     #=============================================================
  1308.     case @command_window.index   
  1309.     when 0  # 增加体力
  1310.       temptext1 = @text_hp + @hp.to_s + "点   " + @text_str + @hp_str.to_s + "点   " + @text_dex + @hp_dex.to_s + "点"
  1311.       temptext2 = @text_sp + @sp.to_s + "点   " + @text_agi + @hp_agi.to_s + "点   " + @text_int + @hp_int.to_s + "点"
  1312.       @help_window.lvup_text(@text_hp_sc , @text_2 , temptext1 , temptext2)
  1313.     when 1  # 增加力量
  1314.       temptext1 = @text_hp + @str_hp.to_s + "点   " + @text_str + @str_str.to_s + "点   " + @text_dex + @str_dex.to_s + "点"
  1315.       temptext2 = @text_sp + @str_sp.to_s + "点   " + @text_agi + @str_agi.to_s + "点   " + @text_int + @str_int.to_s + "点"
  1316.       @help_window.lvup_text(@text_str_sc , @text_2 , temptext1 , temptext2)
  1317.     when 2  # 增加灵巧
  1318.       temptext1 = @text_hp + @dex_hp.to_s + "点   " + @text_str + @dex_agi.to_s + "点   " + @text_dex + @dex_dex.to_s + "点"
  1319.       temptext2 = @text_sp + @dex_sp.to_s + "点   " + @text_agi + @dex_agi.to_s + "点   " + @text_int + @dex_int.to_s + "点"
  1320.       @help_window.lvup_text(@text_dex_sc , @text_2 , temptext1 , temptext2)
  1321.     when 3  # 增加速度
  1322.       temptext1 = @text_hp + @agi_hp.to_s + "点   " + @text_str + @agi_str.to_s + "点   " + @text_dex + @agi_dex.to_s + "点"
  1323.       temptext2 = @text_sp + @agi_sp.to_s + "点   " + @text_agi + @agi_agi.to_s + "点   " + @text_int + @agi_int.to_s + "点"
  1324.       @help_window.lvup_text(@text_agi_sc , @text_2 , temptext1 , temptext2)
  1325.     when 4  # 增加魔力
  1326.       temptext1 = @text_hp + @int_hp.to_s + "点   " + @text_str + @int_str.to_s + "点   " + @text_dex + @int_dex.to_s + "点"
  1327.       temptext2 = @text_sp + @int_sp.to_s + "点   " + @text_agi + @int_agi.to_s + "点   " + @text_int + @int_int.to_s + "点"
  1328.       @help_window.lvup_text(@text_int_sc , @text_2 , temptext1 , temptext2)
  1329.     when 5 # 保存设定
  1330.       @help_window.lvup_text(@text_save)
  1331.     when 6 # 点数重置
  1332.       @help_window.lvup_text(@text_reset)     
  1333.     end
  1334.     #=============================================================
  1335.     # 按下R与L换人的情况
  1336.     #=============================================================      
  1337.    # if Input.trigger?(Input::R)
  1338.        if Input.trigger?(Input::RIGHT)
  1339.       # 演奏光标 SE
  1340.       $game_system.se_play($data_system.cursor_se)
  1341.       # 移至下一位角色
  1342.       @actor_index += 1
  1343.       @actor_index %= $game_party.actors.size
  1344.       # 切换到别的状态画面
  1345.       $scene = Scene_Lvup.new(@actor_index , @command_window.index)
  1346.       return
  1347.     end
  1348.     # 按下 L 键的情况下
  1349.     #if Input.trigger?(Input::L)
  1350.           if Input.trigger?(Input::LEFT)
  1351.       # 演奏光标 SE
  1352.       $game_system.se_play($data_system.cursor_se)
  1353.       # 移至上一位角色
  1354.       @actor_index += $game_party.actors.size - 1
  1355.       @actor_index %= $game_party.actors.size
  1356.       # 切换到别的状态画面
  1357.       $scene = Scene_Lvup.new(@actor_index , @command_window.index)
  1358.       return
  1359.     end
  1360.   end  
  1361.   #--------------------------------------------------------------------------
  1362.   # ● 选项明暗判断
  1363.   #--------------------------------------------------------------------------
  1364.   def s_disable
  1365.     # 判断剩余点数是否为0,如果为0,那么增加选项表示为暗色
  1366.     if $point == 0
  1367.       @command_window.disable_item(0)
  1368.       @command_window.disable_item(1)
  1369.       @command_window.disable_item(2)
  1370.       @command_window.disable_item(3)
  1371.       @command_window.disable_item(4)
  1372.     else
  1373.       @command_window.able_item(0)
  1374.       @command_window.able_item(1)      
  1375.       @command_window.able_item(2)
  1376.       @command_window.able_item(3)
  1377.       @command_window.able_item(4)
  1378.     end
  1379.   end
  1380. end

复制代码


老夫子于2011-5-12 23:24补充以下内容:
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. class Scene_Save
  5.   #--------------------------------------------------------------------------
  6.   # ● 写入存档数据
  7.   #     file : 写入用文件对像 (已经打开)
  8.   #--------------------------------------------------------------------------
  9.   def write_save_data(file)
  10.     # 生成描绘存档文件用的角色图形
  11.     characters = []
  12.     for i in 0...[$game_party.actors.size,4].min
  13.       actor = $game_party.actors[i]
  14.       characters.push([actor.character_name, actor.character_hue])
  15.     end
  16.     # 写入描绘存档文件用的角色数据
  17.     Marshal.dump(characters, file)
  18.     # 写入测量游戏时间用画面计数
  19.     Marshal.dump(Graphics.frame_count, file)
  20.     # 增加 1 次存档次数
  21.     $game_system.save_count += 1
  22.     # 保存魔法编号
  23.     # (将编辑器保存的值以随机值替换)
  24.     $game_system.magic_number = $data_system.magic_number
  25.     # 写入各种游戏对像
  26.     Marshal.dump($game_system, file)
  27.     Marshal.dump($game_switches, file)
  28.     Marshal.dump($game_variables, file)
  29.     Marshal.dump($game_self_switches, file)
  30.     Marshal.dump($game_screen, file)
  31.     Marshal.dump($game_actors, file)
  32.     Marshal.dump($game_party, file)
  33.     Marshal.dump($game_troop, file)
  34.     Marshal.dump($game_map, file)
  35.     Marshal.dump($game_player, file)
  36.   end
  37. end

  38. class Scene_Battle
  39.   #--------------------------------------------------------------------------
  40.   # ● 设置物品或特技对像方的战斗者
  41.   #     scope : 特技或者是物品的范围
  42.   #--------------------------------------------------------------------------
  43.   def set_target_battlers(scope)
  44.     # 行动方的战斗者是敌人的情况下
  45.     if @active_battler.is_a?(Game_Enemy)
  46.       # 效果范围分支
  47.       case scope
  48.       when 1  # 敌单体
  49.         index = @active_battler.current_action.target_index
  50.         @target_battlers.push($game_party.smooth_target_actor(index))
  51.       when 2  # 敌全体
  52.         for actor in 0...[$game_party.actors.size,4].min
  53.           if $game_party.actors[actor].exist?
  54.             @target_battlers.push($game_party.actors[actor])
  55.           end
  56.         end
  57.       when 3  # 我方单体
  58.         index = @active_battler.current_action.target_index
  59.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  60.       when 4  # 我方全体
  61.         for enemy in $game_troop.enemies
  62.           if enemy.exist?
  63.             @target_battlers.push(enemy)
  64.           end
  65.         end
  66.       when 5  # 我方单体 (HP 0)
  67.         index = @active_battler.current_action.target_index
  68.         enemy = $game_troop.enemies[index]
  69.         if enemy != nil and enemy.hp0?
  70.           @target_battlers.push(enemy)
  71.         end
  72.       when 6  # 我方全体 (HP 0)
  73.         for enemy in $game_troop.enemies
  74.           if enemy != nil and enemy.hp0?
  75.             @target_battlers.push(enemy)
  76.           end
  77.         end
  78.       when 7  # 使用者
  79.         @target_battlers.push(@active_battler)
  80.       end
  81.     end
  82.     # 行动方的战斗者是角色的情况下
  83.     if @active_battler.is_a?(Game_Actor)
  84.       # 效果范围分支
  85.       case scope
  86.       when 1  # 敌单体
  87.         index = @active_battler.current_action.target_index
  88.         @target_battlers.push($game_troop.smooth_target_enemy(index))
  89.       when 2  # 敌全体
  90.         for enemy in $game_troop.enemies
  91.           if enemy.exist?
  92.             @target_battlers.push(enemy)
  93.           end
  94.         end
  95.       when 3  # 我方单体
  96.         index = @active_battler.current_action.target_index
  97.         @target_battlers.push($game_party.smooth_target_actor(index))
  98.       when 4  # 我方全体
  99.         for actor in 0...[$game_party.actors.size,4].min
  100.           if $game_party.actors[actor].exist?
  101.             @target_battlers.push($game_party.actors[actor])
  102.           end
  103.         end
  104.       when 5  # 我方单体 (HP 0)
  105.         index = @active_battler.current_action.target_index
  106.         actor = $game_party.actors[index]
  107.         if actor != nil and actor.hp0?
  108.           @target_battlers.push(actor)
  109.         end
  110.       when 6  # 我方全体 (HP 0)
  111.         for actor in 0...[$game_party.actors.size,4].min
  112.           if $game_party.actors[actor] != nil and $game_party.actors[actor].hp0?
  113.             @target_battlers.push($game_party.actors[actor])
  114.           end
  115.         end
  116.       when 7  # 使用者
  117.         @target_battlers.push(@active_battler)
  118.       end
  119.     end
  120.   end  
  121.   #--------------------------------------------------------------------------
  122.   # ● 生成行动循序
  123.   #--------------------------------------------------------------------------
  124.   def make_action_orders
  125.     # 初始化序列 @action_battlers
  126.     @action_battlers = []
  127.     # 添加敌人到 @action_battlers 序列
  128.     for enemy in $game_troop.enemies
  129.       @action_battlers.push(enemy)
  130.     end
  131.     # 添加角色到 @action_battlers 序列
  132.     for actor in 0...[$game_party.actors.size,4].min
  133.       @action_battlers.push($game_party.actors[actor])
  134.     end
  135.     # 确定全体的行动速度
  136.     for battler in @action_battlers
  137.       battler.make_action_speed
  138.     end
  139.     # 按照行动速度从大到小排列
  140.     @action_battlers.sort! {|a,b|
  141.       b.current_action.speed - a.current_action.speed }
  142.   end
  143.   #--------------------------------------------------------------------------
  144.   # ● 开始结束战斗回合
  145.   #--------------------------------------------------------------------------
  146.   def start_phase5
  147.     # 转移到回合 5
  148.     @phase = 5
  149.     # 演奏战斗结束 ME
  150.     $game_system.me_play($game_system.battle_end_me)
  151.     # 还原为战斗开始前的 BGM
  152.     $game_system.bgm_play($game_temp.map_bgm)
  153.     # 初始化 EXP、金钱、宝物
  154.     exp = 0
  155.     gold = 0
  156.     treasures = []
  157.     # 循环
  158.     for enemy in $game_troop.enemies
  159.       # 敌人不是隐藏状态的情况下
  160.       unless enemy.hidden
  161.         # 获得 EXP、增加金钱
  162.         exp += enemy.exp
  163.         gold += enemy.gold
  164.         # 出现宝物判定
  165.         if rand(100) < enemy.treasure_prob
  166.           if enemy.item_id > 0
  167.             treasures.push($data_items[enemy.item_id])
  168.           end
  169.           if enemy.weapon_id > 0
  170.             treasures.push($data_weapons[enemy.weapon_id])
  171.           end
  172.           if enemy.armor_id > 0
  173.             treasures.push($data_armors[enemy.armor_id])
  174.           end
  175.         end
  176.       end
  177.     end
  178.     # 限制宝物数为 6 个
  179.     treasures = treasures[0..5]
  180.     # 获得 EXP
  181.     for i in 0...[$game_party.actors.size,4].min
  182.       actor = $game_party.actors[i]
  183.       if actor.cant_get_exp? == false
  184.         last_level = actor.level
  185.         actor.exp += exp
  186.         if actor.level > last_level
  187.           @status_window.level_up(i)
  188.         end
  189.       end
  190.     end
  191.     # 获得金钱
  192.     $game_party.gain_gold(gold)
  193.     # 获得宝物
  194.     for item in treasures
  195.       case item
  196.       when RPG::Item
  197.         $game_party.gain_item(item.id, 1)
  198.       when RPG::Weapon
  199.         $game_party.gain_weapon(item.id, 1)
  200.       when RPG::Armor
  201.         $game_party.gain_armor(item.id, 1)
  202.       end
  203.     end
  204.     # 生成战斗结果窗口
  205.     @result_window = Window_BattleResult.new(exp, gold, treasures)
  206.     # 设置等待计数
  207.     @phase5_wait_count = 100
  208.   end
  209.   #--------------------------------------------------------------------------
  210.   # ● 转到输入下一个角色的命令
  211.   #--------------------------------------------------------------------------
  212.   def phase3_next_actor
  213.     # 循环
  214.     begin
  215.       # 角色的明灭效果 OFF
  216.       if @active_battler != nil
  217.         @active_battler.blink = false
  218.       end
  219.       # 最后的角色的情况
  220.       if @actor_index == [$game_party.actors.size-1,3].min
  221.         # 开始主回合
  222.         start_phase4
  223.         return
  224.       end
  225.       # 推进角色索引
  226.       @actor_index += 1
  227.       @active_battler = $game_party.actors[@actor_index]
  228.       @active_battler.blink = true
  229.     # 如果角色是在无法接受指令的状态就再试
  230.     end until @active_battler.inputable?
  231.     # 设置角色的命令窗口
  232.     phase3_setup_command_window
  233.   end
  234. end

  235. class Arrow_Actor < Arrow_Base  
  236.   #--------------------------------------------------------------------------
  237.   # ● 刷新画面
  238.   #--------------------------------------------------------------------------
  239.   def update
  240.     super
  241.     # 光标右
  242.     if Input.repeat?(Input::RIGHT)
  243.       $game_system.se_play($data_system.cursor_se)
  244.       @index += 1
  245.       @index %= [$game_party.actors.size,4].min
  246.     end
  247.     # 光标左
  248.     if Input.repeat?(Input::LEFT)
  249.       $game_system.se_play($data_system.cursor_se)
  250.       @index += $game_party.actors.size - 1
  251.       @index %= [$game_party.actors.size,4].min
  252.     end
  253.     # 设置活动块坐标
  254.     if self.actor != nil
  255.       self.x = self.actor.screen_x
  256.       self.y = self.actor.screen_y
  257.     end
  258.   end
  259. end

  260. #==============================================================================
  261. # ■ Window_Target
  262. #------------------------------------------------------------------------------
  263. #  物品画面与特技画面的、使用对像角色选择窗口。
  264. #==============================================================================

  265. class Window_Target < Window_Selectable
  266. #--------------------------------------------------------------------------
  267. # ● 初始化对像
  268. #--------------------------------------------------------------------------
  269. def initialize
  270.    super(0, 0, 336, 480)
  271.    self.contents = Bitmap.new(width - 32, $game_party.actors.size*112)
  272.    self.z += 10
  273.    @item_max = 999#$game_party.actors.size
  274.    @top_row = 0
  275.    refresh
  276. end
  277. #--------------------------------------------------------------------------
  278. # ● 刷新
  279. #--------------------------------------------------------------------------
  280. def refresh
  281.    self.contents.clear
  282.    for i in 0...$game_party.actors.size
  283.      x = 4
  284.      y = i * 112
  285.      actor = $game_party.actors[i]
  286.      draw_actor_name(actor, x, y)
  287.      draw_actor_class(actor, x + 144, y)
  288.      draw_actor_level(actor, x + 8, y + 32)
  289.      draw_actor_state(actor, x + 8, y + 64)
  290.      draw_actor_hp(actor, x + 152, y + 32)
  291.      draw_actor_sp(actor, x + 152, y + 64)
  292.    end
  293. end  
  294. #--------------------------------------------------------------------------
  295. # ● 刷新光标矩形
  296. #--------------------------------------------------------------------------
  297. def update_cursor_rect   
  298.    # 光标位置 -1 为全选、-2 以下为单独选择 (使用者自身)
  299.    if @index <= -2
  300.      self.cursor_rect.set(0, (@index + 10) * 112, self.width - 32, 96)
  301.    elsif @index == -1
  302.      self.cursor_rect.set(0, 0, self.width - 32, @item_max * 112 - 20)
  303.    else
  304.      tpy = @index * 112 - self.oy
  305.      self.cursor_rect.set(0, tpy, self.width - 32, 96)
  306.      if @index < @top_row
  307.        @top_row = @index
  308.        self.oy = @top_row *112
  309.      end
  310.      if @index > @top_row+3
  311.        @top_row = @index-3
  312.        self.oy = @top_row *112
  313.      end
  314.    end   
  315. end
  316. end
  317. #==============================================================================
  318. # ■ Window_MenuStatus
  319. #------------------------------------------------------------------------------
  320. #  显示菜单画面和同伴状态的窗口。
  321. #==============================================================================

  322. class Window_MenuStatus < Window_Selectable
  323.   #--------------------------------------------------------------------------
  324.   # ● 初始化目标
  325.   #--------------------------------------------------------------------------
  326.   def initialize
  327.     super(0, 0, 480, 480)
  328.     self.contents = Bitmap.new(width - 32,  $game_party.actors.size*112)
  329.     refresh
  330.     @top_row = 0
  331.     self.active = false
  332.     self.index = -1
  333.   end
  334.   #--------------------------------------------------------------------------
  335.   # ● 刷新
  336.   #--------------------------------------------------------------------------
  337.   def refresh
  338.     self.contents.clear
  339.     @item_max = $game_party.actors.size
  340.     for i in 0...$game_party.actors.size
  341.       x = 64
  342.       y = i * 112
  343.       if i <=3
  344.         self.contents.font.color = Color.new(255,255,0,255)
  345.         self.contents.draw_text(x,y,340,32,"[出战]",2)
  346.         self.contents.font.color = normal_color
  347.       else
  348.         self.contents.font.color = Color.new(255,255,0,255)
  349.         self.contents.draw_text(x,y,340,32,"[出战]",2)
  350.         self.contents.font.color = normal_color
  351.       end      
  352.       actor = $game_party.actors[i]
  353.       draw_actor_graphic(actor, x - 40, y + 80)
  354.       draw_actor_name(actor, x, y)
  355.       draw_actor_class(actor, x + 144, y)
  356.       draw_actor_level(actor, x, y + 32)
  357.       draw_actor_state(actor, x + 90, y + 32)
  358.       draw_actor_exp(actor, x, y + 64)
  359.       draw_actor_hp(actor, x + 236, y + 32)
  360.       draw_actor_sp(actor, x + 236, y + 64)
  361.     end
  362.   end
  363.   #--------------------------------------------------------------------------
  364.   # ● 刷新光标矩形
  365.   #--------------------------------------------------------------------------
  366.   def update_cursor_rect
  367.     if @index < 0
  368.       self.cursor_rect.empty
  369.     else
  370.       tpy = @index * 112 - self.oy
  371.       self.cursor_rect.set(0, tpy, self.width - 32, 96)
  372.       if @index < @top_row
  373.         @top_row = @index
  374.         self.oy = @top_row *112
  375.       end
  376.       if @index > @top_row+3
  377.         @top_row = @index-3
  378.         self.oy = @top_row *112
  379.       end
  380.     end
  381.   end
  382. end

  383. class Game_Party
  384.   #--------------------------------------------------------------------------
  385.   # ● 全灭判定
  386.   #--------------------------------------------------------------------------
  387.   def all_dead?
  388.     # 同伴人数为 0 的情况下
  389.     if $game_party.actors.size == 0
  390.       return false
  391.     end
  392.     # 同伴中无人 HP 在 0 以上
  393.     for i in 0..3
  394.       if @actors[i] != nil and@actors[i].hp >0
  395.         return false
  396.       end
  397.     end
  398.     # 全灭
  399.     return true
  400.   end
  401.   #--------------------------------------------------------------------------
  402.   # ● 加入同伴
  403.   #     actor_id : 角色 ID
  404.   #--------------------------------------------------------------------------
  405.   def add_actor(actor_id)
  406.     # 获取角色
  407.     actor = $game_actors[actor_id]
  408.     # 同伴人数未满 4 人、本角色不在队伍中的情况下
  409.     if not @actors.include?(actor)
  410.       # 添加角色
  411.       @actors.push(actor)
  412.       # 还原主角
  413.       $game_player.refresh
  414.     end
  415.   end
  416. end

  417. #==============================================================================
  418. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  419. #==============================================================================


  420. class Scene_Menu
  421. # --------------------------------
  422.   def initialize(menu_index = 0)
  423.     @menu_index = menu_index
  424.     @changer = 0
  425.     @where = 0
  426.     @checker = 0


  427.   end
  428. # --------------------------------
  429.   def main
  430.     s1 = $data_system.words.item
  431.     s2 = $data_system.words.skill
  432.     s3 = $data_system.words.equip
  433.     s4 = "人物状态"
  434.     s5 = "储存进度"
  435.     s6 = "离开游戏"
  436.     s7 = "队形整理"
  437.     s8 = "任务记录"
  438.     s9 = "冒险记录"
  439.     s10= "升级加点"
  440.     s11= "卡片附魔"
  441.     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7, s8, s9,s10,s11])
  442.     @command_window.index = @menu_index
  443.     if $game_party.actors.size == 0
  444.       @command_window.disable_item(0)
  445.       @command_window.disable_item(1)
  446.       @command_window.disable_item(2)
  447.       @command_window.disable_item(3)
  448.     end
  449.     if $game_system.save_disabled
  450.       @command_window.disable_item(4)
  451.     end
  452.     if $game_party.actors.size == 1
  453.       @command_window.disable_item(6)
  454.     end
  455.     @playtime_window = Window_Gold1.new
  456.     @playtime_window.x = 0
  457.     @playtime_window.y = 380
  458.     @gold_window = Window_Gold.new
  459.     @gold_window.x = 0
  460.     @gold_window.y = 416
  461.     @status_window = Window_MenuStatus.new
  462.     @status_window.x = 160
  463.     @status_window.y = 0
  464.     Graphics.transition
  465.     loop do
  466.       Graphics.update
  467.       Input.update
  468.       update
  469.       if $scene != self
  470.         break
  471.       end
  472.     end
  473.     Graphics.freeze
  474.     @command_window.dispose
  475.     @playtime_window.dispose
  476.     @gold_window.dispose
  477.     @status_window.dispose
  478.   end
  479. # --------------------------------
  480.   def update
  481.     @command_window.update
  482.     @playtime_window.update
  483.     @gold_window.update
  484.     @status_window.update
  485.     if @command_window.active
  486.       update_command
  487.       return
  488.     end
  489.     if @status_window.active
  490.       update_status
  491.       return
  492.     end
  493.   end
  494. # --------------------------------
  495.   def update_command
  496.     if Input.trigger?(Input::B)
  497.       $game_system.se_play($data_system.cancel_se)
  498.       
  499.       $scene = Scene_Map.new
  500.       return
  501.     end
  502.     if Input.trigger?(Input::C)
  503.       if $game_party.actors.size == 0 and @command_window.index < 4
  504.         $game_system.se_play($data_system.buzzer_se)
  505.         return
  506.       end
  507.       if $game_party.actors.size == 1 and @command_window.index ==6
  508.         $game_system.se_play($data_system.buzzer_se)
  509.         return
  510.       end
  511.       case @command_window.index
  512.       when 0
  513.         $game_system.se_play($data_system.decision_se)
  514.         $scene = Scene_Item.new
  515.       when 1
  516.         $game_system.se_play($data_system.decision_se)
  517.         @command_window.active = false
  518.         @status_window.active = true
  519.         @status_window.index = 0
  520.       when 2
  521.         $game_system.se_play($data_system.decision_se)
  522.         @command_window.active = false
  523.         @status_window.active = true
  524.         @status_window.index = 0
  525.       when 3
  526.         $game_system.se_play($data_system.decision_se)
  527.         @command_window.active = false
  528.         @status_window.active = true
  529.         @status_window.index = 0
  530.       when 4
  531.         if $game_system.save_disabled
  532.           $game_system.se_play($data_system.buzzer_se)
  533.           return
  534.         end
  535.         $game_system.se_play($data_system.decision_se)
  536.         $scene = Scene_Save.new
  537.       when 5
  538.      $game_system.se_play($data_system.decision_se)
  539.         $scene = Scene_End.new
  540.       when 6
  541.         $game_system.se_play($data_system.decision_se)
  542.         @checker = 0
  543.         @command_window.active = false
  544.         @status_window.active = true
  545.         @status_window.index = 0
  546.       when 7
  547.         $game_system.se_play($data_system.decision_se)
  548.         @command_window.active = false
  549.         @status_window.active = true
  550.         @status_window.index = 0
  551.       when 8
  552.         $game_system.se_play($data_system.decision_se)
  553.         @command_window.active = false
  554.         @status_window.active = true
  555.         @status_window.index = 0
  556.           when 9
  557.         $game_system.se_play($data_system.decision_se)
  558.          $scene = Scene_Lvup.new
  559.          when 10
  560.               $game_system.se_play($data_system.decision_se)
  561.               $scene = Materia_Shop.new
  562.               
  563.       end
  564.       return
  565.     end
  566.   end
  567. # --------------------------------
  568.   def update_status
  569.     if Input.trigger?(Input::B)
  570.       $game_system.se_play($data_system.cancel_se)
  571.       @command_window.active = true
  572.       @status_window.active = false
  573.       @status_window.index = -1
  574.       return
  575.     end
  576.     if Input.trigger?(Input::C)
  577.       case @command_window.index
  578.       when 1
  579.         if $game_party.actors[@status_window.index].restriction >= 2
  580.           $game_system.se_play($data_system.buzzer_se)
  581.           return
  582.         end
  583.         $game_system.se_play($data_system.decision_se)
  584.         $scene = Scene_Skill.new(@status_window.index)
  585.       when 2
  586.         $game_system.se_play($data_system.decision_se)
  587.         $scene = Scene_Equip.new(@status_window.index)
  588.       when 3
  589.         $game_system.se_play($data_system.decision_se)
  590.         $scene = Scene_Status.new(@status_window.index)
  591.       when 6
  592.         $game_system.se_play($data_system.decision_se)
  593.         if @checker == 0
  594.           @changer = $game_party.actors[@status_window.index]
  595.           @where = @status_window.index
  596.           @checker = 1
  597.         else
  598.           $game_party.actors[@where] = $game_party.actors[@status_window.index]
  599.           $game_party.actors[@status_window.index] = @changer
  600.           @checker = 0
  601.           @status_window.refresh
  602.         end
  603.       when 7
  604.         $game_system.se_play($data_system.decision_se)
  605.         $scene = Scene_Task.new
  606.       when 8
  607.         $game_system.se_play($data_system.decision_se)
  608.          $scene =  Scene_youmother.new
  609.   #      $scene = Scene_MonsterBook.new
  610.         when 9
  611.         $game_system.se_play($data_system.decision_se)
  612.         $scene = Scene_Lvup.new
  613.         when 10
  614.              $game_system.se_play($data_system.decision_se)
  615.              $scene = Materia_Shop.new
  616.       end
  617.       return
  618.     end
  619.   end
  620. end



  621.     #插件(升级加点,换队伍顺序,人物介绍,动态行走图)

  622. #==============================================================================
  623. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  624. #==============================================================================


  625. # 作者: 柳柳
  626. #
  627. # 说明:这是功能我再比较早期的时候发布在幻森,不过那时候比较笨,方法很糟糕
  628. #       这次是拿上就可以用的。
  629. #
  630. # 感谢:Claimh的脚本使我想起这个功能重做了一遍,本想直接用他的,不过他的算法过分
  631. #       冗余了,没好意思用。
  632. #==============================================================================
  633. # 使用方法:默认情况下把静态图变为了走步图。如果想自行修改,提供功能如下:
  634. #
  635. # 角色走步图:draw_walk_actor_graphic
  636. # 角色转向图:draw_turn_actor_graphic
  637. #
  638. # 回复原有静态角色图:删除100行以后的内容。修改下面这个变量可以更改行走速度
  639. #==============================================================================

  640. WALK_REFRESH_FRAME_SPEED = 10 # 刷新的速度,越大越慢,你可以改为3左右试试看

  641. #==============================================================================
  642. # Window_Base
  643. #==============================================================================
  644. class Window_Base < Window
  645.   #--------------------------------------------------------------------------
  646.   # 初始化方法
  647.   #--------------------------------------------------------------------------
  648.   alias initialize_walk initialize
  649.   def initialize(x, y, width, height)
  650.     initialize_walk(x, y, width, height)
  651.     @start_walk = false
  652.     @turn_index = 0
  653.     @turn_phase = 0
  654.   end
  655.   #--------------------------------------------------------------------------
  656.   # ★  角色行走图
  657.   #     actor : 角色
  658.   #     x     : 描绘的 X 坐标
  659.   #     y     : 描绘的 Y 坐标
  660.   #--------------------------------------------------------------------------
  661.   def draw_walk_actor_graphic(actor, x, y)
  662.     bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
  663.     cw = bitmap.width / 4
  664.     ch = bitmap.height / 4
  665.     @start_turn = true
  666.     case @turn_phase
  667.     when 0
  668.       x_x = 0
  669.     when 1
  670.       x_x = cw
  671.     when 2
  672.       x_x = cw * 2
  673.     when 3
  674.       x_x = cw * 3
  675.     end
  676.     src_rect = Rect.new(x_x, 0, cw, ch)
  677.     self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  678.   end
  679.   #--------------------------------------------------------------------------
  680.   # ★  角色转向图
  681.   #     actor : 角色
  682.   #     x     : 描绘的 X 坐标
  683.   #     y     : 描绘的 Y 坐标
  684.   #--------------------------------------------------------------------------
  685.   def draw_turn_actor_graphic(actor, x, y)
  686.     bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
  687.     cw = bitmap.width / 4
  688.     ch = bitmap.height / 4
  689.     @start_turn = true
  690.     case @turn_phase
  691.     when 0
  692.       x_x = 0
  693.     when 1
  694.       x_x = ch
  695.     when 2
  696.       x_x = ch * 3
  697.     when 3
  698.       x_x = ch * 2
  699.     end
  700.     src_rect = Rect.new(0, x_x, cw, ch)
  701.     self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  702.   end
  703.   #--------------------------------------------------------------------------
  704.   #  更新(可别使用刷新,玩命耗费内存= =)
  705.   #--------------------------------------------------------------------------
  706.   alias walk_update update
  707.   def update
  708.     walk_update
  709.     if @start_turn == true
  710.       @turn_index += 1
  711.       if @turn_index == WALK_REFRESH_FRAME_SPEED
  712.         refresh
  713.         @turn_index = 0
  714.         @turn_phase = (@turn_phase+1)%4
  715.       end
  716.     end
  717.   end  
  718. end

  719. #==============================================================================
  720. # Window_Base
  721. #==============================================================================
  722. class Window_Base < Window
  723.   #--------------------------------------------------------------------------
  724.   # 把原有静态图改为动态走步图
  725.   #--------------------------------------------------------------------------
  726.   def draw_actor_graphic(actor, x, y)
  727.     draw_walk_actor_graphic(actor, x, y)
  728.   end
  729. end

  730. #==============================================================================
  731. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  732. #==============================================================================

  733. #==============================================================================
  734. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  735. #==============================================================================


  736. # 脚本使用设定:

  737. LEVEL_UP_POINT = 3  # 每升一级所增加的点数
  738. LEVEL_UP_VARIABLE = 100  # 储存角色点数的变量编号与角色id编号的差值
  739.                          # 默认情况 = 100,
  740.                          # 则是数据库里1号角色的加点数存于101号变量
  741.                          # 3号角色的加点数存于103号变量。
  742.                          # 你可以直接操作变量赠与角色可分配点数

  743. # 每增加一次点数,各项能力值的变化:357-410行
  744.                         
  745. # 使用方法介绍:

  746. # 本脚本不会取代原升级功能 也就是说,默认的升级还在,但可以用这个功能手动追加点数。
  747. # 如果你想纯粹使用手动加点(而升级不提升能力),只要把数据库中角色升级能力,
  748. # 1-99级全部等于一个相同数值就行了。

  749. # 呼唤加点场景的方法:$scene = Scene_Lvup.new(角色编号,返回菜单编号)。
  750. # 默认都是0号

  751. # 加点场景中,page up,page down换人,如果想加点完毕后返回地图,
  752. # 464行$scene = Scene_Menu.new(0)改为$scene = Scene_Map.new

  753. # 推荐脚本搭配:魔法商店脚本,两者结合,制作自由型RPG

  754. #==============================================================================
  755. # ■ Window_Command
  756. #------------------------------------------------------------------------------
  757. #  一般的命令选择行窗口。(追加定义)
  758. #==============================================================================
  759. class Window_Command < Window_Selectable
  760.   #--------------------------------------------------------------------------
  761.   # ● 项目有效化
  762.   #     index : 项目编号
  763.   #--------------------------------------------------------------------------
  764.   def able_item(index)
  765.     draw_item(index, normal_color)
  766.   end
  767. end
  768. #==============================================================================
  769. # ■ Game_Actor
  770. #------------------------------------------------------------------------------
  771. #  处理角色的类。(再定义)
  772. #==============================================================================
  773. class Game_Actor < Game_Battler
  774.   #--------------------------------------------------------------------------
  775.   # ● 更改 EXP
  776.   #     exp : 新的 EXP
  777.   #--------------------------------------------------------------------------
  778.   def exp=(exp)
  779.     @exp = [[exp, 9999999].min, 0].max
  780.     # 升级
  781.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  782.       @level += 1
  783.       # 增加4点可自由分配的点数
  784.       $game_variables[self.id + LEVEL_UP_VARIABLE] += LEVEL_UP_POINT
  785.       # 学会特技
  786.       for j in $data_classes[@class_id].learnings
  787.         if j.level == @level
  788.           learn_skill(j.skill_id)
  789.         end
  790.       end
  791.     end
  792.     # 降级
  793.     while @exp < @exp_list[@level]
  794.       @level -= 1
  795.     end
  796.     # 修正当前的 HP 与 SP 超过最大值
  797.     @hp = [@hp, self.maxhp].min
  798.     @sp = [@sp, self.maxsp].min
  799.   end
  800. end
  801. #==============================================================================
  802. # ■ Window_Base
  803. #------------------------------------------------------------------------------
  804. #  游戏中全部窗口的超级类(追加定义)
  805. #==============================================================================
  806. class Window_Base < Window
  807.   #--------------------------------------------------------------------------
  808.   # ● 描绘 HP
  809.   #     actor : 角色
  810.   #     x     : 描画目标 X 坐标
  811.   #     y     : 描画目标 Y 坐标
  812.   #     width : 描画目标的宽
  813.   #--------------------------------------------------------------------------
  814.   def draw_actor_hp_lvup(actor, x, y)
  815.     self.contents.font.color = system_color
  816.     self.contents.draw_text(x , y, 96, 32, "最大" + $data_system.words.hp)
  817.     if $temp_hp == 0
  818.       self.contents.font.color = normal_color
  819.       self.contents.draw_text(x + 120 , y, 48, 32, actor.maxhp.to_s, 2)
  820.     else
  821.       maxhp = actor.maxhp + $temp_hp
  822.       self.contents.font.color = Color.new(255, 128, 128, 255)
  823.       self.contents.draw_text(x + 120 , y, 48, 32, maxhp.to_s ,2)
  824.       self.contents.font.color = normal_color      
  825.       self.contents.draw_text(x + 155, y, 36, 32, "( ", 2)
  826.       if $temp_hp >=0
  827.         self.contents.font.color = Color.new(255, 128, 128, 255)
  828.         self.contents.draw_text(x + 155, y, 36, 32, " +",2)
  829.       else
  830.         self.contents.font.color = Color.new(255,255,0,255)
  831.         self.contents.draw_text(x + 155, y, 36, 32, " -",2)
  832.       end
  833.       self.contents.draw_text(x + 200, y, 36, 32, $temp_hp.to_s, 2)
  834.       self.contents.font.color = normal_color
  835.       self.contents.draw_text(x + 215, y, 36, 32, ")", 2)
  836.     end
  837.   end
  838.   #--------------------------------------------------------------------------
  839.   # ● 描绘 SP
  840.   #     actor : 角色
  841.   #     x     : 描画目标 X 坐标
  842.   #     y     : 描画目标 Y 坐标
  843.   #     width : 描画目标的宽
  844.   #--------------------------------------------------------------------------
  845.   def draw_actor_sp_lvup(actor, x, y)
  846.     self.contents.font.color = system_color
  847.     self.contents.draw_text(x , y, 96, 32, "最大" + $data_system.words.sp)
  848.     if $temp_sp == 0
  849.       self.contents.font.color = normal_color
  850.       self.contents.draw_text(x + 120 , y, 48, 32, actor.maxsp.to_s, 2)
  851.     else
  852.       maxsp = actor.maxsp + $temp_sp
  853.       self.contents.font.color = Color.new(255, 128, 128, 255)
  854.       self.contents.draw_text(x + 120 , y, 48, 32, maxsp.to_s ,2)
  855.       self.contents.font.color = normal_color      
  856.       self.contents.draw_text(x + 155, y, 36, 32, "( ", 2)
  857.       if $temp_sp >=0
  858.         self.contents.font.color = Color.new(255, 128, 128, 255)
  859.         self.contents.draw_text(x + 155, y, 36, 32, " +",2)
  860.       else
  861.         self.contents.font.color = Color.new(255,255,0,255)
  862.         self.contents.draw_text(x + 155, y, 36, 32, " -",2)
  863.       end
  864.       self.contents.draw_text(x + 200, y, 36, 32, $temp_sp.to_s, 2)
  865.       self.contents.font.color = normal_color
  866.       self.contents.draw_text(x + 215, y, 36, 32, ")", 2)
  867.     end
  868.   end
  869.   #--------------------------------------------------------------------------
  870.   # ● 描绘能力值
  871.   #     actor : 角色
  872.   #     x     : 描画目标 X 坐标
  873.   #     y     : 描画目标 Y 坐标
  874.   #     type  : 能力值种类 (0~4)
  875.   #--------------------------------------------------------------------------
  876.   def draw_actor_lvup(actor, x, y, type)   
  877.     # 定义数字颜色
  878.     lvup = normal_color
  879.     upcolor = Color.new(255, 128, 128, 255)
  880.     self.contents.font.color = normal_color   
  881.     case type
  882.     when 0
  883.       parameter_name = $data_system.words.str
  884.       parameter_value = actor.str
  885.       parameter_value_temp = parameter_value + $temp_str
  886.       if $temp_str != 0
  887.         lvup = upcolor
  888.         self.contents.draw_text(x + 256, y, 16, 32, "(")
  889.         if $temp_str >= 0
  890.           self.contents.font.color = lvup
  891.           self.contents.draw_text(x + 272, y, 80, 32, "+",0)
  892.         else
  893.           self.contents.font.color = Color.new(255,255,0,255)
  894.           self.contents.draw_text(x + 272, y, 80, 32, "-",0)
  895.         end        
  896.         self.contents.draw_text(x + 272, y, 80, 32, $temp_str.abs.to_s,1)
  897.         self.contents.font.color = normal_color
  898.         self.contents.draw_text(x + 272, y, 80, 32, ")", 2)
  899.       end
  900.     when 1
  901.       parameter_name = $data_system.words.dex
  902.       parameter_value = actor.dex
  903.       parameter_value_temp = parameter_value + $temp_dex
  904.       if $temp_dex != 0
  905.         lvup = upcolor
  906.         self.contents.draw_text(x + 256, y, 16, 32, "(")
  907.         if $temp_dex >= 0
  908.           self.contents.font.color = lvup
  909.           self.contents.draw_text(x + 272, y, 80, 32, "+",0)
  910.         else
  911.           self.contents.font.color = Color.new(255,255,0,255)
  912.           self.contents.draw_text(x + 272, y, 80, 32, "-",0)
  913.         end        
  914.         self.contents.draw_text(x + 272, y, 80, 32, $temp_dex.abs.to_s,1)
  915.         self.contents.font.color = normal_color
  916.         self.contents.draw_text(x + 272, y, 80, 32, ")", 2)
  917.       end
  918.     when 2
  919.       parameter_name = $data_system.words.agi
  920.       parameter_value = actor.agi
  921.       parameter_value_temp = parameter_value + $temp_agi
  922.       if $temp_agi != 0
  923.         lvup = upcolor
  924.         self.contents.draw_text(x + 256, y, 16, 32, "(")
  925.         if $temp_agi >= 0
  926.           self.contents.font.color = lvup
  927.           self.contents.draw_text(x + 272, y, 80, 32, "+",0)
  928.         else
  929.           self.contents.font.color = Color.new(255,255,0,255)
  930.           self.contents.draw_text(x + 272, y, 80, 32, "-",0)
  931.         end        
  932.         self.contents.draw_text(x + 272, y, 80, 32, $temp_agi.abs.to_s,1)
  933.         self.contents.font.color = normal_color
  934.         self.contents.draw_text(x + 272, y, 80, 32, ")", 2)
  935.       end
  936.     when 3
  937.       parameter_name = $data_system.words.int
  938.       parameter_value = actor.int
  939.       parameter_value_temp = parameter_value + $temp_int
  940.       if $temp_int != 0
  941.         lvup = upcolor
  942.         self.contents.draw_text(x + 256, y, 16, 32, "(")
  943.         if $temp_int >= 0
  944.           self.contents.font.color = lvup
  945.           self.contents.draw_text(x + 272, y, 80, 32, "+",0)
  946.         else
  947.           self.contents.font.color = Color.new(255,255,0,255)
  948.           self.contents.draw_text(x + 272, y, 80, 32, "-",0)
  949.         end        
  950.         self.contents.draw_text(x + 272, y, 80, 32, $temp_int.abs.to_s,1)
  951.         self.contents.font.color = normal_color
  952.         self.contents.draw_text(x + 272, y, 80, 32, ")", 2)
  953.       end
  954.     when 4
  955.       parameter_name = "剩余点数"
  956.       parameter_value = $point
  957.       if $point != 0
  958.         lvup = upcolor
  959.       end
  960.     end   
  961.     self.contents.font.color = system_color
  962.     self.contents.draw_text(x, y, 120, 32, parameter_name)
  963.     self.contents.font.color = normal_color
  964.     self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s)   
  965.     if type != 4
  966.       self.contents.draw_text(x + 150, y, 36, 32, "→")
  967.     end  
  968.     self.contents.font.color = lvup
  969.     self.contents.draw_text(x + 180, y, 60, 32, parameter_value_temp.to_s)
  970.     self.contents.font.color = normal_color        
  971.   end
  972. end
  973. #==============================================================================
  974. # ■ Window_lvup
  975. #------------------------------------------------------------------------------
  976. #  显示升级状态窗口。
  977. #==============================================================================
  978. class Window_Lvup < Window_Base
  979.   #--------------------------------------------------------------------------
  980.   # ● 初始化对像
  981.   #     actor : 角色
  982.   #--------------------------------------------------------------------------
  983.   def initialize(actor)
  984.     super(0, 0, 512, 320)
  985.     self.contents = Bitmap.new(width - 32, height - 32)
  986.     @actor = actor
  987.     refresh
  988.   end  
  989.   #--------------------------------------------------------------------------
  990.   # ● 刷新
  991.   #--------------------------------------------------------------------------
  992.   def refresh
  993.     self.contents.clear
  994.     draw_actor_graphic(@actor, 40, 112)
  995.     draw_actor_name(@actor, 4, 0)
  996.     draw_actor_class(@actor, 4 + 144, 0)
  997.     draw_actor_level(@actor, 96, 32)
  998.     draw_actor_state(@actor, 96, 64)   
  999.     draw_actor_hp_lvup(@actor, 96+128, 32)
  1000.     draw_actor_sp_lvup(@actor, 96+128, 64)
  1001.     draw_actor_lvup(@actor, 96, 128, 0)
  1002.     draw_actor_lvup(@actor, 96, 160, 1)
  1003.     draw_actor_lvup(@actor, 96, 192, 2)
  1004.     draw_actor_lvup(@actor, 96, 224, 3)
  1005.     draw_actor_lvup(@actor, 96, 256, 4)
  1006.   end
  1007. end
  1008. #==============================================================================
  1009. # ■ Window_Help
  1010. #------------------------------------------------------------------------------
  1011. #  特技及物品的说明、角色的状态显示的窗口。
  1012. #==============================================================================
  1013. class Window_Lvup_Help < Window_Base
  1014.   #--------------------------------------------------------------------------
  1015.   # ● 初始化对像
  1016.   #--------------------------------------------------------------------------
  1017.   def initialize
  1018.     super(0, 320, 640, 160)
  1019.     self.contents = Bitmap.new(width - 32, height - 32)
  1020.     @test = "" #——这个东西用来检测,节约内存专用
  1021.   end  
  1022.   #--------------------------------------------------------------------------
  1023.   # ● 设置文本
  1024.   #--------------------------------------------------------------------------
  1025.   def lvup_text(text1, text2 = nil, text3 = nil, text4 = nil)
  1026.     if @test != text1
  1027.       @test = text1
  1028.     else
  1029.       return
  1030.     end   
  1031.     self.contents.clear
  1032.     self.contents.font.color = normal_color
  1033.     self.contents.draw_text(4, 0, self.width - 40, 32, text1)
  1034.     if text2 != nil
  1035.       self.contents.draw_text(4 , 32, self.width - 40, 32, text2)
  1036.     end
  1037.     self.contents.font.size -= 4
  1038.     if text3 != nil
  1039.       self.contents.draw_text(4 , 64, self.width - 40, 32, text3)
  1040.     end
  1041.     if text4 != nil
  1042.       self.contents.draw_text(4 , 96, self.width - 40, 32, text4)
  1043.     end
  1044.     self.contents.font.size += 4
  1045.   end
  1046. end
  1047. #==============================================================================
  1048. # ■ Scene_lvup
  1049. #------------------------------------------------------------------------------
  1050. #  处理升级画面的类。
  1051. #==============================================================================
  1052. class Scene_Lvup
  1053.   #--------------------------------------------------------------------------
  1054.   # ● 初始化对像
  1055.   #     actor_index : 角色索引
  1056.   #     menu_index : 选项起始位置
  1057.   #--------------------------------------------------------------------------
  1058.   def initialize(actor_index = 0 , menu_index = 0)
  1059.     @actor_index = actor_index
  1060.     @menu_index = menu_index
  1061.   end
  1062.   #--------------------------------------------------------------------------
  1063.   # ● 主处理
  1064.   #--------------------------------------------------------------------------
  1065.   def main
  1066.     s1 = "增加体力"
  1067.     s2 = "增加"+$data_system.words.str
  1068.     s3 = "增加"+$data_system.words.dex
  1069.     s4 = "增加"+$data_system.words.agi
  1070.     s5 = "增加"+$data_system.words.int
  1071.     s6 = "确认加点"
  1072.     s7 = "点数重置"
  1073.     @command_window = Window_Command.new(128, [s1, s2, s3, s4, s5, s6, s7])
  1074.     @command_window.index = @menu_index
  1075.     # 获取角色
  1076.     @actor = $game_party.actors[@actor_index]
  1077.     # 将角色的剩余点数带入
  1078.     $point = $game_variables[@actor.id + LEVEL_UP_VARIABLE]   
  1079.     # 初始化临时量
  1080.     $temp_str = 0
  1081.     $temp_dex = 0
  1082.     $temp_agi = 0
  1083.     $temp_int = 0
  1084.     $temp_hp = 0
  1085.     $temp_sp = 0
  1086.     #=========================================================================
  1087.     # 特别提示:这些设置也可以使用小数,但是可能出现0值意外错误
  1088.     #  (各种编程语言都有这种意外),建议还是使用整数,正负不限
  1089.     #=========================================================================
  1090.     # 每提升一次力量,提升多少附加能力
  1091.     #=========================================================================
  1092.     @str_hp = 2     # 每提升一次力量附加提升多少HP
  1093.     @str_sp = 2     # 每提升一次力量附加提升多少SP
  1094.     @str_dex = 1    # 每提升一次力量附加提升多少灵巧
  1095.     @str_agi = 1    # 每提升一次力量附加提升多少速度
  1096.     @str_int = 0    # 每提升一次力量附加提升多少魔力
  1097.     @str_str = 5    # 每提升一次力量附加提升多少力量
  1098.     #=========================================================================
  1099.     # 每提升一次灵巧,提升多少附加能力
  1100.     #=========================================================================
  1101.     @dex_hp = 3     # 每提升一次灵巧附加提升多少HP
  1102.     @dex_sp = 2     # 每提升一次灵巧附加提升多少SP
  1103.     @dex_str = 1    # 每提升一次灵巧附加提升多少力量
  1104.     @dex_agi = 1    # 每提升一次灵巧附加提升多少速度
  1105.     @dex_int = 0    # 每提升一次灵巧附加提升多少魔力
  1106.     @dex_dex = 5    # 每提升一次灵巧附加提升多少灵巧
  1107.     #=========================================================================
  1108.     # 每提升一次速度,提升多少附加能力
  1109.     #=========================================================================
  1110.     @agi_hp = 3     # 每提升一次速度附加提升多少HP
  1111.     @agi_sp = 2     # 每提升一次速度附加提升多少SP
  1112.     @agi_str = 1    # 每提升一次速度附加提升多少力量
  1113.     @agi_dex = 1    # 每提升一次速度附加提升多少灵巧
  1114.     @agi_int = 0    # 每提升一次速度附加提升多少魔力
  1115.     @agi_agi = 2    # 每提升一次速度附加提升多少速度
  1116.     #=========================================================================
  1117.     # 每提升一次魔力,提升多少附加能力
  1118.     #=========================================================================
  1119.     @int_hp = 1     # 每提升一次魔力附加提升多少HP
  1120.     @int_sp = 10    # 每提升一次魔力附加提升多少SP
  1121.     @int_str = -1   # 每提升一次魔力附加提升多少力量
  1122.     @int_dex = -1   # 每提升一次魔力附加提升多少灵巧
  1123.     @int_agi = -1   # 每提升一次魔力附加提升多少速度
  1124.     @int_int = 10   # 每提升一次魔力附加提升多少魔力
  1125.     #=========================================================================
  1126.     # 每提升一次体力,提升多少附加能力
  1127.     #=========================================================================
  1128.     @hp = 15       # 每提升一次体力提升多少HP
  1129.     @sp = 10       # 每提升一次体力提升多少SP
  1130.     @hp_str = -1   # 每提升一次体力提升多少力量
  1131.     @hp_dex = -1   # 每提升一次体力提升多少速度
  1132.     @hp_agi = -1   # 每提升一次体力提升多少灵巧
  1133.     @hp_int = -1   # 每提升一次体力提升多少魔力   
  1134.     # 定义说明文字
  1135.     @text_hp_sc = "体力可以增加生存的能力,可以延长生存的时间!"
  1136.     @text_str_sc = $data_system.words.str + "可以增加物理攻击和物理技能的威力!"
  1137.     @text_dex_sc = $data_system.words.dex + "可以提高攻击的命中率和必杀!"
  1138.     @text_agi_sc = $data_system.words.agi + "可以提高回避、命中、逃跑成功率!"
  1139.     @text_int_sc = $data_system.words.int + "可以提高魔法的效果,可以增加1点魔法!"
  1140.     @text_save = "保存分配情况并返回游戏"
  1141.     @text_reset= "重新分配能力点数"
  1142.     @text_2 = "每增加一次此项能力值,可以提升能力值"
  1143.     @text_hp = "最大" + $data_system.words.hp + "值"
  1144.     @text_sp = "最大" + $data_system.words.sp + "值"
  1145.     @text_str = "最大" + $data_system.words.str + "值"
  1146.     @text_dex = "最大" + $data_system.words.dex + "值"
  1147.     @text_agi = "最大" + $data_system.words.agi + "值"
  1148.     @text_int = "最大" + $data_system.words.int + "值"
  1149.     s_disable
  1150.     # 生成状态窗口
  1151.     @lvup_window = Window_Lvup.new(@actor)
  1152.     @lvup_window.x = 128
  1153.     @lvup_window.y = 0   
  1154.     # 生成帮助窗口并初始化帮助文本
  1155.     @help_window = Window_Lvup_Help.new   
  1156.     # 执行过渡
  1157.     Graphics.transition(0, "Graphics/Transitions/" + $data_system.battle_transition)
  1158.     # 主循环
  1159.     loop do
  1160.       # 刷新游戏画面
  1161.       Graphics.update
  1162.       # 刷新输入信息
  1163.       Input.update
  1164.       # 刷新画面
  1165.       update
  1166.       # 如果切换画面就中断循环
  1167.       if $scene != self
  1168.         break
  1169.       end
  1170.     end
  1171.     # 准备过渡
  1172.     Graphics.freeze
  1173.     # 释放窗口
  1174.     @command_window.dispose
  1175.     @lvup_window.dispose
  1176.     @help_window.dispose
  1177.   end
  1178.   #--------------------------------------------------------------------------
  1179.   # ● 刷新画面
  1180.   #--------------------------------------------------------------------------
  1181.   def update
  1182.     # 刷新窗口
  1183.     @command_window.update
  1184.     # 选项明暗判断(因为太消耗资源,所以屏蔽掉了)
  1185.     s_disable
  1186.     @lvup_window.update
  1187.     #=============================================================
  1188.     # 按下 B 键的情况下
  1189.     #=============================================================
  1190.     if Input.trigger?(Input::B)
  1191.       # 演奏取消 SE
  1192.       $game_system.se_play($data_system.cancel_se)
  1193.       # 切换到地图画面
  1194.       $scene = Scene_Menu.new(9)
  1195.       return
  1196.     end
  1197.     #=============================================================
  1198.     # 按下 C 键的情况下
  1199.     #=============================================================
  1200.     if Input.trigger?(Input::C)      
  1201.       if @command_window.index == 5
  1202.           # 演奏确定 SE
  1203.         $game_system.se_play($data_system.decision_se)
  1204.         # 将角色的剩余点数带回
  1205.         $game_variables[@actor.id + LEVEL_UP_VARIABLE] = $point
  1206.         # 将角色点数实际加上
  1207.         @actor.str += $temp_str
  1208.         @actor.dex += $temp_dex
  1209.         @actor.agi += $temp_agi
  1210.         @actor.int += $temp_int
  1211.         @actor.maxhp += $temp_hp
  1212.         @actor.maxsp += $temp_sp
  1213.         # 切换到地图画面
  1214.         $scene = Scene_Menu.new(9)
  1215.         return
  1216.       end
  1217.       if @command_window.index == 6
  1218.           # 演奏确定 SE
  1219.         $game_system.se_play($data_system.cancel_se)
  1220.           # 将角色的剩余点数带入
  1221.         $point = $game_variables[@actor.id + LEVEL_UP_VARIABLE]   
  1222.           # 初始化临时量
  1223.         $temp_str = 0
  1224.         $temp_dex = 0
  1225.         $temp_agi = 0
  1226.         $temp_int = 0
  1227.         $temp_hp = 0
  1228.         $temp_sp = 0
  1229.         @lvup_window.refresh
  1230.         return
  1231.       end
  1232.       if $point == 0
  1233.         # 演奏冻结 SE
  1234.         $game_system.se_play($data_system.buzzer_se)
  1235.         return
  1236.       end
  1237.       case @command_window.index
  1238.       when 0
  1239.         # 演奏确定 SE
  1240.         $game_system.se_play($data_system.decision_se)
  1241.         $temp_hp += @hp
  1242.         $temp_sp += @sp
  1243.         $temp_str += @hp_str
  1244.         $temp_dex += @hp_dex
  1245.         $temp_agi += @hp_agi
  1246.         $temp_int += @hp_int
  1247.         $point -= 1
  1248.         @lvup_window.refresh
  1249.         s_disable
  1250.         return
  1251.       when 1
  1252.         # 演奏确定 SE
  1253.         $game_system.se_play($data_system.decision_se)
  1254.         $temp_str += @str_str
  1255.         $temp_hp += @str_hp
  1256.         $temp_sp += @str_sp
  1257.         $temp_dex += @str_dex
  1258.         $temp_agi += @str_agi
  1259.         $temp_int += @str_int
  1260.         $point -= 1
  1261.         @lvup_window.refresh
  1262.         s_disable
  1263.         return
  1264.       when 2
  1265.         # 演奏确定 SE
  1266.         $game_system.se_play($data_system.decision_se)
  1267.         $temp_dex += @dex_dex
  1268.         $temp_hp += @dex_hp
  1269.         $temp_sp += @dex_sp
  1270.         $temp_str += @dex_str
  1271.         $temp_agi += @dex_agi
  1272.         $temp_int += @dex_int
  1273.         $point -= 1
  1274.         @lvup_window.refresh
  1275.         s_disable
  1276.         return
  1277.       when 3
  1278.         # 演奏确定 SE
  1279.         $game_system.se_play($data_system.decision_se)
  1280.         $temp_agi += @agi_agi
  1281.         $temp_hp += @agi_hp
  1282.         $temp_sp += @agi_sp
  1283.         $temp_str += @agi_str
  1284.         $temp_dex += @agi_dex
  1285.         $temp_int += @agi_int
  1286.         $point -= 1
  1287.         @lvup_window.refresh
  1288.         s_disable
  1289.         return
  1290.       when 4
  1291.         # 演奏确定 SE
  1292.         $game_system.se_play($data_system.decision_se)
  1293.         $temp_int += @int_int
  1294.         $temp_hp += @int_hp
  1295.         $temp_sp += @int_sp
  1296.         $temp_str += @int_str
  1297.         $temp_dex += @int_dex
  1298.         $temp_agi += @int_agi
  1299.         $point -= 1
  1300.         @lvup_window.refresh
  1301.         s_disable
  1302.         return
  1303.       end
  1304.     end
  1305.     #=============================================================
  1306.     # 什么都没有按下的情况
  1307.     #=============================================================
  1308.     case @command_window.index   
  1309.     when 0  # 增加体力
  1310.       temptext1 = @text_hp + @hp.to_s + "点   " + @text_str + @hp_str.to_s + "点   " + @text_dex + @hp_dex.to_s + "点"
  1311.       temptext2 = @text_sp + @sp.to_s + "点   " + @text_agi + @hp_agi.to_s + "点   " + @text_int + @hp_int.to_s + "点"
  1312.       @help_window.lvup_text(@text_hp_sc , @text_2 , temptext1 , temptext2)
  1313.     when 1  # 增加力量
  1314.       temptext1 = @text_hp + @str_hp.to_s + "点   " + @text_str + @str_str.to_s + "点   " + @text_dex + @str_dex.to_s + "点"
  1315.       temptext2 = @text_sp + @str_sp.to_s + "点   " + @text_agi + @str_agi.to_s + "点   " + @text_int + @str_int.to_s + "点"
  1316.       @help_window.lvup_text(@text_str_sc , @text_2 , temptext1 , temptext2)
  1317.     when 2  # 增加灵巧
  1318.       temptext1 = @text_hp + @dex_hp.to_s + "点   " + @text_str + @dex_agi.to_s + "点   " + @text_dex + @dex_dex.to_s + "点"
  1319.       temptext2 = @text_sp + @dex_sp.to_s + "点   " + @text_agi + @dex_agi.to_s + "点   " + @text_int + @dex_int.to_s + "点"
  1320.       @help_window.lvup_text(@text_dex_sc , @text_2 , temptext1 , temptext2)
  1321.     when 3  # 增加速度
  1322.       temptext1 = @text_hp + @agi_hp.to_s + "点   " + @text_str + @agi_str.to_s + "点   " + @text_dex + @agi_dex.to_s + "点"
  1323.       temptext2 = @text_sp + @agi_sp.to_s + "点   " + @text_agi + @agi_agi.to_s + "点   " + @text_int + @agi_int.to_s + "点"
  1324.       @help_window.lvup_text(@text_agi_sc , @text_2 , temptext1 , temptext2)
  1325.     when 4  # 增加魔力
  1326.       temptext1 = @text_hp + @int_hp.to_s + "点   " + @text_str + @int_str.to_s + "点   " + @text_dex + @int_dex.to_s + "点"
  1327.       temptext2 = @text_sp + @int_sp.to_s + "点   " + @text_agi + @int_agi.to_s + "点   " + @text_int + @int_int.to_s + "点"
  1328.       @help_window.lvup_text(@text_int_sc , @text_2 , temptext1 , temptext2)
  1329.     when 5 # 保存设定
  1330.       @help_window.lvup_text(@text_save)
  1331.     when 6 # 点数重置
  1332.       @help_window.lvup_text(@text_reset)     
  1333.     end
  1334.     #=============================================================
  1335.     # 按下R与L换人的情况
  1336.     #=============================================================      
  1337.    # if Input.trigger?(Input::R)
  1338.        if Input.trigger?(Input::RIGHT)
  1339.       # 演奏光标 SE
  1340.       $game_system.se_play($data_system.cursor_se)
  1341.       # 移至下一位角色
  1342.       @actor_index += 1
  1343.       @actor_index %= $game_party.actors.size
  1344.       # 切换到别的状态画面
  1345.       $scene = Scene_Lvup.new(@actor_index , @command_window.index)
  1346.       return
  1347.     end
  1348.     # 按下 L 键的情况下
  1349.     #if Input.trigger?(Input::L)
  1350.           if Input.trigger?(Input::LEFT)
  1351.       # 演奏光标 SE
  1352.       $game_system.se_play($data_system.cursor_se)
  1353.       # 移至上一位角色
  1354.       @actor_index += $game_party.actors.size - 1
  1355.       @actor_index %= $game_party.actors.size
  1356.       # 切换到别的状态画面
  1357.       $scene = Scene_Lvup.new(@actor_index , @command_window.index)
  1358.       return
  1359.     end
  1360.   end  
  1361.   #--------------------------------------------------------------------------
  1362.   # ● 选项明暗判断
  1363.   #--------------------------------------------------------------------------
  1364.   def s_disable
  1365.     # 判断剩余点数是否为0,如果为0,那么增加选项表示为暗色
  1366.     if $point == 0
  1367.       @command_window.disable_item(0)
  1368.       @command_window.disable_item(1)
  1369.       @command_window.disable_item(2)
  1370.       @command_window.disable_item(3)
  1371.       @command_window.disable_item(4)
  1372.     else
  1373.       @command_window.able_item(0)
  1374.       @command_window.able_item(1)      
  1375.       @command_window.able_item(2)
  1376.       @command_window.able_item(3)
  1377.       @command_window.able_item(4)
  1378.     end
  1379.   end
  1380. end

复制代码


老夫子于2011-5-12 23:25补充以下内容:
唉,怎么贴不上代码啊?附件好了



老夫子于2011-5-13 00:07补充以下内容:

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

2
发表于 2011-5-13 00:22:33 | 只看该作者
本帖最后由 link006007 于 2011-5-13 00:24 编辑

SceneMenu初始化和那个loop break之后加调音量的久可以了。。

评分

参与人数 2星屑 +202 梦石 +2 收起 理由
「旅」 + 200 + 2
老夫子 + 2 认可答案

查看全部评分

在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-25 22:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表