ティラノスクリプトで for ループ [擬似]

ティラノスクリプトのタグには for ループがありません
if はありますが for はありません

そこでどうするか

わたしがやっている方法は macro 化しての再帰呼び出しです

ふつうの for 文に慣れていると案外思い浮かばない方法かもしれないので, 紹介したいと思います
ツリー構造以外のデータに再帰呼び出しを適用する発想に なかなかならないかもしれませんので

別の方法で, 例えば ティラノスクリプト公式サイトでも紹介されているこちらの plugin

https://tyrano.jp/market/item/2016

もありますが, macro 化しての再帰呼び出し法 もなかなかお手軽でお薦めです
[jump] や飛び先のラベルを追加することもありません

やりかた

プログラムの中で for ループの部分は たいていそこで一機能をなしていることが多いので, その処理に個別の名前をつけて macro 化してもさして問題はありません
スクリプトの見通しとしても悪くはなりません

例えば, キャラクター 5人分の何かの処理をしたいとき, ふつうなら 1人分の処理を 5回 for ループで回すことになりますが, この 1人分の処理 の部分は macro 化して切り出しても問題ないと思います

ただ, 今回ここで紹介する macro 化して再帰呼び出し法 で ふつうの for ループの感覚と少し異なるところは, ループ内部の処理を macro 化するのではなく, ループ制御を含めた部分が macro になるところです

以下に例で示します

[iscript]
  ; 次のキャラクターたちがいるとします
  f.charas = ["marin", "katia", "kinoko"];
[endscript]

; ここで f.charas 配列分の何かの処理をしたいとき
; 1人分の処理を [loop_logic] として macro 化します
[macro name="loop_logic" ]

  ; 1人分の処理をここに書いていきます
  [eval exp="console.log(f.charas[t.i])"]

  ; 終了部分
  ; カウンタをプラスして, ループを終わるか判定
  [eval exp="t.i++" ]
  [if exp="t.i < f.charas.length" ]
    [loop_logic]
  [endif]
[endmacro]

; カウンタを初期化して実行
[eval exp="t.i=0" ]
[loop_logic]

実行結果

marin
katia
kinoko

となります

1回は処理を行うので, do while 文に近いですね

よかったら試してみてください