Skyrim Mod 製作日記 - 7 - PS4版でやっと簡単なクエストができた
実際の設定内容など
話しかけたときに、相手が錬金術士トレーナー トマトで、クエストステージが10未満の場合に、「あなたは何者ですか?」を表示する。
また、会話をそのままで終わらせず、二つの選択肢を出す。
選択肢は「錬金術を教えてください!」と「いや、今はいい」(これは標準のメッセージを流用)。
教えてくださいの場合、
クエストステージを10にして、クエストタイトルを表示する。
これが前回まで出来ていた状態。
「いや、今はいい」の場合、特に何も変化しない。
いずれの場合も、[GoodBye]にチェックをつけて、一旦会話が終わるようにしている。
続いて、別ブランチを作成し、次のようにトピックを作成
実際に山師の薬を持ってきた際の反応。
まずここで、その山師の薬を持っているかの判断の作り方がわからなかったのです。
条件作りをする際、その条件の対象とする選択肢が[Run on]で選ぶということを。
リストでは[Target]って表示しているのだから、ここも[Target]とかなっていればいいのに。
それに、項目も一番最初にあればよりわかりやすいのに。条件が一致した場合に対しての項目だと思い込んでいました。
ともかくも、相手が錬金術士トレーナー トマトで、クエストステージが10で、プレイヤーが山師の薬を持っている場合、選択肢が表示されます。
選択肢を選ぶと、クエストステージを20にします。
スクリーンショットでは;CODE NOT LOADEDとでていますが、これがまた曲者です。
本来なら GetOwninQquest().SetStage(20) と表示されていなければいけないのですが、何かしらのタイミングで無効になったうえに、これが書き換えられてスクリプトが動作しなくなったりします。
コレのせいで、動いていたつもりのものが動かなくなったりなど、混乱の元になっていました。
そして、クエストステージが20になった際に、[Quest Satges]で次のように設定しています。
クエストステージが20になったら、SetObjectiveCompleted(10)が実行されて、クエストステージ10にした際に表示したクエストが終了します。
いや、たったこれだけなのですが、まず、そもそもクエストステージなどの変更を行うスクリプトを探して、それを読み替えるようにして、そこで何か操作をミスるとスクリプトが書き換わって、それを直すと今度は別スクリプト扱いにされて、外部アセット扱いになるのか、PS4版としてアップロードできなくなって・・・
というわけで、ここまで出来るのにおよそ2週間を費やしました。