創作內容

6 GP

[RMXP RGSS] 額外技能效果

作者:未来ずら│2014-02-13 01:19:25│巴幣:12│人氣:501
由於RMXP內建的技能可用設定實在貧乏至極,大多時候都得配合公共事件進行
如果能用公用事件解決也就算了,如果我現在想做個「自爆技」...欸?我連得知剛剛是誰使用這招都沒辦法

所以,打開腳本編輯器吧...

首先做新功能之前得先分析這新功能要做什麼、什麼時候做、需要些什麼...
以自爆為例,
要做什麼:使用者使用技能後HP歸0
什麼時候做:使用技能後
需要些什麼:使用的技能、使用者,這樣才能判斷


好,分析完畢後就繼續吧,再來就是找適合的位置
不過因為要解釋整個 Scene_Battle 的運作實在太攏長,
所以為了節省時間,直接跳到我們的目的地:update_phase4_step5

為何選在這個方法追加?當然是因為能一口氣取得上述的要素:
使用者、技能(包含在使用者當中),並且時機在使用技能後

「技能就算了,使用者在哪裡?」
往上看應該會找到一個叫 @active_battler 的實體變量,再看一下那堆update_phase4_step xxx的註解,可以勉強理解這應該是一系列的處理,我們先不要管為什麼要分段和怎麼結合運作的

@active_battler 在這處理中代表當時的行動者,
可能是 我方(Game_Actor實體) 或 敵方(Game_Enemy實體),那麼或許能利用他們的方法得到他們用了什麼技能......理所當然的,其實一定會有...

總而言之,經過一番尋找和整理後得到了我們所需的「材料」:
@active_battler # 使用者
@active_battler.current_action.skill_id # 使用的技能 ID (不用技能時為 0 )

再來是時間點,雖然說是寫在update_phase4_step5中,不過執行上還是有順序的
就選在「顯示傷害」之後吧。攻擊完敵人後、自己才爆炸:
# 顯示傷害
for target in @target_battlers
if target.damage != nil
target.damage_pop = true
end
end

那麼接下來呢?直接在後面加上:
# 如果使用了自爆技能 (假設自爆技能編號是 5)
if @active_battler.current_action.skill_id == 5
@active_battler.hp = 0 # 使用者 HP 為 0
end
這樣?



嗯~的確是可以,但如果需要其他的效果到時 update_phase4_step5 就會變得很長很長...
所以這裡多設一個方法把這些效果整理在一起,一樣寫在 Scene_Battle 中:

#--------------------------------------------------------------------------
# ●額外技能效果
#--------------------------------------------------------------------------
def skill_extra_effect
   # 判斷行動者的技能
   case @active_battler.current_action.skill_id
   when 1   # 使用 1 號技能
       # 我方全員HP減少 500
      # (基本上還要判斷使用者是誰然後讓他的同伴扣血...算了,大不了這招不給敵人用)
       for a in $game_party.actors
          a.hp -= 500
          # 下面這兩項操作是為了彈出傷害數字
          a.damage = 500  
          a.damage_pop = true
       end
   when 3  # 使用 3 號技能
      @active_battler.hp = @active_battler.maxsp / 2   # 使用者的 HP 變為自己最大SP的一半
   when 5  # 使用 5 號技能
      @active_battler.hp = 0   # 使用者 HP 為 0
   when 8  # 使用 8 號技能
       # 隨機獲得 250~350 之間的金額
       $game_party.gain_gold(rand(101)+250)
   end
end

update_phase4_step5在「顯示傷害」處理之後調用這個方法(skill_extra_effect)即可
只要自行追加 when 的分歧就能實現各種「技能使用後」的效果

※不過這個範例除了3、5號都能用公共事件實現,
 另外有注意到嗎?能用公共事件實現的1和8號技能都是操控全域變量...

Q:我用齒輪之城 RTAB 怎麼改?
一樣的做法,不過改在 update_phase4_step6 調用比較保險
只是RTAB另外改成需要一個參數(battler),剛好這參數就是代表目前行動者(Game_Actor或Game_Enemy實體)
所以同理,我們新增的 skill_extra_effect 也要改成把這參數代進去:
#--------------------------------------------------------------------------
# ● 額外技能效果
# active_battler:目前行動者
#--------------------------------------------------------------------------
def skill_extra_effect(active_battler)
(內容)
end
(其實這邊原本打算直接寫battler,但為了讓初學者能和 update_phase4_step6 的區別......)

然後 @active_battler 的部分全部改成 active_battler,調用時就是把battler代入:
skill_extra_effect(battler)

另外如果要額外進行傷害增減,請參考RTAB重新定義的 command_338
不然就用公共事件做吧,這應該沒什麼需要用到腳本的...




引用網址:https://home.gamer.com.tw/TrackBack.php?sn=2343329
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:RM|RGSS

留言共 0 篇留言

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

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

前一篇:[RMXP RGSS] ... 後一篇:[RMXP RGSS] ...

追蹤私訊切換新版閱覽

作品資料夾

happy545你好~~
如果我賣以前畫畫的作品有人會買嗎?我真的需要幫忙....看更多我要大聲說10小時前


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

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