創作內容

4 GP

[RMXP RGSS] 額外掉落物

作者:未来ずら│2014-02-08 00:24:16│巴幣:8│人氣:553
就是讓戰鬥獎勵品變多...這樣的一個腳本
好啦,這樣的腳本一定很多,所以這邊只是分享我的做法

※修正清除位置的問題



首先在 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(物件):一樣是數組用的方法,將指定物件追加至數組最後



當然這樣做是有些缺陷的,敵人如果是會逃跑的話,全部逃光還是能取得額外獎勵
不過...會逃跑的敵人我就不會設計額外獎勵了

如果還要再判定追加獎勵是屬於哪個敵人的話...嗯~自己加油☆


゚Å゚)  < 我不如去找菜市場腳本!
⊂彡#))д´) < 哎呀所以說...


引用網址:https://home.gamer.com.tw/TrackBack.php?sn=2337400
Some rights reserved. 姓名標示-非商業性 2.5 台灣

相關創作

同標籤作品搜尋:RM|RGSS

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

4喜歡★qootm2 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:[專案進度] 邪鬼的復仇... 後一篇:[RMXP RGSS] ...

追蹤私訊切換新版閱覽

作品資料夾

angela830816各位巴友
小屋新增創作 歡迎大家來看看! 也可以來訂閱我的頻道喔看更多我要大聲說昨天16:08


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】