【ティラノスクリプト】Numeric separators エラー対応覚書
そこそこ長らく悩まされていたエラーを潰した記録です。
事象
① ゲーム進行中に下記のダイアログが表示される。
SyntaxError: Numeric separators are not allowed at the end of numeric literals
※このダイアログが表示される条件下では、skipができない。
→ctrlキーを押下してもメッセージがスキップされず、通常のメッセージ送りになる。
再現手順
タイトル画面→コンフィグ画面に遷移する
ゲームを開始する(New Game)
事象発生
つまり「ゲーム開始前にコンフィグ画面を開くと、進行中にふんわりしたメッセージのダイアログが表示される」という事象です。
ダイアログを閉じればゲームは続行可能ですが、放置するわけにもいきません。
ティラノスクリプト バージョン
v521f
発生箇所のスクリプト
@free layer="0" name="sky" time="1000" wait="true"
*scenario1-1-1
[free]で画像を消した際に発生。
他にも発生した箇所はあるのですが、共通点があるような……そうでもないような……という状態でした。
そもそも「Numeric separators」とは?
エラーが発生したらエラーメッセージから読み解くべきかと思いましたが、正直よく分からんかったです。
Numeric separatorそのものは、こちらの記事を参考にさせていただきました。
JavaScriptで数値の区切り文字を使いたい物語
エラーの発生原因として、このあたりなんだろうな……という何となくの目星がつけられただけでも良しとします。
調査
エラー発生が「ゲーム開始前、タイトル画面でコンフィグを開いた」時に限定されていたため「config.ks」で何か起きたんだろうな! というあたりを付ける。
「make.ks」に原因がある可能性を潰すべく、「タイトル画面→セーブデータをロード」という手順を踏んで、上記のエラー発生箇所を通過する。
↑で再現なし。解凍直後のプロジェクトフォルダで「タイトル画面→コンフィグ画面→サンプルシナリオ」の順で実行。
↑で再現なし。サンプルシナリオで[free]を実行。
↑で再現なし。「自分、またなんかやっちゃいましたか…?」と思いながら「config.ks」を調査。
続・調査:config.ks
調査手順4で「[free]が原因ではない」という気がしたので、ラベル関係(「_」は使っていないけど「-」は使っている)なのかな……と考える。
config.ksの中で、ラベル関係の処理を行っている箇所を探す(※)
で、怪しいなと思ったのがこちら。
TG.config.autoRecordLabel = "true"; // ラベル通過記録を有効に
TG.config.autoRecordLabel
Config.tjsから、説明を引用します。
デフォルト(Config.tjsでの設定)では TG.config.autoRecordLabel = false;
コンフィグ画面に遷移すると、ラベル通過記録が有効(true)になる。
コンフィグ画面を抜ける前([awakegame]到達前)に、元々の値(false)に戻していない。
スクリプトのソースを読み込んだわけではないので断言はできませんが、ゲーム開始後も「TG.config.autoRecordLabel = true;」になっているのでは?
→エラーが発生したのは「scenario1-1.ks」の「*scenario1-1-1」。
ラベル記録の変数は「sf.record.trail_scenario1-1_scenario1-1-1」になる。
この変数名、駄目そう!!
対応
config.ksに追記します。
[iscript]
tf.tmpMode = TG.config.autoRecordLabel; - 対応1
TG.config.autoRecordLabel = "true"; // ラベル通過記録を有効に
(中略)
*backtitle
[cm]
[iscript]
TG.config.autoRecordLabel = tf.tmpMode; - 対応2
[endscript]
[layopt layer="message1" visible="false"]
[clearfix]
[start_keyconfig]
[clearstack]
[awakegame]
ラベル通過記録が有効になる前に「元々の設定」を一時変数「tmpMode」に入れる
[awakegame]でゲーム復帰する前に「元々の設定」に戻す
こうしてめでたく、無事にエラーを解消することができたのでした……
正直原因と対応に釈然としない部分はあるのですが、直ったから……一旦良しとします。
この記事が気に入ったらサポートをしてみませんか?