トップページ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あたり。
0794名前は開発中のものです。2006/11/26(日) 06:49:02ID:ML/b57yC
DLLレイヤ機能サンプルを元に右から左みたいな簡単なスプライトを
移動させる物を作ってみようと思ったのですが難しい…。

void Drawでfor文とRenderSpriteを使って回せばいいっぽいんですが、
BOOL TimerとBOOL Messageの意味がさっぱり。
どなたかサンプルもしくはご教授頂けないでしょうか?
0795名前は開発中のものです。2006/11/26(日) 17:08:30ID:vqJLN4cH
サンプルって・・・DLLレイヤ機能サンプルがサンプルだと思うけどなぁ^^;

分からなければ、
BOOL Timer(void){return TRUE;}
Message()は省略でいいんじゃない?

一抹の不安を感じるのは、for文で回すという表現・・・
複数スプライトということだよね? ね?

あとはT2氏にでも聞いてくれぃ
0796名前は開発中のものです。2006/11/29(水) 14:30:36ID:N0ZZX3Zq
ん、btntime(btntimer)ってバグってる?
btnwait命令の後も定義が消えずに残る。

btntime 10000
btnwait %0
もう一度。
btnwait %0
if %0 = -2 end
\

二度目のウェイトで10秒待つと、何故か-5が代入される。
0797名前は開発中のものです。2006/11/29(水) 15:20:32ID:mxgigb7U
それバグじゃないよ。クリアしてないから二度目も同じ設定で動いてるだけ。
一度目の btnwait %0 の次行に btndef clear を入れたらタイマーちゃんと消える。
クリック待ちの設定は一度使った後にちゃんと消す習慣付けた方がいいよ。
あと時間切れで-5ってことはusewheel使用なんだろ? その検証スクリプト不親切すぎ。

btnwaitとbtnwait2の違いはボタン定義をクリアするか否かの違いだけど、
ボタン定義ってのはspbtnやexbtnのところであって、他の設定はクリアされない。
まあ何だ。自分で検証すればすぐ洗い出せるってこった。
0798名前は開発中のものです。2006/11/29(水) 17:09:25ID:N0ZZX3Zq
ああ、なるほど。どうもです。
APIのbtntime説明に『この命令を使った直後の……』とあるので、タイマーは直後のbtnwaitにしか効かないのかと思ってました。

-5は……、修正するの忘れてました。
(一旦-5で検証し、途中でusewheel付け忘れていることに気付いてスクリプトのifを-2に変えたが、その後文章を書く際にいつもの癖で-5と書いてしまった)

ともあれ、thxです。
0799名前は開発中のものです。2006/12/03(日) 17:33:17ID:9p424y0t
会話のとき、
「こんにちわv」
と同時にごく短い音
「ピピピピピ」(言葉と同じ数)
を入れて、ボイス風にしたいなあと思ってるんですが、
「こwave"pi.wav":んwave"pi.wav":にwave"pi.wav":ちwave"pi.wav":わvwave"pi.wav"」
とやるしか思いつかないんです;;;;;;
何か他に良い方法はないものでしょうか?
0800名前は開発中のものです。2006/12/03(日) 18:02:39ID:fn8YKsNw
自分なら
; ------------
dwaveloop 2,"pi.wav"
「こんにちわv」
dwavestop 2
; ------------
とやるけど?
0801名前は開発中のものです。2006/12/03(日) 18:21:32ID:y+daOw1x
前に同じような話があったような・・・
過去ログ読んでみれば、何か分かるかも
0802名前は開発中のものです。2006/12/03(日) 18:27:12ID:9p424y0t
>>800&801
dですvv
0803名前は開発中のものです。2006/12/03(日) 20:03:08ID:SJJz0gGb
何度も使いそうだしサブルーチン組めば?
文字数測ってその回数分鳴らせばいいだけだし。
08047992006/12/03(日) 21:54:24ID:9p424y0t
>>803
それが一番楽でかつ無駄がないかも。やってみる。
文字数数えて変数に代入して、for文で変数の数だけ繰り返し音を鳴らせばいいんだよね?
dです。
0805名前は開発中のものです。2006/12/03(日) 22:59:42ID:2EIIicKT

カーソルキーでキャラを上下左右に動かすスクリプトを組みたいのですが、
キーの押しっぱなしを拾う方法ってないでしょうか?
下記のように組んだら一歩一歩止まってしまいます・・・orz

;---
btndef clear
getcursor
btndown 1
*loop
btnwait %0
if %0==-40 gosub *ue ;上移動
if %0==-41 gosub *migi ;右移動
if %0==-42 gosub *sita ;下移動
if %0==-43 gosub *hidari ;左移動
goto *loop
0806名前は開発中のものです。2006/12/04(月) 09:39:05ID:TEFzC6i0
つisdown
0807名前は開発中のものです。2006/12/04(月) 18:21:27ID:VZVcvksQ
>>806
それマウスの左だけじゃなかったっけ?違ったらスマン
0808名前は開発中のものです。2006/12/04(月) 18:37:53ID:sUYGUBr7
うん807が違う
0809名前は開発中のものです。2006/12/04(月) 21:42:00ID:lc791S0a
>807で合ってるんじゃ?
isdownでも無理みたい・・・orz
0810名前は開発中のものです。2006/12/04(月) 21:54:42ID:guiZFhtv
T2氏のプラグイン使えばいいんじゃない?
0811名前は開発中のものです。2006/12/04(月) 22:05:59ID:lc791S0a
>>810
それだ!
なんで気付かなかったんだ自分・・・orz
ありがとうございます!m(_ _)m
08128062006/12/04(月) 22:54:28ID:2OuCIxzJ
isdownで押しっぱなし取得出来ると思ってたけど自信なくなってきた…。
つか、押しっぱなし判定しなくても止まらず普通に動くと思うんだけどなぁ。
逆に何で止まるのか知りたくなってきたかも。

*define
game
*start
lsp 0,":s#ffffff文字列",200,200
btndef clear:getcursor
*loop
btnwait %0
if %0==-40 gosub *ue ;上移動
if %0==-41 gosub *migi ;右移動
if %0==-42 gosub *sita ;下移動
if %0==-43 gosub *hidari ;左移動
goto *loop
*ue
msp 0,0,-10,0:print 1:return
*migi
msp 0,10,0,0:print 1:return
*hidari
msp 0,-10,0,0:print 1:return
*sita
msp 0,0,10,0:print 1:return
08138052006/12/05(火) 00:22:57ID:TiowdF+M
>>812
どうもthxです。

各動作ルーチンの中で
; -------------
*sita
mov %3,0
mov %1,%51
for %51=%1 to %1+24 step 4
resettimer:waittimer 30
if %3==0 lsp 1,":l;data\chara\001_D_01.bmp",%50,%51:print 1:mov %3,1:goto *sita_next
if %3==1 lsp 1,":l;data\chara\001_D_03.bmp",%50,%51:print 1:mov %3,0:goto *sita_next
*sita_next
next
return
; -------------
って感じの動作処理を入れて動かしてるんですけど、
それだと綺麗な動作にならずに一歩一歩止まってしまうんですorz
試しに左クリックで飛ばしてみると止まらずにスムーズに動くので
たぶん、キーボードの押しっぱなし判定は拾えてない気がします。。。
08148052006/12/05(火) 00:25:40ID:TiowdF+M
「止まる」というか、
動くことは動きますけれど、途切れ途切れで綺麗に動かないという意味です。
分かりにくくてすいません。。。
0815名前は開発中のものです。2006/12/06(水) 16:18:21ID:0C2kjNYy
プラグインって実行ファイルと同じ場所に置いとかないと、みんな怒っちゃう?
0816名前は開発中のものです。2006/12/06(水) 17:16:06ID:CTG7k8IZ
質問させて下さい。

*start

├┐
1 2
├┘

*end

こんな感じで一本道から二本道にgosubでシナリオを分岐させていたんですが、
「2」のシナリオ中にカスタマイズメニューで作った*startに戻る処理(goto処理)を実行させると
gosubネストがスタックしてしまいますよね?

ぽまいらはどうやって上記のようなシナリオを上手く処理しているのか、是非教えて下さいm(_ _)m
分岐
質問です。



NScripterの*start
0817名前は開発中のものです。2006/12/06(水) 17:16:52ID:CTG7k8IZ
コピペのゴミが…スマソorz
0818名前は開発中のものです。2006/12/06(水) 17:53:41ID:QkW9qfn+
>>815
中には怒るプラグインがあるかも
俺は動けば怒らんけど
動かなくても怒るほど感性豊かじゃないけどな
0819名前は開発中のものです。2006/12/06(水) 18:32:32ID:GHYK1kcQ
return *xxx
スタックを削りつつgoto文と同じ感覚で飛ばせる
本当に*startに戻したいだけだったらresetすりゃいい気もするが
0820名前は開発中のものです。2006/12/06(水) 18:39:52ID:NHJUEQZp
returnでラベルに戻す必要があるのはよっぽど特殊な処理だけで、
大抵はgotoで処理できるんだけどな

というか、シナリオ分岐ならgosubじゃなくてgotoでいいじゃん・・・
resetでもいいけど、タイトルや戻り先にラベル指定してgotoで飛ばせばいいだけ
0821名前は開発中のものです。2006/12/06(水) 19:40:02ID:8JPJe2at
普通シナリオ分岐はgoto使うよな。

でも例えば、シナリオをシーンごとにわけておいて
主処理ではそれをgosubで拾っていくって形にしてるなら、
やっぱStartへ戻す処理をresetかdefineresetにするのが常道だろう。
(俺はこっちをやってる)
0822名前は開発中のものです。2006/12/06(水) 19:52:01ID:CTG7k8IZ
皆さんレスありがとうございます。m(_ _)m
例では簡単に書きましたが、現在作っているものは既存のギャルゲーよりも
シナリオマトリクスがかなり複雑なものでgotoではやり辛かったんです。
(出来ることは出来ますが、フラグで飛び先を管理する事を考えるとgosubジャンプはかなり楽なので…)

という訳で>>821さん良い命令をありがとうございます。
0823名前は開発中のものです。2006/12/09(土) 00:03:05ID:9SY8F3UT
更新こねー!
0824名前は開発中のものです。2006/12/09(土) 00:19:44ID:wM5/090q
ねー
0825名前は開発中のものです。2006/12/09(土) 17:39:51ID:5PLhcp5U
スプライトで言うallsphideとallspresumeのように
複数のbarをパラメーターを弄らず一時的に消したいのですが該当する命令ってあります?

使用箇所としては、RPGの戦闘画面でbarをライフポイントとして使用しているのですが、セーブ画面、ロード画面をlspで表示している時だけ非表示。
セーブ画面、ロード画面から戻った時。RPGの戦闘画面に戻ったら再表示という形です。
セーブ・ロード画面に行く時にbarclearかけて、戻る時に再度パラメーター指定してバー表示しなきゃ駄目かな?
0826名前は開発中のものです。2006/12/09(土) 18:02:08ID:j7BiLCsa
>>825
俺もそれやりたいんだけど、一旦クリアして戻ったら再描画するしか無いみたいだ。。。
せめてbarをスプライトよりも後ろに表示できれば
スプライトを上に乗せて隠すことも出来るんだけどなー・・・orz
0827名前は開発中のものです。2006/12/09(土) 18:09:55ID:0CsgNBHw
俺はバーは使った事無いけど、
確かにNscで、一度メニュー画面にしてから復帰した時って
画面の復元とかって面倒だよね。

俺もそれと似たような悩みがあった。

結局俺は画面切り替える時に自動セーブして、
復帰する時にロードで復帰させるようにした。
けど、テキストもページ先頭に戻っちゃうので工夫が必要になる。
オススメできない。
0828名前は開発中のものです。2006/12/09(土) 18:23:54ID:5PLhcp5U
>>826-827
まじですか。レスありがとう
完全に上くるから再表示させるっきゃないんだよね。
戦闘画面からセーブ画面、ロード画面、武器変更画面、etc...ってあるから手間かかるんだよねぇ
まぁ気合でどうにかしてみます。どもでした。
0829名前は開発中のものです。2006/12/09(土) 18:33:04ID:0CsgNBHw
どうでもいいけど、戦闘シーンでセーブロードできたら、

「あ、ミスった。……ロードして一手前からやりなおしっと」

って事にならんか?
0830名前は開発中のものです。2006/12/09(土) 18:37:17ID:TgPhyKPX
選択肢中セーブなんかも含めて一期一会的緊張感を失うけど
ヌル機能は装備しといて、使う使わないはユーザ任せでいい
「このゲームはやりなおしがめんどくせぇ」と思われるのが一番危険かと
0831名前は開発中のものです。2006/12/09(土) 20:07:14ID:j7BiLCsa
いや、つーか、
SLGなら分かるけどRPGで戦闘中セーブはかなり珍しいだろ
0832名前は開発中のものです。2006/12/09(土) 20:27:55ID:FHCAxNIk
スプライト位置取得命令まだー?
0833名前は開発中のものです。2006/12/09(土) 20:55:26ID:sz65gKpY
まぁ828がRPGを作ってるとは限らんが。
それ次第だな。
0834名前は開発中のものです。2006/12/09(土) 21:29:36ID:BUp208IW
>>833
つか、直前のレスくらい嫁w つ>>825
0835名前は開発中のものです。2006/12/09(土) 21:53:08ID:sz65gKpY
スマw
0836名前は開発中のものです。2006/12/09(土) 23:35:55ID:5PLhcp5U
戦闘中のセーブは可能にしてるけど、仮にうちがプロならセーブさせないね。
折角の休みを戦闘コマンド(主にスキルとスキルに対する効果処理)を組み込む私って一体・・・
0837名前は開発中のものです。2006/12/10(日) 01:55:20ID:6hpjCAtB
NスクでRPG組める人なら他の言語例えばHSPでも十分組めると思うんだが
確かにNスクは画像やテキストの扱いが簡単だけど
0838名前は開発中のものです。2006/12/10(日) 11:45:09ID:qKJYWy1f
HSPの利点を挙げてHSPを薦めるならともかく、
Nスクの利点を挙げてHSPを薦める理屈が分からん
0839名前は開発中のものです。2006/12/10(日) 11:48:11ID:cRaBySnM
H ホット
S スパッツ
P プリンプリン
0840名前は開発中のものです。2006/12/10(日) 12:01:19ID:EMhp2oxS
ヒップ…
しり?
プリンプリン
0841名前は開発中のものです。2006/12/10(日) 12:53:44ID:Kl/z74Au
RPG組むならHSPの方がいいんじゃねーの?
画像やテキストの扱いがNscより難しいけど
あんたならやれるんじゃねーの?

って意味だろ。
0842名前は開発中のものです。2006/12/10(日) 15:02:43ID:+eBvq6CT
なるほど。つまり、

食堂でカツ丼を注文して既に食べている人間に対して、
「カツ丼よりも天丼のほうがいいぞ!美味しくないけど。
 カツ丼を食えるあんたなら天丼でも食えるだろ!」
と薦めるようなものだな。
0843名前は開発中のものです。2006/12/10(日) 15:04:12ID:9wf2M1DS
違う
0844名前は開発中のものです。2006/12/10(日) 15:06:54ID:Kl/z74Au
違うね
0845名前は開発中のものです。2006/12/10(日) 16:38:10ID:Y4KJ3Nly
つまり余計なお世話だと
0846名前は開発中のものです。2006/12/10(日) 20:16:28ID:UaEKDl2c
約1年ぶりにNScripterに復帰!
――と思ったけど、あんま変わってないな。
0847名前は開発中のものです。2006/12/10(日) 21:11:44ID:9FtxcCGV
ダウト
0848名前は開発中のものです。2006/12/10(日) 21:36:48ID:px7Y2MTk
トダウ
0849名前は開発中のものです。2006/12/12(火) 18:33:17ID:/AKi6u9o
最新版でDRAWSPの透過の不具合直ってたのね。
今頃になって気が付いたよ。
でもマスククロスフェードが遅くなってるけど。
0850名前は開発中のものです。2006/12/12(火) 19:43:39ID:FPJbbEYE
マスクだけアーカイブから出せば動作早いよ。
構成的に見栄え落ちるけど。
0851名前は開発中のものです。2006/12/13(水) 10:27:31ID:ry02KVpr
Nスクとキリキリ、どっちがゲームとしてはいいのが作れるのかな
やっぱキリキリなのかな
0852名前は開発中のものです。2006/12/13(水) 10:34:01ID:f7kgVhyy
PSとPS3とどっちがいいゲームが作れるかという質問ににているけど
ようするにおまえ次第です
0853名前は開発中のものです。2006/12/13(水) 11:17:06ID:ry02KVpr
3って…
0854名前は開発中のものです。2006/12/13(水) 11:30:43ID:Ca445vsY
C++とRPGツクールどっちがいいと聞いてるようなもんだしなあ。
2DのRPG作るならどっちでも大してかわらんというか作り手に左右される。
吉里吉里でもNスクでもノベル用途で使うなら大してかわらんから同様。

結局、ID:ry02KVprがいいゲームを作れる奴ならどっちでも作れるし、
作れない奴ならどっち使っても無駄。
0855名前は開発中のものです。2006/12/13(水) 19:58:11ID:X+zbSusn
ってか、このスレで訊いてる時点で釣りっぽいが
0856名前は開発中のものです。2006/12/14(木) 01:46:12ID:tcxkhkDs
スプライトの表示順(重なったときの上下)を制御する命令ってないでしょうか?
2つのキャラを同時に動かして、
前になったり後ろになったりする処理をしたいんですけど・・・。
0857名前は開発中のものです。2006/12/14(木) 01:53:51ID:YU1x+6Qg
順番入れ替えて再描画すればいいだけじゃない?
0858名前は開発中のものです。2006/12/14(木) 01:55:05ID:pPXglL7W
ないんじゃないかなぁ
上と下で2種類用意すればいいんじゃない?
0859名前は開発中のものです。2006/12/14(木) 02:00:03ID:MHG+YIAp
キーボードのDを押した時に出るデバッグウインドって、
出さないようには出来ないのでしょうか?
0860名前は開発中のものです。2006/12/14(木) 02:07:33ID:YU1x+6Qg
datに変換すれば出ないと思うけど・・・
そういえばデバッグ切る命令ってなかったね

まぁ、キーボードでDを使わなければ切る意味もないと思うけど
0861名前は開発中のものです。2006/12/14(木) 03:23:15ID:MHG+YIAp
あ、DATにしたら出ないのですね;
初歩的な事を質問してしまって済みませんでした。
それと教えて下さりありがとうございました。
0862名前は開発中のものです。2006/12/14(木) 18:32:27ID:W0SuOJYE
スレでnextが初期化できる命令があれば便利かもと思いました。
実際あったらどう思います?
0863名前は開発中のものです。2006/12/14(木) 19:38:24ID:e2HRnJrL
バグの基になりそうだから使わない。
0864名前は開発中のものです。2006/12/14(木) 19:49:28ID:KLZ7IHSS
for〜next文のこと?
breakで一度抜けて、もう一度頭からじゃだめなの?
簡単に組める命令を追加されてもなぁ・・・

つか、それがなきゃ困る状況って
あんまり想像つかないんだが
0865名前は開発中のものです。2006/12/14(木) 19:54:29ID:bB5gRA+g
next初期化なんて何でいるの?
for文中に初期化したくなったら、for %0 = 0 to 5ならmov %0,0って
ループ数えてる変数に初期値代入するだけじゃダメなんだっけ?

とゆーか、862の言うスレってのが何の事かさっぱり分からない件。
0866名前は開発中のものです。2006/12/14(木) 21:36:20ID:7tQMXZ1E
>>864
ループ処理を動かしてる途中でtrapで抜けた場合とかに
ちょっと欲しいかも。
trap系の命令ってgosubじゃなくてgotoで飛ぶし。
0867名前は開発中のものです。2006/12/14(木) 22:08:46ID:0zur3hXR
trapで抜ける必要があるときにfor nextで組むなって、バグの元だから。
ラベルをgotoで繰り返せよ。回数指定は変数用意してif判定で済むんだし。
0868名前は開発中のものです。2006/12/14(木) 23:14:57ID:7tQMXZ1E
いや、もちろん今は組んでないけどさ。
そういうスタック消しの命令があればforでも組めるから楽だなって話。

gotoでループ組む方がバグの元という気もしないでもないけど、
gotoループもNスクでは普通なんだよなー。。。
0869名前は開発中のものです。2006/12/14(木) 23:21:40ID:0zur3hXR
>gotoでループ組む方がバグの元
いやNスク前提で、trap使用ならそのパターンしかなくね?
0870名前は開発中のものです。2006/12/15(金) 01:34:50ID:JughAJ8C
試してみたら、for文でもtrap使えたよ
trapの飛び先でbreak *ラベル名ってすればおk

trap *a
for 〜
next
goto *b

*a
break *b

*b

こんな感じ。
0871名前は開発中のものです。2006/12/15(金) 15:48:13ID:6z1/rwJI
吉里吉里をNScripterに移植する方法を教えてくんな
Fate h/aって再現可能?
0872名前は開発中のものです。2006/12/15(金) 15:59:55ID:RIvnUJAO
巣へカエレ
0873名前は開発中のものです。2006/12/15(金) 19:52:44ID:WS48s8K3
FATEを中途半端に移植なんてする奴がいるから変なのが沸く。
0874名前は開発中のものです。2006/12/15(金) 19:58:07ID:pAS7czKG
そんなヤツいたのかw
0875名前は開発中のものです。2006/12/15(金) 20:20:00ID:vUGCXD6m
移植することに何か意味があるのだろうか
0876名前は開発中のものです。2006/12/15(金) 20:44:34ID:YNS80TP+
Macとか携帯端末でハァハァ
0877名前は開発中のものです。2006/12/15(金) 22:34:47ID:kAW7vEFG
>>870
おぉ!
知らんかった。thx!
0878名前は開発中のものです。2006/12/16(土) 01:30:11ID:/WmagKU7
for-nextループじゃないところでbreakラベルを検出しても
ちゃんと飛んでくれるのが便利だ・・・
と思ってたら、gosubルーチン内で使ったらエラーになった。
なんだか不安定な動きをするなこれ;;;
0879名前は開発中のものです。2006/12/16(土) 01:51:45ID:XNan4rzS
for-nextじゃないところで使うこと自体間違ってるんだから、
別に不安定なままで良いんじゃない?
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のスタックが消せる」
くらいかなぁ、と(;´∀`)
■ このスレッドは過去ログ倉庫に格納されています