トップページgamedev
984コメント340KB

NScripter Ver.8.00

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2006/09/08(金) 21:39:40ID:/inm3Q++
商業流通でなければフリーで利用可能な
ゲームエンジンNScripterについて語るスレです。
技術的な質問も可。ただし最低限のマニュアルには目を通してね。


・本家
http://www.nscripter.com/

・うpろだ
http://andolf.hp.infoseek.co.jp/

・前スレ

Ver7.00
http://pc8.2ch.net/test/read.cgi/gamedev/1149639307/
Ver6.00
http://pc8.2ch.net/test/read.cgi/gamedev/1142593513/
Ver5.00
http://pc8.2ch.net/test/read.cgi/gamedev/1126791382/
Ver4.00
http://pc8.2ch.net/test/read.cgi/gamedev/1112550571/
Ver3.00
http://pc8.2ch.net/test/read.cgi/gamedev/1100029774/
Ver2.00
http://pc5.2ch.net/test/read.cgi/gamedev/1082131647/
初代
http://pc5.2ch.net/test/read.cgi/gamedev/1005121290/


その他関連リンクは>>2-4あたり。
0880名前は開発中のものです。2006/12/16(土) 02:22:03ID:WrHDcd7B
不安定というか、それこそが安定してるんちゃうか。

ヘタな使い方してるにも関わらずエラーがでなかったりするとヤバいぞ。
変な挙動しても、原因が突き止められん。
0881名前は開発中のものです。2006/12/16(土) 03:06:47ID:gG5Xz9/1
うーん・・・スタック消し用としては使わんほうがいいってことか。
それ用の命令が欲しいな
0882名前は開発中のものです。2006/12/16(土) 09:08:40ID:BwEJ2uC5
普通にしろってばw
そんな特異な処理やってるようじゃ潰しが利かんだろ。

スタック消しなんて命令を常時使ってるような言語、少なくとも俺は知らんが。
0883名前は開発中のものです。2006/12/16(土) 11:21:40ID:M71D0nzT
for-next中(連続表示で簡易ムービーとか)にクリックでtrap>breakしてスキップとかは普通に使ってたが
そもそもgosubには最初から関係ないだろ?
0884名前は開発中のものです。2006/12/16(土) 13:38:06ID:8FVsW9Bs
> そもそもgosubには最初から関係ないだろ?
いや、gosubをbreakで抜けたいって意味じゃなくてだな。。。
何故かgosubで飛んだルーチン内でfor文を使わずに「break *ラベル」を使うとエラーになるんだわ。
gosubルーチン内じゃなければエラーにならんのだが。
理由は分からん。実際に試してみてくれ。
0885名前は開発中のものです。2006/12/16(土) 13:40:30ID:BoWWvG6U
>>881
breakで抜けれるのはあくまでfor-next。
for-next内のgosubから一気に外に飛ぼうとしたら、gosubのスタックに引っ掛かって当たり前。
他の言語だって、for処理やwhile処理内で呼び出した関数から直接外に出るなんて、普通ならまずしない処理だと思うぞ。
ずぼらせずに、gosubをdefsubにして、引数でtrap中断フラグ返して、その値でreturn後にbreak判定すれ。
それかfor-next使わず、ラベルgotoでループさせろ。それならgosub先からreturn *ラベルで一発で抜けれるんだし。
いつまでもgdgdとスタック消しクレクレ言ってる暇があったら、自分のスクリプト見直せ。
0886名前は開発中のものです。2006/12/16(土) 13:42:19ID:BoWWvG6U
おっとしまった、リロードすれば良かった。
しかし、884読んでも何したいのかさっぱりわからん。for文無いのに、何でbreakしてんだ?てかbreak *ラベルって何?
0887名前は開発中のものです。2006/12/16(土) 13:46:45ID:8FVsW9Bs
>>885
別にクレクレじゃないっての(笑)
break *ラベルの仕様がどうなってんのかいろいろ試してみてるだけ。使用報告も兼ねつつ。

>>886
マニュアル嫁。
breakでラベルに飛ぶ命令
0888名前は開発中のものです。2006/12/16(土) 13:53:05ID:BoWWvG6U
……最新版今ダウンロードしてgrep掛けたけど、載ってないよ??
0889名前は開発中のものです。2006/12/16(土) 13:57:23ID:LDOYuU0E
>>888
ヒント:新マニュアル\追加命令一覧.txt
0890名前は開発中のものです。2006/12/16(土) 14:03:22ID:BoWWvG6U
あ、すぐ下にあるのに見落としてた。大文字小文字区別でかけてたゴメン。
でもやっぱり、for-next無いのに使うのがおかしいんじゃないのかな…
0891名前は開発中のものです。2006/12/16(土) 14:04:47ID:ux/5bGeR
よほど複雑な入れ子にでもしない限り、
きちんとreturnで戻るようにしとけばスタック消す命令は必要ないと思うけど

つか、for-nextの外でbreak使うこと自体がよろしくないでしょ
>>885も言ってるけど、同じ処理を別の方法で実装できるなら
for-nextを使う必要だってないわけだから

そこらへん、もうちょっと柔軟に考えた方がいいんじゃないかな
0892名前は開発中のものです。2006/12/16(土) 14:24:50ID:M71D0nzT
あーまー、言いたいことは分かった気がする
要するにただ、gosub中じゃなければエラーにならないのが不思議だってことね
別に妙機能を要望してるわけでも文句言ってるわけでもなく
0893名前は開発中のものです。2006/12/16(土) 14:35:15ID:8FVsW9Bs
そう、それだ。文章下手ですまん・・・orz

で、この変な動きをなんとか便利に使う場所がないかと考えた結果、
「処理をtrapで抜けた場合に
 for-nextループ内で抜けたのかそれ以外の場所なのかに関係なく
 breakラベルで飛ばしておけば無関係にnextのスタックが消せる」
くらいかなぁ、と(;´∀`)
0894名前は開発中のものです。2006/12/16(土) 14:40:42ID:BoWWvG6U
いやいや、for-nextで抜けたのかどうかわからないような場合はあっちゃいかんだろ。
それ位なら大人しくラベルgotoしろって。

とりあえず原理を考えてみたけど、
gosubのスタック消しをbreak処理の後でしか行わないから、for-nextが無いとエラーになるんじゃないかな。
なんとなく処理としては、break→スタック消し→goto *ラベルなんだと思うけど、
・*startの階層ではbreakもスタック消しも不要だから最後のgotoで移動できる。
・gosub内のfor-next内のbreakラベルは全ての処理行うから移動できる
・gosub内直書きや、for-next内gosub中の直書きからでは、最初のbreakでエラーになるからNG
ってことだと思う。まぁbreak *ラベル自体、お勧めしないってあるから、使わない方が良いと思うけどね。
■ このスレッドは過去ログ倉庫に格納されています