[掲示板へもどる]
一括表示

記事No: 21589 [関連記事]
タイトル50%の確率で行動不能など、確率を参照した状態異常の作成
投稿日: 2024/01/10 00:14
投稿者みん [rWOrpi1078(海外)]

新しい状態異常「怠惰」の作成を目指しています。

「怠惰」の仕様について

・通常攻撃、特殊技能、アイテムのコマンド選択はできる。
・50%の確率でプレイヤーが選択したコマンドを無視して「何もしない」と同様の処理をする。
・コマンドを無視して「何もしない」の処理になった場合、「行動制限時文章(空欄:ナシ」で予め設定した表示を行う(ゲーム中では、○○は怠けている!の表示となる)。
・プレイヤーが自ら「何もしない」を選択していた場合はコマンドを無視する確率を問わず「行動制限時文章(空欄:ナシ」の表示を行わない。


前準備としてUDBのタイプ8:状態設定の47番目に新しく「行動しなくなる確率」という欄を作成しました。既存のタイプ16:行動制限で処理するとコマンド選択すらできなくなるので、
可変DBのタイプ10:×┏戦闘一時ステータスも78番目に「何もしない確率」を設定しました。

ですが、コモンイベントで可変DBのタイプ10を書きこみしている箇所が不明で、「何もしない確率」の設定を組むことができません。
もしここが設定できれば、あとはコモンEv196:X┃┣◆行動可能判定の254行目に「怠惰のチェック」を追加して確率の計算と確率の条件を満たしたらイベント処理中断で組もうと思っているのですが、そもそもこれで仕様通りの状態異常ができるのかもわかりません。
何かアドバイス等いただければ幸いです。


記事No: 21591 [関連記事]
タイトルRe: 50%の確率で行動不能など、確率を参照した状態異常の作成
投稿日: 2024/01/10 21:25
投稿者YADO [LerLWW459(海外)]

> 新しい状態異常「怠惰」の作成を目指しています。
>
> 「怠惰」の仕様について
>
> ・通常攻撃、特殊技能、アイテムのコマンド選択はできる。
> ・50%の確率でプレイヤーが選択したコマンドを無視して「何もしない」と同様の処理をする。
> ・コマンドを無視して「何もしない」の処理になった場合、「行動制限時文章(空欄:ナシ」で予め設定した表示を行う(ゲーム中では、○○は怠けている!の表示となる)。
> ・プレイヤーが自ら「何もしない」を選択していた場合はコマンドを無視する確率を問わず「行動制限時文章(空欄:ナシ」の表示を行わない。
>
>
> 前準備としてUDBのタイプ8:状態設定の47番目に新しく「行動しなくなる確率」という欄を作成しました。既存のタイプ16:行動制限で処理するとコマンド選択すらできなくなるので、
> 可変DBのタイプ10:×┏戦闘一時ステータスも78番目に「何もしない確率」を設定しました。
>
> ですが、コモンイベントで可変DBのタイプ10を書きこみしている箇所が不明で、「何もしない確率」の設定を組むことができません。
> もしここが設定できれば、あとはコモンEv196:X┃┣◆行動可能判定の254行目に「怠惰のチェック」を追加して確率の計算と確率の条件を満たしたらイベント処理中断で組もうと思っているのですが、そもそもこれで仕様通りの状態異常ができるのかもわかりません。
> 何かアドバイス等いただければ幸いです。


ユーザーDB[8:状態設定]に状態「怠惰」の準備は必要ですが、
確率の設定(50%)はコモンイベントの方で設定する事ができるので、
ユーザーDB[8:状態設定]に項目「行動しなくなる確率」を準備する必要はありません。

また可変DB[10:×┏ 戦闘一時ステータス[基]]の項目「何もしない確率」の準備も必要ありません。
但し装備によって確率を変化させる場合は、可変DB[10:×┏ 戦闘一時ステータス[基]]に新規項目が必要です。

下記の設定例では、ユーザーDB[8:状態設定]に項目「行動しなくなる確率」を設定せず、
可変DB[10:×┏ 戦闘一時ステータス[基]]に項目「何もしない確率」を設定しないシンプルバージョンで記載しておきます。


ユーザーDB[8:状態設定]に以下の状態異常を準備。
項目0[状態名] = 怠惰
項目13[行動制限時文章(空欄:ナシ] = は怠けている!
※項目4などの他の項目の設定はご自由にどうぞ。
※データIDは空いているIDの所に自由に設定してください。


コモンイベント[196:X┃┣◆行動可能判定]の15行目に
■DB読込(可変): CSelf16[発動スロット] = 可変DB[ ×┣ コマンド処理リスト : CSelf0[行動リスト番号] : 発動者番号 ] (14 : - : 0)
がありますが、この設定の下(16行目)に以下のイベントを追加。
■DB読込(ユーザ): CSelf10[一時変数A] = ユーザDB[タイプ状態設定(8) データ怠惰(23)のデータ番号]
■DB読込(可変): CSelf11[一時変数B] = 可変DB[ 13 : CSelf16[発動スロット] : CSelf10[一時変数A] ] (×┣ 状態リスト : - : -)
■条件分岐(変数): 【1】 CSelf11[一時変数B] が 1 以上
-◇分岐: 【1】 [ CSelf11[一時変数B] が 1 以上 ]の場合↓
|■変数操作: CSelf12[一時変数C] = 0 〜 99
|■条件分岐(変数): 【1】 CSelf12[一時変数C] が 50 以上
|-◇分岐: 【1】 [ CSelf12[一時変数C] が 50 以上 ]の場合↓
| |■イベントの挿入[名]: ["X[共]システムSE再生"] <コモンEv 49> / 50:行動前
| |■条件分岐(変数): 【1】 CSelf16[発動スロット] が 10 未満 【2】 CSelf16[発動スロット] が 10 以上
| |-◇分岐: 【1】 [ CSelf16[発動スロット] が 10 未満 ]の場合↓
| | |■イベントの挿入[名]: ["X[戦]味方欄_単体描画"] <コモンEv 178> / 40:フラッシュエフェクト / CSelf16[発動スロット] / CSelf16[発動スロット]
| | |■
| |-◇分岐: 【2】 [ CSelf16[発動スロット] が 10 以上 ]の場合↓
| | |■イベントの挿入[名]: ["X[戦]敵キャラ_単体描画"] <コモンEv 179> / 40:フラッシュエフェクト / CSelf16[発動スロット]
| | |■
| |◇分岐終了◇
| |■DB読込(可変): CSelf9[一時項目名] = 可変DB[ 10 : CSelf16[発動スロット] : キャラ名 ] (×┏ 戦闘一時ステータス[基] : - : 0)
| |■DB読込(ユーザ): CSelf9[一時項目名] += ユーザDB[ 8 : CSelf10[一時変数A] : 13 ] (状態設定 : - : 行動制限時文章(空欄:ナシ)
| |■イベントの挿入[名]: ["X[戦]戦闘メッセージ表示"] <コモンEv 182> / 0:表示→自動削除 / CSelf9[一時項目名]
| |■イベント処理中断
| |■
|◇分岐終了◇
|■
◇分岐終了◇

WoditorEvCOMMAND_START
[250][5,4]<0>(8,23,-3,201216,1600010)("","状態設定","怠惰","")
[250][5,4]<0>(13,1600016,1600010,4096,1600011)("","","","")
[111][4,0]<0>(1,1600011,1,1)()
[401][1,0]<0>(1)()
[121][4,0]<1>(1600012,0,99,24576)()
[111][4,0]<1>(1,1600012,50,1)()
[401][1,0]<1>(1)()
[300][3,1]<2>(0,1,50)("X[共]システムSE再生")
[111][7,0]<2>(2,1600016,10,4,1600016,10,1)()
[401][1,0]<2>(1)()
[300][5,1]<3>(0,3,40,1600016,1600016)("X[戦]味方欄_単体描画")
[0][0,0]<3>()()
[401][1,0]<2>(2)()
[300][4,1]<3>(0,2,40,1600016)("X[戦]敵キャラ_単体描画")
[0][0,0]<3>()()
[499][0,0]<2>()()
[250][5,4]<2>(10,1600016,0,266240,1600009)("","","","キャラ名")
[250][5,4]<2>(8,1600010,13,4624,1600009)("","","","")
[300][4,1]<2>(0,17,0,1600009)("X[戦]戦闘メッセージ表示")
[172][0,0]<2>()()
[0][0,0]<2>()()
[499][0,0]<1>()()
[0][0,0]<1>()()
[499][0,0]<0>()()
WoditorEvCOMMAND_END


記事No: 21592 [関連記事]
タイトルRe: 50%の確率で行動不能など、確率を参照した状態異常の作成
投稿日: 2024/01/10 22:43
投稿者みん [rWOrpi1078(海外)]

実装できました。
ありがとうございます!

例えばですが、似たような処理をする状態異常で、名前を変えたものをあと10種類以上作る場合はすべての状態異常に行動不能処理が入るかどうかをチェックさせるループを組んだ方がいいですか?
もっと軽くする方法があれば知っておきたいです。


記事No: 21593 [関連記事]
タイトルRe: 50%の確率で行動不能など、確率を参照した状態異常の作成
投稿日: 2024/01/12 00:19
投稿者YADO [LerLWW459(海外)]

> 実装できました。
> ありがとうございます!
>
> 例えばですが、似たような処理をする状態異常で、名前を変えたものをあと10種類以上作る場合はすべての状態異常に行動不能処理が入るかどうかをチェックさせるループを組んだ方がいいですか?
> もっと軽くする方法があれば知っておきたいです。


「何もしないを確率で実行」と言った基本仕様が変わらず、単に状態の名前や発生確率だけを変える場合は、ループ処理で設定した方が簡単に設定できます。
その場合は、ユーザーDB[8:状態設定]の状態「怠惰」で使用するデータIDを「23〜32」などと連番にした方がループ処理が設定しやすくなります。

▼ユーザーDB[8:状態設定]のデータID「23〜32」をループ処理(ユーザーDB[8:状態設定]に項目47「行動しなくなる確率」があるバージョン)
■変数操作: CSelf10[一時変数A] = 23 + 0
■回数付きループ [ 10 ]回
|■DB読込(可変): CSelf11[一時変数B] = 可変DB[ 13 : CSelf16[発動スロット] : CSelf10[一時変数A] ] (×┣ 状態リスト : - : -)
|■条件分岐(変数): 【1】 CSelf11[一時変数B] が 1 以上
|-◇分岐: 【1】 [ CSelf11[一時変数B] が 1 以上 ]の場合↓
| |■DB読込(ユーザ): CSelf12[一時変数C] = ユーザDB[ 8 : CSelf10[一時変数A] : 行動しなくなる確率 ] (状態設定 : - : 47)
| |■変数操作: CSelf12[一時変数C] += 0 〜 99
| |■条件分岐(変数): 【1】 CSelf12[一時変数C] が 100 以上
| |-◇分岐: 【1】 [ CSelf12[一時変数C] が 100 以上 ]の場合↓
| | |■イベントの挿入[名]: ["X[共]システムSE再生"] <コモンEv 49> / 50:行動前
| | |■条件分岐(変数): 【1】 CSelf16[発動スロット] が 10 未満 【2】 CSelf16[発動スロット] が 10 以上
| | |-◇分岐: 【1】 [ CSelf16[発動スロット] が 10 未満 ]の場合↓
| | | |■イベントの挿入[名]: ["X[戦]味方欄_単体描画"] <コモンEv 178> / 40:フラッシュエフェクト / CSelf16[発動スロット] / CSelf16[発動スロット]
| | | |■
| | |-◇分岐: 【2】 [ CSelf16[発動スロット] が 10 以上 ]の場合↓
| | | |■イベントの挿入[名]: ["X[戦]敵キャラ_単体描画"] <コモンEv 179> / 40:フラッシュエフェクト / CSelf16[発動スロット]
| | | |■
| | |◇分岐終了◇
| | |■DB読込(可変): CSelf9[一時項目名] = 可変DB[ 10 : CSelf16[発動スロット] : キャラ名 ] (×┏ 戦闘一時ステータス[基] : - : 0)
| | |■DB読込(ユーザ): CSelf9[一時項目名] += ユーザDB[ 8 : CSelf10[一時変数A] : 13 ] (状態設定 : - : 行動制限時文章(空欄:ナシ)
| | |■イベントの挿入[名]: ["X[戦]戦闘メッセージ表示"] <コモンEv 182> / 0:表示→自動削除 / CSelf9[一時項目名]
| | |■イベント処理中断
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■変数操作: CSelf10[一時変数A] += 1 + 0
|■
◇ループここまで◇◇

WoditorEvCOMMAND_START
[121][4,0]<0>(1600010,23,0,0)()
[179][1,0]<0>(10)()
[250][5,4]<1>(13,1600016,1600010,4096,1600011)("","","","")
[111][4,0]<1>(1,1600011,1,1)()
[401][1,0]<1>(1)()
[250][5,4]<2>(8,1600010,47,266752,1600012)("","","","行動しなくなる確率")
[121][4,0]<2>(1600012,0,99,24832)()
[111][4,0]<2>(1,1600012,100,1)()
[401][1,0]<2>(1)()
[300][3,1]<3>(0,1,50)("X[共]システムSE再生")
[111][7,0]<3>(2,1600016,10,4,1600016,10,1)()
[401][1,0]<3>(1)()
[300][5,1]<4>(0,3,40,1600016,1600016)("X[戦]味方欄_単体描画")
[0][0,0]<4>()()
[401][1,0]<3>(2)()
[300][4,1]<4>(0,2,40,1600016)("X[戦]敵キャラ_単体描画")
[0][0,0]<4>()()
[499][0,0]<3>()()
[250][5,4]<3>(10,1600016,0,266240,1600009)("","","","キャラ名")
[250][5,4]<3>(8,1600010,13,4624,1600009)("","","","")
[300][4,1]<3>(0,17,0,1600009)("X[戦]戦闘メッセージ表示")
[172][0,0]<3>()()
[0][0,0]<3>()()
[499][0,0]<2>()()
[0][0,0]<2>()()
[499][0,0]<1>()()
[121][4,0]<1>(1600010,1,0,256)()
[0][0,0]<1>()()
[498][0,0]<0>()()
WoditorEvCOMMAND_END


上記設定では、データID「23〜32」の状態異常の中で、複数の状態異常になった場合は、複数の確率が処理されます。

例えば何もしない確率が「50%」と「10%」の2つの状態異常になった場合、
50%=何もしない
50%=通常行動
と処理されたあとに、50%の通常行動の方はさらに、
50%の10%=何もしない
50%の90%=通常行動
と処理されるため、結果的に、
55%=何もしない
45%=通常行動
と言った処理になります。

上記の仕様で問題ない場合はそのままで良いですが、例えば複数の状態「怠惰」になった時に、
その中で最も大きい確率(「50%」と「10%」の場合は「50%」のみ)が処理されるようにする場合は、以下のように設定する必要があります。

■変数操作: CSelf10[一時変数A] = 23 + 0
■変数操作: CSelf12[一時変数C] = 0 + 0
■回数付きループ [ 10 ]回
|■DB読込(可変): CSelf11[一時変数B] = 可変DB[ 13 : CSelf16[発動スロット] : CSelf10[一時変数A] ] (×┣ 状態リスト : - : -)
|■条件分岐(変数): 【1】 CSelf11[一時変数B] が 1 以上
|-◇分岐: 【1】 [ CSelf11[一時変数B] が 1 以上 ]の場合↓
| |■DB読込(ユーザ): CSelf11[一時変数B] = ユーザDB[ 8 : CSelf10[一時変数A] : 行動しなくなる確率 ] (状態設定 : - : 47)
| |■条件分岐(変数): 【1】 CSelf12[一時変数C] が CSelf11[一時変数B] 未満
| |-◇分岐: 【1】 [ CSelf12[一時変数C] が CSelf11[一時変数B] 未満 ]の場合↓
| | |■変数操作: CSelf12[一時変数C] = CSelf11[一時変数B] + 0
| | |■変数操作: CSelf13[一時変数D] = CSelf10[一時変数A] + 0
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■変数操作: CSelf10[一時変数A] += 1 + 0
|■
◇ループここまで◇◇
■変数操作: CSelf12[一時変数C] += 0 〜 99
■条件分岐(変数): 【1】 CSelf12[一時変数C] が 100 以上
-◇分岐: 【1】 [ CSelf12[一時変数C] が 100 以上 ]の場合↓
|■イベントの挿入[名]: ["X[共]システムSE再生"] <コモンEv 49> / 50:行動前
|■条件分岐(変数): 【1】 CSelf16[発動スロット] が 10 未満 【2】 CSelf16[発動スロット] が 10 以上
|-◇分岐: 【1】 [ CSelf16[発動スロット] が 10 未満 ]の場合↓
| |■イベントの挿入[名]: ["X[戦]味方欄_単体描画"] <コモンEv 178> / 40:フラッシュエフェクト / CSelf16[発動スロット] / CSelf16[発動スロット]
| |■
|-◇分岐: 【2】 [ CSelf16[発動スロット] が 10 以上 ]の場合↓
| |■イベントの挿入[名]: ["X[戦]敵キャラ_単体描画"] <コモンEv 179> / 40:フラッシュエフェクト / CSelf16[発動スロット]
| |■
|◇分岐終了◇
|■DB読込(可変): CSelf9[一時項目名] = 可変DB[ 10 : CSelf16[発動スロット] : キャラ名 ] (×┏ 戦闘一時ステータス[基] : - : 0)
|■DB読込(ユーザ): CSelf9[一時項目名] += ユーザDB[ 8 : CSelf13[一時変数D] : 13 ] (状態設定 : - : 行動制限時文章(空欄:ナシ)
|■イベントの挿入[名]: ["X[戦]戦闘メッセージ表示"] <コモンEv 182> / 0:表示→自動削除 / CSelf9[一時項目名]
|■イベント処理中断
|■
◇分岐終了◇

WoditorEvCOMMAND_START
[121][4,0]<0>(1600010,23,0,0)()
[121][5,0]<0>(1600012,0,0,65536,1)()
[179][1,0]<0>(10)()
[250][5,4]<1>(13,1600016,1600010,4096,1600011)("","","","")
[111][4,0]<1>(1,1600011,1,1)()
[401][1,0]<1>(1)()
[250][5,4]<2>(8,1600010,47,266752,1600011)("","","","行動しなくなる確率")
[111][4,0]<2>(1,1600012,1600011,4)()
[401][1,0]<2>(1)()
[121][4,0]<3>(1600012,1600011,0,0)()
[121][4,0]<3>(1600013,1600010,0,0)()
[0][0,0]<3>()()
[499][0,0]<2>()()
[0][0,0]<2>()()
[499][0,0]<1>()()
[121][4,0]<1>(1600010,1,0,256)()
[0][0,0]<1>()()
[498][0,0]<0>()()
[121][4,0]<0>(1600012,0,99,24832)()
[111][4,0]<0>(1,1600012,100,1)()
[401][1,0]<0>(1)()
[300][3,1]<1>(0,1,50)("X[共]システムSE再生")
[111][7,0]<1>(2,1600016,10,4,1600016,10,1)()
[401][1,0]<1>(1)()
[300][5,1]<2>(0,3,40,1600016,1600016)("X[戦]味方欄_単体描画")
[0][0,0]<2>()()
[401][1,0]<1>(2)()
[300][4,1]<2>(0,2,40,1600016)("X[戦]敵キャラ_単体描画")
[0][0,0]<2>()()
[499][0,0]<1>()()
[250][5,4]<1>(10,1600016,0,266240,1600009)("","","","キャラ名")
[250][5,4]<1>(8,1600013,13,4624,1600009)("","","","")
[300][4,1]<1>(0,17,0,1600009)("X[戦]戦闘メッセージ表示")
[172][0,0]<1>()()
[0][0,0]<1>()()
[499][0,0]<0>()()
WoditorEvCOMMAND_END


記事No: 21595 [関連記事]
タイトルRe: 50%の確率で行動不能など、確率を参照した状態異常の作成
投稿日: 2024/01/15 20:31
投稿者みん [rWOrpi1078(海外)]

大変わかりやすい説明をありがとうございます!
仕様通りに組めました!