DSS 2020/09/14 16:46

[ティラノスクリプト]オリジナル関数を導入したい場合(初心者向け)

私自体がJavascript初心者なので、偉そうなことは何も言えないのと、内容として間違ったことを言っているかもしれません。
ということを承知の上で、私がやってみて上手く言った手順を書いておきます。

やりたいこと

ティラノスクリプトのタグでは実装が難しい処理を直接Javascriptで記述する(オリジナルの関数を作る)。それをプロジェクトのどこからでも使えるようにする。

やり方

1) ティラノスクリプトのdata/othersに新しいフォルダを作り、その中に新しいjsファイルを作成する。 例)data/others/original/test.jsなど
2) テキストエディタなどでtest.jsを開き、コードを追記。保存して閉じてください。

function 関数名(必要あれば引数){ //例:testFunc(hoge)
	処理内容
    return 必要あれば返値;
}

3) data/scenario/first.ksに以下のタグを追記。
 必ずタイトル画面など別のksファイルにジャンプする前に実行できるところに記述してください。

; 外部JSの読み込み(./data/others/original/test.js)
[loadjs storage='original/test.js']

[macro name="マクロの名前(例:testMacro)"]
[iscript]
testFunc(mp.value);
[endscript]
[endmacro]

4) あとは必要な所で[testMacro value="設定値"]やiscript内でtestFunc(hoge);と記載するだけで利用できるようになります。

外部jsで知ってないと時間をムダにしちゃうこと

  • ティラノスクリプト内のf.name変数の読み書き
TYRANO.kag.stat.f[name]
  • ティラノスクリプト内のtf.name変数の読み書き
TYRANO.kag.variable.tf[name]
  • ティラノスクリプト内のsf.name変数の読み書き
TYRANO.kag.variable.sf[name]
  • ティラノスクリプトのタグの実行
TYRANO.kag.ftag.startTag("タグ名", {パラメータ1:"値1",パラメータ2:"値2"});

 パラメータと値のセットは必要な分だけ追記していきましょう。一つもなければ{}にすればOK。

そもそも何で外部jsに記述するの?

プロジェクトのどこからでも再利用可能にするならiscriptタグを内包したマクロやcallでサブルーチンを呼び出しても良いです。
が、たまにiscriptタグ内に書くと上手く動かないことが出てきました。
具体的にはプラグインで使われている変数の書き換えなど。無理やり書き換えたい対象がいるけど、ティラノスクリプト外の変数(f.~、tf.~、ts.~とか以外の変数)だとiscriptから書き換えるには何かテクニックがいるのか、上手くできませんでした。
また、オリジナル関数を定義する場合もiscript内で定義してはいけません。そのiscriptの中でしか使えないみたいなので、別途マクロやcallとして対象のiscript自体を呼び出さなくてはいけなくなります。
引数が多い関数とかの場合はマクロとかでは記載が面倒になるので、直接オリジナル関数を使ってしまいたい場合も出てくると思います。

いずれもJavascriptの「スコープ」問題だと思っています。興味のある方は一度ググってみてください。

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索