WOLF RPGエディター(ウディタ)/演出・システム【サイトトップへ戻る】
■正しいパスワードを聞かないと扉が開かない(数字入力タイプ)
(更新:2023/03/19)


ちゃんとパスワードを聞かずに適当にパスワードを入力すると、
パスワードのパターン数の最大数になるまでパスワードを入力しないと、パスワードが合わないように設定します。


当ページを設定する前に予め[キーボード入力]を使ってパスワードを入力のイベントを設定してください。
【[キーボード入力]を使ってパスワードを入力のページを開く】

文字を入力するタイプのパスワードに関しては、別ページで紹介しています。
【正しいパスワードを聞かないと扉が開かない(文字入力タイプ)のページを開く】

ショートカット
■処理構造の確認
■変数の一覧表
■パスワードを教えるイベントを設定
■パスワードを入力するイベントを設定

パスワードイベントの基礎情報は別ページに記載しています。
【パスワードイベントの基礎のページを開く】


  
■処理構造の確認

今回は4桁の数字パスワードを入力する設定を行います。



パスワードのパターンは「0000」から「9999」までの1万通りのパスワードが存在します。

今回の設定では、
パスワードを教えるマップイベント「情報ネコ」から正しいパスワードを聞かずにパスワードを入力すると、
最大値である1万パターンのパスワードを入力しないと正しいパスワードにならないように設定します。



正しいパスワードを聞かずに適当なパスワードを入力した場合は、
適当に入力したパスワードの内容が文字列変数[1:パスワード適当入力文字]に保存されます。

そして保存した個数を通常変数[1:パスワード適当入力数]に保存します。

この通常変数[1:パスワード適当入力数]の値が「10000」になった時に、
最大値である1万パターン目のパスワードを入力した事になり、そのパスワードが「正しい」となります。



文字列変数[1:パスワード適当入力文字]への適当入力の文字列の保存は、まず最初に「>」の文字を設定します。

そして適当に入力したパスワードを「数値」+「>」で保存します。

例えば最初に「42」を入力した場合は…
>42>
文字列変数[1:パスワード適当入力文字]に保存されます。

次に「3936」と入力すると…
>42>3936>
文字列変数[1:パスワード適当入力文字]に保存されます。



今回のパスワードは、半角数字で入力します。

全角数字で入力した場合は、半角数字に変換して処理されます。

適当に入力したパスワードが既に文字列変数[1:パスワード適当入力文字]の中で保存されている場合は、
二重には保存されず、通常変数[1:パスワード適当入力数]の値も増えません。

なお、パスワードの入力が「6」「06」「006」「0006」の場合は、全て「6」で処理されます。



正しいパスワードを教える時には、
文字列変数[1:パスワード適当入力文字]の中に存在しないパスワードを通常変数[2:正しいパスワード]に設定します。



なお、正しいパスワードを入力し、扉のカギが解除された時には、
文字列変数[1:パスワード適当入力文字]文字列変数[2:パスワード入力文字]に保存された文字列は、
そのまま残しておいてもセーブデータの容量を増やすだけなので…
■文字列操作:S1[パスワード適当入力文字] = ""
■文字列操作:S2[パスワード入力文字] = ""
の設定で、全て消去します。


▲トップへ戻る▲


  
■変数の一覧表

使用している変数は以下のとおりです。

文字列変数と通常変数には、先に名前を設定しておくと、イベント設定の作業が楽になります。

【変数の一覧を別ウィンドウで表示】

文字列変数
番号 名前 使用内容
0 一時文字列 一時的に文字列を保存する時に使います。
1 パスワード適当入力文字 適当に入力したパスワードを保存します。
2 パスワード入力文字 プレイヤーが入力したパスワードを設定します。

通常変数
番号 名前 使用内容
1 パスワード適当入力数 適当に入力したパスワードの総数を保存します。
「9999」になった時に、
次に初めて入力するパスワードを「正しいパスワード」とします。
正しいパスワードを教えてもらった場合は、
この変数の値を「999999」にします。
2 正しいパスワード 正しいパスワードを設定します。

セルフ変数:マップイベント「扉イベント」
番号 使用内容
0 0=扉が開いていない。
1=扉が開いている。
1 文字列変数[2:パスワード入力文字]で入力された
文字列のパスワードを設定して数値化します。

※マップイベント「情報ネコ」ではセルフ変数は使用していません。


▲トップへ戻る▲


  
■パスワードを教えるイベントを設定

パスワードを教えるイベントを設定します。



正しいパスワードの設定は、まず通常変数[2:正しいパスワード]乱数を使って「0〜9999」の値を設定します。

そして通常変数[2:正しいパスワード]の値が文字列変数[1:パスワード適当入力文字]の中に保存されている場合は、
通常変数[2:正しいパスワード]に「加算1」「剰余10000」を設定し、
次の値に設定して再度文字列変数[1:パスワード適当入力文字]の中に保存されているかどうかを調べます。



【イベントコード表示】

■マップイベント「情報ネコ」

起動条件:決定キーで実行
起動条件変数:なし

■条件分岐(変数): 【1】 V1[パスワード適当入力数] が 999999 未満
-◇分岐: 【1】 [ V1[パスワード適当入力数] が 999999 未満 ]の場合↓
|■変数操作: V1[パスワード適当入力数] = 999999 + 0
|■変数操作: V2[正しいパスワード ] = 0 〜 9999
|■回数付きループ [ 1 ]回
||■条件分岐(文字): 【1】 S1[パスワード適当入力文字]が ">\v[2]>" を含む
||-◇分岐: 【1】 [ S1[パスワード適当入力文字] ">\v[2]>" を含む ]の場合↓
|||■変数操作: V2[正しいパスワード ] += 1 + 0
|||■変数操作: V2[正しいパスワード ] %= 10000 + 0
|||■ループ開始へ戻る
|||■
||◇分岐終了◇
||■
|◇ループここまで◇◇
|■
◇分岐終了◇
■文章:パスワードは「\v[2]」だよ。


▲トップへ戻る▲


  
■パスワードを入力するイベントを設定

パスワードを入力するイベントを設定します。





【文字列変数】の「キーボード入力」のバイト数は「4」にしてくてください。





【イベントコード表示】

■マップイベント「扉イベント」

起動条件:決定キーで実行
起動条件変数:なし

▼ セルフ[0]:[0=カギがかかっている][1=扉が開いた]
▼ セルフ[1]:入力したパスワード

■条件分岐(変数): 【1】 このEvのセルフ変数0 が 1 と同じ
-◇分岐: 【1】 [ このEvのセルフ変数0 が 1 と同じ ]の場合↓
|■場所移動:主人公 ▲現在のマップ X:15 Y:12 [トランジションなし]
|■イベント処理中断
|■
◇分岐終了◇
■条件分岐(文字): 【1】 S1[パスワード適当入力文字]が "" と同じ
-◇分岐: 【1】 [ S1[パスワード適当入力文字] "" と同じ ]の場合↓
|▼ 初めて扉を調べた時(一度だけ実行する)
|■文字列操作:S1[パスワード適当入力文字] = ">"
|■文章:扉にはカギがかかっている。
|■文章:扉の横には入力ボタンがある。
|■
◇分岐終了◇
■ピクチャ表示:1 [中心]ウィンドウ「<SQUARE>」サイズ[40,20] X:160 Y:88 / 0(0)フレーム /
       パターン 1 / 透 200 / 通常 / 角 0 / 拡 100% / カラー R[0] G[0] B[0]
■ピクチャ表示:2 [中心]ウィンドウ「<SQUARE>」サイズ[180,20] X:160 Y:60 / 0(0)フレーム /
       パターン 1 / 透 200 / 通常 / 角 0 / 拡 100% / カラー R[0] G[0] B[100]
■ピクチャ表示:3 [中心]文字列[パスワードを入力して下さい] X:160 Y:60 / 0(0)フレーム /
       パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
■変数操作: Sys40:キーボ入力文字列 X座標 = 145 + 0
■変数操作: Sys41:キーボ入力文字列 Y座標 = 82 + 0
■文字列操作:S2[パスワード入力文字] = キーボード入力 4バイト [キャンセル可]
■ピクチャ消去:1 〜 3 / 0(0)フレーム
■条件分岐(変数): 【1】 Sys39:[読]キーボ入力状態 0=Enter -1=キャンセル が -1 と同じ
-◇分岐: 【1】 [ Sys39:[読]キーボ入力状態 0=Enter -1=キャンセル が -1 と同じ ]の場合↓
|■文章:入力をキャンセルしました。
|■イベント処理中断
|■
-◇上記以外
|■条件分岐(文字): 【1】 S2[パスワード入力文字]が "" と同じ
|-◇分岐: 【1】 [ S2[パスワード入力文字] "" と同じ ]の場合↓
||■文章:入力をキャンセルしました。
||■イベント処理中断
||■
|◇分岐終了◇
|■
◇分岐終了◇
▼ ■■■■■全角を半角に変換
■文字列操作:S2[パスワード入力文字] =<から文字列を置換> "0" → "0"
■文字列操作:S2[パスワード入力文字] =<から文字列を置換> "1" → "1"
■文字列操作:S2[パスワード入力文字] =<から文字列を置換> "2" → "2"
■文字列操作:S2[パスワード入力文字] =<から文字列を置換> "3" → "3"
■文字列操作:S2[パスワード入力文字] =<から文字列を置換> "4" → "4"
■文字列操作:S2[パスワード入力文字] =<から文字列を置換> "5" → "5"
■文字列操作:S2[パスワード入力文字] =<から文字列を置換> "6" → "6"
■文字列操作:S2[パスワード入力文字] =<から文字列を置換> "7" → "7"
■文字列操作:S2[パスワード入力文字] =<から文字列を置換> "8" → "8"
■文字列操作:S2[パスワード入力文字] =<から文字列を置換> "9" → "9"
▼ ■■■■■数字のみかどうかを検索
■文字列操作:S0[[サンプル]一時文字列] = S2[パスワード入力文字]
■文字列操作:S0[[サンプル]一時文字列] =<から文字列を置換> "0" → ""
■文字列操作:S0[[サンプル]一時文字列] =<から文字列を置換> "1" → ""
■文字列操作:S0[[サンプル]一時文字列] =<から文字列を置換> "2" → ""
■文字列操作:S0[[サンプル]一時文字列] =<から文字列を置換> "3" → ""
■文字列操作:S0[[サンプル]一時文字列] =<から文字列を置換> "4" → ""
■文字列操作:S0[[サンプル]一時文字列] =<から文字列を置換> "5" → ""
■文字列操作:S0[[サンプル]一時文字列] =<から文字列を置換> "6" → ""
■文字列操作:S0[[サンプル]一時文字列] =<から文字列を置換> "7" → ""
■文字列操作:S0[[サンプル]一時文字列] =<から文字列を置換> "8" → ""
■文字列操作:S0[[サンプル]一時文字列] =<から文字列を置換> "9" → ""
■条件分岐(文字): 【1】 S0[[サンプル]一時文字列]が "" 以外
-◇分岐: 【1】 [ S0[[サンプル]一時文字列] "" 以外 ]の場合↓
|■文章:パスワードが違います。
|■イベント処理中断
|■
◇分岐終了◇
■変数操作: このEvのセルフ変数1 = S2[パスワード入力文字] + 0
■条件分岐(変数): 【1】 このEvのセルフ変数1 が 9999 超
-◇分岐: 【1】 [ このEvのセルフ変数1 が 9999 超 ]の場合↓
|■文章:パスワードが違います。
|■イベント処理中断
|■
◇分岐終了◇
▼ ■■■■■まだ正しいパスワードを聞いてない場合は分岐
■条件分岐(変数): 【1】 V1[パスワード適当入力数] が 999999 未満
-◇分岐: 【1】 [ V1[パスワード適当入力数] が 999999 未満 ]の場合↓
|■条件分岐(文字): 【1】 S1[パスワード適当入力文字]が ">\self[1]>" を含む
|-◇分岐: 【1】 [ S1[パスワード適当入力文字] ">\self[1]>" を含む ]の場合↓
||▼ 前に入力済み。
||■文章:パスワードが違います。
||■イベント処理中断
||■
|◇分岐終了◇
|■条件分岐(変数): 【1】 V1[パスワード適当入力数] が 9998 以下
|-◇分岐: 【1】 [ V1[パスワード適当入力数] が 9998 以下 ]の場合↓
||▼ まだ1万回目の適当パスワード入力ではない時
||■変数操作: V1[パスワード適当入力数] += 1 + 0
||■文字列操作:S1[パスワード適当入力文字] += "\self[1]>"
||■文章:パスワードが違います。
||■イベント処理中断
||■
|-◇上記以外
||▼ 1万回目の入力なので、今回のパスワードを正しいパスワードとする
||■変数操作: V2[正しいパスワード] = このEvのセルフ変数1 + 0
||■変数操作: V1[パスワード適当入力数] = 999999 + 0
||■
|◇分岐終了◇
|■
◇分岐終了◇
▼ ■■■■■最終判定
■条件分岐(変数): 【1】 このEvのセルフ変数1 が V2[正しいパスワード] と同じ
-◇分岐: 【1】 [ このEvのセルフ変数1 が V2[正しいパスワード] と同じ ]の場合↓
|■文章:カギが解除されました。
|■変数操作: このEvのセルフ変数0 = 1 + 0
|■文字列操作:S1[パスワード適当入力文字] = ""
|■文字列操作:S2[パスワード入力文字] = ""
|■
-◇上記以外
|■文章:パスワードが違います。
|■
◇分岐終了◇


以上で設定完了です。


▲トップへ戻る▲



◎関連ページ

◆パスワードイベントの基礎
┣◆[選択肢]を使ってパスワードを入力
┣◆[キーボード入力]を使ってパスワードを入力
┣◆[キー入力]を使ってパスワードを入力
┣◆オリジナルの入力画面でパスワードを入力
┣◆地面の色を変えて図形を作ってパスワードを入力
┣◆正しいパスワードを聞かないと扉が開かない(数字入力タイプ)
┗◆正しいパスワードを聞かないと扉が開かない(文字入力タイプ)

◆イベントコマンド【文字列操作】

YADOT-WOLFトップ  気紛れな空間へ戻る  メール