行 |
処理内容 |
7 |
コモンイベント[057:X[共]所持金取得]を呼び出し、
現在の所持金をセルフ[19]に取得。
|
8 |
▼ 万能ウィンドウ一覧に買う・売るアイテムを格納 |
11-76 |
■条件分岐(変数): 【1】 CSelf0[買う?売る?] が 0 と同じ |
「買う」の場合は分岐。 |
|
13 |
▼ 買う場合 |
|
14 |
セルフ[90]に「1]を設定。 |
このセルフ[90]の値は、179行目にあるラベル「計算戻り\cself[90]」にて、
「買う」と「売る」のどちらの処理に戻るのかを判断する時に使います。 |
|
17 |
可変DB[18:基本システム用変数]のデータ[93:[お店]アイテム登録個数]をセルフ[20]に設定。
このデータ[93:[お店]アイテム登録個数]には、
可変DB[16:× お店一時処理用]の登録数(商品の数)が設定されています。 |
|
18-76 |
■ループ開始 |
可変DB[16:× お店一時処理用]の情報を可変DB[19:万能ウィンドウ一時DB]に登録し終えるまでループ。 |
ここのループの処理はセルフ[20]の値の回数だけ行われます。
通常では【回数付きループ [ CSelf20[繰り返し回数] ]回】で設定すると思いますが、
しかしここの設定では【ループ開始】になっており、
ループ終了を判断する処理は21行目にある【条件分岐】で行っています。
これはもしも【回数付きループ [ CSelf20[繰り返し回数] ]回】で設定した場合、72〜73行目にある…
●ラベル「装備可能者計算」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
●ラベル地点「計算戻り1」 <<<<<<<<<<<<<<<<<<<<<<<<★ |
の設定で、一度ループの外に出て、再び戻ってきた時に、ループの回数が「0回」になってしまい、
ループが無効化してしまうウディタの仕様があるために、このような設定になっています。
なお、150行目にあるループ処理も同様の処理形式になっています。 |
|
|
21-25 |
■条件分岐(変数): 【1】 CSelf21[格納元番号] が CSelf20[繰り返し回数] 以上 |
可変DB[16:× お店一時処理用]の情報を可変DB[19:万能ウィンドウ一時DB]に登録し終えたので分岐し、
【ループ中断】を実行。 |
|
|
26-31 |
▼ 売り物を上から順番にチェックして万能ウィンドウに格納 |
可変DB[16:× お店一時処理用]に登録されている商品情報をセルフ変数へ設定。 |
|
|
32-33 |
▼ 価格0だと数値が表示されないので、とりあえず価格1にする |
セルフ[25]に「下限1」を設定し、販売価格が「0」の場合は「1」に変えます。
これは「0」のままだと、金額が表示されないためです。
▼価格「0」の時の表示見本(「0ゴールド」とは表示されない)
|
|
|
35-39 |
可変DB[19:万能ウィンドウ一時DB]に商品情報を設定。 |
|
|
40-58 |
■条件分岐(変数): 【1】 CSelf27[コード] が 10000 以上 |
アイテムコードが設定されている場合は分岐。 |
|
|
|
42-45 |
■条件分岐(変数): 【1】 CSelf27[コード] が 19999 以下 |
「アイテム」のコードが設定されている場合は分岐。 |
|
|
|
|
44 |
セルフ[27]を「余剰10000」にした値をセルフ[15]に設定し、
アイテムコード(10000〜19999)からユーザーDB[2:アイテム]のデータIDを算出。 |
|
|
|
|
45 |
可変DB[7:┣所持アイテム個数]から登録するアイテムの所持数をセルフ[39]に出力。 |
|
|
|
47-49 |
◇分岐: 【2】 [ CSelf27[コード] が 29999 以下 ]の場合↓ |
「武器」のコードが設定されている場合は分岐。 |
|
|
|
|
48 |
セルフ[27]を「余剰20000」にした値をセルフ[15]に設定し、
武器コード(20000〜29999)からユーザーDB[3:武器]のデータIDを算出。 |
|
|
|
|
49 |
可変DB[8:┣所持武器個数]から登録する武器の所持数をセルフ[39]に出力。 |
|
|
|
51-53 |
◇分岐: 【3】 [ CSelf27[コード] が 39999 以下 ]の場合↓ |
「防具」のコードが設定されている場合は分岐。 |
|
|
|
|
52 |
セルフ[27]を「余剰30000」にした値をセルフ[15]に設定し、
防具コード(30000〜39999)からユーザーDB[4:防具]のデータIDを算出。 |
|
|
|
|
49 |
可変DB[9:┗所持防具個数]から登録する防具の所持数をセルフ[39]に出力。 |
|
|
|
56 |
所持数を可変DB[19:万能ウィンドウ一時DB]に登録。 |
|
|
59-62 |
■条件分岐(変数): 【1】 CSelf25[価格] が CSelf19[現在所持金] 以下 |
販売価格が所持金以下(購入可能)の場合は分岐。 |
|
|
|
61-62 |
▼ 値段が所持金より下なら購入可能 |
可変DB[19:万能ウィンドウ一時DB]の項目[2:選択可能状態[1=可]]に「1」を設定し、選択可能にします。 |
|
|
64-65 |
◇上記以外 |
販売価格に対して、所持金が足りない(購入不可)の場合は分岐。 |
|
|
|
65 |
可変DB[19:万能ウィンドウ一時DB]の項目[2:選択可能状態[1=可]]に「0」を設定し、選択不可にします。 |
|
|
72-73 |
●ラベル「装備可能者計算」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
●ラベル地点「計算戻り1」 <<<<<<<<<<<<<<<<<<<<<<<<★ |
179行目にあるラベル「装備可能者計算」へジャンプし、
「ウルファール ■装備中」などの文字列の設定を行い、処理を終えたら73行目に戻ってきます。 |
|
|
74 |
可変DB[18:基本システム用変数]の項目[17:万能ウィンドウ項目個数]に「加算1」を設定し、
販売商品数を1増やします。 |
78-175 |
◇分岐: 【2】 [ CSelf0[買う?売る?] が 1 と同じ ]の場合↓ |
「売る」の場合は分岐。 |
|
79 |
▼ 売る場合 |
|
80 |
セルフ[90]に「2]を設定。 |
|
83-175 |
■ループ開始 |
「アイテム登録→武器登録→防具登録→終了」とループします。 |
|
|
85-89 |
■条件分岐(変数): 【1】 CSelf30[アイテム(0)武器(1)防具(2)] が 0 と同じ |
所持アイテムの情報を登録する場合は分岐。 |
|
|
|
88-89 |
▼ アイテムの数だけ繰り返す |
ユーザーDB[2:アイテム]のデータ数をセルフ[20]に設定。 |
|
|
91-94 |
◇分岐: 【2】 [ CSelf30[アイテム(0)武器(1)防具(2)] が 1 と同じ ]の場合↓ |
所持武器の情報を登録する場合は分岐。 |
|
|
|
93-94 |
▼ 武器の種類だけ繰り返す |
ユーザーDB[3:武器]のデータ数をセルフ[20]に設定。 |
|
|
96-99 |
◇分岐: 【3】 [ CSelf30[アイテム(0)武器(1)防具(2)] が 2 と同じ ]の場合↓ |
所持防具の情報を登録する場合は分岐。 |
|
|
|
98-99 |
▼ 防具の種類だけ繰り返す |
ユーザーDB[4:防具]のデータ数をセルフ[20]に設定。 |
|
|
101-102 |
◇上記以外 |
アイテム、武器、防具の登録が終わったので【ループ中断】を実行。 |
|
|
105-173 |
■ループ開始 |
アイテム、武器、防具のデータ数だけループ。 |
|
|
|
108-113 |
■条件分岐(変数): 【1】 CSelf40[エラー回避カウンター] が 100 以上 |
ループを100回繰り返した場合は分岐。 |
この処理は「コマンド処理数が50万超え」のエラーが発生しないようにするために設定しています。 |
|
|
|
|
110-111 |
セルフ[40]に「0」を設定し、【ウェイト:1フレーム】を実行。 |
|
|
|
114-119 |
■条件分岐(変数): 【1】 CSelf21[格納元番号] が CSelf20[繰り返し回数] 以上 |
現在処理中の登録(アイテム登録、武器登録、防具登録のいずれか)が終わったので、
【ループ中断】を実行して次の登録処理(アイテム→武器、武器→防具、防具→終了)へ移行します。 |
|
|
|
119-125 |
■条件分岐(変数): 【1】 CSelf30[アイテム(0)武器(1)防具(2)] が 0 と同じ |
所持アイテムの情報を登録する場合は分岐。 |
|
|
|
|
121-125 |
アイテムの情報をセルフ変数に設定。 |
|
|
|
127-132 |
◇分岐: 【2】 [ CSelf30[アイテム(0)武器(1)防具(2)] が 1 と同じ ]の場合↓ |
所持武器の情報を登録する場合は分岐。 |
|
|
|
|
128-132 |
武器の情報をセルフ変数に設定。 |
|
|
|
134-139 |
◇分岐: 【3】 [ CSelf30[アイテム(0)武器(1)防具(2)] が 2 と同じ ]の場合↓ |
所持防具の情報を登録する場合は分岐。 |
|
|
|
|
135-139 |
防具の情報をセルフ変数に設定。 |
|
|
|
142 |
▼ 対象アイテムが存在したら追加 |
|
|
|
143-171 |
■条件分岐(変数): 【1】 CSelf39[一時個数] が 1 以上 |
所持している場合は分岐。 |
|
|
|
|
145-150 |
可変DB[19:万能ウィンドウ一時DB]に所持品の情報を登録。 |
|
|
|
|
151-155 |
■条件分岐(変数): 【1】 CSelf25[価格] が 0 以下 |
販売価格が設定されていない場合は分岐。 |
|
|
|
|
|
153-154 |
▼ 値段が0なら売却不能 |
可変DB[19:万能ウィンドウ一時DB]の項目[2:選択可能状態[1=可]]に「0」を設定し、選択不可にします。 |
|
|
|
|
|
155 |
可変DB[19:万能ウィンドウ一時DB]の項目[5:付与文字列[後]]に「------」を設定。
▼表示例
|
|
|
|
|
157-162 |
◇上記以外 |
販売価格が1以上の場合は分岐。 |
|
|
|
|
|
158-159 |
▼ 1以上なら売却可能 |
可変DB[19:万能ウィンドウ一時DB]の項目[2:選択可能状態[1=可]]に「1」を設定し、選択可能にします。 |
|
|
|
|
|
161-162 |
可変DB[19:万能ウィンドウ一時DB]の項目[3:残り個数/消費ポイント]に設定した販売価格を「除算2」で
売却価格に変更。 |
販売価格が「1」の場合、「1÷2」で「0」になるので、「下限1」で「1」に修正。 |
|
|
|
|
165-166 |
●ラベル「装備可能者計算」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
●ラベル地点「計算戻り2」 <<<<<<<<<<<<<<<<<<<<<<<<★ |
179行目にあるラベル「装備可能者計算」へジャンプし、
「ウルファール ■装備中」などの文字列の設定を行い、処理を終えたら166行目に戻ってきます。 |
|
|
|
|
167-169 |
▼ アイテムがあれば格納先に+1 |
セルフ[22]に「加算1」を設定し、可変DB[7〜9]の所持数を取得するデータIDを1増やします。 |
可変DB[18:基本システム用変数]の項目[17:万能ウィンドウ項目個数]に「加算1」を設定し、
売却一覧に表示するアイテム数を1増やします。 |
178-301 |
■回数付きループ [ 0 ]回 |
この中の処理は179行目のラベル「装備可能者計算」にジャンプして処理します。 |
この中では「ウルファール ■装備中」などの文字列の設定を行います。
|
|
179 |
●ラベル地点「装備可能者計算」 <<<<<<<<<<<<<<<<<<<<<<<<★ |
72行目や165行目からジャンプしてきます。 |
|
180-181 |
▼ 装備の場合は、装備可能者を計算 |
可変DB[19:万能ウィンドウ一時DB]の項目[9:[オプション]予備文字列A]の文字列を消去。
この項目[9:[オプション]予備文字列A]には、「ウルファール ■装備中」などの文字列を設定します。
文字列の設定は武器と防具のみなので、アイテムだった場合はこのまま文字列が無い状態になります。 |
|
162-298 |
■条件分岐(変数): 【1】 CSelf27[コード] が 20000 以上 |
装備品のアイテムコードである場合は分岐。 |
|
|
184-187 |
■条件分岐(変数): 【1】 CSelf27[コード] が 29999 以下 |
「武器」のコードが設定されている場合は分岐。 |
|
|
|
186 |
セルフ[27]を「余剰20000」にした値をセルフ[15]に設定し、
武器コード(20000〜29999)からユーザーDB[3:武器]のデータIDを算出。 |
|
|
|
187 |
ユーザーDB[3:武器]の項目[2;装備のタイプ]をセルフ[35]に設定。 |
|
|
189-191 |
◇分岐: 【2】 [ CSelf27[コード] が 39999 以下 ]の場合↓ |
「防具」のコードが設定されている場合は分岐。 |
|
|
|
190 |
セルフ[27]を「余剰30000」にした値をセルフ[15]に設定し、
防具コード(30000〜39999)からユーザーDB[4:防具]のデータIDを算出。 |
|
|
|
191 |
ユーザーDB[4:防具]の項目[2;装備のタイプ]をセルフ[35]に設定。 |
|
|
196-296 |
■回数付きループ [ CSelf23[パーティ人数] ]回 |
パーティ人数の数だけループ。 |
|
|
|
200-294 |
■条件分岐(変数): 【1】 CSelf14[キャラID] が 0 以上 |
主人公ID(可変DB[0:主人公ステータス]のデータID)があった場合は分岐。 |
|
|
|
|
202-205 |
■条件分岐(変数): 【1】 CSelf35[対象の装備タイプ] が -1 と同じ |
装備のタイプ「<絶対装備不可>」の場合は分岐。 |
|
|
|
|
|
204-205 |
▼ 誰も装備できない |
セルフ[33]に「0(装備不可)」を設定。 |
|
|
|
|
207-209 |
◇分岐: 【2】 [ CSelf35[対象の装備タイプ] が -2 以下 ]の場合↓ |
装備のタイプ「<誰でも装備可>」の場合は分岐。 |
|
|
|
|
|
208-209 |
▼ 誰でも装備可能 |
セルフ[33]に「1(装備可能)」を設定。 |
|
|
|
|
211-244 |
◇分岐: 【3】 [ CSelf35[対象の装備タイプ] が 0 以上 ]の場合↓ |
ユーザーDB[5:┗装備タイプ]のデータIDが設定されている場合は分岐。 |
|
|
|
|
|
212-233 |
▼ 対象タイプが指定されている場合
▼ ここから10個分の装備タイプを調査。同じ値のが1つでもあれば装備可能判定が「0」になる |
可変DB[0:主人公ステータス]の項目[36〜45]に設定されている
装備タイプID(ユーザーDB[5:┗装備タイプ]のデータID)をセルフ[36]に取得し、
「セルフ[33]×(処理中の装備タイプID−主人公の装備可能タイプID)」を設定。
ここの処理では「処理中の装備タイプID」と「主人公の装備可能タイプID」が1つでも一致すると
セルフ[33]の値が「0」になり、全て一致しないとセルフ[33]の値が「0以外」になります。 |
例えば「木の杖(装備タイプ[5:杖])」の登録処理を行っている場合、ウルファールでは…
処理中の装備タイプ[5:杖]−ウルファールの装備可能[0:短剣]=5
処理中の装備タイプ[5:杖]−ウルファールの装備可能[10:服]=-5
処理中の装備タイプ[5:杖]−ウルファールの装備可能[9:銃]=-4 |
となり、計算結果は全て「0以外(装備不可)」になり、
セルフ[33]に「乗算5」や「乗算-4」を設定してもセルフ[33]が「0」になる事はありません。
しかし「ダガー(装備タイプ[0:短剣])」の場合は…
処理中の装備タイプ[0:短剣]−ウルファールの装備可能[0:短剣]=0 |
となり、セルフ[33]に「乗算0」を行う事で、セルフ[33]が「0(装備可能)」になります。 |
|
|
|
|
|
234-244 |
▼ 0と1を反転 |
セルフ[33]の値を「0→1」「0以外→0」に変更。 |
|
|
|
|
248-265 |
▼ そのキャラが装備中かどうかチェック |
可変DB[0:主人公ステータス]の項目[28〜25]に設定されている
装備コード(武器[20000〜29999]、防具[30000〜39999])をセルフ[36]に取得し、
「セルフ[37]×(処理中の装備コード−主人公の装備中の装備コード)」を設定。
ここの処理では「処理中の装備コード」と「主人公の装備可能タイプID」が1つでも一致すると
セルフ[37]の値が「0」になり、全て一致しないとセルフ[37]の値が「0以外」になります。 |
例えば主人公が「銀のダガー(装備コード[20013])」を装備していて、
処理中の武器が「ロングボウ(装備コード[20010])」の場合…
処理中の装備コード[20013]−主人公の武器コード[20010]=3 |
となり、計算結果は「0以外(装備していない)」になります。
しかし処理中の武器が「銀のダガー(装備コード[20013])」の場合は…
処理中の装備コード[20013]−主人公の武器コード[20013]=0 |
となり、セルフ[37]に「乗算0」を行う事で、セルフ[37]が「0(装備中)」になります。 |
|
|
|
|
266 |
▼ もし一個でも対象の装備をしていれば、ここでフラグが0になっている |
|
|
|
|
267-272 |
■条件分岐(変数): 【1】 CSelf37[装備中フラグ] が 0 と同じ |
セルフ[33]が「0(装備中)」の場合は分岐。 |
|
|
|
|
|
269-270 |
▼ 装備可能状態を2にする |
セルフ[33]に「2(装備中)」を設定。 |
|
|
|
|
275-277 |
▼ 装備可能状態を格納する |
コモンイベント[105:X[移]選択位置主人公ID取得]を呼び出し、
パーティの並び順から処理する主人公IDをセルフ[14]に取得し、
取得した主人公IDでコモンイベント[073:X[移]パラメータ取得(文字列)]を呼び出し、
処理中の主人公の名前をセルフ[6]に取得。
|
|
|
|
|
278 |
セルフ[6]に空白文字を追加。
|
|
|
|
|
279-281 |
■条件分岐(変数): 【1】 CSelf33[装備可能フラグ] が 0 と同じ |
処理中の装備品を処理中の主人公が装備できない場合は分岐。 |
|
|
|
|
|
281 |
セルフ[6]に「×装備不能」の文字列を追加。 |
|
|
|
|
283-284 |
◇分岐: 【2】 [ CSelf33[装備可能フラグ] が 1 と同じ ]の場合↓ |
処理中の装備品を処理中の主人公が装備できる場合は分岐。 |
|
|
|
|
|
284 |
セルフ[6]に「○装備可能」の文字列を追加。 |
|
|
|
|
286-287 |
◇分岐: 【3】 [ CSelf33[装備可能フラグ] が 2 と同じ ]の場合↓ |
処理中の装備品を処理中の主人公が装備中の場合は分岐。 |
|
|
|
|
|
287 |
セルフ[6]に「■装備中」の文字列を追加。 |
|
|
|
|
290 |
セルフ[6]に改行を追加し、次の主人公の文字列を設定する準備を実行。 |
|
|
|
|
291-292 |
▼ 万能ウィンドウのオプション値に追加 |
可変DB[19:万能ウィンドウ一時DB]の項目[9:[オプション]予備文字列A]にセルフ[6]を追加。 |
|
299 |
●ラベル「計算戻り\cself[90]」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>> |
「買う」の処理の場合は73行目にあるラベル「計算戻り1」へジャンプ。
「売る」の処理の場合は166行目にあるラベル「計算戻り2」へジャンプ。 |