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/

411 :名前は開発中のものです。:2015/08/16(日) 21:09:02.36 ID:lEwN4Chh.net
>>266-275
NSCALL_text乗っ取って
「長さ偶数バイトのテキストが末尾"/"なら"半角スペース+/"に置換して表示」
「置換した直後のテキストが半角スペースから始まっていたら削って表示」
とかやればある程度対応できるかも?クリック待ち処理ごと自作することになるけど

412 :名前は開発中のものです。:2015/08/16(日) 22:46:58.31 ID:59m3Liei.net
>>410
たぶん、game命令でsystem.luaが読み込まれる&実行されてるので
luasubで登録した関数が有効になるのは*start以降になると思います

以下のサンプルは普通に動きますが、

;00.txt
*define
defsub foo
foo
game

*start
end

*foo
mesbox "foo","foo"
return

413 :名前は開発中のものです。:2015/08/16(日) 22:49:07.51 ID:59m3Liei.net
次のサンプルでは、"Lua関数NSCOM_fooが存在しません。"とエラーが出ます
Luaのシステム(nslua.dll)は動いているけれどsystem.luaは
まだ読み込まれていない状態だと思います

;00.txt
*define
luasub foo
foo
game

*start
end

--system.lua
function NSCOM_foo()
NSOkBox("foo","foo")
end

414 :名前は開発中のものです。:2015/08/21(金) 14:41:24.07 ID:ejva1MgW.net
Nスクで作られたとあるフリゲで遊んでたら
オートマッピング付きの簡易3Dダンジョンが実装されててびっくりしたよ

415 :名前は開発中のものです。:2015/08/22(土) 13:09:10.74 ID:V6bf65Ur.net
*define
game
*start
mov %0,hoge

--system.lua
function NSCOM_tests()
NSExec("numalias hoge,10")
end
NSExec("luasub tests")
NSExec("tests")

これなら通った。system.lua読み終わるまでは定義節だから、ns2アーカイブ覗く定義命令もsystem.lua内から実行すれば通るかも?

>>414
座標1つにつき1文字でまとめて情報管理しちゃえば割とどうとでもなるよ、
マップの数増えると保存はめんどいけど

416 :名前は開発中のものです。:2015/08/23(日) 16:31:11.14 ID:yxJgxATQ.net
ということは
1:定義節実行(luasub、luacallは、名前がとりあえず登録されるだけ)
2:game命令到達、通常変数初期化。00.nsがあれば、ns2アーカイブモードにセットされてアーカイブが有効になる
3:(luasub、luacallがここで有効になる)
4:system.luaを読み込んで実行。
5:*startラベルに飛ぶ
こうか

417 :名前は開発中のものです。:2015/08/23(日) 22:24:29.23 ID:YEIgdBZk.net
>>415
"不正な命令gameです"ってエラーが出るね
NSExec()で呼び出した先でNSExec()を呼び出すと二重呼び出しでエラーになるよ

--system.lua
function NSCOM_tests()
NSExec("numalias hoge,10")--2回目のNSExec()でアウト
end
NSExec("luasub tests")
NSExec("tests") --1回目のNSExec()呼び出し

NSExec()でユーザー定義命令(defsubやluasubで定義した命令)を実行するのは
NSExec()二重呼び出しエラーの温床になるので避けた方がいいかもです
標準の命令でも_printとか_lspとか'_'プリフィックスをつけた方がいいくらいかもです

418 :名前は開発中のものです。:2015/08/23(日) 22:26:32.28 ID:YEIgdBZk.net
定義節専用命令を、Luaから呼び出すことで、NS2アーカイブにアクセスできるのかしら?のテストです
lookbackbuttonでテストしてみたけど、確かにアクセスできるみたい
一応注意点としては、'\'はLuaではエスケープシーケンスになります
例:
NSExec('lookbackbutton "data\\uon.png","data\\uoff.png","data\\don.png",data\\doff.png"')
NSExec('exec_dll "NSFont.dll/gaiji,伝,abc\\hurt.png"')-- '\'は'\\'でないと失敗します

テストしてて思ったのだけれど、ちょっと凝りすぎかなという気もしました。
高度でエクセレントなやり方よりも、愚鈍でシンプルな方が良いという考え方もあるので。

定義節で使うリソースは、アーカイブにまとめずにいっそ裸で置いておくとか
*start直後の初期化処理で間に合うものは、実行節で初期化する、というのもアリかなと思いました。

419 :名前は開発中のものです。:2015/08/23(日) 22:29:05.65 ID:YEIgdBZk.net
>>416
だいたいそんな感じだと思います
細かいことを言えば、3と4が逆かと思います
1:定義節が実行されてluasub、luacallがNスクに登録される(Lua側ではまだNSCOM_、NSCALL_が登録されていない)
3、4:system.luaを読み込んで実行。NSCOM_、NSCALL_がLuaに登録される
結果、luasub、luacallからNSCOM_、NSCALL_が呼び出せるようになる
こんな感じかと思います

function name() endが、nameを関数としてLuaのシステムに登録するという命令文なので、
function NSCOM_name() end や function NSCALL_name() end を読み込んだ(&実行した)直後から有効になります

420 :名前は開発中のものです。:2015/08/24(月) 02:50:35.88 ID:+60iWqb9.net
現在行の情報が吹っ飛1行目に戻される→既に読んだ定義節命令読んでエラー
の順なので、「system.lua読み込み中の」「定義節専用命令実行」に限っては
goto *start
*define
game
*start
みたいな書き方で一応動く。公式では二重実行ダメと言われてるけど、1行目に戻される以外の問題は今のところ発見されていないと思う

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

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