Project1

标题: 战斗画面怎么添加各角色的头像? [打印本页]

作者: as4410    时间: 2011-1-8 19:20
标题: 战斗画面怎么添加各角色的头像?
  1. #==============================================================================
  2. # ++ 积极时间战斗 ver. 2.56 ++
  3. #  Script by 帕拉狗(パラ犬)
  4. #  http://para.j-mx.com/
  5. #
  6. #
  7. ###############################################################################
  8. #     *********             翻译+强化+改进:       ***********                 #
  9. #                             忧郁的涟漪                                      #
  10. #                                                                             #
  11. #在日站上找到的脚本,本来打算全文翻译...不过日文能力有限...放弃了..残念....    #
  12. #==============================================================================

  13. module PARA_CTB
  14.   
  15.   # 当一人CP槽填满的时候,CP是否不累积(默认为false,如果希望一个CP满了后其他人CP
  16.   # 槽进行暂时的等待,改成true)
  17.   COMMAND_WAIT = false
  18.   # 是否等待攻击结束以后才可以行动?默认是不等待(true)
  19.   SELECT_WAIT = true
  20.   # 在演示攻击动画的时候是否停止CP槽的累加,默认的false不停止
  21.   ANIMATION_WAIT = false
  22.   
  23.   # CP槽的填充速度(数字越大填充越快,调到999的话....就光攻击吧,连等都不用等.)
  24.   BATTLE_SPEED = 3

  25.   # 队员人数,多了显示的多,适合很多有多人参加战斗的游戏~
  26.   PARTY_SIZE = 4
  27.   
  28.   # 各项活动时减少的CT值(100为全部)
  29.   ACT_ATTACK_CT = 100   # 攻击时候消耗的CT值
  30.   ACT_GUARD_CT = 70    # 防御
  31.   ACT_ESCAPE_CT = 50   # 逃走失败
  32.   ACT_SKILL_CT = 100    # 使用特技
  33.   ACT_ITEM_CT = 100     # 使用物品
  34.   
  35.   # 逃跑失败的时候显示的字样
  36.   UNESCAPE_MES = "逃走失败!"

  37. # 当CT槽满了的时候发出的效果音
  38.   FULL_CT_SE = "确定 SE"
  39.   # 効果音的响度
  40.   FULL_CT_SE_VOL = 100

  41.   # CT槽填满的时候人物发生的颜色变化(括号里对应红,绿,蓝)
  42.   FULL_CT_COLOR = Tone.new(120,0,0)
  43.   
  44.   
  45.   # 各种槽的渐变颜色
  46.   # HP槽左边的颜色
  47.   HP_COLOR_LEFT = Color.new(204, 51, 0, 255)
  48.   # HP槽右边的颜色
  49.   HP_COLOR_RIGHT= Color.new(255, 51, 0, 255)
  50.   # SP槽左边的颜色
  51.   SP_COLOR_LEFT = Color.new(0, 0, 128, 255)
  52.   # SP槽右边的颜色
  53.   SP_COLOR_RIGHT= Color.new(0, 0, 255, 255)
  54.   # CT槽左边的颜色
  55.   COLOR_LEFT = Color.new(128, 128, 64, 255)
  56.   # CT槽右边的颜色
  57.   COLOR_RIGHT= Color.new(255, 255, 128, 255)
  58.   # CT槽集满时候的颜色
  59.   COLOR_FULL = Color.new(255, 225, 128, 255)
  60.   
  61.   # 各种条边框的颜色
  62.   FRAME_COLOR = Color.new(192, 192, 192, 255)
  63.   # 表范围的粗
  64.   FRAME_BORDER = 2
  65.   # 各种条边框的底色
  66.   BACK_COLOR = Color.new(128, 128, 128, 128)

  67.   # 角色名称的字号(数字越大字越大)
  68.   NAME_FONT_SIZE = 14
  69.   # HP/SP的字号
  70.   HPSP_FONT_SIZE = 17
  71.   # 敌人名称的字号
  72.   ENEMY_FONT_SIZE = 17
  73.   # 是否显示对大HP/MP( 显示true / 不显示false )
  74.   MAX_DRAW = false

  75.   # 是否进行敌人缩写(例如有5个幽灵的时候不分别显示5个幽灵的名字而是只显示一个)
  76.   # 例子:原本显示为:
  77.   #      幽灵
  78.   #      幽灵
  79.   # 改了以后显示为:
  80.   #      幽灵 2
  81.   ENEMY_GROUPING = false

  82.   # 在敌人窗口中显示的东西( 0:只显示名字 / 1:显示HP / 2:显示CT )
  83.   ENEMY_DRAWING_MATER = 2
  84.   
  85.   # actor的帮助窗口表示HP/SP量规( true / false )
  86.   HELP_DRAWING_MATER_ACTOR = true
  87.   # 是否在选择攻击对象的时候显示敌人的HP/MP和状态(默认为显示(true))
  88.   HELP_DRAWING_MATER_ENEMY = true
  89.   
  90.   # 是否在一个地方强制显示攻击对话框(攻击框就显示在一个地方,默认为true(是))
  91.   WINDOWPOS_CHANGE = true
  92.   WINDOWPOS_X = 480   # X坐标
  93.   WINDOWPOS_Y = 305   # Y坐标

  94.   # 战斗窗口的不透明度,数字越高透明度越差
  95.   WINDOW_OPACITY = 160
  96.   
  97.   # CT槽的增长间隔,越小越自然,大了大话..好像是在移动图块...
  98.   CT_SKIP = 2

  99. end


  100. #==============================================================================
  101. # ■ Scene_Battle
  102. #==============================================================================

  103. class Scene_Battle

  104.   #--------------------------------------------------------------------------
  105.   # ○ CT的计算
  106.   #--------------------------------------------------------------------------
  107.   def update_ct
  108.     # 在计算提高被许可的时候
  109.     if @countup
  110.       for actor in $game_party.actors
  111.         # 是否能活动
  112.         if actor.movable? == false and actor.ct_visible and @phase4_step != 5
  113.           # 用看不见状态计算,并且有提高
  114.           actor.ct_visible = false
  115.           actor.countup = true
  116.           actor.full_ct = false
  117.         elsif actor.movable? and actor.ct_visible == false
  118.           # 解除看不见计算提高
  119.           clear_ct(actor)
  120.           actor.ct_visible = true
  121.         end
  122.         # アクターの入れ替えに対応
  123.         if actor.max_ct == 0
  124.           actor.max_ct = @max_ct
  125.         end
  126.         # アクターのカウントアップ
  127.         if actor.countup
  128.           # CTがmaxになっており、コマンド入力待ちアクターに含まれない
  129.           if actor.now_ct >= @max_ct and !(@pre_action_battlers.include?(actor))
  130.             # コマンド入力待ちアクターに追加
  131.             @pre_action_battlers.push(actor)
  132.             @action_count += 1
  133.             # 効果音を鳴らす
  134.             if PARA_CTB::FULL_CT_SE != "" and actor.ct_visible
  135.               Audio.se_play("Audio/SE/" + PARA_CTB::FULL_CT_SE,PARA_CTB::FULL_CT_SE_VOL)
  136.             end
  137.             # それ以上カウントアップしない
  138.             actor.countup = false
  139.             actor.full_ct = true
  140.           else
  141.             # カウントアップ
  142.             actor.make_action_speed
  143.             ct_skip = PARA_CTB::CT_SKIP != 0 ? PARA_CTB::CT_SKIP : 1
  144.             actor.now_ct += actor.current_action.speed * PARA_CTB::BATTLE_SPEED * ct_skip
  145.           end
  146.         end
  147.       end
  148.       for enemy in $game_troop.enemies
  149.         # 行動できるか
  150.         if enemy.movable? == false and enemy.ct_visible and @phase4_step == 5
  151.           # 不可視状態でカウントアップ
  152.           enemy.ct_visible = false
  153.           enemy.countup = true
  154.           enemy.full_ct = false
  155.         elsif enemy.movable? and enemy.ct_visible == false
  156.           # 不可視カウントアップを解除
  157.           clear_ct(enemy)
  158.           enemy.ct_visible = true
  159.         end
  160.         # エネミーのカウントアップ
  161.         if enemy.countup
  162.           # CTがmaxになっており、行動待ちエネミーに含まれない
  163.           if enemy.now_ct >= @max_ct and ! @pre_action_battlers.include?(enemy)
  164.             # 行動待ちエネミーに追加
  165.             @pre_action_battlers.push(enemy)
  166.             @action_count += 1
  167.             # それ以上カウントアップしない
  168.             enemy.countup = false
  169.             enemy.full_ct = true
  170.           else
  171.             # カウントアップ
  172.             enemy.make_action_speed
  173.             enemy.now_ct += enemy.current_action.speed * PARA_CTB::BATTLE_SPEED
  174.           end
  175.         end
  176.       end
  177.       # CTゲージを再描画
  178.       @status_window.refresh_ct
  179.       @status_window2.refresh_ct
  180.     end
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ○ バトラーのCTを0に
  184.   #--------------------------------------------------------------------------
  185.   def clear_ct(battler)
  186.     battler.countup = true
  187.     battler.now_ct = 0
  188.     battler.full_ct = false
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # ○ バトラーのCTを任意のパーセンテージに
  192.   #--------------------------------------------------------------------------
  193.   def declease_ct(battler,percent)
  194.     battler.countup = true
  195.     battler.now_ct = battler.now_ct * percent / 100
  196.     battler.full_ct = false
  197.   end
  198.   #--------------------------------------------------------------------------
  199.   # ○ CTの初期化
  200.   #--------------------------------------------------------------------------
  201.   def initialize_ct
  202.     # CTの基準値を決定
  203.     max_ct
  204.     for battler in $game_party.actors + $game_troop.enemies
  205.       if battler.movable?
  206.         n = $game_party.actors.size + $game_troop.enemies.size
  207.         # 戦闘開始時にある程度のCTを溜めておく
  208.         battler.now_ct = battler.agi * 60 * n
  209.         battler.ct_visible = true
  210.       else
  211.         clear_ct(battler)
  212.         battler.ct_visible = false
  213.       end
  214.       battler.countup = true
  215.       battler.full_ct = false
  216.       battler.max_ct = @max_ct
  217.     end
  218.   end
  219.   #--------------------------------------------------------------------------
  220.   # ○ バトラー全員の素早さからCTの基準値を決定
  221.   #--------------------------------------------------------------------------
  222.   def max_ct
  223.     for battler in $game_party.actors + $game_troop.enemies
  224.       @max_ct += battler.agi
  225.     end
  226.     @max_ct *= 100
  227.   end
  228.   #--------------------------------------------------------------------------
  229.   # ○ バトラーの行動順を変更
  230.   #--------------------------------------------------------------------------
  231.   def shift_activer(shift)
  232.     # 一つシフトする時で後ろのアクターが2人以上
  233.     if @pre_action_battlers != nil
  234.       if shift == 1 and @pre_action_battlers.size >= @actor_array_index + 3
  235.         # 現在のアクターを取得
  236.         act = @pre_action_battlers[@actor_array_index]
  237.         # 現在のアクターを二つ後ろに挿入
  238.         @pre_action_battlers.insert(@actor_array_index+2, act)
  239.         # 現在位置を消去
  240.         @pre_action_battlers.delete_at(@actor_array_index)
  241.         @actor_array_index -= 1
  242.         phase3_next_actor
  243.       else
  244.         act = @pre_action_battlers[@actor_array_index]
  245.         # 現在のアクターを一番後ろに追加
  246.         @pre_action_battlers.push(act)
  247.         # 現在位置を消去
  248.         @pre_action_battlers.delete_at(@actor_array_index)
  249.         @actor_array_index -= 1
  250.         phase3_next_actor
  251.       end
  252.     end
  253.   end
  254.   #--------------------------------------------------------------------------
  255.   # ● メイン処理
  256.   #--------------------------------------------------------------------------
  257.   alias main_ctb main
  258.   def main
  259.     # エネミー名ウインドウを作成
  260.     @status_window2 = Window_BattleStatus_enemy.new
  261.     @action_battlers = []
  262.     @pre_action_battlers = []
  263.     @max_ct = 0
  264.     @countup = false
  265.     @ct_wait = 0
  266.     @action_count = 0
  267.     main_ctb
  268.     # エネミー名ウインドウを破棄
  269.     @status_window2.dispose
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # ● フレーム更新
  273.   #--------------------------------------------------------------------------
  274.   alias ctb_update update
  275.   def update
  276.     # バトルイベント実行中の場合
  277.     if $game_system.battle_interpreter.running?
  278.       # インタプリタを更新
  279.       $game_system.battle_interpreter.update
  280.       # アクションを強制されているバトラーが存在しない場合
  281.       if $game_temp.forcing_battler == nil
  282.         # バトルイベントの実行が終わった場合
  283.         unless $game_system.battle_interpreter.running?
  284.           # 戦闘継続の場合、バトルイベントのセットアップを再実行
  285.           unless judge
  286.             setup_battle_event
  287.           end
  288.         end
  289.         # アフターバトルフェーズでなければ
  290.         if @phase != 5
  291.           # ステータスウィンドウをリフレッシュ
  292.           @status_window.refresh
  293.           # エネミー名リストを更新
  294.           @status_window2.refresh
  295.         end
  296.       end
  297.     else
  298.       if PARA_CTB::CT_SKIP == 0
  299.         update_ct
  300.       else
  301.         if @ct_wait > 0
  302.           @ct_wait -= 1
  303.         else
  304.           update_ct
  305.           @ct_wait = PARA_CTB::CT_SKIP
  306.         end
  307.       end
  308.     end
  309.     ctb_update
  310.   end
  311.   #--------------------------------------------------------------------------
  312.   # ● プレバトルフェーズ開始
  313.   #--------------------------------------------------------------------------
  314.   alias ctb_start_phase1 start_phase1
  315.   def start_phase1
  316.     # CTを初期化
  317.     initialize_ct
  318.     # カウントアップ開始
  319.     @countup = true

  320.     ctb_start_phase1
  321.   end
  322.   #--------------------------------------------------------------------------
  323.   # ● フレーム更新 (プレバトルフェーズ)
  324.   #--------------------------------------------------------------------------
  325.   def update_phase1
  326.     # エネミー名リストを更新
  327.     @status_window2.refresh
  328.     # 勝敗判定
  329.     if judge
  330.       # 勝利または敗北の場合 : メソッド終了
  331.       return
  332.     end
  333.     # パーティーコマンドフェーズを飛ばしてアクターコマンドフェーズ開始
  334.     start_phase3
  335.   end
  336.   #--------------------------------------------------------------------------
  337.   # ● パーティコマンドフェーズ開始
  338.   #--------------------------------------------------------------------------
  339.   def start_phase2
  340.     # フェーズ 2 に移行
  341.     @phase = 2
  342.     # アクターを非選択状態に設定
  343.     @actor_index = -1
  344.     @active_battler = nil
  345.     # パーティコマンドウィンドウを有効化
  346.     @party_command_window.active = true
  347.     @party_command_window.visible = true
  348.     # アクターコマンドウィンドウを無効化
  349.     @actor_command_window.active = false
  350.     @actor_command_window.visible = false
  351.     # メインフェーズフラグをクリア
  352.     $game_temp.battle_main_phase = false
  353.     # コマンド入力不可能な場合
  354.     unless $game_party.inputable?
  355.       # メインフェーズ開始
  356.       start_phase4
  357.     end
  358.   end
  359.   #--------------------------------------------------------------------------
  360.   # ● フレーム更新 (パーティコマンドフェーズ : 逃げる)
  361.   #--------------------------------------------------------------------------
  362.   def update_phase2_escape
  363.     # エネミーの素早さ合計を計算
  364.     enemies_agi = 0
  365.     for enemy in $game_troop.enemies
  366.       if enemy.exist?
  367.         enemies_agi += enemy.agi
  368.       end
  369.     end
  370.     # 行動可能アクターの素早さ合計を計算
  371.     actors_agi = 0
  372.     for actor in @pre_action_battlers
  373.       if actor.is_a?(Game_Actor) and actor.exist?
  374.         actors_agi += actor.agi
  375.       end
  376.     end
  377.     # 逃走成功判定
  378.     success = rand(100) < 50 * actors_agi / enemies_agi
  379.     # 逃走成功の場合
  380.     if success
  381.       # 逃走 SE を演奏
  382.       $game_system.se_play($data_system.escape_se)
  383.       # バトル開始前の BGM に戻す
  384.       $game_system.bgm_play($game_temp.map_bgm)
  385.       # CTをクリア
  386.       for battler in $game_party.actors
  387.         clear_ct(battler)
  388.       end
  389.       # バトル終了
  390.       battle_end(1)
  391.     # 逃走失敗の場合
  392.     else
  393.       # ヘルプウィンドウに "逃走失敗" をセット
  394.       @help_window.set_text(PARA_CTB::UNESCAPE_MES, 1)
  395.       # アクターのアクションとCTをクリア
  396.       pre_action_battlers = @pre_action_battlers.clone
  397.       for act in pre_action_battlers
  398.         if act.is_a?(Game_Actor)
  399.           declease_ct(act, 100-PARA_CTB::ACT_ESCAPE_CT)
  400.           act.current_action.clear
  401.           @pre_action_battlers.delete(act)
  402.         end
  403.       end
  404.       @party_command_window.visible = false
  405.       # ヘルプウィンドウを表示
  406.       @help_window.visible = true
  407.       @wait_count = 20
  408.       # メインフェーズ開始
  409.       start_phase4
  410.     end
  411.   end
  412.   #--------------------------------------------------------------------------
  413.   # ● アクターコマンドフェーズ開始
  414.   #--------------------------------------------------------------------------
  415.   def start_phase3
  416.     # フェーズ 3 に移行
  417.     @phase = 3
  418.     # アクターを非選択状態に設定
  419.     @actor_index = -1
  420.     @active_battler = nil
  421.     @actor_array_index = -1
  422.     # 次のアクターのコマンド入力へ
  423.     if @pre_action_battlers != []
  424.       phase3_next_actor
  425.     else
  426.       start_phase4
  427.     end
  428.   end
  429.   #--------------------------------------------------------------------------
  430.   # ● 次のアクターのコマンド入力へ
  431.   #--------------------------------------------------------------------------
  432.   def phase3_next_actor
  433.     # ループ
  434.     begin
  435.       # アクターの明滅エフェクト OFF
  436.       if @active_battler != nil
  437.         @active_battler.blink = false
  438.       end
  439.       # 最後のアクターの場合
  440.       if @actor_array_index + 1 == @pre_action_battlers.size
  441.         # メインフェーズ開始
  442.         start_phase4
  443.         return
  444.       #次がエネミーの場合
  445.       elsif $game_troop.enemies.include?(@pre_action_battlers[@actor_array_index + 1])
  446.         # メインフェーズ開始
  447.         start_phase4
  448.         return
  449.       end
  450.       # アクターのインデックスを進める
  451.       @actor_array_index += 1
  452.       @actor_index = @pre_action_battlers[@actor_array_index].index
  453.       @active_battler = $game_party.actors[@actor_index]
  454.       @active_battler.blink = true
  455.       @active_battler.current_action.clear
  456.     # アクターがコマンド入力を受け付けない状態ならもう一度
  457.     end until @active_battler.inputable?
  458.     # アクターコマンドウィンドウをセットアップ
  459.     phase3_setup_command_window
  460.   end
  461.   #--------------------------------------------------------------------------
  462.   # ● 前のアクターのコマンド入力へ
  463.   #--------------------------------------------------------------------------
  464.   def phase3_prior_actor
  465.     # ループ
  466.     begin
  467.       # アクターの明滅エフェクト OFF
  468.       if @active_battler != nil
  469.         @active_battler.blink = false
  470.       end
  471.       # 最初のアクターの場合
  472.       if @actor_array_index <= 0
  473.         # アクターコマンドフェーズ開始
  474.         start_phase2
  475.         return
  476.       end
  477.       # アクターのインデックスを戻す
  478.       @actor_array_index -= 1
  479.       @actor_index = @pre_action_battlers[@actor_array_index].index
  480.       @active_battler = $game_party.actors[@actor_index]
  481.       @active_battler.blink = true
  482.       @active_battler.current_action.clear
  483.     # アクターがコマンド入力を受け付けない状態ならもう一度
  484.     end until @active_battler.inputable?
  485.     # アクターコマンドウィンドウをセットアップ
  486.     phase3_setup_command_window
  487.   end
  488.   #--------------------------------------------------------------------------
  489.   # ● アクターコマンドウィンドウのセットアップ
  490.   #--------------------------------------------------------------------------
  491.   alias phase3_setup_command_window_ctb phase3_setup_command_window
  492.   def phase3_setup_command_window
  493.     @actor_command_window.back_opacity = PARA_CTB::WINDOW_OPACITY
  494.     phase3_setup_command_window_ctb
  495.     if PARA_CTB::WINDOWPOS_CHANGE
  496.       # アクターコマンドウィンドウの位置を設定
  497.       @actor_command_window.x = PARA_CTB::WINDOWPOS_X
  498.       @actor_command_window.y = PARA_CTB::WINDOWPOS_Y
  499.       # ステータスウインドウに隠れないように
  500.       @actor_command_window.z = 9999
  501.     end
  502.   end
  503.   #--------------------------------------------------------------------------
  504.   # ● フレーム更新 (アクターコマンドフェーズ)
  505.   #--------------------------------------------------------------------------
  506.   def update_phase3
  507.     # エネミーアローが有効の場合
  508.     if @enemy_arrow != nil
  509.       @countup = PARA_CTB::SELECT_WAIT ? false : true
  510.       update_phase3_enemy_select
  511.     # アクターアローが有効の場合
  512.     elsif @actor_arrow != nil
  513.       @countup = PARA_CTB::SELECT_WAIT ? false : true
  514.       update_phase3_actor_select
  515.     # スキルウィンドウが有効の場合
  516.     elsif @skill_window != nil
  517.       @countup = PARA_CTB::SELECT_WAIT ? false : true
  518.       update_phase3_skill_select
  519.     # アイテムウィンドウが有効の場合
  520.     elsif @item_window != nil
  521.       @countup = PARA_CTB::SELECT_WAIT ? false : true
  522.       update_phase3_item_select
  523.     # アクターコマンドウィンドウが有効の場合
  524.     elsif @actor_command_window.active
  525.       @countup = PARA_CTB::COMMAND_WAIT ? false : true
  526.       update_phase3_basic_command
  527.     end
  528.   end
  529.   #--------------------------------------------------------------------------
  530.   # ● フレーム更新 (アクターコマンドフェーズ : 基本コマンド)
  531.   #--------------------------------------------------------------------------
  532.   alias ctb_update_phase3_basic_command update_phase3_basic_command
  533.   def update_phase3_basic_command
  534.     ctb_update_phase3_basic_command
  535.     # LRボタンで行動順を変更
  536.     if Input.trigger?(Input::R)
  537.       shift_activer(1)
  538.     end
  539.      if Input.trigger?(Input::L)
  540.       shift_activer(-1)
  541.     end
  542.   end
  543.   #--------------------------------------------------------------------------
  544.   # ● メインフェーズ開始
  545.   #--------------------------------------------------------------------------
  546.   def start_phase4
  547.     # フェーズ 4 に移行
  548.     @phase = 4
  549.     battler_count = $game_party.actors.size + $game_troop.enemies.size
  550.     if @action_count >= battler_count or $game_temp.battle_turn == 0
  551.       # バトルイベントの全ページを検索
  552.       for index in 0...$data_troops[@troop_id].pages.size
  553.         # イベントページを取得
  554.         page = $data_troops[@troop_id].pages[index]
  555.         # このページのスパンが [ターン] の場合
  556.         if page.span == 1
  557.           # 実行済みフラグをクリア
  558.           $game_temp.battle_event_flags[index] = false
  559.         end
  560.       end
  561.       # ターン数カウント
  562.       $game_temp.battle_turn += 1
  563.       @action_count = 0
  564.     end
  565.     # アクターを非選択状態に設定
  566.     @actor_index = -1
  567.     @active_battler = nil
  568.     # パーティコマンドウィンドウを有効化
  569.     @party_command_window.active = false
  570.     @party_command_window.visible = false
  571.     # アクターコマンドウィンドウを無効化
  572.     @actor_command_window.active = false
  573.     @actor_command_window.visible = false
  574.     # メインフェーズフラグをセット
  575.     $game_temp.battle_main_phase = true
  576.     # エネミーアクション作成
  577.     for enemy in $game_troop.enemies
  578.       enemy.make_action
  579.     end
  580.     # 行動順序作成
  581.     make_action_orders
  582.     # ステップ 1 に移行
  583.     @phase4_step = 1
  584.   end
  585.   #--------------------------------------------------------------------------
  586.   # ● 行動順序作成
  587.   #--------------------------------------------------------------------------
  588.   def make_action_orders
  589.     # 配列 @action_battlers を初期化
  590.     @action_battlers = []
  591.     if @pre_action_battlers != []
  592.       for i in 0..@actor_array_index
  593.         # アクターを配列 @action_battlers に追加
  594.         @action_battlers.push(@pre_action_battlers[0])
  595.         @pre_action_battlers.shift
  596.       end
  597.       if @pre_action_battlers.size != 0
  598.       loop do
  599.         if $game_troop.enemies.include?(@pre_action_battlers[0])
  600.           # エネミーを配列 @action_battlers に追加
  601.           @action_battlers.push(@pre_action_battlers[0])
  602.           @pre_action_battlers.shift
  603.         else
  604.           break
  605.         end
  606.       end
  607.       end
  608.     end
  609.   end
  610.   #--------------------------------------------------------------------------
  611.   # ● フレーム更新 (メインフェーズ ステップ 1 : アクション準備)
  612.   #--------------------------------------------------------------------------
  613.   alias ctb_update_phase4_step1 update_phase4_step1
  614.   def update_phase4_step1
  615.     @countup = true
  616.     # ヘルプウィンドウを隠す
  617.     @help_window.visible = false
  618.     # 勝敗判定
  619.     if judge
  620.       # 勝利または敗北の場合 : メソッド終了
  621.       return
  622.     end
  623.     # 未行動バトラーが存在しない場合 (全員行動した)
  624.     if @action_battlers.size == 0
  625.       # アクターコマンドフェーズ開始
  626.       start_phase3
  627.       return
  628.     end
  629.     ctb_update_phase4_step1
  630.   end
  631.   #--------------------------------------------------------------------------
  632.   # ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)
  633.   #--------------------------------------------------------------------------
  634.   alias ctb_update_phase4_step2 update_phase4_step2
  635.   def update_phase4_step2
  636.     # 強制アクションでなければ
  637.     unless @active_battler.current_action.forcing
  638.       # 制約が [行動できない] の場合
  639.       if @active_battler.restriction == 4
  640.         # CTをクリア
  641.         clear_ct(@active_battler)
  642.         # アクション強制対象のバトラーをクリア
  643.         $game_temp.forcing_battler = nil
  644.         # ステップ 1 に移行
  645.         @phase4_step = 1
  646.         return
  647.       end
  648.     end
  649.     # アニメーション再生中にCTをカウントするか
  650.     @countup = PARA_CTB::ANIMATION_WAIT ? false : true
  651.     ctb_update_phase4_step2
  652.   end
  653.   #--------------------------------------------------------------------------
  654.   # ● 基本アクション 結果作成
  655.   #--------------------------------------------------------------------------
  656.   alias make_basic_action_result_ctb make_basic_action_result
  657.   def make_basic_action_result
  658.     # 何もしないの場合
  659.     if @active_battler.current_action.basic == 3
  660.       # CTをクリア
  661.       clear_ct(@active_battler)
  662.       # アクション強制対象のバトラーをクリア
  663.       $game_temp.forcing_battler = nil
  664.       # ステップ 1 に移行
  665.       @phase4_step = 1
  666.       return
  667.     end
  668.     make_basic_action_result_ctb
  669.   end
  670.   #--------------------------------------------------------------------------
  671.   # ● スキルアクション 結果作成
  672.   #--------------------------------------------------------------------------
  673.   def make_skill_action_result
  674.     # スキルを取得
  675.     @skill = $data_skills[@active_battler.current_action.skill_id]
  676.     # 強制アクションでなければ
  677.     unless @active_battler.current_action.forcing
  678.       # SP 切れなどで使用できなくなった場合
  679.       unless @active_battler.skill_can_use?(@skill.id)
  680.         # アクション強制対象のバトラーをクリア
  681.         $game_temp.forcing_battler = nil
  682.         # CTをクリア
  683.         declease_ct(@active_battler,100-PARA_CTB::ACT_SKILL_CT)
  684.         # ステップ 1 に移行
  685.         @phase4_step = 1
  686.         return
  687.       end
  688.     end
  689.     # SP 消費
  690.     @active_battler.sp -= @skill.sp_cost
  691.     # ステータスウィンドウをリフレッシュ
  692.     @status_window.refresh
  693.     # ヘルプウィンドウにスキル名を表示
  694.     @help_window.set_text(@skill.name, 1)
  695.     # アニメーション ID を設定
  696.     @animation1_id = @skill.animation1_id
  697.     @animation2_id = @skill.animation2_id
  698.     # コモンイベント ID を設定
  699.     @common_event_id = @skill.common_event_id
  700.     # 対象側バトラーを設定
  701.     set_target_battlers(@skill.scope)
  702.     # スキルの効果を適用
  703.     for target in @target_battlers
  704.       target.skill_effect(@active_battler, @skill)
  705.     end
  706.   end
  707.   #--------------------------------------------------------------------------
  708.   # ● アイテムアクション 結果作成
  709.   #--------------------------------------------------------------------------
  710.   alias ctb_make_item_action_result make_item_action_result
  711.   def make_item_action_result
  712.     # アイテムを取得
  713.     @item = $data_items[@active_battler.current_action.item_id]
  714.     # アイテム切れなどで使用できなくなった場合
  715.     unless $game_party.item_can_use?(@item.id)
  716.       # CTをクリア
  717.       declease_ct(@active_battler,100-PARA_CTB::ACT_ITEM_CT)
  718.       # ステップ 1 に移行
  719.       @phase4_step = 1
  720.       return
  721.     end
  722.     ctb_make_item_action_result
  723.   end
  724.   #--------------------------------------------------------------------------
  725.   # ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
  726.   #--------------------------------------------------------------------------
  727.   alias update_phase4_step5_ctb update_phase4_step5
  728.   def update_phase4_step5
  729.     # ダメージを記録
  730.     for target in @target_battlers
  731.       if target.damage != nil
  732.         target.damage_backup = target.damage
  733.       end
  734.     end
  735.     update_phase4_step5_ctb
  736.   end
  737.   #--------------------------------------------------------------------------
  738.   # ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)
  739.   #--------------------------------------------------------------------------
  740.   alias update_phase4_step6_ctb update_phase4_step6
  741.   def update_phase4_step6
  742.     @active_battler.countup = true
  743.     if @active_battler.current_action.basic == 1
  744.       # 防御
  745.       declease_ct(@active_battler,100-PARA_CTB::ACT_GUARD_CT)
  746.     else
  747.       case @active_battler.current_action.kind
  748.       # 攻撃
  749.       when 0
  750.         declease_ct(@active_battler,100-PARA_CTB::ACT_ATTACK_CT)
  751.       # スキル
  752.       when 1
  753.         declease_ct(@active_battler,100-PARA_CTB::ACT_SKILL_CT)
  754.       # アイテム
  755.       when 2
  756.         declease_ct(@active_battler,100-PARA_CTB::ACT_ITEM_CT)
  757.       else
  758.         clear_ct(@active_battler)
  759.       end
  760.     end
  761.     # ターゲットが行動不能になったらCTを0に
  762.     for target in @target_battlers
  763.       if target.movable? == false and target.damage_backup != "Miss"
  764.         clear_ct(target)
  765.         @status_window.refresh_ct
  766.       end
  767.     end
  768.     # エネミー名リストを更新
  769.     @status_window2.refresh
  770.     update_phase4_step6_ctb
  771.   end
  772.   #--------------------------------------------------------------------------
  773.   # ● アフターバトルフェーズ開始
  774.   #--------------------------------------------------------------------------
  775.   alias ctb_start_phase5 start_phase5
  776.   def start_phase5
  777.     @countup = false
  778.     ctb_start_phase5
  779.   end
  780. end

  781. #==============================================================================
  782. # ■ Window_BattleStatus
  783. #==============================================================================

  784. class Window_BattleStatus < Window_Base
  785.   #--------------------------------------------------------------------------
  786.   # ● オブジェクト初期化
  787.   #--------------------------------------------------------------------------
  788.   def initialize
  789.     super(160, 320, 480, 160)
  790.     self.contents = Bitmap.new(width - 32, height - 32)
  791.     @level_up_flags = [false, false, false, false]   
  792.     @before_hp = []
  793.     @before_sp = []
  794.     @before_states = []
  795.     @now_hp = []
  796.     @now_sp = []
  797.     @now_states = []
  798.     refresh
  799.   end
  800.   #--------------------------------------------------------------------------
  801.   # ● リフレッシュ
  802.   #--------------------------------------------------------------------------
  803.   def refresh
  804.     @item_max = $game_party.actors.size
  805.     for i in 0...$game_party.actors.size
  806.       actor = $game_party.actors[i]
  807.       line_height = 120 / PARA_CTB::PARTY_SIZE
  808.       actor_y = i * line_height + 4
  809.       # 現在のステータスを配列に
  810.       @now_hp[i] = actor.hp
  811.       @now_sp[i] = actor.sp
  812.       @now_states[i] = actor.states
  813.       # レベルアップ
  814.       if @level_up_flags[i]
  815.         self.contents.fill_rect(344, actor_y+14, 100, 8, Color.new(0, 0, 0, 0))
  816.         self.contents.font.color = normal_color
  817.         self.contents.draw_text(344, actor_y, 120, 32, "LEVEL UP!")
  818.       end
  819.     end
  820.     # バトルステータスの軽量化処理
  821.     # ステータスの配列が変化したときのみ描画処理
  822.     if @before_hp == nil or @before_sp == nil or @before_states == nil or
  823.     @before_hp != @now_hp or @before_sp != @now_sp or @before_states != @now_states
  824.       self.contents.clear
  825.       for i2 in 0...$game_party.actors.size
  826.         actor = $game_party.actors[i2]
  827.         line_height = 120 / PARA_CTB::PARTY_SIZE
  828.         actor_y = i2 * line_height + 4
  829.         self.contents.font.size = PARA_CTB::NAME_FONT_SIZE
  830.         # 名前を描画
  831.         draw_actor_name(actor, 2, actor_y+1-PARA_CTB::NAME_FONT_SIZE)
  832.         # HPを描画
  833.         hp_color1 = PARA_CTB::HP_COLOR_LEFT
  834.         hp_color2 = PARA_CTB::HP_COLOR_RIGHT
  835.         draw_meter(actor.hp, actor.maxhp, 125, actor_y+14, 80, 8, hp_color1, hp_color2)
  836.         draw_actor_hp(actor, 102, actor_y+16-PARA_CTB::HPSP_FONT_SIZE, 100)
  837.         # SPを描画
  838.         sp_color1 = PARA_CTB::SP_COLOR_LEFT
  839.         sp_color2 = PARA_CTB::SP_COLOR_RIGHT
  840.         draw_meter(actor.sp, actor.maxsp, 245, actor_y+14, 80, 8, sp_color1, sp_color2)
  841.         draw_actor_sp(actor, 222, actor_y+16-PARA_CTB::HPSP_FONT_SIZE, 100)
  842.         # 変化後のステータスを配列に
  843.         @before_hp[i2] = actor.hp
  844.         @before_sp[i2] = actor.sp
  845.         @before_states[i2] = actor.states
  846.         # レベルアップ
  847.         if @level_up_flags[i2]
  848.           self.contents.fill_rect(344, actor_y, 100, 8, Color.new(0, 0, 0, 0))
  849.           self.contents.font.color = normal_color
  850.           self.contents.draw_text(344, actor_y, 120, 32, "LEVEL UP!")
  851.         end
  852.       end
  853.     end
  854.     refresh_ct
  855.   end
  856.   #--------------------------------------------------------------------------
  857.   # ● CTゲージのリフレッシュ
  858.   #--------------------------------------------------------------------------
  859.   def refresh_ct
  860.     for i in 0...$game_party.actors.size
  861.       actor = $game_party.actors[i]
  862.       line_height = 120 / PARA_CTB::PARTY_SIZE
  863.       actor_y = i * line_height + 4
  864.       # CTが満タンになったときのゲージの色
  865.       ct_color_full = PARA_CTB::COLOR_FULL
  866.       # CTゲージの色(左端)
  867.       ct_color_start = actor.full_ct ? ct_color_full : PARA_CTB::COLOR_LEFT
  868.       # CTゲージの色(右端)
  869.       ct_color_end = actor.full_ct ? ct_color_full : PARA_CTB::COLOR_RIGHT
  870.       if @level_up_flags[i] != true and actor.ct_visible
  871.         draw_meter(actor.now_ct, actor.max_ct, 344, actor_y+14, 100, 8, ct_color_start, ct_color_end)
  872.       elsif @level_up_flags[i] != true
  873.         draw_meter(0, actor.max_ct, 344, actor_y+14, 100, 8, ct_color_start, ct_color_end)
  874.       end
  875.     end
  876.   end
  877.   #--------------------------------------------------------------------------
  878.   # ● フレーム更新
  879.   #--------------------------------------------------------------------------
  880.   def update
  881.     super
  882.   end
  883.   #--------------------------------------------------------------------------
  884.   # ● HP の描画
  885.   #     actor : アクター
  886.   #     x     : 描画先 X 座標
  887.   #     y     : 描画先 Y 座標
  888.   #     width : 描画先の幅
  889.   #--------------------------------------------------------------------------
  890.   def draw_actor_hp(actor, x, y, width = 144)
  891.     # 文字列 "HP" を描画
  892.     self.contents.font.color = system_color
  893.     self.contents.font.size = 16
  894.     self.contents.draw_text(x, y+2, 32, 32, $data_system.words.hp)
  895.     self.contents.font.color = normal_color
  896.     self.contents.font.size = PARA_CTB::HPSP_FONT_SIZE
  897.     if PARA_CTB::MAX_DRAW
  898.       # MaxHP を描画
  899.       self.contents.draw_text(x, y, width, 32, actor.maxhp.to_s, 2)
  900.       text_size = self.contents.text_size(actor.maxhp.to_s)
  901.       text_x = x + width - text_size.width - 12
  902.       self.contents.draw_text(text_x, y, 12, 32, "/", 1)
  903.       # HP を描画
  904.       self.contents.font.color = actor.hp == 0 ? knockout_color :
  905.         actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
  906.       text_x = text_x - text_size.width
  907.       self.contents.draw_text(text_x, y, text_size.width, 32, actor.hp.to_s, 2)
  908.     else
  909.       self.contents.font.color = actor.hp == 0 ? knockout_color :
  910.         actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
  911.       self.contents.draw_text(x, y, width, 32, actor.hp.to_s, 2)
  912.     end
  913.   end
  914.   #--------------------------------------------------------------------------
  915.   # ● SP の描画
  916.   #     actor : アクター
  917.   #     x     : 描画先 X 座標
  918.   #     y     : 描画先 Y 座標
  919.   #     width : 描画先の幅
  920.   #--------------------------------------------------------------------------
  921.   def draw_actor_sp(actor, x, y, width = 144)
  922.     # 文字列 "SP" を描画
  923.     self.contents.font.color = system_color
  924.     self.contents.font.size = 16
  925.     self.contents.draw_text(x, y+2, 32, 32, $data_system.words.sp)
  926.     self.contents.font.color = normal_color
  927.     self.contents.font.size = PARA_CTB::HPSP_FONT_SIZE
  928.     if PARA_CTB::MAX_DRAW
  929.     # MaxSP を描画
  930.       self.contents.draw_text(x, y, width, 32, actor.maxsp.to_s, 2)
  931.       text_size = self.contents.text_size(actor.maxsp.to_s)
  932.       text_x = x + width - text_size.width - 12
  933.       self.contents.draw_text(text_x, y, 12, 32, "/", 1)
  934.       # SP を描画
  935.       self.contents.font.color = actor.sp == 0 ? knockout_color :
  936.         actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
  937.       text_x = text_x - text_size.width
  938.       self.contents.draw_text(text_x, y, text_size.width, 32, actor.sp.to_s, 2)
  939.     else
  940.       self.contents.font.color = actor.sp == 0 ? knockout_color :
  941.         actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
  942.       self.contents.draw_text(x, y, width, 32, actor.sp.to_s, 2)
  943.     end
  944.   end
  945. end

  946. #==============================================================================
  947. # □ 敵の名前を表示するウインドウ
  948. #==============================================================================

  949. class Window_BattleStatus_enemy < Window_Base
  950.   #--------------------------------------------------------------------------
  951.   # ○ オブジェクト初期化
  952.   #--------------------------------------------------------------------------
  953.   def initialize
  954.     super(0, 320, 160, 160)
  955.     self.contents = Bitmap.new(width - 32, height - 32)
  956.     refresh
  957.   end
  958.   #--------------------------------------------------------------------------
  959.   # ○ リフレッシュ
  960.   #--------------------------------------------------------------------------
  961.   def refresh
  962.     self.contents.clear
  963.     self.contents.font.color = normal_color
  964.     self.contents.font.size = PARA_CTB::ENEMY_FONT_SIZE
  965.     @exist_enemies = []
  966.     if $game_troop.enemies != nil
  967.       if PARA_CTB::ENEMY_GROUPING
  968.         ememy_list = []
  969.         ememy_list_index = []
  970.         # エネミーをグループ化
  971.         for i in 0...$game_troop.enemies.size
  972.           enemy = $game_troop.enemies[i]
  973.           if enemy.exist?
  974.             if ememy_list.include?(enemy.name)
  975.               ememy_list_index[ememy_list.index(enemy.name)] += 1
  976.             else
  977.               # エネミー名を記録
  978.               ememy_list.push(enemy.name)
  979.               ememy_list_index[ememy_list.index(enemy.name)] = 1
  980.             end
  981.           end
  982.         end
  983.         # エネミーの名前と数を描画
  984.         enemy_index = 0
  985.         for enemy_name in ememy_list
  986.           enemy_y = enemy_index * (PARA_CTB::ENEMY_FONT_SIZE+6) + 4
  987.           if ememy_list_index[enemy_index] > 1
  988.             enemy_name = enemy_name + " " + ememy_list_index[enemy_index].to_s
  989.           end
  990.           self.contents.draw_text(4, enemy_y, 160, 20, enemy_name)
  991.           enemy_index += 1
  992.         end
  993.       else
  994.         # エネミーの名前を描画
  995.         enemy_index = 0
  996.         for i in 0...$game_troop.enemies.size
  997.           enemy = $game_troop.enemies[i]
  998.           if enemy.exist?
  999.             @exist_enemies.push(enemy)
  1000.             line_height = PARA_CTB::ENEMY_FONT_SIZE + 6
  1001.             if PARA_CTB::ENEMY_DRAWING_MATER != 0
  1002.               line_height += 10
  1003.             end
  1004.             enemy_y = enemy_index * line_height + 4
  1005.             self.contents.draw_text(4, enemy_y, 160, 20, enemy.name)
  1006.             enemy_index += 1
  1007.             if PARA_CTB::ENEMY_DRAWING_MATER == 1
  1008.               hp_color1 = PARA_CTB::HP_COLOR_LEFT
  1009.               hp_color2 = PARA_CTB::HP_COLOR_RIGHT
  1010.               y = enemy_y + PARA_CTB::ENEMY_FONT_SIZE + 3
  1011.               draw_meter(enemy.hp, enemy.maxhp, 4, y, 80, 8, hp_color1, hp_color2)
  1012.             end
  1013.           end
  1014.         end
  1015.       end
  1016.     end
  1017.     refresh_ct
  1018.   end
  1019.   #--------------------------------------------------------------------------
  1020.   # ● CTゲージのリフレッシュ
  1021.   #--------------------------------------------------------------------------
  1022.   def refresh_ct
  1023.     if PARA_CTB::ENEMY_DRAWING_MATER == 2 and @exist_enemies != nil
  1024.       enemy_index = 0
  1025.       for enemy in @exist_enemies
  1026.         line_height = PARA_CTB::ENEMY_FONT_SIZE + 16
  1027.         enemy_y = enemy_index * line_height + 4
  1028.         y = enemy_y + PARA_CTB::ENEMY_FONT_SIZE + 3
  1029.         # CTが満タンになったときのゲージの色
  1030.         ct_color_full = PARA_CTB::COLOR_FULL
  1031.         # CTゲージの色(左端)
  1032.         ct_color_start = enemy.full_ct ? ct_color_full : PARA_CTB::COLOR_LEFT
  1033.         # CTゲージの色(右端)
  1034.         ct_color_end = enemy.full_ct ? ct_color_full : PARA_CTB::COLOR_RIGHT
  1035.         if enemy.ct_visible
  1036.           draw_meter(enemy.now_ct, enemy.max_ct, 4, y, 100, 8, ct_color_start, ct_color_end)
  1037.         else
  1038.           draw_meter(0, enemy.max_ct, 4, y, 100, 8, ct_color_start, ct_color_end)
  1039.         end
  1040.         enemy_index += 1
  1041.       end
  1042.     end
  1043.   end
  1044. end

  1045. #==============================================================================
  1046. # ■ Window_Base
  1047. #==============================================================================

  1048. class Window_Base < Window
  1049.   
  1050.   #--------------------------------------------------------------------------
  1051.   # ○ ゲージを描画
  1052.   #--------------------------------------------------------------------------
  1053.   def draw_meter(now, max, x, y, width, height, start_color, end_color=start_color )
  1054.     self.contents.fill_rect(x, y, width, height, PARA_CTB::FRAME_COLOR)
  1055.     self.contents.fill_rect(x+PARA_CTB::FRAME_BORDER, y+PARA_CTB::FRAME_BORDER, width-

  1056. PARA_CTB::FRAME_BORDER*2, height-PARA_CTB::FRAME_BORDER*2, PARA_CTB::BACK_COLOR)
  1057.     now = now > max ? max : now
  1058.     percentage = max != 0 ? (width-2) * now / max.to_f : 0
  1059.     if start_color == end_color
  1060.       self.contents.fill_rect(x+1, y+1, percentage, height-2, start_color)
  1061.     else
  1062.       for i in 1..percentage
  1063.         r = start_color.red + (end_color.red - start_color.red) / percentage * i
  1064.         g = start_color.green + (end_color.green - start_color.green) / percentage * i
  1065.         b = start_color.blue + (end_color.blue - start_color.blue) / percentage * i
  1066.         a = start_color.alpha + (end_color.alpha - start_color.alpha) / percentage * i
  1067.         self.contents.fill_rect(x+i, y+1, 1, height-2, Color.new(r, g, b, a))
  1068.       end
  1069.     end
  1070.   end
  1071. end

  1072. #==============================================================================
  1073. # ■ Game_Battler
  1074. #==============================================================================

  1075. class Game_Battler
  1076.   #--------------------------------------------------------------------------
  1077.   # ● 公開インスタンス変数
  1078.   #--------------------------------------------------------------------------
  1079.   attr_accessor :max_ct
  1080.   attr_accessor :now_ct
  1081.   attr_accessor :full_ct
  1082.   attr_accessor :countup
  1083.   attr_accessor :ct_visible
  1084.   attr_accessor :damage_backup
  1085.   #--------------------------------------------------------------------------
  1086.   # ● オブジェクト初期化
  1087.   #--------------------------------------------------------------------------
  1088.   alias ctb_initialize initialize
  1089.   def initialize
  1090.     ctb_initialize
  1091.     @max_ct = 0
  1092.     @now_ct = 0
  1093.     @full_ct = false
  1094.     @countup = true
  1095.     @ct_visible = true
  1096.   end
  1097. end

  1098. #==============================================================================
  1099. # ■ Sprite_Battler
  1100. #==============================================================================

  1101. class Sprite_Battler < RPG::Sprite
  1102.   #--------------------------------------------------------------------------
  1103.   # ● フレーム更新
  1104.   #--------------------------------------------------------------------------
  1105.   alias ctb_update update
  1106.   def update
  1107.     ctb_update
  1108.     if @battler != nil
  1109.       if @battler.full_ct and @battler.ct_visible
  1110.         # CTが溜まったバトラーの色調を変化させる
  1111.         fullct_color = PARA_CTB::FULL_CT_COLOR
  1112.         self.tone = fullct_color
  1113.       else
  1114.         fullct_color = Tone.new(0,0,0)
  1115.         self.tone = fullct_color
  1116.       end
  1117.     end
  1118.   end
  1119. end

  1120. #==============================================================================
  1121. # ■ Window_Help
  1122. #==============================================================================

  1123. class Window_Help < Window_Base
  1124.   #--------------------------------------------------------------------------
  1125.   # ● アクター設定
  1126.   #     actor : ステータスを表示するアクター
  1127.   #--------------------------------------------------------------------------
  1128.   alias set_actor_ctb set_actor
  1129.   def set_actor(actor)
  1130.     if PARA_CTB::HELP_DRAWING_MATER_ACTOR
  1131.       self.contents.clear
  1132.       draw_actor_name(actor, 4, 0)
  1133.       draw_actor_state(actor, 140, 0)
  1134.       hp_color1 = PARA_CTB::HP_COLOR_LEFT
  1135.       hp_color2 = PARA_CTB::HP_COLOR_RIGHT
  1136.       draw_meter(actor.hp, actor.maxhp, 316, 18, 112, 8, hp_color1, hp_color2)
  1137.       draw_actor_hp(actor, 284, 0)
  1138.       sp_color1 = PARA_CTB::SP_COLOR_LEFT
  1139.       sp_color2 = PARA_CTB::SP_COLOR_RIGHT
  1140.       draw_meter(actor.sp, actor.maxsp, 492, 18, 112, 8, sp_color1, sp_color2)
  1141.       draw_actor_sp(actor, 460, 0)
  1142.       @actor = actor
  1143.       @text = nil
  1144.       self.visible = true
  1145.     else
  1146.       set_actor_ctb(actor)
  1147.     end
  1148.   end
  1149.   #--------------------------------------------------------------------------
  1150.   # ● エネミー設定
  1151.   #     enemy : 名前とステートを表示するエネミー
  1152.   #--------------------------------------------------------------------------
  1153.   alias set_enemy_ctb set_enemy
  1154.   def set_enemy(enemy)
  1155.     if PARA_CTB::HELP_DRAWING_MATER_ENEMY
  1156.       self.contents.clear
  1157.       draw_actor_name(enemy, 4, 0)
  1158.       draw_actor_state(enemy, 140, 0)
  1159.       hp_color1 = PARA_CTB::HP_COLOR_LEFT
  1160.       hp_color2 = PARA_CTB::HP_COLOR_RIGHT
  1161.       draw_meter(enemy.hp, enemy.maxhp, 316, 18, 112, 8, hp_color1, hp_color2)
  1162.       draw_actor_hp(enemy, 284, 0)
  1163.       sp_color1 = PARA_CTB::SP_COLOR_LEFT
  1164.       sp_color2 = PARA_CTB::SP_COLOR_RIGHT
  1165.       draw_meter(enemy.sp, enemy.maxsp, 492, 18, 112, 8, sp_color1, sp_color2)
  1166.       draw_actor_sp(enemy, 460, 0)
  1167.       self.visible = true
  1168.     else
  1169.       set_enemy_ctb(enemy)
  1170.     end
  1171.   end
  1172. end
复制代码
以上是我用的战斗系统!:)  请问添加图片的脚本应该加在那一句后面?
作者: 失去的记忆    时间: 2011-1-8 20:55
脚本太长 无视....
PS:版主别骂我!:D
作者: 步兵中尉    时间: 2011-1-9 00:51
本帖最后由 步兵中尉 于 2011-1-9 00:52 编辑

其实在血条脚本中修改最简单了。
话说回来,你给的那段脚本想说什么?
作者: 永江衣玖    时间: 2011-1-9 09:47
本帖最后由 永江衣玖 于 2011-1-9 09:47 编辑

这个脚本不是很熟,但是修改一下window_battlestatus部分应该也可以显示出头像的,以下方法未经测试仅供参考~

找到window_battlestatus的オブジェクト初期化部分,在refresh前添加

  1. @sta_back = []
  2.    for actor_index in 1..$game_party.actors.size
  3.       @sta_back[actor_index] = Sprite.new
  4.       @sta_back[actor_index].bitmap = Bitmap.new("Graphics/Picturess/" + $game_party.actors[actor_index - 1].name + "_sta.png")
  5.       @sta_back[actor_index].x = (actor_index- 1)* 160 #这里的坐标请自己调整~
  6.       @sta_back[actor_index].y = 480 - 78 -14#这里的坐标请自己调整~
  7.       @sta_back[actor_index].z = self.z+1
  8.    end
复制代码
然后在● リフレッシュ之前添加

  1.   #--------------------------------------------------------------------------
  2.   # 释放头像
  3.   #--------------------------------------------------------------------------
  4.   def dispose
  5.     for actor_index in 1..$game_party.actors.size
  6.       @sta_back[actor_index].bitmap.dispose
  7.       @sta_back[actor_index].dispose
  8.     end
  9.     super
  10.   end
复制代码
然后把头像命名为“角色名称_sta.png”放在Pictures文件夹下就好了~
作者: as4410    时间: 2011-1-12 14:11
我试过修改window_battlestatus部分。
就是显示不出 - -!把这个CP制的删掉就显示出了。
就是不知道添加头像那段脚本应该加在什么地方:L
作者: 忧雪の伤    时间: 2011-1-14 09:57
新建一个显示头像的窗口来达到显示的目的
http://rpg.blue/forum.php?mod=vi ... =%E5%A4%B4%E5%83%8F

这个应该是可以




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