【ウディタ】宿屋の作り方(ウディタ講義第2章第2回のコマンド)

ウディタ講義第2章第2回の最後に扱った、「一括で取引ができるコマンド」のコマンド文とイベントコードです。

動画を公開してからこちらの記事掲載まで、遅れてすみませんでした。以下がコマンド文とイベントコードです。

このイベントをそっくりそのままパクるには、イベントコードをすべてコピーしてからウディタのマップイベントで右クリックして「クリップボード→コード貼り付け」を押します。なお、このコードに関する著作権は完全に放棄するため、心置きなく丸パクリしまくってください。

注意:以下のコードは講義用のものです。まだ講義で扱っていない機能は使用しておらず、読みやすさやデバッグ性に若干の難があります。

コマンド文

Copy
■イベントの挿入: このEvのSelf0 = コモン17:[ ▲アイテム所持数取得 ] / 0:薬草
■変数操作: このEvのSelf1 = このEvのSelf0 / 3 
■条件分岐(変数):  【1】 このEvのSelf0  が   3 以上 
-◇分岐: 【1】  [ このEvのSelf0  が  3 以上  ]の場合↓
 |▼ 薬草(セルフ変数0)が3以上の時の処理
 |■条件分岐(変数):  【1】 このEvのSelf1  が   1 と同じ 
 |-◇分岐: 【1】  [ このEvのSelf1  が  1 と同じ  ]の場合↓
 | |▼ セルフ変数1が1と同じ、すなわち取引可能回数が1回の場合
 | |■文章:だれか「取引してしんぜよう\n        薬草3個→薬ビン1個でどうだい?
 | |■文章選択肢:/ 【1】1回取引する / 【2】取引しない 
 | |-◇選択肢:【1】 1回取引する                                   の場合↓
 | | |■イベントの挿入: コモン0:[ ○アイテム増減 ] / 14:薬ビン / 1 / 1:あり[単位:~個]
 | | |■イベントの挿入: コモン0:[ ○アイテム増減 ] / 0:薬草 / -3 / 0:なし
 | | |■
 | |-◇選択肢:【2】 取引しない                                    の場合↓
 | | |■
 | |◇分岐終了◇
 | |■
 |-◇上記以外
 | |▼ セルフ変数1が1以外の場合、すなわち取引可能回数が1回より大きい場合
 | |▼ え?「1と同じ」以外の場面だからバグるんじゃないかって?
 | |▼ セルフ変数1番は
 | |▼ 「3以上であることがわかっているセルフ変数0番を、3で割った数」だから、
 | |▼ 「セルフ変数1番が1以上」なのはわかっていて、
 | |▼ 「セルフ変数1番が1以上であって、1ではない数」といえば
 | |▼ 上方向(1より大きい)しかないよね
 | |▼  
 | |▼ 分岐が複雑になってわかりにくいって?
 | |▼ ←にある縦線を参考にするといいよ
 | |▼ 詳しくは今後のAdvanced講義でやるかも
 | |■文章:だれか「取引してしんぜよう\n        薬草3個→薬ビン1個でどうだい?
 | |■文章選択肢:/ 【1】1回取引する / 【2】\self[1]回取引する / 【3】取引しない 
 | |-◇選択肢:【1】 1回取引する                                   の場合↓
 | | |■イベントの挿入: コモン0:[ ○アイテム増減 ] / 14:薬ビン / 1 / 1:あり[単位:~個]
 | | |■イベントの挿入: コモン0:[ ○アイテム増減 ] / 0:薬草 / -3 / 0:なし
 | | |■
 | |-◇選択肢:【2】 \self[1]回取引する                            の場合↓
 | | |■イベントの挿入: コモン0:[ ○アイテム増減 ] / 14:薬ビン / このEvのSelf1 / 1:あり[単位:~個]
 | | |■変数操作: このEvのSelf1 *= 0 + -3 
 | | |■イベントの挿入: コモン0:[ ○アイテム増減 ] / 0:薬草 / このEvのSelf1 / 1:あり[単位:~個]
 | | |■
 | |-◇選択肢:【3】 取引しない                                    の場合↓
 | | |■
 | |◇分岐終了◇
 | |■
 |◇分岐終了◇
 |■
-◇上記以外
 |▼ 薬草(セルフ変数0)が3以上ではない時の処理
 |■文章:だれか「取引してしんぜよう\n        薬草3個→薬ビン1個で取引しちゃうぞ
 |■
◇分岐終了◇

イベントコード(コピペ用)

Copy
WoditorEvCOMMAND_START
[210][4,0]<0>(500017,16777217,0,1100000)()
[121][4,0]<0>(1100001,1100000,3,12288)()
[111][4,0]<0>(17,1100000,3,1)()
[401][1,0]<0>(1)()
[103][0,1]<1>()("薬草(セルフ変数0)が3以上の時の処理")
[111][4,0]<1>(17,1100001,1,2)()
[401][1,0]<1>(1)()
[103][0,1]<2>()("セルフ変数1が1と同じ、すなわち取引可能回数が1回の場合")
[101][0,1]<2>()("だれか「取引してしんぜよう<\n>    薬草3個→薬ビン1個でどうだい?")
[102][1,2]<2>(50)("1回取引する","取引しない")
[401][1,0]<2>(2)()
[210][5,0]<3>(500000,3,14,1,1)()
[210][5,0]<3>(500000,3,0,-3,0)()
[0][0,0]<3>()()
[401][1,0]<2>(3)()
[0][0,0]<3>()()
[499][0,0]<2>()()
[0][0,0]<2>()()
[420][1,0]<1>(0)()
[103][0,1]<2>()("セルフ変数1が1以外の場合、すなわち取引可能回数が1回より大きい場合")
[103][0,1]<2>()("え?「1と同じ」以外の場面だからバグるんじゃないかって?")
[103][0,1]<2>()("セルフ変数1番は")
[103][0,1]<2>()("「3以上であることがわかっているセルフ変数0番を、3で割った数」だから、")
[103][0,1]<2>()("「セルフ変数1番が1以上」なのはわかっていて、")
[103][0,1]<2>()("「セルフ変数1番が1以上であって、1ではない数」といえば")
[103][0,1]<2>()("上方向(1より大きい)しかないよね")
[103][0,1]<2>()(" ")
[103][0,1]<2>()("分岐が複雑になってわかりにくいって?")
[103][0,1]<2>()("←にある縦線を参考にするといいよ")
[103][0,1]<2>()("詳しくは今後のAdvanced講義でやるかも")
[101][0,1]<2>()("だれか「取引してしんぜよう<\n>    薬草3個→薬ビン1個でどうだい?")
[102][1,3]<2>(67)("1回取引する","\self[1]回取引する","取引しない")
[401][1,0]<2>(2)()
[210][5,0]<3>(500000,3,14,1,1)()
[210][5,0]<3>(500000,3,0,-3,0)()
[0][0,0]<3>()()
[401][1,0]<2>(3)()
[210][5,0]<3>(500000,3,14,1100001,1)()
[121][4,0]<3>(1100001,0,-3,768)()
[210][5,0]<3>(500000,3,0,1100001,1)()
[0][0,0]<3>()()
[401][1,0]<2>(4)()
[0][0,0]<3>()()
[499][0,0]<2>()()
[0][0,0]<2>()()
[499][0,0]<1>()()
[0][0,0]<1>()()
[420][1,0]<0>(0)()
[103][0,1]<1>()("薬草(セルフ変数0)が3以上ではない時の処理")
[101][0,1]<1>()("だれか「取引してしんぜよう<\n>    薬草3個→薬ビン1個で取引しちゃうぞ")
[0][0,0]<1>()()
[499][0,0]<0>()()
WoditorEvCOMMAND_END

「1回だけ取引できるようにする取引人」の作り方

こちらは難しい課題ではないと思います。セルフ変数3番あたりを適当に取り、「取引成立(アイテムの受取)」と同じタイミングで変数を操作(例えば1を代入)し、取引コード全体を「セルフ変数3番が0なら~」で囲ってしまえばいいでしょう。

条件分岐で囲いまくると冗長になってしまいますが、今回の場合は他にいい方法があるわけでもありません。このやり方で十分です。

役に立ったらコーヒーを注ごう

コーヒーを注ぐおんニャプロフィール画像

この記事が「役に立った!」と思ったら、筆者にコーヒー(300円)を注いであげましょう。きっと執筆の活力になります。
リクエストも受け付けています。やり方はこちら