【解決済み】ゲームオーバーにせず場所移動

アバター
軟骨食べたい
記事: 3
登録日時: 2018年4月21日(土) 18:34

【解決済み】ゲームオーバーにせず場所移動

投稿記事by 軟骨食べたい » 2018年4月21日(土) 18:41

久しぶりに利用させていただきます、軟骨食べたいと申します。
質問ですが、バトルで戦闘不能になったときに、ゲームオーバー画面に移動せず、全回復したのち宿屋などに場所移動する、ということはできますか?
不死身ステートを使ってみても、もとの画面というかイベントに繋がってしまい、場所移動ができません。このようなことが実現可能なスクリプト、もしくはイベントの組み方などがありましたら、教えてください。
最後に編集したユーザー 軟骨食べたい on 2018年4月22日(日) 06:54 [ 編集 1 回目 ]

faida
記事: 183
登録日時: 2015年12月17日(木) 16:44

Re: ゲームオーバーにせず場所移動

投稿記事by faida » 2018年4月21日(土) 19:03

「ツクールVXAce ゲームオーバー(もしくは全滅)」で探せばとりあえず見つかるかなと思いましたがなかなかないですね。
https://noir-et-blanc-patisserie.amebaownd.com/posts/2393095?categoryIds=620063
https://tm.lucky-duet.com/viewtopic.php?t=5222
出てきたあたりだとこの辺りでしょうか。
---------------------------------------------
自作の(改造でない)スクリプト素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
アバター
軟骨食べたい
記事: 3
登録日時: 2018年4月21日(土) 18:34

Re: ゲームオーバーにせず場所移動

投稿記事by 軟骨食べたい » 2018年4月21日(土) 21:05

ありがとうございます、前者の通りにスクリプトを弄ってみたのですが、
このようなエラーがでてしまいました。
添付ファイル
bandicam 2018-04-21 21-02-49-831.jpg
bandicam 2018-04-21 21-02-49-831.jpg (32.12 KiB) 閲覧数: 346 回
ショウ
記事: 95
登録日時: 2016年8月10日(水) 19:52

Re: ゲームオーバーにせず場所移動

投稿記事by ショウ » 2018年4月21日(土) 23:01

コード: 全て選択

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以降はマップ上で全滅した場合の処理です。
やっている事はバトルと同じです。
(問題や間違いがありそうなら誰か指摘してくれると嬉しい)

致命的なミスがあったので修正しました。
最後に編集したユーザー ショウ on 2018年4月22日(日) 16:09 [ 編集 4 回目 ]
faida
記事: 183
登録日時: 2015年12月17日(木) 16:44

Re: ゲームオーバーにせず場所移動

投稿記事by faida » 2018年4月22日(日) 00:45

>軟骨食べたい さん
最初のコメントアウトが「SceneManager.goto(Scene_Gameover) if $game_party.all_dead?」だけでいいのかも
しれません。あくまで理論上ですが。
後者の方がより詳しく説明しているのでそちらも合わせてご検討ください。
---------------------------------------------
自作の(改造でない)スクリプト素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
アバター
軟骨食べたい
記事: 3
登録日時: 2018年4月21日(土) 18:34

Re: ゲームオーバーにせず場所移動

投稿記事by 軟骨食べたい » 2018年4月22日(日) 06:54

ショウさんのスクリプトを導入したところ、思い通りのイベントが実行できました!
お二方、ほんとうにありがとうございましたm(__)m
ショウ
記事: 95
登録日時: 2016年8月10日(水) 19:52

Re:ゲームオーバーにせず場所移動

投稿記事by ショウ » 2018年4月22日(日) 16:01

すみません、とんでもないミスがあったので修正しました。
上のを再度導入し直していただけると幸いです。

“VX / Ace:質問” へ戻る