【ティラノスクリプト 交流掲示板】 2772503


HTML5ゲームエンジン、「ティラノスクリプト」に関する掲示板です

質問を書き込む前に

こんな機能ないかな?と思った時
ティラノスクリプトのタグリファレンス

ティラノWikiも確認
http://tyrano.wiki.fc2.com/

バグ報告や質問、要望などご自由にお使い下さい。


質問用スレッド part2

1:シケモクMK :

2014/12/07 (Sun) 08:50:51

ティラノスクリプトに関するわからない事がありましたら、お気軽にどうぞ

質問する時は、前スレで解決していないか、確認していただけると幸いです。

前スレ 質問用スレッドpart1
http://tyrano.bbs.fc2.com/?act=reply&tid=6151309

406:北宮 :

2015/11/17 (Tue) 22:44:48

二度目まして、北宮と申します。
>>403 の後、また色々と試しているのですが、再び不可解な現象が出ましたので、質問させてください。

【if文内でjumpを使った場合のセーブデータ処理】

動作スクリプトとして、(抜粋)

*start
[eval exp="f.loopnum=0;"]
*loopbase
[cm]
[link target=*ifloop]【If jump】[endlink][r]
[link target=*endif256]【go thru 256 endifs】[endlink][r]
[link target=*save]【セーブ】[endlink][r]
[link target=*clearsave]【セーブクリア】[endlink][r]
[link target=*quit]【終了】[endlink][r]
[s]
[jump target=*loopbase]

………

*ifloop
[cm]
loop [emb exp="++f.loopnum"]...[p]
[if exp="true"]
[jump target=*loopbase]
[endif]

としてみました。
(if文は本来なら変数依存ですが、今回は簡易化のため必ず通るようにしています)


さて、動作的には期待通りにループしてくれます。
十回ほどIf jumpした後のセーブデータを、ループ前のセーブテータと比べてみます。

まず、"f":{"loopnum":0} が10に変わっていました。
また、"save_date"も変化していました。

そして、追加で "stack":{ の "if":[] 配列なるものに、true が10個増えています。
ループを100回繰り返せば、trueもこれまた100個増えて保存されてしまいます…

一回につきの増加は微々たるものですが、if内jumpの度に増えるとなると、
セーブデータが無駄に、際限なく大きくなるので、出来れば避けたいです…


1) この現象について、回避方法等ありますでしょうか?
  if内jumpはかなり有用な(必須な?)手法ですので、セーブデータ肥大化を我慢するしか無いでしょうか…?


2) また、適当なスクリプトで、無駄な[endif]を通過させることにより、セーブデータ内のtrueが減らせる事を確認しました。
  この手法は使用可能でしょうか?(変な副作用等ありませんでしょうか?)


以下、実働サンプルとなります:
https://googledrive.com/host/0B9f3hv6KkjXcS19ZMmxxdGE5bUE/ts/20151117/index.html
(実動作はdata/scenario/first.ksに集約)

再びの長文失礼しますが、よろしくお願い致します。

  • 名前: E-mail(省略可):
  • 画像:

Copyright © 1999- FC2, inc All Rights Reserved.