
現状は上の画像のような力技で書いていて、さすがにこれはダメなので、
- 条件付きの選択肢テキストを定義しておけば、対話ウィンドウの表示時に、システムが勝手に選んで表示
- 選んだ選択肢ごとの結果の処理も、選択肢テキストとカップリングで定義
できるようにしたいという感じ。
それで、自分の能力では、下の画像のようになら出来るかなあというイメージ。
このコードを、少なくとも対話ウィンドウが表示される前の、どこかのタイミングで走らせる。(タイミングはスクリプト書く側の自由。=これを走らせるコードをスクリプトに書く必要アリ)
- ID: TESで言うEditorID
- AnswerTextID: 対話の相手が、選択肢への返答として発する、テキストのEditorID
- Condition: booleanを返すLuaコード
Answer: 選択肢を選択したら走らせるLuaコード*1- Result: 選択肢を選択したら走らせるLuaコード*2
全部string型になっちゃうので、ちょっと見難いけど。。
クエストspecificな噂テキスト(TESではConversationと言ってるぽい)も、こんな感じで定義できそう。(データ的には、ConditionとAnswerTextIDだけで良い)
AnswerTextについては、別の記事として書きます。
*1 AnswerじゃなくてResultですね。*2が正解です。
*1 AnswerじゃなくてResultですね。*2が正解です。

ああ、分かりました、先にAnswr Topic読んだのが間違いだったかも。
ReplyDeleteQuestTopicの表示はどのように取捨選択されるんでしょうか?
ReplyDeleteまだ作ってないので、やろうとしてるイメージでの話ですが、
Deleteシステムがメモリ内にある、全questTopic型データのConditionコードを走らせて、trueが返ってきたものを表示します。
Dialogue型とAnswerText型の話をしてしまったので、混乱しちゃいますね。
Delete選択肢データについては、Dialogue型でやってるようなシステム側がする自動条件チェックはしないで、全部、個々のquestTopic型データに登録されている条件チェックコードだけでやろうかなと思ってます。
分かりました
Deleteキーワードとフォーマットを決めてくれたら書けそうですね
まあ、書いてるうちにこうスべきってなっていくんだろうけど
questTopic型でAnswerTextを指定せずに、AnswerText型で親トピック(parentQuestTopicID: string;)を指定した方が良いかも?
ReplyDelete