Project1
标题: 升等完全恢復的問題...... [打印本页]
作者: asd89860 时间: 2015-2-27 15:12
标题: 升等完全恢復的問題......
角色升級時,
如何讓他恢復HP、MP、異常狀態.......
求教
作者: 三途亚梦 时间: 2015-2-27 15:20
https://rpg.blue/thread-368163-1-2.html
作者: tseyik 时间: 2015-2-27 15:52
本帖最后由 tseyik 于 2015-2-27 15:58 编辑
- #--------------------------------------------------------------------------
- # RGSS3 勝利時 HP・MP回復スクリプト
- #--------------------------------------------------------------------------
- =begin
- 戦闘終了時、勝利していればRECOVER_VICTORYモジュールの設定内容を実行します。
- RECOVER_DECLARATION … 開関。「全員のXXが少量回復した!」表示/不表示。
- HP_RECOVER_FLAG … 開関。勝利時HP回復/不回復。
- HP_RECOVER_VALUE … 変数。勝利時HP回復量。
- 最大HP / VALUE の値が現在のHPに足されます。
- MP_RECOVER_FLAG … 開関。勝利時MP回復/不回復。
- MP_RECOVER_VALUE … 変数。勝利時MP回復量。
- 最大MP / VALUE の値が現在のMPに足されます。
- 改寫VICTORY_TEXT_HEALb的内容、可改変表示文字。
-
- テキストは表示できますが、テンポが悪くなるので推奨しません。
- =end
- module RECOVER_VICTORY
- RECOVER_DECLARATION = 86 # 勝利時 回復宣言フラグ
- HP_RECOVER_FLAG = 87 # 勝利時 HP回復フラグ
- HP_RECOVER_VALUE = 5 # 勝利時 HP回復量
- MP_RECOVER_FLAG = 88 # 勝利時 MP回復フラグ
- MP_RECOVER_VALUE = 17 # 勝利時 MP回復量
- end
- module Vocab
- VICTORY_TEXT_HEAL = "全員の%sが少量回復した!"
- end
- module BattleManager
- #--------------------------------------------------------------------------
- # ● 戦闘メンバーのHP指定数回復(生存時のみ)
- #--------------------------------------------------------------------------
- def self.hp_recover_assign_value_battle_members
- $game_party.battle_members.each do |actor|
- actor.hp += actor.mhp / RECOVER_VICTORY::HP_RECOVER_VALUE if actor.alive?
- end
- end
- #--------------------------------------------------------------------------
- # ● 戦闘メンバーのMP指定数回復(生存時のみ)
- #--------------------------------------------------------------------------
- def self.mp_recover_assign_value_battle_members
- $game_party.battle_members.each do |actor|
- actor.mp += actor.mmp / RECOVER_VICTORY::MP_RECOVER_VALUE if actor.alive?
- end
- end
- #--------------------------------------------------------------------------
- # ● 勝利の処理
- #--------------------------------------------------------------------------
- def self.process_victory
- play_battle_end_me
- replay_bgm_and_bgs
- $game_message.add(sprintf(Vocab::Victory, $game_party.name))
- display_exp
- gain_gold
- gain_drop_items
- gain_exp
- if $game_switches[RECOVER_VICTORY::HP_RECOVER_FLAG] == true
- hp_recover_assign_value_battle_members
- if $game_switches[RECOVER_VICTORY::RECOVER_DECLARATION] == true
- Sound.play_recovery
- $game_message.add(sprintf(Vocab::VICTORY_TEXT_HEAL, Vocab::hp))
- wait_for_message
- end
- end
- if $game_switches[RECOVER_VICTORY::MP_RECOVER_FLAG] == true
- mp_recover_assign_value_battle_members
- if $game_switches[RECOVER_VICTORY::RECOVER_DECLARATION] == true
- Sound.play_recovery
- $game_message.add(sprintf(Vocab::VICTORY_TEXT_HEAL, Vocab::mp))
- wait_for_message
- end
- end
- SceneManager.return
- battle_end(0)
- return true
- end
- end
复制代码
作者: howhow1314 时间: 2015-2-27 16:27
本帖最后由 howhow1314 于 2015-2-27 16:30 编辑
我也是新手才學RM幾天,跟你分享一下自行解決的辦法
按F11打開腳本編輯器,Ctrl+Shift+F嘗試搜尋一些關鍵字,比如level/level_up/level += 1(level = level + 1的意思)等
#--------------------------------------------------------------------------
# ● 等級上升
#--------------------------------------------------------------------------
def level_up
@level += 1
self.class.learnings.each do |learning|
learn_skill(learning.skill_id) if learning.level == @level
end
end
#--------------------------------------------------------------------------
# ● 等級上升
#--------------------------------------------------------------------------
def level_up
@level += 1
self.class.learnings.each do |learning|
learn_skill(learning.skill_id) if learning.level == @level
end
end
找到這,第一行@level += 1,就是等級加一,後面的則是習得升級學會的技能,這明顯就是等級上升的函數了
只要在裡面加上恢復hp的script就可以了
不過通常做法好像是不直接在這改,下面的插件腳本插入一個,把前面的函數複製到這邊,
(名稱不一定叫SYSTEM,可以隨意改,沒影響的,這樣把自己加的系統都集合一處比較方便修改或查看)
然後再作修改,不過這要加上
class Game_Actor < Game_Battler
end
class Game_Actor < Game_Battler
end
就是變成
class Game_Actor < Game_Battler
def level_up
@level += 1
self.class.learnings.each do |learning|
learn_skill(learning.skill_id) if learning.level == @level
end
end
end
class Game_Actor < Game_Battler
def level_up
@level += 1
self.class.learnings.each do |learning|
learn_skill(learning.skill_id) if learning.level == @level
end
end
end
這樣,因為原本的函數是在class Game_Actor < Game_Battler底下的(def level_up那邊往上拉就找到)
順便分享一下自己的經驗,如果遇到其他不確定作用的函數,可以這樣做,比如level_up
def level_up
msgbox "123" #加這句
@level += 1
self.class.learnings.each do |learning|
learn_skill(learning.skill_id) if learning.level == @level
end
end
def level_up
msgbox "123" #加這句
@level += 1
self.class.learnings.each do |learning|
learn_skill(learning.skill_id) if learning.level == @level
end
end
然後你f12進遊戲升一級,出現msgbox,那就可以大概知道函數是什麼時候被調用的
作者: tan12345 时间: 2015-2-27 22:44
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # ● 等级上升
- #--------------------------------------------------------------------------
- def level_up
- @level += 1
- self.class.learnings.each do |learning|
- learn_skill(learning.skill_id) if learning.level == @level
- end
- self.recover_all
- end
- end
复制代码
作者: asd89860 时间: 2015-2-28 14:26
感謝 可以了
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |