Project1
标题:
怎么把放在下面?
[打印本页]
作者:
guiyu07
时间:
2008-9-26 07:02
标题:
怎么把放在下面?
# 有效化同伴指令窗口
@party_command_window.active = true
@party_command_window.visible = true
将其删除,然后去掉函数“def update_phase2”的分支,
改为:
def update_phase2
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 开始角色的命令回合
start_phase3
end
这个是把战斗OR逃跑去掉的~
但是怎么把逃跑加在下面呢?
求脚本修改的具体方法~~~{/ll}
[LINE]1,#dddddd[/LINE]
版务信息:版主帮忙结贴~
作者:
殲滅天使·玲
时间:
2008-9-26 07:53
哦...
http://rpg.blue/htm/Topic_40619.htm
[LINE]1,#dddddd[/LINE]
版主对此帖的认可:『正确解答,补上悬赏积分100分+1卡(=250分),感激你的热情解答...』,积分『+350』。
作者:
黑鏻
时间:
2008-9-26 11:07
把以下脚本替换掉Scene_Battle 2的内容
#==============================================================================
# ■ Scene_Battle (分割定义 2)
#------------------------------------------------------------------------------
# 处理战斗画面的类。
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● 开始自由战斗回合
#--------------------------------------------------------------------------
def start_phase1
# 转移到回合 1
@phase = 1
# 清除全体同伴的行动
$game_party.clear_actions
# 设置战斗事件
setup_battle_event
end
#--------------------------------------------------------------------------
# ● 刷新画面 (自由战斗回合)
#--------------------------------------------------------------------------
def update_phase1
# 胜败判定
if judge
# 胜利或者失败的情况下 : 过程结束
return
end
# 开始同伴命令回合
start_phase2
end
#--------------------------------------------------------------------------
# ● 开始同伴命令回合
#--------------------------------------------------------------------------
def start_phase2
# 转移到回合 2
@phase = 2
# 设置角色为非选择状态
@actor_index = -1
@active_battler = nil
# 有效化同伴指令窗口
###########################################################################
@party_command_window.active = false
@party_command_window.visible = false
###########################################################################
# 无效化角色指令窗口
@actor_command_window.active = false
@actor_command_window.visible = false
# 清除主回合标志
$game_temp.battle_main_phase = false
# 清除全体同伴的行动
$game_party.clear_actions
# 不能输入命令的情况下
unless $game_party.inputable?
# 开始主回合
start_phase4
end
end
#--------------------------------------------------------------------------
# ● 刷新画面 (同伴命令回合)
#--------------------------------------------------------------------------
def update_phase2
# 按下 C 键的情况下
#if Input.trigger?(Input::C)
# 同伴指令窗口光标位置分支
#case @party_command_window.index
# when 0 # 战斗
# 演奏确定 SE
# $game_system.se_play($data_system.decision_se)
# 开始角色的命令回合
#####################################################################
start_phase3 #只有这个是需要留下的
#####################################################################
#when 1 # 逃跑
# 不能逃跑的情况下
# if $game_temp.battle_can_escape == false
# 演奏冻结 SE
#$game_system.se_play($data_system.buzzer_se)
#return
#end
# 演奏确定 SE
#$game_system.se_play($data_system.decision_se)
# 逃走处理
#update_phase2_escape
#end
#return
# end
end
#--------------------------------------------------------------------------
# ● 画面更新 (同伴指令回合 : 逃跑)
#--------------------------------------------------------------------------
def update_phase2_escape
# 计算敌人速度的平均值
enemies_agi = 0
enemies_number = 0
for enemy in $game_troop.enemies
if enemy.exist?
enemies_agi += enemy.agi
enemies_number += 1
end
end
if enemies_number > 0
enemies_agi /= enemies_number
end
# 计算角色速度的平均值
actors_agi = 0
actors_number = 0
for actor in $game_party.actors
if actor.exist?
actors_agi += actor.agi
actors_number += 1
end
end
if actors_number > 0
actors_agi /= actors_number
end
# 逃跑成功判定
success = rand(100) < 50 * actors_agi / enemies_agi
# 成功逃跑的情况下
if success
# 演奏逃跑 SE
$game_system.se_play($data_system.escape_se)
# 还原为战斗开始前的 BGM
$game_system.bgm_play($game_temp.map_bgm)
# 战斗结束
battle_end(1)
# 逃跑失败的情况下
else
# 清除全体同伴的行动
$game_party.clear_actions
# 开始主回合
start_phase4
end
end
#--------------------------------------------------------------------------
# ● 开始结束战斗回合
#--------------------------------------------------------------------------
def start_phase5
# 转移到回合 5
@phase = 5
# 演奏战斗结束 ME
$game_system.me_play($game_system.battle_end_me)
# 还原为战斗开始前的 BGM
$game_system.bgm_play($game_temp.map_bgm)
# 初始化 EXP、金钱、宝物
exp = 0
gold = 0
treasures = []
# 循环
for enemy in $game_troop.enemies
# 敌人不是隐藏状态的情况下
unless enemy.hidden
# 获得 EXP、增加金钱
exp += enemy.exp
gold += enemy.gold
# 出现宝物判定
if rand(100) < enemy.treasure_prob
if enemy.item_id > 0
treasures.push($data_items[enemy.item_id])
end
if enemy.weapon_id > 0
treasures.push($data_weapons[enemy.weapon_id])
end
if enemy.armor_id > 0
treasures.push($data_armors[enemy.armor_id])
end
end
end
end
# 限制宝物数为 6 个
treasures = treasures[0..5]
# 获得 EXP
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
if actor.cant_get_exp? == false
last_level = actor.level
actor.exp += exp
if actor.level > last_level
@status_window.level_up(i)
end
end
end
# 获得金钱
$game_party.gain_gold(gold)
# 获得宝物
for item in treasures
case item
when RPG::Item
$game_party.gain_item(item.id, 1)
when RPG::Weapon
$game_party.gain_weapon(item.id, 1)
when RPG::Armor
$game_party.gain_armor(item.id, 1)
end
end
# 生成战斗结果窗口
@result_window = Window_BattleResult.new(exp, gold, treasures)
# 设置等待计数
@phase5_wait_count = 100
end
#--------------------------------------------------------------------------
# ● 画面更新 (结束战斗回合)
#--------------------------------------------------------------------------
def update_phase5
# 等待计数大于 0 的情况下
if @phase5_wait_count > 0
# 减少等待计数
@phase5_wait_count -= 1
# 等待计数为 0 的情况下
if @phase5_wait_count == 0
# 显示结果窗口
@result_window.visible = true
# 清除主回合标志
$game_temp.battle_main_phase = false
# 刷新状态窗口
@status_window.refresh
end
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 战斗结束
battle_end(0)
end
end
end
复制代码
然后在Main之前插入下面这段脚本,里面包括“攻击、特技、防守、物品、装备、逃跑”6个选项,可以任君删改,当然我已经把“装备”项弄掉了了~~
#==============================================================================
# 可直接添在 Scene_Battle (分割定义 3)下,或者在Main之前插入
#------------------------------------------------------------------------------
# 处理战斗画面的类。
#==============================================================================
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
#s4= $data_system.words.equip #装备
@actor_command_window = Window_Command.new(150, [s1, s2, s3, s4, "逃跑"])
#@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
@actor_command_window.y =150
@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 键的情况下 [B ボタンが押された場合]
if Input.trigger?(Input::B)
# 演奏取消 SE [キャンセル SE を演奏]
$game_system.se_play($data_system.cancel_se)
# 转向前一个角色的指令输入 [前のアクターのコマンド入力へ]
phase3_prior_actor
return
end
# 按下 C 键的情况下 [C ボタンが押された場合]
if Input.trigger?(Input::C)
# 角色指令窗口光标位置分之 [アクターコマンドウィンドウのカーソル位置で分岐]
case @actor_command_window.index
when 0 # 攻击 [攻擊]
# 演奏确定 SE [決定 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 [決定 SE を演奏]
$game_system.se_play($data_system.decision_se)
# 设置行动 [アクションを設定]
@active_battler.current_action.kind = 1
# 开始选择特技 [スキルの選擇を開始]
start_skill_select
when 2 # 防御 [防禦]
# 演奏确定 SE [決定 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 [決定 SE を演奏]
$game_system.se_play($data_system.decision_se)
# 设置行动 [アクションを設定]
@active_battler.current_action.kind = 2
# 开始选择物品 [アイテムの選擇を開始]
start_item_select
=begin
when 3 # 装备 [裝備]
# 演奏确定 SE [決定 SE を演奏]
$game_system.se_play($data_system.decision_se)
# 设置行动 [アクションを設定]
@active_battler.current_action.kind = 0
# 选择开始 [アイテムの選擇を開始]
start_equip_select
=end
when 4
if $game_temp.battle_can_escape == false
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 逃走处理
update_phase2_escape
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
item1 = @right_window.item
item2 = @equip_item_window.item
last_hp = @active_battler.hp
last_sp = @active_battler.sp
@active_battler.equip(@right_window.index, item2 == nil ? 0 : item2.id)
new_atk = @active_battler.atk
new_pdef = @active_battler.pdef
new_mdef = @active_battler.mdef
@active_battler.equip(@right_window.index, item1 == nil ? 0 : item1.id)
@active_battler.hp = last_hp
@active_battler.sp = last_sp
@left_window.set_new_parameters(new_atk, new_pdef, new_mdef)
# 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
@left_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)
@item_window1.z = 9999
@item_window2.z = 9999
@item_window3.z = 9999
@item_window4.z = 9999
@item_window5.z = 9999
# ヘルプウィンドウを關連付け
@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
@left_window.set_new_parameters(nil, nil, nil)
# アイテムウィンドウの可視狀態設定
@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
when 6
if $game_temp.battle_can_escape == false
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 逃走处理
update_phase2_escape
end
end
end
#==============================================================================
#此脚本来自网上,有过修改
#==============================================================================
复制代码
[LINE]1,#dddddd[/LINE]
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
[LINE]1,#dddddd[/LINE]
系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1