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そんな特異な処理やってるようじゃ潰しが利かんだろ。
スタック消しなんて命令を常時使ってるような言語、少なくとも俺は知らんが。
0883名前は開発中のものです。
2006/12/16(土) 11:21:40ID:M71D0nzTそもそもgosubには最初から関係ないだろ?
0884名前は開発中のものです。
2006/12/16(土) 13:38:06ID:8FVsW9Bsいや、gosubをbreakで抜けたいって意味じゃなくてだな。。。
何故かgosubで飛んだルーチン内でfor文を使わずに「break *ラベル」を使うとエラーになるんだわ。
gosubルーチン内じゃなければエラーにならんのだが。
理由は分からん。実際に試してみてくれ。
0885名前は開発中のものです。
2006/12/16(土) 13:40:30ID:BoWWvG6Ubreakで抜けれるのはあくまで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別にクレクレじゃないっての(笑)
break *ラベルの仕様がどうなってんのかいろいろ試してみてるだけ。使用報告も兼ねつつ。
>>886
マニュアル嫁。
breakでラベルに飛ぶ命令
0888名前は開発中のものです。
2006/12/16(土) 13:53:05ID:BoWWvG6U0889名前は開発中のものです。
2006/12/16(土) 13:57:23ID:LDOYuU0Eヒント:新マニュアル\追加命令一覧.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で、この変な動きをなんとか便利に使う場所がないかと考えた結果、
「処理をtrapで抜けた場合に
for-nextループ内で抜けたのかそれ以外の場所なのかに関係なく
breakラベルで飛ばしておけば無関係にnextのスタックが消せる」
くらいかなぁ、と(;´∀`)
0894名前は開発中のものです。
2006/12/16(土) 14:40:42ID:BoWWvG6Uそれ位なら大人しくラベルgotoしろって。
とりあえず原理を考えてみたけど、
gosubのスタック消しをbreak処理の後でしか行わないから、for-nextが無いとエラーになるんじゃないかな。
なんとなく処理としては、break→スタック消し→goto *ラベルなんだと思うけど、
・*startの階層ではbreakもスタック消しも不要だから最後のgotoで移動できる。
・gosub内のfor-next内のbreakラベルは全ての処理行うから移動できる
・gosub内直書きや、for-next内gosub中の直書きからでは、最初のbreakでエラーになるからNG
ってことだと思う。まぁbreak *ラベル自体、お勧めしないってあるから、使わない方が良いと思うけどね。
■ このスレッドは過去ログ倉庫に格納されています