Project1
标题:
关于战斗中换装备的问题
[打印本页]
作者:
步兵中尉
时间:
2007-7-20 08:25
标题:
关于战斗中换装备的问题
最近看到不少人问如何在战斗中换装备。以前站上有这样的脚本,可是后来被删除了。
现在好不容易找到了,把它发布出来,希望站上恢复。
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#============================================================================== # 「戦闘中に装備」スクリプト Ver1.00
#
#
#戦闘中に装備が出来るようになります。以下のスクリプトをmainの上にでも挿入
#して下さい。アクターコマンドの一番下に装備コマンドが出ると思います。
#
#なお、このスクリプトは通常時の装備画面を直接呼び出しておりますので、
#画面のデザインは考慮しておりません。レイアウトの変更は各自でお願い致します。
#つまり、装備画面の変更が大前提となります。一応、そのままでも動作は問題あり
#ませんが・・・。
#なお、呼び出している画面は「装備中のアイテム欄」と
#「装備できるアイテム欄」です。
#
#
#画面レイアウトの変更はRGSSの初歩の技術ですので、
#それが出来ない方は、親切な方に教えて頂くか諦めて下さい(ぇ
#勉強と思ってがんばりましょう(^^;)
#※ヒント
#●Window_EquipLeft
#●Window_EquipRight
#●Window_EquipItem
#が変更場所です・・・・・。
#==============================================================================
# ■ Scene_Battle (分割定義 3)
#------------------------------------------------------------------------------
# バトル画面の処理を行うクラスです。
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
def main
# 戦闘用の各種一時データを初期化
$game_temp.in_battle = true
$game_temp.battle_turn = 0
$game_temp.battle_event_flags.clear
$game_temp.battle_abort = false
$game_temp.battle_main_phase = false
$game_temp.battleback_name = $game_map.battleback_name
$game_temp.forcing_battler = nil
# バトルイベント用インタプリタを初期化
$game_system.battle_interpreter.setup(nil, 0)
# トループを準備
@troop_id = $game_temp.battle_troop_id
$game_troop.setup(@troop_id)
# アクターコマンドウィンドウを作成
s1 = $data_system.words.attack
s2 = $data_system.words.skill
s3 = $data_system.words.guard
s4 = $data_system.words.item
s5 = $data_system.words.equip #ーーー●●装備
@actor_command_window = Window_Command.new(128, [s1, s2, s3, s4, s5])
#@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
@actor_command_window.y = 128 #160
@actor_command_window.back_opacity = 160
@actor_command_window.active = false
@actor_command_window.visible = false
# その他のウィンドウを作成
@party_command_window = Window_PartyCommand.new
@help_window = Window_Help.new
@help_window.back_opacity = 160
@help_window.visible = false
@status_window = Window_BattleStatus.new
@message_window = Window_Message.new
# スプライトセットを作成
@spriteset = Spriteset_Battle.new
# ウェイトカウントを初期化
@wait_count = 0
# トランジション実行
if $data_system.battle_transition == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$data_system.battle_transition)
end
# プレバトルフェーズ開始
start_phase1
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# マップをリフレッシュ
$game_map.refresh
# トランジション準備
Graphics.freeze
# ウィンドウを解放
@actor_command_window.dispose
@party_command_window.dispose
@help_window.dispose
@status_window.dispose
@message_window.dispose
if @skill_window != nil
@skill_window.dispose
end
if @item_window != nil
@item_window.dispose
end
if @result_window != nil
@result_window.dispose
end
# スプライトセットを解放
@spriteset.dispose
# タイトル画面に切り替え中の場合
if $scene.is_a?(Scene_Title)
# 画面をフェードアウト
Graphics.transition
Graphics.freeze
end
# 戦闘テストからゲームオーバー画面以外に切り替え中の場合
if $BTEST and not $scene.is_a?(Scene_Gameover)
$scene = nil
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (アクターコマンドフェーズ)
#--------------------------------------------------------------------------
def update_phase3
# エネミーアローが有効の場合
if @enemy_arrow != nil
update_phase3_enemy_select
# アクターアローが有効の場合
elsif @actor_arrow != nil
update_phase3_actor_select
# スキルウィンドウが有効の場合
elsif @skill_window != nil
update_phase3_skill_select
# アイテムウィンドウが有効の場合
elsif @item_window != nil
update_phase3_item_select
# ★追加 装備変更ウィンドウが有効の場合
elsif @right_window != nil
update_phase3_equip_select
# アクターコマンドウィンドウが有効の場合
elsif @actor_command_window.active
update_phase3_basic_command
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (アクターコマンドフェーズ : 基本コマンド)
#--------------------------------------------------------------------------
def update_phase3_basic_command
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# 前のアクターのコマンド入力へ
phase3_prior_actor
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# アクターコマンドウィンドウのカーソル位置で分岐
case @actor_command_window.index
when 0 # 攻撃
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
# エネミーの選択を開始
start_enemy_select
when 1 # スキル
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
@active_battler.current_action.kind = 1
# スキルの選択を開始
start_skill_select
when 2 # 防御
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 1
# 次のアクターのコマンド入力へ
phase3_next_actor
when 3 # アイテム
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
@active_battler.current_action.kind = 2
# アイテムの選択を開始
start_item_select
when 4 # 装備
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
#@active_battler.current_action.kind = 0
# アイテムの選択を開始
start_equip_select
end
return
end
end
#--------------------------------------------------------------------------
# ★● 追加 フレーム更新 (アクターコマンドフェーズ : 変更装備選択)
#--------------------------------------------------------------------------
def update_phase3_equip_select
# スキルウィンドウを可視状態にする
@right_window.visible = true
# ウィンドウを更新
@right_window.update
if @right_window.index != @now_right_window
@now_right_window =@right_window.index
if @equip_item_window.index == -1
@equip_item_window.index = 0
@equip_item_window.refresh
@equip_item_window.index = -1
end
end
# ウィンドウを更新
@equip_item_window.update
equip_item_window_select
# アイテムウィンドウがアクティブの場合
if @equip_item_window.active
update_phase3_equip_i_select
return
end
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# 装備選択を終了
end_equip_select
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# 装備固定の場合
if @active_battler.equip_fix?(@right_window.index)
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アイテムウィンドウをアクティブ化
@right_window.active = false
@equip_item_window.active = true
@equip_item_window.index = 0
@now_right_window = -1
return
end
end
#--------------------------------------------------------------------------
# ★● 追加 フレーム更新 (アクターコマンドフェーズ : 装備アイテム選択)
#--------------------------------------------------------------------------
def update_phase3_equip_i_select
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# 装備アイテム選択を終了
@now_item_window = -1
@right_window.active = true
@equip_item_window.active = false
@equip_item_window.index = -1
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
$game_system.se_play($data_system.equip_se)
# アイテムウィンドウで現在選択されているデータを取得
item = @equip_item_window.item
# 装備を変更
@active_battler.equip(@right_window.index, item == nil ? 0 : item.id)
# ライトウィンドウをアクティブ化
@right_window.active = true
@equip_item_window.active = false
@equip_item_window.index = -1
# ライトウィンドウ、アイテムウィンドウの内容を再作成
@right_window.refresh
@equip_item_window.refresh
return
end
end
#--------------------------------------------------------------------------
# ★● 追加 装備選択開始
#--------------------------------------------------------------------------
def start_equip_select
# 装備ウィンドウを作成
#パラメータを呼び出したい時は注釈消す
#@left_window = Window_EquipLeft.new(@active_battler)
@right_window = Window_EquipRight.new(@active_battler)
@item_window1 = Window_EquipItem.new(@active_battler, 0)
@item_window2 = Window_EquipItem.new(@active_battler, 1)
@item_window3 = Window_EquipItem.new(@active_battler, 2)
@item_window4 = Window_EquipItem.new(@active_battler, 3)
@item_window5 = Window_EquipItem.new(@active_battler, 4)
# ヘルプウィンドウを関連付け
@right_window.help_window = @help_window
@item_window1.help_window = @help_window
@item_window2.help_window = @help_window
@item_window3.help_window = @help_window
@item_window4.help_window = @help_window
@item_window5.help_window = @help_window
@now_right_window = -1
@right_window.index = 0
equip_item_window_select
# アクターコマンドウィンドウを無効化
@actor_command_window.active = false
@actor_command_window.visible = false
end
#--------------------------------------------------------------------------
# ★● 追加 装備選択終了
#--------------------------------------------------------------------------
def end_equip_select
# アイテムウィンドウを解放
#パラメータを呼び出したい時は注釈消す
#@left_window.dispose
@right_window.dispose
@item_window1.dispose
@item_window2.dispose
@item_window3.dispose
@item_window4.dispose
@item_window5.dispose
@right_window= nil
@item_window1= nil
@item_window2= nil
@item_window3= nil
@item_window4= nil
@item_window5= nil
# ヘルプウィンドウを隠す
@help_window.visible = false
# アクターコマンドウィンドウを有効化
@actor_command_window.active = true
@actor_command_window.visible = true
end
#--------------------------------------------------------------------------
# ★● 追加 装備アイテムウインドウのチェック
#--------------------------------------------------------------------------
def equip_item_window_select
# アイテムウィンドウの可視状態設定
@item_window1.visible = (@right_window.index == 0)
@item_window2.visible = (@right_window.index == 1)
@item_window3.visible = (@right_window.index == 2)
@item_window4.visible = (@right_window.index == 3)
@item_window5.visible = (@right_window.index == 4)
# ーーー★追加(注釈消すとアクセサリ1つ増加)
#@item_window5.visible = (@right_window.index == 4) || (@right_window.index == 5)
# ーーー終わり
# 現在のアイテムウィンドウを @item_window に設定
case @right_window.index
when 0
@equip_item_window = @item_window1
when 1
@equip_item_window = @item_window2
when 2
@equip_item_window = @item_window3
when 3
@equip_item_window = @item_window4
when 4
@equip_item_window = @item_window5
# ーーー★追加(注釈消すとアクセサリ1つ増加)
#when 5
# @equip_item_window = @item_window5
end
end
end
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
复制代码
作者:
步兵中尉
时间:
2007-7-20 08:25
标题:
关于战斗中换装备的问题
最近看到不少人问如何在战斗中换装备。以前站上有这样的脚本,可是后来被删除了。
现在好不容易找到了,把它发布出来,希望站上恢复。
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#============================================================================== # 「戦闘中に装備」スクリプト Ver1.00
#
#
#戦闘中に装備が出来るようになります。以下のスクリプトをmainの上にでも挿入
#して下さい。アクターコマンドの一番下に装備コマンドが出ると思います。
#
#なお、このスクリプトは通常時の装備画面を直接呼び出しておりますので、
#画面のデザインは考慮しておりません。レイアウトの変更は各自でお願い致します。
#つまり、装備画面の変更が大前提となります。一応、そのままでも動作は問題あり
#ませんが・・・。
#なお、呼び出している画面は「装備中のアイテム欄」と
#「装備できるアイテム欄」です。
#
#
#画面レイアウトの変更はRGSSの初歩の技術ですので、
#それが出来ない方は、親切な方に教えて頂くか諦めて下さい(ぇ
#勉強と思ってがんばりましょう(^^;)
#※ヒント
#●Window_EquipLeft
#●Window_EquipRight
#●Window_EquipItem
#が変更場所です・・・・・。
#==============================================================================
# ■ Scene_Battle (分割定義 3)
#------------------------------------------------------------------------------
# バトル画面の処理を行うクラスです。
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
def main
# 戦闘用の各種一時データを初期化
$game_temp.in_battle = true
$game_temp.battle_turn = 0
$game_temp.battle_event_flags.clear
$game_temp.battle_abort = false
$game_temp.battle_main_phase = false
$game_temp.battleback_name = $game_map.battleback_name
$game_temp.forcing_battler = nil
# バトルイベント用インタプリタを初期化
$game_system.battle_interpreter.setup(nil, 0)
# トループを準備
@troop_id = $game_temp.battle_troop_id
$game_troop.setup(@troop_id)
# アクターコマンドウィンドウを作成
s1 = $data_system.words.attack
s2 = $data_system.words.skill
s3 = $data_system.words.guard
s4 = $data_system.words.item
s5 = $data_system.words.equip #ーーー●●装備
@actor_command_window = Window_Command.new(128, [s1, s2, s3, s4, s5])
#@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
@actor_command_window.y = 128 #160
@actor_command_window.back_opacity = 160
@actor_command_window.active = false
@actor_command_window.visible = false
# その他のウィンドウを作成
@party_command_window = Window_PartyCommand.new
@help_window = Window_Help.new
@help_window.back_opacity = 160
@help_window.visible = false
@status_window = Window_BattleStatus.new
@message_window = Window_Message.new
# スプライトセットを作成
@spriteset = Spriteset_Battle.new
# ウェイトカウントを初期化
@wait_count = 0
# トランジション実行
if $data_system.battle_transition == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$data_system.battle_transition)
end
# プレバトルフェーズ開始
start_phase1
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# マップをリフレッシュ
$game_map.refresh
# トランジション準備
Graphics.freeze
# ウィンドウを解放
@actor_command_window.dispose
@party_command_window.dispose
@help_window.dispose
@status_window.dispose
@message_window.dispose
if @skill_window != nil
@skill_window.dispose
end
if @item_window != nil
@item_window.dispose
end
if @result_window != nil
@result_window.dispose
end
# スプライトセットを解放
@spriteset.dispose
# タイトル画面に切り替え中の場合
if $scene.is_a?(Scene_Title)
# 画面をフェードアウト
Graphics.transition
Graphics.freeze
end
# 戦闘テストからゲームオーバー画面以外に切り替え中の場合
if $BTEST and not $scene.is_a?(Scene_Gameover)
$scene = nil
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (アクターコマンドフェーズ)
#--------------------------------------------------------------------------
def update_phase3
# エネミーアローが有効の場合
if @enemy_arrow != nil
update_phase3_enemy_select
# アクターアローが有効の場合
elsif @actor_arrow != nil
update_phase3_actor_select
# スキルウィンドウが有効の場合
elsif @skill_window != nil
update_phase3_skill_select
# アイテムウィンドウが有効の場合
elsif @item_window != nil
update_phase3_item_select
# ★追加 装備変更ウィンドウが有効の場合
elsif @right_window != nil
update_phase3_equip_select
# アクターコマンドウィンドウが有効の場合
elsif @actor_command_window.active
update_phase3_basic_command
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (アクターコマンドフェーズ : 基本コマンド)
#--------------------------------------------------------------------------
def update_phase3_basic_command
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# 前のアクターのコマンド入力へ
phase3_prior_actor
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# アクターコマンドウィンドウのカーソル位置で分岐
case @actor_command_window.index
when 0 # 攻撃
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
# エネミーの選択を開始
start_enemy_select
when 1 # スキル
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
@active_battler.current_action.kind = 1
# スキルの選択を開始
start_skill_select
when 2 # 防御
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 1
# 次のアクターのコマンド入力へ
phase3_next_actor
when 3 # アイテム
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
@active_battler.current_action.kind = 2
# アイテムの選択を開始
start_item_select
when 4 # 装備
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
#@active_battler.current_action.kind = 0
# アイテムの選択を開始
start_equip_select
end
return
end
end
#--------------------------------------------------------------------------
# ★● 追加 フレーム更新 (アクターコマンドフェーズ : 変更装備選択)
#--------------------------------------------------------------------------
def update_phase3_equip_select
# スキルウィンドウを可視状態にする
@right_window.visible = true
# ウィンドウを更新
@right_window.update
if @right_window.index != @now_right_window
@now_right_window =@right_window.index
if @equip_item_window.index == -1
@equip_item_window.index = 0
@equip_item_window.refresh
@equip_item_window.index = -1
end
end
# ウィンドウを更新
@equip_item_window.update
equip_item_window_select
# アイテムウィンドウがアクティブの場合
if @equip_item_window.active
update_phase3_equip_i_select
return
end
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# 装備選択を終了
end_equip_select
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# 装備固定の場合
if @active_battler.equip_fix?(@right_window.index)
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アイテムウィンドウをアクティブ化
@right_window.active = false
@equip_item_window.active = true
@equip_item_window.index = 0
@now_right_window = -1
return
end
end
#--------------------------------------------------------------------------
# ★● 追加 フレーム更新 (アクターコマンドフェーズ : 装備アイテム選択)
#--------------------------------------------------------------------------
def update_phase3_equip_i_select
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# 装備アイテム選択を終了
@now_item_window = -1
@right_window.active = true
@equip_item_window.active = false
@equip_item_window.index = -1
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
$game_system.se_play($data_system.equip_se)
# アイテムウィンドウで現在選択されているデータを取得
item = @equip_item_window.item
# 装備を変更
@active_battler.equip(@right_window.index, item == nil ? 0 : item.id)
# ライトウィンドウをアクティブ化
@right_window.active = true
@equip_item_window.active = false
@equip_item_window.index = -1
# ライトウィンドウ、アイテムウィンドウの内容を再作成
@right_window.refresh
@equip_item_window.refresh
return
end
end
#--------------------------------------------------------------------------
# ★● 追加 装備選択開始
#--------------------------------------------------------------------------
def start_equip_select
# 装備ウィンドウを作成
#パラメータを呼び出したい時は注釈消す
#@left_window = Window_EquipLeft.new(@active_battler)
@right_window = Window_EquipRight.new(@active_battler)
@item_window1 = Window_EquipItem.new(@active_battler, 0)
@item_window2 = Window_EquipItem.new(@active_battler, 1)
@item_window3 = Window_EquipItem.new(@active_battler, 2)
@item_window4 = Window_EquipItem.new(@active_battler, 3)
@item_window5 = Window_EquipItem.new(@active_battler, 4)
# ヘルプウィンドウを関連付け
@right_window.help_window = @help_window
@item_window1.help_window = @help_window
@item_window2.help_window = @help_window
@item_window3.help_window = @help_window
@item_window4.help_window = @help_window
@item_window5.help_window = @help_window
@now_right_window = -1
@right_window.index = 0
equip_item_window_select
# アクターコマンドウィンドウを無効化
@actor_command_window.active = false
@actor_command_window.visible = false
end
#--------------------------------------------------------------------------
# ★● 追加 装備選択終了
#--------------------------------------------------------------------------
def end_equip_select
# アイテムウィンドウを解放
#パラメータを呼び出したい時は注釈消す
#@left_window.dispose
@right_window.dispose
@item_window1.dispose
@item_window2.dispose
@item_window3.dispose
@item_window4.dispose
@item_window5.dispose
@right_window= nil
@item_window1= nil
@item_window2= nil
@item_window3= nil
@item_window4= nil
@item_window5= nil
# ヘルプウィンドウを隠す
@help_window.visible = false
# アクターコマンドウィンドウを有効化
@actor_command_window.active = true
@actor_command_window.visible = true
end
#--------------------------------------------------------------------------
# ★● 追加 装備アイテムウインドウのチェック
#--------------------------------------------------------------------------
def equip_item_window_select
# アイテムウィンドウの可視状態設定
@item_window1.visible = (@right_window.index == 0)
@item_window2.visible = (@right_window.index == 1)
@item_window3.visible = (@right_window.index == 2)
@item_window4.visible = (@right_window.index == 3)
@item_window5.visible = (@right_window.index == 4)
# ーーー★追加(注釈消すとアクセサリ1つ増加)
#@item_window5.visible = (@right_window.index == 4) || (@right_window.index == 5)
# ーーー終わり
# 現在のアイテムウィンドウを @item_window に設定
case @right_window.index
when 0
@equip_item_window = @item_window1
when 1
@equip_item_window = @item_window2
when 2
@equip_item_window = @item_window3
when 3
@equip_item_window = @item_window4
when 4
@equip_item_window = @item_window5
# ーーー★追加(注釈消すとアクセサリ1つ増加)
#when 5
# @equip_item_window = @item_window5
end
end
end
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1