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

Project1

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

[已经解决] 求vx类似最终幻想系列的战斗系统

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
70
在线时间
44 小时
注册时间
2011-8-3
帖子
12
跳转到指定楼层
1
发表于 2011-9-9 16:17:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 超级地板砖 于 2011-9-9 17:08 编辑

就是横板的,带cp条的那种。

Lv1.梦旅人

梦石
0
星屑
48
在线时间
678 小时
注册时间
2010-8-11
帖子
1533
2
发表于 2011-9-9 16:54:28 | 只看该作者
RT……等扣吧=_,=
最终幻想的战斗系统么……我最近找到了一个……
不过还没有试过……自己拿去用吧……
  1. #==============================================================================
  2. #    ?VX RGSS2 「バトルウィンドウ変更:FF風表示」?
  3. #      EnDlEss DREamER
  4. #     URL:http://eiennoyumeni.hp.infoseek.co.jp/index.htm
  5. #     製作者 mitsu-evo
  6. #     Last:2011/8/4
  7. #   戦闘ウィンドウの配置をFFっぽくする。
  8. #     ▼ 「バトルレイアウト変更」よりも下で「MAIN」近く。
  9. #==============================================================================
  10. $ed_rgss2 = {} if $ed_rgss2 == nil
  11. $ed_rgss2["ed_battle_scene_ff_edit"] = true
  12. $imported = {} if $imported == nil
  13. =begin

  14. 8/4:MM風パーティーシステムに対応修正。

  15.         ★ 概要 ★
  16.         
  17.       ・戦闘ウィンドウ表示関係などを「FF風」に変更するスクリプトです。
  18.        これにより「表情変化」の機能は失われます。
  19.       ・バトルレイアウト変更併用時は「サイドビュー」限定です。
  20.        フロントビューには対応しません。
  21.       ・「ダメージポップアップ」の「FF_MASSAGE_SYSTEM」を「true」
  22.        「通常攻撃回数システム」「アローカーソル」
  23.        「バトルレイアウト変更」のサイドビューにすると
  24.        結構「FFっぽく」なります。
  25.       
  26.        ★ 仕様 ★
  27.       
  28.       ・バトルレイアウト変更とダメージポップアップを導入すると
  29.        メッセージウィンドウがイベント実行による文章表示以外
  30.        一切表示されなくなります。
  31.       ・このスクリプト単体を導入の場合は、画面上部に透明ウィンドウで
  32.        バトルメッセージが表示されます。
  33.       ・状態異常は回復魔法など「対象アクター選択時」に状態変化が
  34.        「順番に表示」されます。
  35.        待っていれば掛かってるステート全部確認可能です。
  36.       ・簡易ATBシステム導入時はバトルステータスのMP表示部がATBゲージになります。
  37.       

  38. =end
  39. module ED
  40.   
  41.   # 戦闘中のウィンドウ内フォントサイズ
  42.   BATTLE_FONT_SIZE = 14
  43.   # 戦闘中の行の高さ基準値 (Window Line Height)
  44.   BATTLE_WLH       = 18
  45.   
  46. end
  47.   
  48. #==============================================================================
  49. # ■ Window_Help
  50. #------------------------------------------------------------------------------
  51. #  スキルやアイテムの説明、アクターのステータスなどを表示するウィンドウです。
  52. #==============================================================================

  53. class Window_Help < Window_Base
  54.   WLH = ED::BATTLE_WLH
  55.   #--------------------------------------------------------------------------
  56.   # ● テキスト設定
  57.   #--------------------------------------------------------------------------
  58.   def set_mp_text(obj, cost, mp, maxmp, align = 0)
  59.     if obj != @obj or align != @align
  60.       create_contents
  61.       text_mp = mp.to_s + " / " + maxmp.to_s
  62.       cost_str = "消費" + Vocab.mp
  63.       self.contents.clear
  64.       self.contents.font.color = normal_color
  65.       self.contents.font.size = ED::BATTLE_FONT_SIZE
  66.       self.contents.draw_text(4, 0, self.width - 40, WLH, text_mp, align)
  67.       self.contents.draw_text(4, WLH + 8, self.width - 40, WLH, cost_str, align)
  68.       self.contents.draw_text(4, (WLH + 8) * 2, self.width - 40, WLH, cost.to_s, align)
  69.       @obj = obj
  70.       @align = align
  71.     end
  72.   end
  73. end
  74. #==============================================================================
  75. # ■ Window_PartyCommand
  76. #------------------------------------------------------------------------------
  77. #  バトル画面で、戦うか逃げるかを選択するウィンドウです。
  78. #==============================================================================

  79. class Window_PartyCommand < Window_Command
  80.   #--------------------------------------------------------------------------
  81.   # ● オブジェクト初期化
  82.   #--------------------------------------------------------------------------
  83.   def initialize
  84.     s1 = Vocab::fight
  85.     s2 = Vocab::escape
  86.     super(128, [s1, s2], 1, 4)
  87.     draw_item(0, true)
  88.     draw_item(1, $game_troop.can_escape)
  89.     self.active = false
  90.   end
  91. end
  92. #==============================================================================
  93. # ■ Window_ActorCommand
  94. #------------------------------------------------------------------------------
  95. #  バトル画面で、戦うか逃げるかを選択するウィンドウです。
  96. #==============================================================================

  97. class Window_ActorCommand < Window_Command
  98.   #--------------------------------------------------------------------------
  99.   # ● オブジェクト初期化
  100.   #--------------------------------------------------------------------------
  101.   def initialize
  102.     super(128, [], 1, 4)
  103.     self.active = false
  104.   end
  105. end
  106. #==============================================================================
  107. # ■ Window_Skill_FF
  108. #------------------------------------------------------------------------------
  109. #  戦闘画面スキルをFF風に変更したクラスです。
  110. #==============================================================================

  111. class Window_Skill_FF < Window_Skill
  112.   WLH = ED::BATTLE_WLH
  113.   #--------------------------------------------------------------------------
  114.   # ● オブジェクト初期化
  115.   #     x      : ウィンドウの X 座標
  116.   #     y      : ウィンドウの Y 座標
  117.   #     width  : ウィンドウの幅
  118.   #     height : ウィンドウの高さ
  119.   #     actor  : アクター
  120.   #--------------------------------------------------------------------------
  121.   def initialize(x, y, width, height, actor)
  122.     super(x, y, width, height, actor)
  123.     @actor = actor
  124.     @column_max = 3
  125.     @spacing = 8
  126.     self.index = 0
  127.     refresh
  128.   end
  129.   #--------------------------------------------------------------------------
  130.   # ● 項目の描画
  131.   #     index : 項目番号
  132.   #--------------------------------------------------------------------------
  133.   def draw_item(index)
  134.     rect = item_rect(index)
  135.     self.contents.clear_rect(rect)
  136.     self.contents.font.size = ED::BATTLE_FONT_SIZE
  137.     skill = @data[index]
  138.     if skill != nil
  139.       rect.width -= 4
  140.       enabled = @actor.skill_can_use?(skill)
  141.       draw_item_name(skill, rect.x, rect.y, enabled)
  142.     end
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● ヘルプテキスト更新
  146.   #--------------------------------------------------------------------------
  147.   def update_help
  148.     return if skill == nil
  149.     cost = skill.mp_cost
  150.     mp = @actor.mp
  151.     maxmp = @actor.maxmp
  152.     @help_window.set_mp_text(skill, cost, mp, maxmp, 1)
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ● スキルの取得
  156.   #--------------------------------------------------------------------------
  157.   def skill
  158.     return @data[self.index]
  159.   end
  160. if $ed_rgss2["ed_weapon_command"]
  161.   #--------------------------------------------------------------------------
  162.   # ● リフレッシュ
  163.   #--------------------------------------------------------------------------
  164.   def refresh
  165.     @weapons = @actor.battle_weapons
  166.     if @actor.select_weapon != nil and @actor.select_weapon != 999
  167.       @used_weapon = @weapons[@actor.select_weapon]
  168.     end
  169.     if @actor.select_weapon != 999
  170.       @data = []
  171.       for skill in @actor.skills
  172.         skill_elements = skill.element_set
  173.         weapon_elements = @used_weapon == nil ? [1] : @used_weapon.element_set
  174.         if weapon_elements == []
  175.           element = nil
  176.         else
  177.           element = weapon_elements - skill_elements
  178.         end
  179.         if $imported["HiddenSkill"] == true
  180.           next unless include?(skill)
  181.         end
  182.         @data.push(skill) if element == []
  183.         if skill.id == @actor.last_skill_id
  184.           self.index = @data.size - 1
  185.         else
  186.           self.index = 0
  187.         end
  188.       end
  189.     else #@actor.select_weapon == 999
  190.       @data = []
  191.       for skill in @actor.skills
  192.         if $imported["HiddenSkill"] == true
  193.           next unless include?(skill)
  194.         end
  195.         @data.push(skill)
  196.         if skill.id == @actor.last_skill_id
  197.           self.index = @data.size - 1
  198.         end
  199.       end
  200.     end
  201.     @item_max = @data.size
  202.     create_contents
  203.     for i in 0...@item_max
  204.       draw_item(i)
  205.     end
  206.   end
  207. if $ed_rgss2["ed_weapon_count"]
  208.   #--------------------------------------------------------------------------
  209.   # ● アイテム名の描画
  210.   #     item    : アイテム (スキル、武器、防具でも可)
  211.   #     x       : 描画先 X 座標
  212.   #     y       : 描画先 Y 座標
  213.   #     enabled : 有効フラグ。false のとき半透明で描画
  214.   #--------------------------------------------------------------------------
  215.   def draw_item_name(item, x, y, enabled = true)
  216.     if item != nil
  217.       draw_icon(item.icon_index, x, y, enabled)
  218.       # アイテム以外
  219.       if item.is_a?(RPG::Weapon) or item.is_a?(RPG::Armor)
  220.         # アイテムの文字と設定文字がそれぞれ同じなら分岐
  221.         if item.equip_state[2] == Vocab::Equip_Damage
  222.           # 破損
  223.           self.contents.font.color = crisis_color
  224.         elsif item.equip_state[2] == Vocab::Equip_Break
  225.           # 大破
  226.           self.contents.font.color = knockout_color
  227.         else
  228.           # 正常
  229.           self.contents.font.color = normal_color
  230.         end
  231.       end
  232.       self.contents.font.color.alpha = enabled ? 255 : 128
  233.       self.contents.draw_text(x + 24, y, 172, WLH, item.name)
  234.     end
  235.   end
  236. end

  237. if $imported["CategorizeSkill"]
  238.   #--------------------------------------------------------------------------
  239.   # ○ スキルをリストに含めるかどうか
  240.   #     skill : スキル
  241.   #--------------------------------------------------------------------------
  242.   def include?(skill)
  243.     super(skill)
  244.   end
  245. elsif $imported["HiddenSkill"]
  246.   #--------------------------------------------------------------------------
  247.   # ○ スキルをリストに含めるかどうか
  248.   #     skill : スキル
  249.   #--------------------------------------------------------------------------
  250.   unless $@
  251.     alias include_KGC_HiddenSkill? include? if method_defined?(:include?)
  252.   end
  253.   def include?(skill)
  254.     super(skill)
  255.   end
  256. end
  257. end#$ed_rgss2["ed_weapon_command"]
  258. end
  259. #==============================================================================
  260. # ■ Window_TargetEnemy
  261. #------------------------------------------------------------------------------
  262. #  バトル画面で、行動対象の敵キャラを選択するウィンドウです。
  263. #==============================================================================

  264. class Window_TargetEnemy < Window_Command
  265.   WLH = ED::BATTLE_WLH
  266.   #--------------------------------------------------------------------------
  267.   # ● オブジェクト初期化
  268.   #--------------------------------------------------------------------------
  269.   def initialize
  270.     commands = []
  271.     @enemies = []
  272.     names = $game_troop.enemy_names
  273.     counts = []
  274.     name = ""
  275.     old_name = ""
  276.     i = 0
  277.     for enemy in $game_troop.members
  278.       next unless enemy.exist?
  279.       @enemies.push(enemy)
  280.       name = enemy.original_name
  281.       if name != old_name
  282.         counts << i unless old_name == ""
  283.         a = i
  284.         i = 0 unless old_name == ""
  285.       end
  286.       old_name = enemy.original_name
  287.       i += 1
  288.     end
  289.     counts << i if i > 0
  290.     counts << a if i == 0
  291.     for i in 0...names.size
  292.       if counts[i] > 1
  293.         commands.push(names[i] + " " + counts[i].to_s)
  294.       else
  295.         commands.push(names[i])
  296.       end
  297.     end
  298.     super(240, commands, 1, 0, 8)
  299.     self.x = 0
  300.   end
  301.   #--------------------------------------------------------------------------
  302.   # ● リフレッシュ
  303.   #--------------------------------------------------------------------------
  304.   def refresh
  305.     self.contents.clear
  306.     commands = []
  307.     names = $game_troop.enemy_names
  308.     counts = []
  309.     name = ""
  310.     old_name = ""
  311.     i = 0
  312.     for enemy in $game_troop.members
  313.       next unless enemy.exist?
  314.       name = enemy.original_name
  315.       if name != old_name
  316.         counts << i unless old_name == ""
  317.         a = i
  318.         i = 0 unless old_name == ""
  319.       end
  320.       old_name = enemy.original_name
  321.       i += 1
  322.     end
  323.     counts << i if i > 0
  324.     counts << a if i == 0
  325.     for i in 0...names.size
  326.       if counts[i] > 1
  327.         commands.push(names[i] + " " + counts[i].to_s)
  328.       else
  329.         commands.push(names[i])
  330.       end
  331.     end
  332.     @commands = commands
  333.     @item_max = commands.size
  334.     for i in 0...@item_max
  335.       draw_item(i)
  336.     end
  337.   end
  338.   #--------------------------------------------------------------------------
  339.   # ● カーソルを下に移動
  340.   #     wrap : ラップアラウンド許可
  341.   #--------------------------------------------------------------------------
  342.   def cursor_down(wrap = false)
  343.     if (@index >= @column_max) or (wrap and @column_max == 1)
  344.       @index = (@index - @column_max + @item_max) % @item_max
  345.     end
  346.   end
  347.   #--------------------------------------------------------------------------
  348.   # ● カーソルを上に移動
  349.   #     wrap : ラップアラウンド許可
  350.   #--------------------------------------------------------------------------
  351.   def cursor_up(wrap = false)
  352.     if (@index < @item_max - @column_max) or (wrap and @column_max == 1)
  353.       @index = (@index + @column_max) % @item_max
  354.     end
  355.   end
  356.   #--------------------------------------------------------------------------
  357.   # ● 項目の描画
  358.   #     index   : 項目番号
  359.   #     enabled : 有効フラグ。false のとき半透明で描画
  360.   #--------------------------------------------------------------------------
  361.   def draw_item(index, enabled = true)
  362.     self.contents.font.size = ED::BATTLE_FONT_SIZE
  363.     super(index, enabled)
  364.   end
  365. end
  366. #==============================================================================
  367. # ■ Window_BattleMessage
  368. #------------------------------------------------------------------------------
  369. #  戦闘中に表示するメッセージウィンドウです。通常のメッセージウィンドウの機能
  370. # に加え、戦闘進行のナレーションを表示する機能を持ちます。
  371. #==============================================================================

  372. class Window_BattleMessage < Window_Message
  373.   #--------------------------------------------------------------------------
  374.   # ● オブジェクト初期化
  375.   #--------------------------------------------------------------------------
  376.   def initialize
  377.     super
  378.     self.openness = 255
  379.     #戦闘中のウィンドウの透明度
  380.     self.opacity = $ed_rgss2["ed_battle_scene"] ? 255 : 0
  381.     self.y = $ed_rgss2["ed_battle_scene"] ? 288 : 0
  382.     @w_opacity = 0
  383.     @fast_battle_mode = false     #高速化設定
  384.     @all_texts = []               #高速化用一斉表示文章
  385.     @lines = []
  386.     refresh
  387.   end
  388. end
  389. #==============================================================================
  390. # ■ Window_BattleState_FF
  391. #------------------------------------------------------------------------------
  392. #  バトル画面でパーティメンバーの状態変化を表示するウィンドウです。
  393. #==============================================================================

  394. class Window_BattleState_FF < Window_Selectable
  395.   WLH = ED::BATTLE_WLH
  396.   #--------------------------------------------------------------------------
  397.   # ● オブジェクト初期化
  398.   #--------------------------------------------------------------------------
  399.   def initialize
  400.     super(40, 0, 200, 128)
  401.     @now_count = 0
  402.     @count = 0
  403.     @indicate_name = []
  404.     refresh
  405.     self.active = false
  406.   end
  407.   #--------------------------------------------------------------------------
  408.   # ● 解放
  409.   #--------------------------------------------------------------------------
  410.   def dispose
  411.     super
  412.   end
  413.   #--------------------------------------------------------------------------
  414.   # ● 現在のプレイ時間
  415.   #--------------------------------------------------------------------------
  416.   def now_count
  417.     return @now_count = Graphics.frame_count# / Graphics.frame_rate
  418.   end
  419.   #--------------------------------------------------------------------------
  420.   # ● リフレッシュ
  421.   #--------------------------------------------------------------------------
  422.   def refresh
  423.     # 通常
  424.     self.contents.clear
  425.     @item_max = $game_party.members.size
  426.     for i in 0...@item_max
  427.       draw_item(i)
  428.     end
  429.   end
  430.   #--------------------------------------------------------------------------
  431.   # ● ステートの描画
  432.   #     actor : アクター
  433.   #     x     : 描画先 X 座標
  434.   #     y     : 描画先 Y 座標
  435.   #     width : 描画先の幅
  436.   #--------------------------------------------------------------------------
  437.   def draw_actor_state_name(actor, x, y, width = 96)
  438.     # 現在秒数-このメソッドが実行された時の秒
  439.     count = (now_count - @count) / Graphics.frame_rate
  440.     if count > 0
  441.       # 1秒後の更新
  442.       return if actor.states == []
  443.       @count = Graphics.frame_count
  444.       max = actor.states.size - 1
  445.       # アクター個別にステート表示パターンをnilなら代入
  446.       @indicate_name[actor.id] = 0 if @indicate_name[actor.id] == nil
  447.       state = actor.states[@indicate_name[actor.id]]
  448.       self.contents.font.size = ED::BATTLE_FONT_SIZE
  449.       self.contents.font.color = normal_color
  450.       self.contents.draw_text(x, y, width, WLH, state.name)
  451.       # パターン加算
  452.       @indicate_name[actor.id] += 1
  453.       # アクターステート配列最大数よりも大きい場合は初期化。
  454.       @indicate_name[actor.id] = 0 if @indicate_name[actor.id] > max
  455.     else
  456.       # 1秒経過するまでの描画
  457.       return if actor.states == []
  458.       # アクター個別にステート表示パターンをnilなら代入
  459.       @indicate_name[actor.id] = 0 if @indicate_name[actor.id] == nil
  460.       state = actor.states[@indicate_name[actor.id]]
  461.       self.contents.font.size = ED::BATTLE_FONT_SIZE
  462.       self.contents.font.color = normal_color
  463.       self.contents.draw_text(x, y, width, WLH, state.name)
  464.     end
  465.   end
  466.   #--------------------------------------------------------------------------
  467.   # ● 項目の描画
  468.   #     index   : 項目番号
  469.   #--------------------------------------------------------------------------
  470.   def draw_item(index)
  471.     rect = item_rect(index)
  472.     rect.x += 4
  473.     rect.width -= 8
  474.     self.contents.clear_rect(rect)
  475.     self.contents.font.color = normal_color
  476.     actor = $game_party.members[index]
  477.     draw_actor_state_name(actor, 4, rect.y,120)
  478.   end
  479.   #--------------------------------------------------------------------------
  480.   # ● フレーム更新
  481.   #--------------------------------------------------------------------------
  482.   def update
  483.     refresh
  484.     super
  485.   end

  486. end

  487. #==============================================================================
  488. # ■ Window_BattleStatus
  489. #------------------------------------------------------------------------------
  490. #  バトル画面でパーティメンバーのステータスを表示するウィンドウです。
  491. #==============================================================================

  492. class Window_BattleStatus < Window_Selectable
  493.   WLH = ED::BATTLE_WLH
  494.   #--------------------------------------------------------------------------
  495.   # ● オブジェクト初期化
  496.   #--------------------------------------------------------------------------
  497.   def initialize
  498.     super(240, 0, 304, 128)
  499.     self.contents.font.size = ED::BATTLE_FONT_SIZE
  500.     refresh
  501.     self.active = false
  502.   end
  503.   #--------------------------------------------------------------------------
  504.   # ● 名前の描画
  505.   #     actor : アクター
  506.   #     x     : 描画先 X 座標
  507.   #     y     : 描画先 Y 座標
  508.   #--------------------------------------------------------------------------
  509.   def draw_actor_name(actor, x, y)
  510.     if $imported["OverDrive"]
  511.       draw_actor_od_gauge(actor, x, y, 90)
  512.     end
  513.     self.contents.font.color = hp_color(actor)
  514.     self.contents.draw_text(x, y, 90, WLH, actor.name)
  515.   end
  516.   #--------------------------------------------------------------------------
  517.   # ● HP の描画
  518.   #     actor : アクター
  519.   #     x     : 描画先 X 座標
  520.   #     y     : 描画先 Y 座標
  521.   #     width : 幅
  522.   #--------------------------------------------------------------------------
  523.   def draw_actor_hp(actor, x, y, width = 120)
  524.     self.contents.font.color = hp_color(actor)
  525.     self.contents.draw_text(x, y, width, WLH, actor.hp, 2)
  526.   end
  527.   #--------------------------------------------------------------------------
  528.   # ● MP の描画
  529.   #     actor : アクター
  530.   #     x     : 描画先 X 座標
  531.   #     y     : 描画先 Y 座標
  532.   #     width : 幅
  533.   #--------------------------------------------------------------------------
  534.   def draw_actor_mp(actor, x, y, width = 120)
  535.     self.contents.font.color = mp_color(actor)
  536.     self.contents.draw_text(x, y, width, WLH, actor.mp, 2)
  537.   end
  538.   #--------------------------------------------------------------------------
  539.   # ● 項目の描画
  540.   #     index   : 項目番号
  541.   #--------------------------------------------------------------------------
  542.   def draw_item(index)
  543.     rect = item_rect(index)
  544.     rect.x += 4
  545.     rect.width -= 8
  546.     self.contents.clear_rect(rect)
  547.     self.contents.font.color = normal_color
  548.     self.contents.font.size = ED::BATTLE_FONT_SIZE
  549.     actor = $game_party.members[index]
  550.     draw_actor_name(actor, 4, rect.y)
  551.     #draw_actor_state(actor, 114, rect.y, 48)
  552.     draw_actor_hp(actor, 80, rect.y, 90)
  553.    
  554.     draw_atb_gauge(actor, 190, rect.y - 8, 70) if $ed_rgss2["ed_active_time_battle"]
  555.     draw_actor_mp(actor, 175, rect.y, 90) unless $ed_rgss2["ed_active_time_battle"]
  556.     #draw_actor_mp(actor, 310, rect.y, 70)
  557.   end
  558.   #--------------------------------------------------------------------------
  559.   # ● 顔グラのスプライト作成
  560.   #--------------------------------------------------------------------------
  561.   def create_face_sprite
  562.    
  563.   end
  564.   #--------------------------------------------------------------------------
  565.   # ● 顔グラのスプライトの解放
  566.   #--------------------------------------------------------------------------
  567.   def dispose_face_sprite
  568.    
  569.   end
  570.   #--------------------------------------------------------------------------
  571.   # ● フレーム更新
  572.   #--------------------------------------------------------------------------
  573.   def update
  574.     super
  575.   end
  576.   #--------------------------------------------------------------------------
  577.   # ● カーソル
  578.   #--------------------------------------------------------------------------
  579.   def update_cursor
  580.     super
  581.   end
  582.   #--------------------------------------------------------------------------
  583.   # ● カーソルを右に移動
  584.   #     wrap : ラップアラウンド許可
  585.   #--------------------------------------------------------------------------
  586.   def cursor_right(wrap = false)
  587.     super
  588.   end
  589.   #--------------------------------------------------------------------------
  590.   # ● カーソルを左に移動
  591.   #     wrap : ラップアラウンド許可
  592.   #--------------------------------------------------------------------------
  593.   def cursor_left(wrap = false)
  594.     super
  595.   end
  596.   #--------------------------------------------------------------------------
  597.   # ● 顔グラのX座標(アクターコマンド表示用)
  598.   #--------------------------------------------------------------------------
  599.   def face_x
  600.     return 112
  601.   end
  602. end

  603. #==============================================================================
  604. # ■ Scene_Battle
  605. #------------------------------------------------------------------------------
  606. #  バトル画面の処理を行うクラスです。
  607. #==============================================================================

  608. class Scene_Battle < Scene_Base
  609.   #--------------------------------------------------------------------------
  610.   # ● 基本更新処理
  611.   #     main : メインの update メソッドからの呼び出し
  612.   #--------------------------------------------------------------------------
  613.   alias ed_battle_scene_ff_edit_update_basic update_basic
  614.   def update_basic(main = false)
  615.     ed_battle_scene_ff_edit_update_basic(main)
  616.     if $ed_rgss2["ed_damage_popup"] and FF_MASSAGE_SYSTEM
  617.       unless $game_message.texts == []
  618.         @message_window.visible = true
  619.       else
  620.         @message_window.visible = false if $ed_rgss2["ed_battle_scene"]
  621.       end
  622.     end
  623.   end
  624.   #--------------------------------------------------------------------------
  625.   # ● 開始後処理
  626.   #--------------------------------------------------------------------------
  627.   alias ed_battle_scene_ff_edit_battle_post_start post_start
  628.   def post_start
  629.     ed_battle_scene_ff_edit_battle_post_start
  630.     # 簡易ATBでのメッセージウィンドウ設定を無効化
  631.     @message_window.y = $ed_rgss2["ed_battle_scene"] ? 288 : 0
  632.     @message_window.opacity = $ed_rgss2["ed_battle_scene"] ? 255 : 0
  633.     @message_window.visible = false
  634.   end
  635.   #--------------------------------------------------------------------------
  636.   # ● 戦闘開始の処理
  637.   #--------------------------------------------------------------------------
  638.   alias ed_battle_scene_ff_edit_process_battle_start process_battle_start
  639.   def process_battle_start
  640.     # 簡易ATBでのメッセージウィンドウ設定を無効化
  641.     @message_window.y = 288
  642.     @message_window.opacity = 255
  643.     ed_battle_scene_ff_edit_process_battle_start
  644.   end
  645.   #--------------------------------------------------------------------------
  646.   # ● パーティコマンド選択の開始
  647.   #--------------------------------------------------------------------------
  648.   alias ed_battle_scene_ff_edit_start_party_command_selection start_party_command_selection
  649.   def start_party_command_selection
  650.     @party_command_window.visible = true
  651.     @party_command_window.x = 112
  652.     @party_command_window.active = true
  653.     ed_battle_scene_ff_edit_start_party_command_selection
  654.   end
  655.   #--------------------------------------------------------------------------
  656.   # ● アクターコマンド選択の開始
  657.   #--------------------------------------------------------------------------
  658.   alias ed_battle_scene_ff_edit_start_actor_command_selection start_actor_command_selection
  659.   def start_actor_command_selection
  660.     ed_battle_scene_ff_edit_start_actor_command_selection
  661.     @party_command_window.visible = false
  662.     @actor_command_window.x = 112
  663.     @actor_command_window.visible = true
  664.   end
  665.   #--------------------------------------------------------------------------
  666.   # ● 対象敵キャラ選択の開始
  667.   #--------------------------------------------------------------------------
  668.   def start_target_enemy_selection
  669.     @target_enemy_window.active = true
  670.     @target_enemy_window.z = 200
  671.     @actor_command_window.active = false
  672.     @actor_command_window.visible = false
  673.   end
  674.   #--------------------------------------------------------------------------
  675.   # ● 対象敵キャラ選択の終了
  676.   #--------------------------------------------------------------------------
  677.   def end_target_enemy_selection
  678.     @target_enemy_window.active = false
  679.     @target_enemy_window.z = 100
  680.     if @actor_command_window.index == 0
  681.       @actor_command_window.active = true
  682.       @actor_command_window.visible = true
  683.     end
  684.   end
  685.   #--------------------------------------------------------------------------
  686.   # ● 対象アクター対象選択の開始
  687.   #--------------------------------------------------------------------------
  688.   def start_target_actor_selection
  689.     @target_actor_states_window = Window_BattleState_FF.new
  690.     @target_actor_states_window.y = @info_viewport.rect.y
  691.    
  692.     @target_actor_window = Window_BattleStatus.new
  693.     @target_actor_window.index = 0
  694.     @target_actor_window.active = true
  695.     @target_actor_window.y = @info_viewport.rect.y
  696.    
  697.     @actor_command_window.active = false
  698.   end
  699.   #--------------------------------------------------------------------------
  700.   # ● 対象アクター選択の終了
  701.   #--------------------------------------------------------------------------
  702.   def end_target_actor_selection
  703.     @target_actor_states_window.dispose
  704.     @target_actor_states_window = nil
  705.     @target_actor_window.dispose
  706.     @target_actor_window = nil
  707.   end
  708.   #--------------------------------------------------------------------------
  709.   # ● 対象アクター選択の更新
  710.   #--------------------------------------------------------------------------
  711.   alias ed_battle_scene_ff_edit_update_target_actor_selection update_target_actor_selection
  712.   def update_target_actor_selection
  713.     @target_actor_states_window.update
  714.     ed_battle_scene_ff_edit_update_target_actor_selection
  715.   end
  716.   #--------------------------------------------------------------------------
  717.   # ● スキル選択の開始
  718.   #--------------------------------------------------------------------------
  719.   def start_skill_selection
  720.     # ウィンドウ位置を変更
  721.     @help_window = Window_Help.new
  722.     @help_window.viewport = @info_viewport
  723.     @help_window.x = 416
  724.     @help_window.y = 0
  725.     @help_window.z = 105
  726.     @help_window.width = 128
  727.     @help_window.height = 128
  728.    
  729.     @skill_window = Window_Skill_FF.new(0, 0, 416, 128, @active_battler)
  730.     @skill_window.viewport = @info_viewport
  731.     @skill_window.z = 105
  732.     @skill_window.help_window = @help_window
  733.     @skill_window.active = true
  734.     @skill_window.visible = true
  735.     @actor_command_window.active = false
  736.     @actor_command_window.visible = false
  737.   end
  738.   #--------------------------------------------------------------------------
  739.   # ● スキル選択の終了
  740.   #--------------------------------------------------------------------------
  741.   alias ed_battle_scene_ff_edit_end_skill_selection end_skill_selection
  742.   def end_skill_selection
  743.     ed_battle_scene_ff_edit_end_skill_selection
  744.     if $ed_rgss2["ed_weapon_command"]
  745.       if @weapon_command_window == nil
  746.         @actor_command_window.active = true if @actor_command_window != nil
  747.         @actor_command_window.visible = true if @actor_command_window != nil
  748.       else
  749.         @actor_command_window.active = false
  750.         @weapon_command_window.active = true if @weapon_command_window != nil
  751.       end
  752.     else
  753.       @actor_command_window.active = true
  754.       @actor_command_window.visible = true
  755.     end
  756.   end
  757.   #--------------------------------------------------------------------------
  758.   # ● アイテム選択の開始
  759.   #--------------------------------------------------------------------------
  760.   def start_item_selection
  761.     @help_window = Window_Help.new
  762.     @help_window.x = 0
  763.     @help_window.y = 416 - 128 - @help_window.height
  764.     @item_window = Window_Item.new(0, 0, 544, 128)
  765.     @item_window.viewport = @info_viewport
  766.     @item_window.z = 105
  767.     @item_window.help_window = @help_window
  768.     @actor_command_window.active = false
  769.     @actor_command_window.visible = false
  770.   end
  771.   #--------------------------------------------------------------------------
  772.   # ● アイテム選択の終了
  773.   #--------------------------------------------------------------------------
  774.   alias ed_battle_scene_ff_edit_end_item_selection end_item_selection
  775.   def end_item_selection
  776.     ed_battle_scene_ff_edit_end_item_selection
  777.     @actor_command_window.active = true
  778.     @actor_command_window.visible = true
  779.   end
  780.   #--------------------------------------------------------------------------
  781.   # ● 武器コマンド選択の開始
  782.   #--------------------------------------------------------------------------
  783.   def start_weapon_command_selection
  784.     #if $game_temp.in_battle and @actor_command_window.active
  785.       @actor_command_window.active = false
  786.       @weapon_command_window = Window_Battle_Weapon.new(0,0,240,128,@active_battler)
  787.       @weapon_command_window.viewport = @info_viewport
  788.       @weapon_command_window.z = 103
  789.       @weapon_command_window.visible = true
  790.       @weapon_command_window.active = true
  791.       @weapon_command_window.index = 0
  792.       select_weapon
  793.     #end
  794.   end
  795.   #--------------------------------------------------------------------------
  796.   # ● 武器コマンド選択の終了
  797.   #--------------------------------------------------------------------------
  798.   def end_weapon_command_selection
  799.     if @weapon_command_window != nil
  800.       @weapon_command_window.dispose
  801.       @weapon_command_window = nil
  802.       @index = 0
  803.     end
  804.     if @actor_command_window.index == 0
  805.       @actor_command_window.active = true
  806.       @actor_command_window.visible = true
  807.     end
  808.   end
  809.   #--------------------------------------------------------------------------
  810.   # ● 情報表示ビューポートの作成
  811.   #--------------------------------------------------------------------------
  812.   def create_info_viewport
  813.     if $ed_rgss2["ed_damage_popup"] and FF_MASSAGE_SYSTEM
  814.       @message_window.visible = false
  815.     end
  816.     @info_viewport = Viewport.new(0, 288, 544, 128)
  817.     @info_viewport.z = 100
  818.     @status_window = Window_BattleStatus.new
  819.     @party_command_window = Window_PartyCommand.new
  820.     @actor_command_window = Window_ActorCommand.new
  821.     @status_window.viewport = @info_viewport
  822.     @party_command_window.viewport = @info_viewport
  823.     @actor_command_window.viewport = @info_viewport
  824.     #@status_window.x = 128
  825.     @actor_command_window.x = 544
  826.     @status_window.viewport = @info_viewport
  827.     @party_command_window.x = 112
  828.     @party_command_window.y = 0
  829.     @party_command_window.z = 102
  830.     @actor_command_window.x = 112
  831.     @actor_command_window.y = 0
  832.     @actor_command_window.z = 101
  833.     @actor_command_window.visible = false
  834.     @party_command_window.visible = false
  835.    
  836.     if $ed_rgss2["ed_arrow_cursor"]
  837.       @target_enemy_name_window = Window_TargetEnemy.new
  838.       @target_enemy_name_window.viewport = @info_viewport
  839.       @target_enemy_name_window.x = 0
  840.       @target_enemy_name_window.y = 0#@info_viewport.rect.y
  841.       @target_enemy_name_window.height = 128
  842.       #@target_enemy_window.z = 100
  843.       @target_enemy_name_window.visible = true
  844.       @target_enemy_name_window.active = false
  845.     else
  846.       @target_enemy_window = Window_TargetEnemy.new
  847.       @target_enemy_window.viewport = @info_viewport
  848.       @target_enemy_window.x = 0
  849.       @target_enemy_window.y = 0#@info_viewport.rect.y
  850.       @target_enemy_window.height = 128
  851.       #@target_enemy_window.z = 100
  852.       @target_enemy_window.visible = true
  853.       @target_enemy_window.active = false
  854.     end
  855.    
  856.     if $ed_rgss2["ed_mm_party_system"]
  857.       create_side_actor_command
  858.     end
  859.    
  860.     @info_viewport.visible = true
  861.     wait(1)
  862.   end
  863.   #--------------------------------------------------------------------------
  864.   # ● 情報表示ビューポートの更新
  865.   #--------------------------------------------------------------------------
  866.   def update_info_viewport
  867.     if $ed_rgss2["ed_mm_party_system"]
  868.       @side_actor_command.update if @side_window
  869.     end
  870.     unless @target_enemy_window == nil
  871.       @target_enemy_window.update
  872.     end
  873.     unless @party_command_window == nil
  874.       @party_command_window.update
  875.     end
  876.     unless @actor_command_window == nil
  877.       @actor_command_window.update
  878.     end
  879.     unless @status_window == nil
  880.       @status_window.update
  881.     end
  882.   end
  883.   #--------------------------------------------------------------------------
  884.   # ● 戦闘処理の実行開始
  885.   #--------------------------------------------------------------------------
  886.   alias ed_battle_scene_ff_edit_main start_main
  887.   def start_main
  888.     ed_battle_scene_ff_edit_main
  889.     @status_window.x = 240
  890.   end
  891.   #--------------------------------------------------------------------------
  892.   # ● フレーム更新
  893.   #--------------------------------------------------------------------------
  894.   alias ed_battle_scene_ff_edit_update update
  895.   def update
  896.     @info_viewport.visible = true
  897.     @status_window.refresh
  898.     if $ed_rgss2["ed_arrow_cursor"]
  899.       @target_enemy_name_window.refresh
  900.       @target_enemy_name_window.update
  901.     else
  902.       @target_enemy_window.refresh
  903.       @target_enemy_window.update
  904.     end
  905.    
  906.     super
  907.    
  908.     if $ed_rgss2["ed_active_time_battle"]
  909.       @frames[0] = Graphics.frame_count
  910.     end
  911.    
  912.     if $ed_rgss2["ed_battle_scene"]
  913.       update_enemy_hp                     # HPゲージの描画
  914.     end
  915.    
  916.     update_basic(true)
  917.     update_info_viewport                  # 情報表示ビューポートを更新
  918.    
  919.     if $game_message.visible
  920.       @message_window.visible = true
  921.     elsif $ed_rgss2["ed_damage_popup"] and FF_MASSAGE_SYSTEM
  922.       @message_window.visible = false if $ed_rgss2["ed_battle_scene"]
  923.     end
  924.    
  925.     unless $game_message.visible          # メッセージ表示中以外
  926.       return if judge_win_loss            # 勝敗判定
  927.       update_scene_change
  928.       if $ed_rgss2["ed_mm_party_system"]
  929.         if @side_actor_command.active
  930.           update_side_actor_command
  931.           return
  932.         end
  933.       end
  934.       if $ed_rgss2["ed_arrow_cursor"]
  935.         if @target_enemy_window.is_a?(Arrow_Enemy)
  936.           target_window = @target_enemy_window != nil ? true : false
  937.         else
  938.           target_window = false
  939.         end
  940.       else
  941.         target_window = @target_enemy_window.active
  942.       end
  943.       if target_window
  944.         update_target_enemy_selection     # 対象敵キャラ選択
  945.       elsif @target_actor_window != nil
  946.         update_target_actor_selection     # 対象アクター選択
  947.       elsif @spell_window != nil
  948.         spell_window_update               # 詠唱ウィンドウ選択
  949.       elsif @skill_window != nil
  950.         update_skill_selection            # スキル選択
  951.       elsif @item_window != nil
  952.         update_item_selection             # アイテム選択
  953.       elsif @party_command_window.active
  954.         update_party_command_selection    # パーティコマンド選択
  955.       elsif @actor_command_window.active
  956.         update_actor_command_selection    # アクターコマンド選択        
  957.       elsif @enter_action
  958.                                           # 行動決定
  959.         process_battle_event              # バトルイベントの処理
  960.         
  961.         process_action                    # 戦闘行動
  962.         
  963.         #process_battle_event              # バトルイベントの処理
  964.       elsif @command_input                # コマンド入力中
  965.         
  966.       else
  967.         unless $ed_rgss2["ed_active_time_battle"]
  968.           process_battle_event              # バトルイベントの処理
  969.           process_action                    # 戦闘行動
  970.           process_battle_event              # バトルイベントの処理
  971.           return
  972.         end
  973.         
  974.         if $ed_rgss2["ed_weapon_command"] == true
  975.           if @weapon_command_window != nil
  976.             update_weapon_command_selection   # 武器コマンド選択
  977.             return
  978.           end
  979.         end
  980.         
  981.         if $ed_rgss2["ed_active_time_battle"]
  982.           frame = @frames[0] - @frames[1]
  983.           if frame >= ATB_FRAME_UPDATE
  984.             add_atb_guage
  985.             Graphics.frame_reset
  986.             make_action_orders
  987.           else
  988.             return
  989.           end
  990.           @frames[1] = Graphics.frame_count
  991.           Graphics.frame_reset
  992.         end
  993.         
  994.       end
  995.     end
  996.   end
  997. end

复制代码
使用方法就不要问我了……
小艾工作室开张= =
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
44 小时
注册时间
2011-8-3
帖子
12
3
 楼主| 发表于 2011-9-9 16:58:26 | 只看该作者
没有CP条啊.......
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
678 小时
注册时间
2010-8-11
帖子
1533
4
发表于 2011-9-9 17:09:29 | 只看该作者
超级地板砖 发表于 2011-9-9 09:58
没有CP条啊.......

这只是模仿FF的战斗系统而已……不可能完全一样的……
而且CP条可以用其他脚本自己加……(除非战斗画面已经没有位置了= =)
小艾工作室开张= =
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4097
在线时间
1081 小时
注册时间
2008-5-17
帖子
218

开拓者

5
发表于 2011-9-9 21:29:56 | 只看该作者
其实。。。。VX的SBS+ATB 3.4 已经无敌了。。。。。。。一般人我不告诉他。。。

点评

有日文版的 3.3 不过我用的是英文版。。。  发表于 2011-9-11 00:56
确实 不过 满屏幕的E文 我看的比R文还头大 前不久知道有某大大汉化 救过一看 重点没弄。。。残念  发表于 2011-9-10 18:00
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-10 04:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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