赞 | 0 |
VIP | 0 |
好人卡 | 3 |
积分 | 1 |
经验 | 1064 |
最后登录 | 2013-5-16 |
在线时间 | 518 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 518 小时
- 注册时间
- 2010-6-16
- 帖子
- 1073
|
战斗中按Q或者W再按确定键就行了~- #==============================================================================
- # ☆Scene_Battle_Window_ActorCommand_Equip Ver. 1.02
- #------------------------------------------------------------------------------
- # バトル画面で、アクター行動中にL,Rを押すと装備変更画面が出る。
- #
- # Ver.1.02~:装備変更でターン消費&装備変更可能部位設定
- #==============================================================================
- #//////////////////////////////////////
- #「装備変更」の名称変更
- #//////////////////////////////////////
- module Vocab
- SobiCange ="Equip"
- end
- #//////////////////////////////////////
- #「装備変更」のウィンドウ位置
- #初期:x=480,y=0
- #//////////////////////////////////////
- SOBI_CHANGE_WINDOW_X=480
- SOBI_CHANGE_WINDOW_Y=0
- #//////////////////////////////////////
- #戦闘中で「装備変更」可能部位設定
- # false:不可,true:可能
- #//////////////////////////////////////
- SOBI_CHANGE_BUI={
- 0=>true, #武器 & 盾 (両手武器,二刀流の関係で武器と盾は同時設定とします)
- 1=>false, #頭
- 2=>false, #体
- 3=>true, #装飾品
- }
- #//////////////////////////////////////
- #「装備変更」で1ターン消費しますか?
- #0:しない.1:する(装備1つに対し1ターン)
- #//////////////////////////////////////
- SOBI_CHANGE_TURN =0
- #///////////////////////////////////////////////////////
- #「装備変更」で1ターン消費する時の言葉集
- #///////////////////////////////////////////////////////
- module Vocab
- SobiCange_TurnWord0 ="%sの装備変更!" #1行目に表示される文
- SobiCange_TurnWord1 ="%sは%sを装備した。" #無事装備変更が行えた場合
- SobiCange_TurnWord2 ="%sは%sを装備し直した。" #装備変更のアイテムが同じだった場合
- SobiCange_TurnWord3 ="%sは%sを外した。" #何も装備しなかった場合
- SobiCange_TurnWord4 ="%sは何もしなかった。" #装備なし→装備なし
- end
- #//////////////////////////////////////
- #↓以下は本スクリプト
- #//////////////////////////////////////
- class Window_ActorCommand2 < Window_Command
- #--------------------------------------------------------------------------
- # ☆ オブジェクト初期化 <新規追加>
- #--------------------------------------------------------------------------
- def initialize
- super(128, [], 1,1)
- self.active = false
- end
- #--------------------------------------------------------------------------
- # ☆ セットアップ <新規追加>
- # actor : アクター
- #--------------------------------------------------------------------------
- def setup(actor)
- s1 = Vocab::SobiCange
- @commands = [s1]
- @item_max = 1
- refresh
- self.index = 0
- end
- end
- class Window_Equip < Window_Selectable
- #--------------------------------------------------------------------------
- # ☆ バトル時のみのリフレッシュ <新規追加>
- #--------------------------------------------------------------------------
- def battle_refresh
- self.contents.clear
- @data = []
- for item in @actor.equips do @data.push(item) end
- @item_max = @data.size
- self.contents.font.color = system_color
- if @actor.two_swords_style
- self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)
- self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
- else
- self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
- self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::armor1)
- end
- self.contents.draw_text(4, WLH * 2, 92, WLH, Vocab::armor2)
- self.contents.draw_text(4, WLH * 3, 92, WLH, Vocab::armor3)
- self.contents.draw_text(4, WLH * 4, 92, WLH, Vocab::armor4)
- draw_item_name(@data[0], 92, WLH * 0, SOBI_CHANGE_BUI[0])
- draw_item_name(@data[1], 92, WLH * 1, SOBI_CHANGE_BUI[0])
- draw_item_name(@data[2], 92, WLH * 2, SOBI_CHANGE_BUI[1])
- draw_item_name(@data[3], 92, WLH * 3, SOBI_CHANGE_BUI[2])
- draw_item_name(@data[4], 92, WLH * 4, SOBI_CHANGE_BUI[3])
- end
- end
- class Scene_Battle < Scene_Base
- #--------------------------------------------------------------------------
- # ☆ 開始処理 <追加変更>
- #--------------------------------------------------------------------------
- def start
- super
- $game_temp.in_battle = true
- @spriteset = Spriteset_Battle.new
- @message_window = Window_BattleMessage.new
- @action_battlers = []
- create_info_viewport
-
- @lose_equip_item =[] #追加
- @gain_equip_item =[] #追加
- end
- #--------------------------------------------------------------------------
- # ☆ フレーム更新 <追加変更>
- #--------------------------------------------------------------------------
- def update
- super
- update_basic(true)
- update_info_viewport # 情報表示ビューポートを更新
- if $game_message.visible
- @info_viewport.visible = false
- @message_window.visible = true
- end
- unless $game_message.visible # メッセージ表示中以外
- return if judge_win_loss # 勝敗判定
- update_scene_change
- if @target_enemy_window != nil
- update_target_enemy_selection # 対象敵キャラ選択
- elsif @target_actor_window != nil
- update_target_actor_selection # 対象アクター選択
- elsif @skill_window != nil
- update_skill_selection # スキル選択
- elsif @item_window != nil
- update_item_selection # アイテム選択
- elsif @party_command_window.active
- update_party_command_selection # パーティコマンド選択
- elsif @actor_command_window.active
- update_actor_command_selection # アクターコマンド選択
- elsif @actor_command_window2.active
- update_actor_command2_selection # アクターコマンド選択 #追加
- elsif @equip_window != nil
- equip_update # 装備選択 #追加
- else
- process_battle_event # バトルイベントの処理
- process_action # 戦闘行動
- process_battle_event # バトルイベントの処理
- end
- end
- end
- #--------------------------------------------------------------------------
- # ☆ 情報表示ビューポートの作成 <追加変更>
- #--------------------------------------------------------------------------
- def create_info_viewport
- @info_viewport = Viewport.new(0, 288, 544, 128)
- @info_viewport.z = 100
- @status_window = Window_BattleStatus.new
- @party_command_window = Window_PartyCommand.new
- @actor_command_window = Window_ActorCommand.new
- @actor_command_window2 = Window_ActorCommand2.new #追加
- @status_window.viewport = @info_viewport
- @party_command_window.viewport = @info_viewport
- @actor_command_window.viewport = @info_viewport
- @actor_command_window2.viewport = @info_viewport #追加
- @status_window.x = 128
- @actor_command_window.x = 544
- @actor_command_window2.x = SOBI_CHANGE_WINDOW_X #
- @actor_command_window2.y = SOBI_CHANGE_WINDOW_Y #
- @info_viewport.visible = false
- @actor_command_window2.visible = false #追加
- @actor_command_window2.active = false #追加
- @actor_command_window2.back_opacity=245# 追加
- end
- #--------------------------------------------------------------------------
- # ☆ 情報表示ビューポートの解放 <追加変更>
- #--------------------------------------------------------------------------
- def dispose_info_viewport
- @status_window.dispose
- @party_command_window.dispose
- @actor_command_window.dispose
- @actor_command_window2.dispose #追加
- @info_viewport.dispose
- end
- #--------------------------------------------------------------------------
- # ☆ 情報表示ビューポートの更新 <追加変更>
- #--------------------------------------------------------------------------
- def update_info_viewport
- @party_command_window.update
- @actor_command_window.update
- @actor_command_window2.update #追加
- @status_window.update
- if @party_command_window.active and @info_viewport.ox > 0
- @info_viewport.ox -= 16
- elsif @actor_command_window.active and @info_viewport.ox < 128
- @info_viewport.ox += 16
- elsif @actor_command_window2.active and @info_viewport.ox < 128 #追加
- @info_viewport.ox += 16
- end
- end
- #--------------------------------------------------------------------------
- # ☆ アクターコマンド選択の開始 <追加変更>
- #--------------------------------------------------------------------------
- def start_actor_command_selection
- @party_command_window.active = false
- @actor_command_window2.active = false #追加
- @actor_command_window2.visible = false #追加
- @actor_command_window.setup(@active_battler)
- @actor_command_window.active = true
- if @command_temp!=nil
- @actor_command_window.index = @command_temp #追加
- @command_temp = nil #追加
- else
- @actor_command_window.index = 0
- end
- end
- #--------------------------------------------------------------------------
- # ☆ アクターコマンド2選択の開始 <新規追加>
- #--------------------------------------------------------------------------
- def start_actor_command2_selection
- @party_command_window.active = false
- @actor_command_window.active = false
- @actor_command_window2.setup(@active_battler)
-
- @actor_command_window2.active = true
- @actor_command_window2.visible = true #
- @actor_command_window2.index = 0
- end
- #--------------------------------------------------------------------------
- # ☆ アクターコマンド選択の更新 <追加変更>
- #--------------------------------------------------------------------------
- def update_actor_command_selection
- if Input.trigger?(Input::B)
- Sound.play_cancel
- prior_actor
- elsif Input.trigger?(Input::C)
- case @actor_command_window.index
- when 0 # 攻撃
- Sound.play_decision
- @active_battler.action.set_attack
- start_target_enemy_selection
- when 1 # スキル
- Sound.play_decision
- start_skill_selection
- when 2 # 防御
- Sound.play_decision
- @active_battler.action.set_guard
- next_actor
- when 3 # アイテム
- Sound.play_decision
- start_item_selection
- end
- elsif Input.press?(Input::L) or Input.press?(Input::R) #追加
- @command_temp = @actor_command_window.index #追加
- start_actor_command2_selection #追加
- end
- end
- #--------------------------------------------------------------------------
- # ☆ アクターコマンド選択の更新 <新規追加>
- #--------------------------------------------------------------------------
- def update_actor_command2_selection
- unless Input.press?(Input::L) or Input.press?(Input::R) #追加
- start_actor_command_selection #追加
- end
- if Input.trigger?(Input::B)
- Sound.play_cancel
- @actor_command_window2.active = false #追加
- @actor_command_window2.visible = false #追加
- @command_temp=0 #追加
-
- prior_actor
- elsif Input.trigger?(Input::C)
- case @actor_command_window2.index
- when 0 # 装備変更
- Sound.play_decision
- start_equip_selection #追加
- end
- end
- end
- #--------------------------------------------------------------------------
- # ☆ 定数 <新規追加>
- #---------------------------------------------------------------------------
- EQUIP_TYPE_MAX = 5 # 装備部位の数
- #--------------------------------------------------------------------------
- # ☆ 装備選択の開始 <新規追加>
- #--------------------------------------------------------------------------
- def start_equip_selection
- @help_window = Window_Help.new
- create_equip_item_windows
- @equip_window = Window_Equip.new(208, 56, @active_battler)
- @equip_window.help_window = @help_window
- @equip_index=0 #if @equip_index==nil
- @equip_window.index = @equip_index
- @equip_status_window =Window_EquipStatus.new(0, 56, @active_battler)
- @equip_status_window.active = false
-
- @equip_window.battle_refresh
- @equip_window.active = true
-
- @actor_command_window.active = false
- @actor_command_window2.active = false
- end
- #--------------------------------------------------------------------------
- # ☆ アイテムウィンドウの作成 <新規追加>
- #--------------------------------------------------------------------------
- def create_equip_item_windows
- @item_windows = []
- for i in 0...EQUIP_TYPE_MAX
- @item_windows[i] = Window_EquipItem.new(0, 208, 544, 80, @active_battler, i)
- @item_windows[i].help_window = @help_window
- @item_windows[i].visible = (@equip_index == i)
- @item_windows[i].y = 208
- @item_windows[i].height = 80
- @item_windows[i].active = false
- @item_windows[i].index = -1
- end
- end
- #--------------------------------------------------------------------------
- # ☆ アイテムウィンドウの更新 <新規追加>
- #--------------------------------------------------------------------------
- def update_equip_item_windows
- for i in 0...EQUIP_TYPE_MAX
- @item_windows[i].visible = (@equip_window.index == i)
- @item_windows[i].update
- end
- @equip_item_window = @item_windows[@equip_window.index]
- end
- #--------------------------------------------------------------------------
- # ☆ 装備ウィンドウの更新 <新規追加>
- #--------------------------------------------------------------------------
- def update_equip_window
- @equip_window.update
- end
- #--------------------------------------------------------------------------
- # ☆ ステータスウィンドウの更新 <新規追加>
- #--------------------------------------------------------------------------
- def update_equip_status_window
- if @equip_window.active
- @equip_status_window.set_new_parameters(nil, nil, nil, nil)
- elsif @equip_item_window.active
- temp_actor = @active_battler.clone
- temp_actor.change_equip(@equip_window.index, @equip_item_window.item, true)
- new_atk = temp_actor.atk
- new_def = temp_actor.def
- new_spi = temp_actor.spi
- new_agi = temp_actor.agi
- @equip_status_window.set_new_parameters(new_atk, new_def, new_spi, new_agi)
- end
- @equip_status_window.update
- end
- #--------------------------------------------------------------------------
- # ☆ フレーム更新 <新規追加>
- #--------------------------------------------------------------------------
- def equip_update
- @help_window.update
- update_equip_window
- update_equip_status_window
- update_equip_item_windows
- if @equip_window.active
- update_equip_selection
- elsif @equip_item_window.active
- update_equip_item_selection
- end
- end
- #--------------------------------------------------------------------------
- # ☆ 装備選択の終了 <新規追加>
- #--------------------------------------------------------------------------
- def end_equip_selection
- if @equip_window != nil
- @equip_window.dispose
- @equip_window = nil
- @equip_status_window.dispose
- @equip_status_window = nil
- dispose_equip_item_windows
- @help_window.dispose
- @help_window = nil
- end
- if SOBI_CHANGE_TURN ==0
- @actor_command_window2.active = true
- else
- @actor_command_window2.active = false #追加
- @actor_command_window2.visible = false #追加
- @actor_command_window.active = true
- end
- end
- #--------------------------------------------------------------------------
- # ☆ アイテムウィンドウの解放 <新規追加>
- #--------------------------------------------------------------------------
- def dispose_equip_item_windows
- for window in @item_windows
- window.dispose
- end
- end
- #--------------------------------------------------------------------------
- # ☆ 装備部位選択の更新 <新規追加>
- #--------------------------------------------------------------------------
- def update_equip_selection
- if Input.trigger?(Input::B)
- Sound.play_cancel
- end_equip_selection
- elsif Input.trigger?(Input::C)
- if @equip_window.index == 0 and SOBI_CHANGE_BUI[0] != true
- Sound.play_buzzer
- elsif @equip_window.index == 1 and SOBI_CHANGE_BUI[0] != true
- Sound.play_buzzer
- elsif @equip_window.index == 2 and SOBI_CHANGE_BUI[1] != true
- Sound.play_buzzer
- elsif @equip_window.index == 3 and SOBI_CHANGE_BUI[2] != true
- Sound.play_buzzer
- elsif @equip_window.index == 4 and SOBI_CHANGE_BUI[3] != true
- Sound.play_buzzer
-
- else
- if @active_battler.fix_equipment
- Sound.play_buzzer
- else
- Sound.play_decision
- @equip_window.active = false
- @equip_item_window.active = true
- @equip_item_window.index = 0
- end
- end
- end
- end
- #--------------------------------------------------------------------------
- # ☆ 装備アイテム選択の更新 <新規追加>
- #--------------------------------------------------------------------------
- def update_equip_item_selection
- if Input.trigger?(Input::B)
- Sound.play_cancel
- @equip_window.active = true
- @equip_item_window.active = false
- @equip_item_window.index = -1
- elsif Input.trigger?(Input::C)
- Sound.play_equip
-
- if SOBI_CHANGE_TURN ==1
- equip_item = @equip_item_window.item
- index = @equip_window.index
- last_equip_item =@active_battler.equips[index]
- @active_battler.action.set_sobi_change(index, equip_item,last_equip_item)
-
- @active_battler.battle_change_equip_item_lose(equip_item,last_equip_item)
- @lose_equip_item[@actor_index]=equip_item
- @gain_equip_item[@actor_index]=last_equip_item
-
- @equip_window.active = true
- @equip_item_window.active = false
- @equip_item_window.index = -1
- end_equip_selection
- next_actor
- else
- @active_battler.change_equip(@equip_window.index, @equip_item_window.item)
- @equip_window.active = true
- @equip_item_window.active = false
- @equip_item_window.index = -1
- @equip_window.battle_refresh
- for equip_item_window in @item_windows
- equip_item_window.refresh
- end
- end
-
- end
- end
- #--------------------------------------------------------------------------
- # ☆ 前のアクターのコマンド入力へ <追加変更>
- #--------------------------------------------------------------------------
- def prior_actor
- loop do
- if @actor_index == 0
- start_party_command_selection
- return
- end
- @status_window.index = @actor_index -= 1
- @active_battler = $game_party.members[@actor_index]
- next if @active_battler.auto_battle
- break if @active_battler.inputable?
- end
-
- if SOBI_CHANGE_TURN ==1 #追加
- lose = @gain_equip_item[@actor_index] #追加
- gain = @lose_equip_item[@actor_index] #追加
- @active_battler.battle_change_equip_item_gain(lose,gain) #追加
-
- @gain_equip_item[@actor_index] = nil #追加
- @lose_equip_item[@actor_index] = nil #追加
- end #追加
-
- start_actor_command_selection
- end
- #--------------------------------------------------------------------------
- # ☆ 戦闘行動の実行 <追加変更>
- #--------------------------------------------------------------------------
- def execute_action
- case @active_battler.action.kind
- when 0 # 基本
- case @active_battler.action.basic
- when 0 # 攻撃
- execute_action_attack
- when 1 # 防御
- execute_action_guard
- when 2 # 逃走
- execute_action_escape
- when 3 # 待機
- execute_action_wait
- when 4 # 装備変更 #追加
- execute_action_sobi_change #追加
- end
- when 1 # スキル
- execute_action_skill
- when 2 # アイテム
- execute_action_item
- end
- end
- #--------------------------------------------------------------------------
- # ☆ 戦闘行動の実行 :装備変更 <新規追加>
- #--------------------------------------------------------------------------
- def execute_action_sobi_change
- item = @active_battler.action.sobi_item
- index= @active_battler.action.sobi_index
- last_item = @active_battler.action.last_sobi_item
-
- text = sprintf(Vocab::SobiCange_TurnWord0,@active_battler.name)
- @message_window.add_instant_text(text)
- wait(45)
-
- Sound.play_equip
- if item != nil
- if item != last_item
- text = sprintf(Vocab::SobiCange_TurnWord1, @active_battler.name,item.name)
- else
- text = sprintf(Vocab::SobiCange_TurnWord2, @active_battler.name,item.name)
- end
- else
- if last_item != nil
- text = sprintf(Vocab::SobiCange_TurnWord3, @active_battler.name,last_item.name)
- else
- text = sprintf(Vocab::SobiCange_TurnWord4, @active_battler.name)
- end
- end
-
- @active_battler.battle_change_equip(index, item)
- @message_window.add_instant_text(text)
- wait(60)
- end
- end
- class Game_BattleAction
- attr_accessor :sobi_item # 装備アイテム
- attr_accessor :last_sobi_item # 最後に装備してたアイテム
- attr_accessor :sobi_index # 装備部位
- #--------------------------------------------------------------------------
- # ☆ 装備変更を設定 <新規追加>
- #--------------------------------------------------------------------------
- def set_sobi_change(sobi_index, sobi_item,last_sobi_item)
- @kind = 0
- @basic = 4
- @sobi_item = sobi_item
- @sobi_index = sobi_index
- @last_sobi_item = last_sobi_item
- end
- #--------------------------------------------------------------------------
- # ☆ 装備変更判定 <新規追加>
- #--------------------------------------------------------------------------
- def sobi_change?
- return (@kind == 0 and @basic == 4)
- end
- #--------------------------------------------------------------------------
- # ☆ 装備アイテムオブジェクト取得 <新規追加>
- #--------------------------------------------------------------------------
- def sobi_item
- return @sobi_item
- end
- #--------------------------------------------------------------------------
- # ☆ 装備部位オブジェクト取得 <新規追加>
- #--------------------------------------------------------------------------
- def sobi_index
- return @sobi_index
- end
- #--------------------------------------------------------------------------
- # ☆ 最後に装備していたアイテムオブジェクト取得 <新規追加>
- #--------------------------------------------------------------------------
- def last_sobi_item
- return @last_sobi_item
- end
- end
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # ☆ バトル時装備の変更 (オブジェクトで指定) <新規追加>
- # equip_type : 装備部位 (0..4)
- # item : 武器 or 防具 (nil なら装備解除)
- # test : テストフラグ (戦闘テスト、または装備画面での一時装備)
- #--------------------------------------------------------------------------
- def battle_change_equip(equip_type, item, test = false)
- last_item = equips[equip_type]
- $game_party.gain_item(item, 1) #減ってますから,もとに戻す
- return if $game_party.item_number(item) == 0 if item != nil
- $game_party.gain_item(last_item, 1)
- $game_party.lose_item(item, 1)
-
- item_id = item == nil ? 0 : item.id
-
- case equip_type
- when 0 # 武器
- @weapon_id = item_id
- unless two_hands_legal? # 両手持ち違反の場合
- change_equip(1, nil, test) # 逆の手の装備を外す
- end
- when 1 # 盾
- @armor1_id = item_id
- unless two_hands_legal? # 両手持ち違反の場合
- change_equip(0, nil, test) # 逆の手の装備を外す
- end
- when 2 # 頭
- @armor2_id = item_id
- when 3 # 身体
- @armor3_id = item_id
- when 4 # 装飾品
- @armor4_id = item_id
- end
- end
- #--------------------------------------------------------------------------
- # ☆ バトル時装備の変更のアイテムの減 (オブジェクトで指定) <新規追加>
- # equip_type : 装備部位 (0..4)
- # item : 武器 or 防具 (nil なら装備解除)
- # test : テストフラグ (戦闘テスト、または装備画面での一時装備)
- #--------------------------------------------------------------------------
- def battle_change_equip_item_lose(item,last_item, test = false)
- return if $game_party.item_number(item) == 0 if item != nil
- $game_party.lose_item(item, 1)
- end
- #--------------------------------------------------------------------------
- # ☆ バトル時装備の変更のアイテムの増 (オブジェクトで指定) <新規追加>
- # equip_type : 装備部位 (0..4)
- # item : 武器 or 防具 (nil なら装備解除)
- # test : テストフラグ (戦闘テスト、または装備画面での一時装備)
- #--------------------------------------------------------------------------
- def battle_change_equip_item_gain(item,last_item, test = false)
- $game_party.gain_item(last_item, 1)
- end
- end
- #////////////////////////////////////////////////////////////////
- #作成者:ehime
- #http://www.abcoroti.com/~nekoneko/index.html
- #readmeやスタッフロールの明記,使用報告は任意.
- #////////////////////////////////////////////////////////////////
复制代码 |
评分
-
查看全部评分
|