質問スレッド
このフォームからは投稿できません。
name
e-mail
url
subject
comment

[新規順タイトル表示] [ツリー表示] [新着順記事] [留意事項] [ワード検索] [過去ログ] [管理用]

記事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


- 関連一覧ツリー (▼ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
おなまえ※必須
Eメール
subject 入力禁止
Title 入力禁止
Theme 入力禁止
タイトル (質問内容に沿ったタイトルにしてください、「わかりません」「質問です」はダメ) sage
URL 入力禁止
URL
手動改行 強制改行 図表モード
添付ファイル    (500kBまで)
削除キー (英数字で8文字以内)
投稿キー (投稿時 投稿キー を入力してください)
プレビュー   

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No 削除キー