ページ 1 / 1
【解決済み】エラー修正
Posted: 2018年2月26日(月) 04:58
by nira
失礼致します。
以前、faida様にこちらのスクリプト(
viewtopic.php?f=46&t=2666)を作って頂いたのですが、
戦闘途中で仲間を加入させ、その仲間が瀕死状態になると、each_with_indexのno methodエラーが生じます。
恐らく、戦闘開始処理でinit_crisis_effectsが実行されている為、途中で加入する仲間の処理が定義されてないと
思われます。恐縮ではありますが、このエラーを修正していただけないでしょうか?
又、こちらのスクリプト(
viewtopic.php?f=46&t=1927)に関しても、スキルに設定されたMPが現在MPと同じである場合、エネミーがスキルを使用(その瞬間MPは0)してしまって、そのままエラーを吐いてしまいます。
よろしくお願いします。
Re: エラー修正
Posted: 2018年2月28日(水) 07:01
by TOMO
前者の方は、問題の行の前に
コード: 全て選択
init_crisis_effects if @crisis_effects.nil?
を入れれば直ると思います
後者の方は、
とりあえず前者の方と同じようにエラー内容を書いて下さい
多分Scene_Battle584行目のNoMethodErrorだと思いますが
【追記】問題があった為、スクリプトを削除しました
本来の機能の事を忘れて作ってた…
Re: エラー修正
Posted: 2018年2月28日(水) 09:29
by faida
大変遅くなりました。
前者は加入処理時にも瀕死効果の初期化を行うようにしました。
あと、ステート付加時のアニメーションをステートごとに指定できるようにアップデートしています。
※2019/10/3 不具合が出たので、
元のトピックに修正版を添付しています。
後者は「MPがちょうどなくなる時に使えるようにするのか使えないようにするのか」が判別できなかったので
とりあえずオプションで付けました。
あと、普通にHP0で倒してもMP0でない場合に復活する不具合を修正しました。
コード: 全て選択
# MP戦闘不能を持つキャラはMPがちょうど0になる場合スキルを使用できない
BATTLER_NOUSEMP_DEATH = true
class RPG::BaseItem
def mp0_death
return @mp0_death if !@mp0_death.nil?
@mp0_death = (note =~ /<MP戦闘不能>/ ? true : false)
end
end
class Game_BattlerBase
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
alias mp0_death_refresh refresh
def refresh
mp0_death_refresh
check_mp0_death
end
def check_mp0_death
if mp0_death?
(@hp == 0 || @mp == 0) ? add_state(death_state_id) :
remove_state(death_state_id)
end
end
def mp0_death?
feature_objects.any?{|a|a.mp0_death}
end
end
if BATTLER_NOUSEMP_DEATH
class Game_BattlerBase
#--------------------------------------------------------------------------
# ● スキル使用コストの支払い可能判定
#--------------------------------------------------------------------------
alias mp0_death_skill_cost_payable? skill_cost_payable?
def skill_cost_payable?(skill)
return false if !mp0_death_skill_cost_payable?(skill)
!mp0_death? || mp > skill_mp_cost(skill)
end
end
else
class Game_BattlerBase
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
mp0_death_refresh
return if SceneManager.scene.instance_variable_get(:@subject) == self
check_mp0_death
end
end
class Scene_Battle
#--------------------------------------------------------------------------
# ● 戦闘行動終了時の処理
#--------------------------------------------------------------------------
alias mp0_death_process_action_end process_action_end
def process_action_end
@subject.check_mp0_death
@log_window.display_changed_states(@subject)
mp0_death_process_action_end
end
end
end
大変どうでもいいことなのですが、TOMO様の後半のスクリプトだとMPダメージでトドメがさせないんですよね……。だから拙作はこんな変な形になってるんですが
Re: エラー修正
Posted: 2018年2月28日(水) 09:58
by nira
TOMO様、faida様ありがとうございます。
TOMO様が書いていただいたスクリプトで前者も後者もエラーは表示されなくなりました。
また、faida様のアップデートのスクリプトでも、エラーが解消されました。
お二方のご厚意に対し、厚く御礼申し上げます。