ff7fc-develop
ff7fc-develop copied to clipboard
7番街の柱のふもとで発生したバグについて
掲示板より(ponyexsさんから)柱イベントでのバグ報告ですが 説明が長くなりそうなので、一旦こちらに移してレスします。
@ponyexs
・7番街の柱のふもと
柱の攻防戦開始時、柱へ行かず左側へ進もうとすると
ティファの警告(クラウド!!早くしなきゃバレットが…)とともに
クラウドがさらに左側へ移動し、右へ戻れなくなることが一度だけありました
(直前のデバッグセーブポイントから再開すると次は発生せず)
(ティファの台詞中)向きはそのまま左向きだったかと思います。
直前の行動としてはまずはMAPの下へ行こうとしてティファに止められ、
次に左へ向かったら、という順番でした。
ただ列車墓場からのセーブデータで再開して
同じ行動をとっても再現しないため
何か特殊な条件なのかもしれませんね…
とりあえず原因が不明だったので、 この時のスクリプトの挙動を順に説明しておきます。 良かったら参考までにご覧ください。 ファイル名:event/script/019/plate_support_tifa_msg.txt
- 以下は、もしクラウド(char)が左を向いてたら、 フラグ16を1に変更して、さらにクラウドを右に向かせるという命令です。 (フラグ16の初期値は0)
chg_event_move_char_speed fast if_char_dir left set_flag 16 1 move_npc 1920 right 2 sleep 8 chg_char_dir right sleep 8 chg_npc_dir 1920 left fi
- その次は、クラウドが下を向いていたら、 クラウドを上に2歩移動させる命令です。
if_char_dir down move_char up 2 move_npc 1920 up 2 sleep 8 chg_npc_dir 1921 up sleep 8 chg_npc_dir 1920 down fi
- その次はフラグ16が0で、且つクラウドが右を向いてた場合は、 クラウドを左向きに変える命令です。
iif_flag 16 0 if_char_dir right move_npc 1920 left 2 sleep 8 chg_char_dir left sleep 8 chg_npc_dir 1920 right fi fi
- 上記のスクリプトを実行後、 以下のティファの台詞が発動します。 これが一連の流れです。
step_npc 1920 2 msg ティファ\n「クラウド!!\n はやくしなきゃ バレットが…
これらを踏まえて説明すると、 ティファのセリフ時に、クラウドが左を向いていたということは、 フラグ16が0になっているということです。
しかしながら、予めクラウドが左方向で該当ポイントに突入した場合は、 「if_char_dir left~fi」内で フラグ16が1になるように設定しているので、よく分かりません。
ひょっとしたら、何らかのタイミングで、 if_char_dir left~内の「set_flag 16 1」の発動が遅れて、 フラグ16が0のまま「chg_char_dir right」でクラウドが右向きになり、 その後の「if_char_dir right~fi」内に入ってしまったのかも?と。。
という訳で、一応気持ち程度にset_flag 16 1をスクリプトの最初の方に設置して、 誤作動を起こさないようにしてみました。 ちなみにそれまでは、最初のsleep8の後に入れてました。 つまりsleep 8(≒0.13秒)程度しか変わってないので、 正直なところよく分かりませんw
v4.12a(2021/01/28 1:53版)です。
この現象が再度発生いたしました。 ゲームが強制終了することこそありませんが、操作不能になりひたすらクラウドが左へ流されていきます。
この後いったんゲームを落とし、セーブデータ(墓場)から再開すると 現象が起きないので、それ以前の行動に関係があるのかもしれません
コルネオの館のセーブデータからも再開して進めてみましたが (※但しエンカウントはオフ)再現せず。
現象が発生した際はティファの店からこの場面まで通してプレイしていたときなので このどこかかとは思います…(すみません広すぎますね)
もっと前に原因があるのか、あるいは他の行動かは不明です。 とにかくあちこちフラフラしながら進めているので何かをひっかけたのかもしれませんが…
その時のプレイ状況は録画してあるためよろしければご参照ください。 (長いので2分割しています)
https://youtu.be/6r6saPckNAE https://youtu.be/shlrOEglhkk
なおゲームを終了させてdbg.txtを確認したところ以下のログが加わっているのを確認できましたが… [dbg] func_name:Event::set_active_msg, line:658 >>> id: 542 not found
ただタイムスタンプを見るに、もっと前のタイミングでまったく別のイベントかと思います。 時間から想定すると、教会の攻防 ~ お花の手入れをするヒーちゃんのあたり? (なおログが生じたとはいえ特に気が付いた不具合等はありません)
本当に丁寧な報告感謝いたします:bow: バグ報告というのも忘れて、 思い出を振り返る感じで、しばらくボーと見入っちゃいましたw
これアレですね。 セリフ発動前に、既に所定の位置から一歩ずれてますね。 本来であれば、x10,y23の位置で止まらなければならないのに、 x9,y23の位置まですり抜けてしまっています。
…となると、ちょっと思い当たる所がないこともないので、 betaさんに仕様を確認してみます。(ここ見てるかな)
betaさんにお尋ねします。
場所:デバッグワープ→プレートしちゅう→シーン1→『登るぞ』後 使用ファイル: ・common/019/plate_support_tifa1~8.txt ・019/plate_support_tifa_msg.txt
この場面では、(翻訳家さんの手間を減らすため) ティファのセリフ関係だけ別ファイルにして、 左/右/下の計8ヶ所に設置したplate_support_tifa~から、 共通で呼び出すようにしているんですが、 その際、createで新規生成しその二つを連続して繋げています。
で、この間- create後にファイルが一旦終了してから、 その新規ファイルが発動されるまでの間に、一瞬のラグが出来て、 その間プレイヤーが操作できることってあり得ますかね? あり得るなら、ここの部分はincludeに変えようかなと思ってるんですが。