ページ 1 / 1
【解決済み】ゲームオーバーにせず場所移動
Posted: 2018年4月21日(土) 18:41
by 軟骨食べたい
久しぶりに利用させていただきます、軟骨食べたいと申します。
質問ですが、バトルで戦闘不能になったときに、ゲームオーバー画面に移動せず、全回復したのち宿屋などに場所移動する、ということはできますか?
不死身ステートを使ってみても、もとの画面というかイベントに繋がってしまい、場所移動ができません。このようなことが実現可能なスクリプト、もしくはイベントの組み方などがありましたら、教えてください。
Re: ゲームオーバーにせず場所移動
Posted: 2018年4月21日(土) 19:03
by faida
「ツクールVXAce ゲームオーバー(もしくは全滅)」で探せばとりあえず見つかるかなと思いましたがなかなかないですね。
https://noir-et-blanc-patisserie.amebao ... Ids=620063
viewtopic.php?t=5222
出てきたあたりだとこの辺りでしょうか。
Re: ゲームオーバーにせず場所移動
Posted: 2018年4月21日(土) 21:05
by 軟骨食べたい
ありがとうございます、前者の通りにスクリプトを弄ってみたのですが、
このようなエラーがでてしまいました。
Re: ゲームオーバーにせず場所移動
Posted: 2018年4月21日(土) 23:01
by ショウ
コード: 全て選択
module Zenmetu
# 制御するスイッチのID
N = 1#スイッチN番がONの時ゲームオーバー
M = 2#全滅時コモンイベント起動用
end
module BattleManager
#--------------------------------------------------------------------------
# ● 敗北の処理
#--------------------------------------------------------------------------
def self.process_defeat
$game_message.add(sprintf(Vocab::Defeat, $game_party.name))
wait_for_message
if @can_lose
revive_battle_members
replay_bgm_and_bgs
SceneManager.return
else
#SceneManager.goto(Scene_Gameover)
if $game_switches[Zenmetu::N] == true
SceneManager.goto(Scene_Gameover)
else
$game_switches[Zenmetu::M] = true
revive_battle_members
replay_bgm_and_bgs
SceneManager.return
end
end
battle_end(2)
return true
end
end
#ここからマップ上での全滅の場合の処理
class Scene_Base
#--------------------------------------------------------------------------
# ● ゲームオーバー判定
# パーティが全滅状態ならゲームオーバー画面へ遷移する。
#--------------------------------------------------------------------------
def check_gameover
if $game_party.all_dead?
if $game_switches[Zenmetu::N] == true
SceneManager.goto(Scene_Gameover)
else
$game_switches[Zenmetu::M] = true
end
end
end
end
class Game_Interpreter
#--------------------------------------------------------------------------
# ● HP の増減
#--------------------------------------------------------------------------
def command_311
value = operate_value(@params[2], @params[3], @params[4])
iterate_actor_var(@params[0], @params[1]) do |actor|
next if actor.dead?
actor.change_hp(value, @params[5])
actor.perform_collapse_effect if actor.dead?
end
if $game_party.all_dead?
if $game_switches[Zenmetu::N] == true
SceneManager.goto(Scene_Gameover)
else
$game_switches[Zenmetu::M] = true
end
end
end
end
スイッチN番がONの時は全滅でゲームオーバーになります。
OFFの時はスイッチM番がONになるのでこれを使って自動実行か並列実行の
コモンイベントで場所移動させればよし。
そのコモンイベントでM番をOFFにしないと無限ループになるので注意。
class Scene_Base以降はマップ上で全滅した場合の処理です。
やっている事はバトルと同じです。
(問題や間違いがありそうなら誰か指摘してくれると嬉しい)
致命的なミスがあったので修正しました。
Re: ゲームオーバーにせず場所移動
Posted: 2018年4月22日(日) 00:45
by faida
>軟骨食べたい さん
最初のコメントアウトが「SceneManager.goto(Scene_Gameover) if $game_party.all_dead?」だけでいいのかも
しれません。あくまで理論上ですが。
後者の方がより詳しく説明しているのでそちらも合わせてご検討ください。
Re: ゲームオーバーにせず場所移動
Posted: 2018年4月22日(日) 06:54
by 軟骨食べたい
ショウさんのスクリプトを導入したところ、思い通りのイベントが実行できました!
お二方、ほんとうにありがとうございましたm(__)m
Re:ゲームオーバーにせず場所移動
Posted: 2018年4月22日(日) 16:01
by ショウ
すみません、とんでもないミスがあったので修正しました。
上のを再度導入し直していただけると幸いです。