ロードの回数を制限(質問掲示板)
      投稿: 
 退会したユーザー
      投稿:2012/05/03 13:00:03(最新:2012/12/22 22:47:22)
    
    
      セーブしたゲームデータを何度もロードさせず、
やり直しが利かないようにするにはどうしたらいいでしょうか?
    
    ツイート
    やり直しが利かないようにするにはどうしたらいいでしょうか?
- フローチャート
 
< セーブ手続き > ↓ < ゲーム終了 > ↓ < タイトルからロードする > ↓ < ロードしたことがあるか > ↓ ↓ ある ない ↓ ↓ <そのままゲームオーバー> <続行>
コメントする
コメントするには、ログインする必要があります。
コメント一覧
      メニュー項目から「セーブ」「ロード」を非表示
そしてセーブは特定の場所にのみセーブ端末をイベントキャラで設置する
このセーブ端末によるセーブ時に、ロード回数チェックを行う自動開始イベントがONになるフラフを立ててデータ保存、直後にフラグは伏せる
ロード回数チェックを行う自動開始イベントは各マップ上にそれぞれひとつ配置しておく
ロードだけでなくセーブにも制限を付けたら似たような事ができる、てだけなんだけど。
    
        そしてセーブは特定の場所にのみセーブ端末をイベントキャラで設置する
このセーブ端末によるセーブ時に、ロード回数チェックを行う自動開始イベントがONになるフラフを立ててデータ保存、直後にフラグは伏せる
ロード回数チェックを行う自動開始イベントは各マップ上にそれぞれひとつ配置しておく
ロードだけでなくセーブにも制限を付けたら似たような事ができる、てだけなんだけど。
            矛盾
イベントを終了しないと、セーブメニューが開けない
イベントを終了すると、ロードチェックの自動開始がスタート
さらに
セーブ→ロードの1セットは許可する
セーブ→ロード→(ロードしたかは保存されない)
→さらにロード=1セットと同じ判定になる
          
        イベントを終了しないと、セーブメニューが開けない
イベントを終了すると、ロードチェックの自動開始がスタート
さらに
セーブ→ロードの1セットは許可する
セーブ→ロード→(ロードしたかは保存されない)
→さらにロード=1セットと同じ判定になる
            >イベントを終了しないと、セーブメニューが開けない
イベントスクリプト中にspeak()を挟むとそこで止まるので、その間にメニューボタンでも押せば良いとか思ってたんだけど
確かにイベントスクリプト実行中には、アイテム、装備、セーブ、ロード、の項目がそもそも出てこない模様w
なかなかよく出来ておるわッ
という事でそこから先に意味なんか無いワケで。
          
        イベントスクリプト中にspeak()を挟むとそこで止まるので、その間にメニューボタンでも押せば良いとか思ってたんだけど
確かにイベントスクリプト実行中には、アイテム、装備、セーブ、ロード、の項目がそもそも出てこない模様w
なかなかよく出来ておるわッ
という事でそこから先に意味なんか無いワケで。
            メニューは開くのですけれどね。
セーブメニュー表示が
スクリプトによる設定でオンになっていても
表示されないのです、、、
アイデアとして、
セーブでは保存されない情報を判定基準に
と考えていたのですが、
やはり、後者のロード→ロードが解決せず。
          
        セーブメニュー表示が
スクリプトによる設定でオンになっていても
表示されないのです、、、
アイデアとして、
セーブでは保存されない情報を判定基準に
と考えていたのですが、
やはり、後者のロード→ロードが解決せず。
            いずれかができないと無理な感じでしょうか・・・
        - スクリプトによるセーブ
 - イベント中に項目表示
 
      これをちょっと変えればok
    
        
            でも、セーブせずに終了したら変数がセーブされず、
結局やり直しが効いてしまうような気が・・・
正確に言うと、ロードを1回限りにし、
途中からやれるけどやり直しはダメ、
っていうシステムを作りたいんです。
<使用候補>
そのままゲームを続けることができない
セーブした直後に変数0にして終了し、
ロード回数毎に+1する。
もし1以上でロードしようとしたら
「無理です」って言われて始めからになる・・・
そんな感じのものは考えていますが、
問題はユーザーごとではなく共用だという点ですね・・・
          
        結局やり直しが効いてしまうような気が・・・
正確に言うと、ロードを1回限りにし、
途中からやれるけどやり直しはダメ、
っていうシステムを作りたいんです。
<使用候補>
- グローバル変数
 
そのままゲームを続けることができない
- saveGameData関数関係
 
セーブした直後に変数0にして終了し、
ロード回数毎に+1する。
もし1以上でロードしようとしたら
「無理です」って言われて始めからになる・・・
そんな感じのものは考えていますが、
問題はユーザーごとではなく共用だという点ですね・・・
            ↑の方法は人数が増えると
文字数制限に引っかかって動作しなくなることが判明。
ノベルエディタならできる方法を思いついたけど
RPGエディタじゃできないという罠・・・
          
        文字数制限に引っかかって動作しなくなることが判明。
ノベルエディタならできる方法を思いついたけど
RPGエディタじゃできないという罠・・・
            と思ったけどノベルのやり方も駄目だorz
          
        <変数生成> ↓ <セーブ> ↓ <ロード> ↓ <ロードしたことを変数に保存> #セーブなしだとここができない ↓ ↓ <セーブせずに終了> <セーブして終了> ↓ ↓ <再度ロード> <再度ロード> ↓ ↓ <強制ゲームオーバー> <通常通りゲーム再開>
 
 
※これは2DRPGエディタの場合です。
ノベルの場合はもう少し変更を加える必要があるかも
<開始スクリプト>
<セーブポイントイベント>
if !getFlag("セーブフラグ") #中断セーブ if YNQ("セーブしますか?") sv("セーブ用変数", 0); setFlag("セーブフラグ", true) forceSavePlayDataCustom("それでは、中断セーブを行います。", "セーブ開始") end else #ロード if YNQ("ゲームを再開しますか?") addv("セーブ用変数", 1) #ロードが1回目なら1になる setCanvasVisible(true) forceSavePlayDataCustom("それでは、セーブをお願いします。終わったら扉を調べてください。", "セーブ開始") end end<扉イベント>
if gv("セーブ用変数") == 1 && getCanvasVisible() #ロードして出ようとするとき speak("正常に、ゲームが再開できます。\nしかし次にロードすると詰みます。") setFlag("セーブフラグ", false) elsif gv("セーブ用変数") == 0 #中断中のとき speak("このままブラウザを閉じても構いませんが、\nゲームを再開したいなら、\n先にセーブマシンに話しかけてください。") else speak("2回目 アウト~"); setPartyMemberDeathAll() endgetFlag("セーブフラグ")キャンバス表示の設定が
セーブでは保存されない情報であることを利用。
(3~4)*1マスの細長い道を作り、
中断中はマイキャラを扉が塞ぐようにする必要があります。
動作はこちら