就是讓戰鬥獎勵品變多...這樣的一個腳本
好啦,這樣的腳本一定很多,所以這邊只是分享我的做法
※修正清除位置的問題首先在 Game_Temp 的 initialize 新增一個數組變量,然後設定為可讀寫狀態,不懂請看下圖:
這裏我宣告的變量名稱是@battle_extreasures,其他變量可以不用管
突然的英文教學時間!battle:戰鬥
ex:extra,額外的
treasure:寶物
============英文教學結束============
為什麼要宣告可讀寫,因為我們要在其他Class使用,
只要知道 Game_Temp 的實體是代入一個全域變量
$game_temp 就可以進行下一步了
在 Scene_Battle 這個類當中找到 start_phase5 方法,這方法是戰鬥勝利會調用的
計算戰利品的內容當然也在這方法中,總之找到這一行:
# 限制寶物數為 6 個 treasures = treasures[0..5] |
我們必須在這行前追加額外獎勵的計算,於是我們用到剛剛在Game_Temp當中宣告的數組:
代表Game_Temp實體的變量:$game_temp
Game_Temp中,代表額外獎勵的變量:@battle_extreasures
合在一起就是:$game_temp.battle_extreasures !!
好,你已經會怎麼跨class使用變量了,繼續:
# 如果有額外掉落物 (t == [機率, 類型(1:物品、2:武器、3:防具), ID])
unless $game_temp.battle_extreasures.empty?
# 處理每項額外獎勵內容
for t in $game_temp.battle_extreasures
# 判斷取得機率
if rand(100) < t[0]
# 判斷道具類型,然後將額外獎勵新增至 treasures 變量
case t[1]
when 1
treasures.push($data_items[t[2]])
when 2
treasures.push($data_weapons[t[2]])
when 3
treasures.push($data_armors[t[2]])
end
end # if rand(100) < t[0]
end # for t in $game_temp.battle_extreasures
end # unless $game_temp.battle_extreasures.empty?
empty? :數組類的方法,負責判斷數組是不是空的
treasures:start_phase5 中的一個局部變量,管理戰利品
※因為接下來會遇到「treasures = treasures[0..5]」這行將戰利品限制在 6 個以內(0~5,所以是6個),如要提升上限請自行把 5 這個數字改大
當然,如果要把額外獎勵寫在這行的下面也可以...就無視限制了,不過到時版面可能會很驚人
之後在下方不遠可發現這段:
# 獲得寶物
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
再來需要把額外內容清除,以免下場戰鬥又會拿到,我們需要這語句:
$game_temp.battle_extreasures.clear |
要放在什麼地方呢?戰鬥開始或結束都可以
若照之前講的放在 start_phase5 會出問題,因為戰鬥結束有分打贏、打輸、中斷,如果是後兩者的情況就不會清掉了
所以到 Scene_Battle 的 main 方法,將清除語句放在方法一開始或最後都可以
好了,處理部分搞定,那要怎麼增加戰利品呢?
有很多方法,只要在結算前宣告都行,不過最簡單的果然還是用戰鬥事件吧
那麼就到「敵方隊伍」的頁面追加額外獎勵,如圖所示:
追加的每一項戰利品是由一個數組構成,分別是:
[掉落機率, 道具種類(1:物品、2:武器、3:防具), 道具編號]
範例:
# 50%機率額外取得1號物品: $game_temp.battle_extreasures.push([50, 1, 1])
# 30%機率額外取得8號武器: $game_temp.battle_extreasures.push([30, 2, 8])
# 70%機率額外取得12號防具: $game_temp.battle_extreasures.push([70, 3, 12]) |
就是這樣,開戰時宣告額外戰利品,最好加上註解以免忘記當初寫了什麼
可以無限追加,不過因為取得上限的緣故所以其實...嗯...
push(物件):一樣是數組用的方法,將指定物件追加至數組最後
當然這樣做是有些缺陷的,敵人如果是會逃跑的話,全部逃光還是能取得額外獎勵
不過...會逃跑的敵人我就不會設計額外獎勵了
如果還要再判定追加獎勵是屬於哪個敵人的話...嗯~自己加油☆
゚Å゚) < 我不如去找菜市場腳本!
⊂彡#))д´) < 哎呀所以說...