【介面】升級窗口顯示

出處:http://www.66rpg.com/

在角色升級時可以顯示能力提昇數值及習得技能,此腳本存在一個問題,就是在升級時會停頓一段時間才脫離戰鬥,這是因為程式在執行獲取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