2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

NScripter Ver.19.00

1 :名前は開発中のものです。:2014/01/30(木) 22:41:08.23 ID:BRbRh5DC.net
商業流通でなければフリーで利用可能な
ゲームエンジンNScripterについて語るスレです。

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

・うpろだ
ttp://nscuploader.wkeya.com/

161 :名前は開発中のものです。:2014/05/01(木) 22:29:10.31 ID:JR86h75D.net
>>155
いい検証スクリプトだな。乙だ

162 :名前は開発中のものです。:2014/05/14(水) 18:09:51.24 ID:e6ELFxDF.net
luasubでluaに飛んだ先のコードの中でNスクのスクリプトへgosubする方法ってないですか?
下のコードで言うとあいうえおスプライトを表示する前に*test2へ行って戻って来たいんですが。

function NSCOM_test1()
NSGosub ("*test2")

NSExec([[lsp 0,":s/18,20,0;#FFFFFF"+"あいうえお",100,100]])
NSExec([[print 1]])
NSClick()
end

もしかしてluaは基本function~endまでNスクには戻れない様な設計なんですかね?
NSGotoもNSGosubもluaの途中からNスクへ行けるものと思っていたんですが使ってみたら挙動が違くて・・

163 :名前は開発中のものです。:2014/05/14(水) 23:24:45.60 ID:qWatNS0P.net
lua側からNScr側のサブルーチンに飛ぶ方法はないです。
NSGotoやNSGosub、NSReturnは、NScrの制御状態をlua側から書き換える為の命令です。

NScr側のサブルーチンとlua側の関数を利用する処理は、NScr側でまとめるといいかもです。

;00.txt
*define
defsub test1
luasub test1_lua
game
*test1
gosub *test2
test1_lua
return

--system.lua
function NSCOM_test1_lua()
NSExec([[lsp 0,":s/18,20,0;#FFFFFF"+"あいうえお",100,100]])
NSExec([[print 1]])
NSClick()
end

164 :名前は開発中のものです。:2014/05/14(水) 23:32:55.77 ID:CPI+kYSJ.net
どうしてもluaでやりたいという変態さんは
NSCOM_test1()をNSGosub ("*test2")の前後で分割して
続きを呼び出すNスクのサブルーチンをNSGosub()した上で
NSGosub ("*test2")をしてreturn

関数を分割せずにコルーチンを駆使すれば
あたかもNスクと同期実行されているように書ける
(それでも形式的でナンセンスな記述は残る)

なお理論上できるというだけで実際やったことはない

165 :名前は開発中のものです。:2014/05/15(木) 01:15:12.20 ID:9JL1CUtN.net
>>164も言ってるけどコルーチンはNスクにreturnしても稼働状態で残るはず(俺も試したことはないが)、だから該当箇所をコルーチン化すればどうにかならないでもないけどやや面倒よ
"「コルーチンがなければ生成、あればコルーチン実行」→Nスクにreturn"という関数作れば一応動きそうじゃね

166 :名前は開発中のものです。:2014/05/15(木) 04:06:19.02 ID:f8gwu8O3.net
http://toro.2ch.net/test/read.cgi/gsaloon/1345029300/316
  ↑  ↑  ↑  ↑  ↑ 

167 :163:2014/05/15(木) 06:32:41.56 ID:LzCNjPYY.net
ぬう・・やっぱりちょっと難しいのですね。
コルーチン組むにしても手間が増えて煩雑になってしまいそうなんで、やはりNスク側にまとめてluaはdefsubの延長のような使い方にしようかな。
ありがとうございました!

168 :名前は開発中のものです。:2014/05/23(金) 15:11:23.36 ID:jUQbPQPM.net
*define
numalias data,0:dim ?data[6][1]
numalias hoge,1
mov ?data[0][hoge],7
mov ?data[1][hoge],1
mov ?data[2][hoge],2
mov ?data[3][hoge],3
mov ?data[4][hoge],4
mov ?data[5][hoge],5
mov ?data[6][hoge],6
game
*start
debuglog 1:click

if ?data[0][hoge] >= ?data[1][hoge] && ?data[0][hoge] >= ?data[2][hoge] && ?data[0][hoge] >= ?data[3][hoge] && (専ブラに行長すぎと怒られたんで改行)
?data[0][hoge] >= ?data[4][hoge] && ?data[0][hoge] >= ?data[5][hoge] && ?data[0][hoge] >= ?data[6][hoge] mov %0,1
数値%0\

if ?data[0][1] >= ?data[1][1] && ?data[0][1] >= ?data[2][1] && ?data[0][1] >= ?data[3][1] && ?data[0][1] >= ?data[4][1] && ?data[0][1] >= ?data[5][1] && ?data[0][1] >= ?data[6][1] mov %0,2
数値%0\

if ?data[0][hoge] >= ?data[1][hoge] && ?data[0][hoge] >= ?data[2][hoge] && ?data[0][hoge] >= ?data[3][hoge] && ?data[0][hoge] >= ?data[4][hoge] && ?data[0][hoge] >= ?data[5][hoge] mov %0,3
数値%0\

if ?0[0][hoge] >= ?0[1][hoge] && ?0[0][hoge] >= ?0[2][hoge] && ?0[0][hoge] >= ?0[3][hoge] && ?0[0][hoge] >= ?0[4][hoge] && ?0[0][hoge] >= ?0[5][hoge] && ?0[0][hoge] >= ?0[6][hoge] mov %0,4
数値%0\

169 :名前は開発中のものです。:2014/05/23(金) 15:28:07.46 ID:jUQbPQPM.net
しまった、書き込みミス。スクリプトだけ先に書いてしまった
デバックしてて気になったんだけど、numaliasを使った配列の比較を5回以上重ねた辺りからデバッグログの表示がおかしくなる現象にあいました。
上の検証スクリプトの1回目のif比較の?data[0][hoge] >= ?data[1][hoge]のログは
エイリアスdataへアクセス:値0
エイリアスhogeへアクセス:値1
配列変数?0へアクセス:値7
エイリアスdataへアクセス:値0
エイリアスhogeへアクセス:値1
配列変数?0へアクセス:値1
と問題なく表示されてるんだけど、

?data[0][hoge] >= ?data[5][hoge] 以降から
エイリアスdataへアクセス:値0
eへアクセス:値1
=?0へアクセス:値7
Aスdataへアクセス:値0
Aスhogeへアクセス:値1
=?0へアクセス:値5

と表示の挙動がおかしくなりました。
numalias hogeやdataを使わない2回目、4回目のif比較は問題なく表示
if文後のmovはどれも問題なく数値が代入されていたので実行上は問題ないのかもと思ったけどなんか妙な挙動してそうで怖い…
&の条件絞込の回数制限とかってあったっけ?

170 :名前は開発中のものです。:2014/05/23(金) 15:30:09.79 ID:jUQbPQPM.net
あ、使ったverは最終更新版の2.96です

総レス数 561
191 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★