【介面】升級窗口顯示
在角色升級時可以顯示能力提昇數值及習得技能,此腳本存在一個問題,就是在升級時會停頓一段時間才脫離戰鬥,這是因為程式在執行獲取EXP時的順序所造成,解決方法請搜尋你所使用的戰鬥系統腳本,將以下這段:
#--------------------------------------------------------------------------
# ● 開始結束戰鬥回合
#--------------------------------------------------------------------------
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
全部置換成這段:
#--------------------------------------------------------------------------
# ● 開始結束戰鬥回合
#--------------------------------------------------------------------------
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]
# 獲得金錢
$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)
# 關閉結果窗口
@result_window.visible = false
# 獲得 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
# 戰鬥結束
battle_end(0)
end
end