商業流通でなければフリーで利用可能な
ゲームエンジンNScripterについて語るスレです。
・本家
ttp://www.nscripter.com/
・うpろだ
ttp://nscuploader.wkeya.com/
NScripter Ver.19.00
■ このスレッドは過去ログ倉庫に格納されています
2014/01/30(木) 22:41:08.23ID:BRbRh5DC
494名前は開発中のものです。
2016/09/05(月) 13:38:02.55ID:3ILYBxCe splitが標準命令に入ってるのは割と偉い判断だったと思う
495名前は開発中のものです。
2016/09/05(月) 15:36:12.87ID:js57+KTZ496名前は開発中のものです。
2016/09/06(火) 02:01:00.67ID:y+SHv1Mh よほど特殊な使い方でない限りは2曲前のメモリを解放するようにしとけばクロスフェードさせつつメモリの心配せずに済むと思う
497名前は開発中のものです。
2016/10/04(火) 11:38:51.37ID:WMuq/SLD @Visual Studioで新規C++プロジェクト作成して
ALuaとスタックをやりとりする適当な関数hoge(受け取った値計算して返す)をC側に作る
Lua5.1ライブラリを読み込む、lua_tointegerとか使う
BLua5.1.dllに依存するdllファイルをコンパイルする
C作ったdllファイルからNL_bindで関数hogeの参照を引っ張る
Dhoge()をLuaから直接呼んで返り値受け取るコードを書く
Enscr.exeと同じ場所かdllフォルダにLua5.1.dllを置けばちゃんと動作する
Luaのサンプルと睨めっこしながら弄っていてここで詰まった
Lua5.1.dllではなくnslua.dll、
lua_tointegerではなくNL_tointeger使うためには何すりゃいいですか?
ALuaとスタックをやりとりする適当な関数hoge(受け取った値計算して返す)をC側に作る
Lua5.1ライブラリを読み込む、lua_tointegerとか使う
BLua5.1.dllに依存するdllファイルをコンパイルする
C作ったdllファイルからNL_bindで関数hogeの参照を引っ張る
Dhoge()をLuaから直接呼んで返り値受け取るコードを書く
Enscr.exeと同じ場所かdllフォルダにLua5.1.dllを置けばちゃんと動作する
Luaのサンプルと睨めっこしながら弄っていてここで詰まった
Lua5.1.dllではなくnslua.dll、
lua_tointegerではなくNL_tointeger使うためには何すりゃいいですか?
498名前は開発中のものです。
2016/10/04(火) 22:08:53.09ID:d+T9HY2t こんな感じかな
//hoge.c
#include <windows.h>
__declspec(dllexport) int hoge(void *L);
//関数のポインタ型を定義する
typedef int (*NL_tointeger_T)(void *L,int index);
typedef void (*NL_pushinteger_T)(void *L,int n);
int hoge(void *L){
NL_tointeger_T NL_tointeger;
NL_pushinteger_T NL_pushinteger;
HMODULE mod;
int i;
//関数のポインタ変数に実際のアドレスを割り当てる
mod = LoadLibrary(
//hoge.c
#include <windows.h>
__declspec(dllexport) int hoge(void *L);
//関数のポインタ型を定義する
typedef int (*NL_tointeger_T)(void *L,int index);
typedef void (*NL_pushinteger_T)(void *L,int n);
int hoge(void *L){
NL_tointeger_T NL_tointeger;
NL_pushinteger_T NL_pushinteger;
HMODULE mod;
int i;
//関数のポインタ変数に実際のアドレスを割り当てる
mod = LoadLibrary(
499名前は開発中のものです。
2016/10/04(火) 22:10:42.25ID:d+T9HY2t 書き込み失敗した…
続きです
//関数のポインタ変数に実際のアドレスを割り当てる
mod = LoadLibrary("nslua.dll");
if(!mod) mod = LoadLibrary("dll\\nslua.dll");
if(!mod) return 0;
NL_tointeger = (NL_tointeger_T)GetProcAddress(mod,"NL_tointeger");
NL_pushinteger = (NL_pushinteger_T)GetProcAddress(mod,"NL_pushinteger");
FreeLibrary(mod);
//引数を2倍して返す
i = NL_tointeger(L,1);
NL_pushinteger(L,i *2);
return 1;
}
--system.lua
NL_bind("hoge.dll","hoge","hoge")
NSOkBox(tostring(hoge(4)),"test")
続きです
//関数のポインタ変数に実際のアドレスを割り当てる
mod = LoadLibrary("nslua.dll");
if(!mod) mod = LoadLibrary("dll\\nslua.dll");
if(!mod) return 0;
NL_tointeger = (NL_tointeger_T)GetProcAddress(mod,"NL_tointeger");
NL_pushinteger = (NL_pushinteger_T)GetProcAddress(mod,"NL_pushinteger");
FreeLibrary(mod);
//引数を2倍して返す
i = NL_tointeger(L,1);
NL_pushinteger(L,i *2);
return 1;
}
--system.lua
NL_bind("hoge.dll","hoge","hoge")
NSOkBox(tostring(hoge(4)),"test")
500名前は開発中のものです。
2016/10/05(水) 07:17:08.56ID:vPSjcoVf >>498-499
おおお動いた!ダメもとで聞いてみてよかった、ありがとうございますっ!
おおお動いた!ダメもとで聞いてみてよかった、ありがとうございますっ!
501名前は開発中のものです。
2016/11/04(金) 00:27:03.96ID:/KQPiDUz 1.20がリリースされて同梱のサンプルが動かせるようになってるね
1.11で再発したprintとtimeのバグも修正されたけど
tend
bdup
bjoiny
sdelete
clearmessage
sklppauseのバグは相変わらずかぁ・・・
1.11で再発したprintとtimeのバグも修正されたけど
tend
bdup
bjoiny
sdelete
clearmessage
sklppauseのバグは相変わらずかぁ・・・
502名前は開発中のものです。
2016/11/25(金) 12:18:57.64ID:sWcEnk2Q あどばんすどNscripterオフィシャルガイドの、セーブ、ロード画面のカスタマイズを参考に、セーブ、ロード画面をカスタマイズしたのですが、ロードすると、ゲーム画面ではなく、セーブ画面でロードされてしまいます 。
どのようにすれば、ゲーム画面でロードされるようになるのでしょうか?
どのようにすれば、ゲーム画面でロードされるようになるのでしょうか?
503名前は開発中のものです。
2016/11/25(金) 22:46:10.83ID:yC/lz6Qk 本が手元にないから分からないけど、とりあえず
*define節に
autosaveoff
を追加してみたらどうかしら?
*define節に
autosaveoff
を追加してみたらどうかしら?
504名前は開発中のものです。
2016/11/26(土) 00:00:05.95ID:66ydR4P1505名前は開発中のものです。
2016/11/30(水) 13:15:10.98ID:LfnZhDu1 セーブポイント周りの仕様は(太古の時代は知らんけど)基本互換性維持してきたNScripterの数少ない変更があった点だから本参考だと引っ掛かる
2.92以後対応の解説サイトならその辺も書いてくれてると思う
2.92以後対応の解説サイトならその辺も書いてくれてると思う
506名前は開発中のものです。
2017/01/09(月) 11:28:50.26ID:iggXj3Pm gettag命令では、文字列変数は取得できないのでしょうか。
mov $Name,
mov $Name,
507名前は開発中のものです。
2017/01/09(月) 11:43:16.28ID:iggXj3Pm 途切れて失礼しました、表示できない文字使ったのかも。
gettag $0 で、ブラケットで囲った$Nameを取得し、名前ウィンドウに表示しようとしても空白になってしまいます。分かる方、どうか返信お願いいたします。
gettag $0 で、ブラケットで囲った$Nameを取得し、名前ウィンドウに表示しようとしても空白になってしまいます。分かる方、どうか返信お願いいたします。
508名前は開発中のものです。
2017/01/09(月) 18:09:26.27ID:ywG/2S3b ・切れる文字列の例
・実際のコード
・実際のコード
509名前は開発中のものです。
2017/01/10(火) 05:39:33.41ID:sNJP6WMc [$Name]をgettag $varで拾うと空文字列になるね
>取得し、名前ウィンドウで表示
やるならこんな感じかな
*define
humanz 200
windowback
pretextgosub *pretext_lb
numalias Name,800
game
;続く
>取得し、名前ウィンドウで表示
やるならこんな感じかな
*define
humanz 200
windowback
pretextgosub *pretext_lb
numalias Name,800
game
;続く
510名前は開発中のものです。
2017/01/10(火) 05:40:24.83ID:sNJP6WMc *start
setwindow 32,320,28,20,26,26,0,2,20,1,1,#999999,0,300,639,479
inputstr $Name,"名前を入力してください(全角4文字以内)",8,1,240,120,128,30
[仮面のおっさん]
「ふふふ…
さらにできるようなったな、$Name!!」
\
[Name]
「親父にもぶたれたことないのにっ!!」
\
[text]
宇宙世紀0079、
人々はみずからの行為に恐怖した…。
\
end
*pretext_lb
gettag $500
if $500 == "" return
if $500 == "text" mov $500,""
if $500 == "Name" mov $500,$Name
lsp 10,":s#00FFFF"+$500,64,260
print 1
return
setwindow 32,320,28,20,26,26,0,2,20,1,1,#999999,0,300,639,479
inputstr $Name,"名前を入力してください(全角4文字以内)",8,1,240,120,128,30
[仮面のおっさん]
「ふふふ…
さらにできるようなったな、$Name!!」
\
[Name]
「親父にもぶたれたことないのにっ!!」
\
[text]
宇宙世紀0079、
人々はみずからの行為に恐怖した…。
\
end
*pretext_lb
gettag $500
if $500 == "" return
if $500 == "text" mov $500,""
if $500 == "Name" mov $500,$Name
lsp 10,":s#00FFFF"+$500,64,260
print 1
return
511名前は開発中のものです。
2017/01/11(水) 01:52:52.48ID:TZAgad9L512名前は開発中のものです。
2017/01/16(月) 06:04:15.87ID:nj83EOt6 命令の引数以外に書かれた$0や%0はだいたい中身に自動変換されると思って間違いない
513名前は開発中のものです。
2017/01/16(月) 22:28:04.88ID:2AWcRuBO 改めてテストしてみたけど
[$Name]をgettag $varすると、普通に"$Name"って文字列が帰ってくるね
lsp sp,":s#RRBBGG"+"$str",x,yが
lsp sp,":s#RRBBGG"+"",x,yと同じスプライト(width=1,heigh=fontの高さ)を生成するみたい
>509で空文字列っていうのは勘違いでした。
*define
pretextgosub *pre_txt_lb
numalias Name,100
game
*start
mov $Name,"あいうえお"
[$Name]
end
*pre_txt_lb
gettag $0
mesbox $0,"tag"
if $0 == "$Name" mov $0,$Name
mesbox $0,"$var"
return
[$Name]をgettag $varすると、普通に"$Name"って文字列が帰ってくるね
lsp sp,":s#RRBBGG"+"$str",x,yが
lsp sp,":s#RRBBGG"+"",x,yと同じスプライト(width=1,heigh=fontの高さ)を生成するみたい
>509で空文字列っていうのは勘違いでした。
*define
pretextgosub *pre_txt_lb
numalias Name,100
game
*start
mov $Name,"あいうえお"
[$Name]
end
*pre_txt_lb
gettag $0
mesbox $0,"tag"
if $0 == "$Name" mov $0,$Name
mesbox $0,"$var"
return
514名前は開発中のものです。
2017/01/29(日) 19:14:56.67ID:k6gD2cV+ LuaアリならNSCall_tag内で変換するといいかもしれんね
515名前は開発中のものです。
2017/03/03(金) 14:04:20.11ID:/5wdTSkq ろだです
アップローダのファイル倉庫にあるアーカイブですが、>>459問題により差し替えました(中身は一緒)
本スレへのリンクも後ほど更新いたします
長い間ほったらかしにしてしまいすみませんでした
また、ご指摘いただいた方々には重ねてお詫びを申し上げます
アップローダのファイル倉庫にあるアーカイブですが、>>459問題により差し替えました(中身は一緒)
本スレへのリンクも後ほど更新いたします
長い間ほったらかしにしてしまいすみませんでした
また、ご指摘いただいた方々には重ねてお詫びを申し上げます
516ろだ
2017/03/03(金) 19:10:57.96ID:D0vIifTb リンク修正しました
517名前は開発中のものです。
2017/03/04(土) 03:57:29.26ID:BlNMk/oC お疲れ様です
518名前は開発中のものです。
2017/03/06(月) 12:15:06.47ID:CwNFW8Kj なんかセーブするとsave1.ssっていうファイルが出来てるけどなんなんでしょうか
実態はスクリーンショットbmpみたいだけどスクショ系命令は使ってません
実態はスクリーンショットbmpみたいだけどスクショ系命令は使ってません
519名前は開発中のものです。
2017/03/06(月) 22:18:35.43ID:XazHrUeb520名前は開発中のものです。
2017/03/07(火) 21:07:10.19ID:venXESi6521名前は開発中のものです。
2017/03/07(火) 21:08:50.30ID:venXESi6 ちなみにほぼLuaで組んじゃってます
522518
2017/03/17(金) 14:01:39.41ID:EZUijqDG わかった!NSDCopyToBgやbgcopyを使うと.ssが一時作成されて、セーブ時にそれがそのまま残るみたいだ
以下は検証スクリプトなので、まずい所あれば指摘してもらえるとありがたいです
*define
game
*start
bgcopy
drawfill 255,0,128
draw
savegame 1
click
end
以下は検証スクリプトなので、まずい所あれば指摘してもらえるとありがたいです
*define
game
*start
bgcopy
drawfill 255,0,128
draw
savegame 1
click
end
523名前は開発中のものです。
2017/03/17(金) 22:17:32.04ID:n1ztOFiG 本当だね。うちの環境でもsave*.ssできました
bgcopyで編集したbgを、savegame時にsave*.ssに保存してるみたいだね
loadgame時に、save*.ssから読み込んでbgを復元させてるみたい
ver2.51からこの仕様になったみたいだね
;1:save*.ssできる
*start
bgcopy
savegame 10
click
end
;2:save*.ssできない
*start
bgcopy
click
end
;3:save*.ssできない
*start
bgcopy
bg #000000,1
savegame 10
click
end
bgcopyで編集したbgを、savegame時にsave*.ssに保存してるみたいだね
loadgame時に、save*.ssから読み込んでbgを復元させてるみたい
ver2.51からこの仕様になったみたいだね
;1:save*.ssできる
*start
bgcopy
savegame 10
click
end
;2:save*.ssできない
*start
bgcopy
click
end
;3:save*.ssできない
*start
bgcopy
bg #000000,1
savegame 10
click
end
524518
2017/03/18(土) 21:02:23.77ID:4e5QTXWB ありがとさんくす
仕様なら気にすることないですね
これでやっと先に進める……
仕様なら気にすることないですね
これでやっと先に進める……
525名前は開発中のものです。
2017/03/21(火) 00:46:14.18ID:kpuQAphR 長年使ってるのに知らんかった
526名前は開発中のものです。
2017/04/17(月) 19:42:02.42ID:8Pnq25O/ ろだが繋がらない状態が続いてるみたい?
ファイルが入用な方は直接こちらから飛んでください(すみません)
http://ux.getuploader.com/nsc_pub/
http://ux.getuploader.com/nsc_arc/ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
ファイルが入用な方は直接こちらから飛んでください(すみません)
http://ux.getuploader.com/nsc_pub/
http://ux.getuploader.com/nsc_arc/ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
527名前は開発中のものです。
2017/07/06(木) 19:17:21.49ID:zKaQ02ia textfield命令って、$0で取得することしかできないのでしょうか?
textfield $0,100,50,320,70,10,20,1
リファレンス通りに以上のように入力すれば機能しますが…
textfield $name,100,50,320,70,10,20,1
のように文字列変数を使用したり、
mov $0,$name
textfield $0,100,50,320,70,10,20,1
のように代入しておいたりすると機能しません
そんな事で使い物になる筈がないので
私がとんでもないみす勘違いをしているのかもしれませんが…
どなたか分かる方がいらっしゃったら助言下さるとありがたいです!
textfield $0,100,50,320,70,10,20,1
リファレンス通りに以上のように入力すれば機能しますが…
textfield $name,100,50,320,70,10,20,1
のように文字列変数を使用したり、
mov $0,$name
textfield $0,100,50,320,70,10,20,1
のように代入しておいたりすると機能しません
そんな事で使い物になる筈がないので
私がとんでもないみす勘違いをしているのかもしれませんが…
どなたか分かる方がいらっしゃったら助言下さるとありがたいです!
528名前は開発中のものです。
2017/07/06(木) 20:52:54.18ID:zKaQ02ia529名前は開発中のものです。
2017/07/06(木) 21:21:34.67ID:zKaQ02ia >>527
もう少し検証したところ、
$0なり$nameなりに全角文字列が入っていると機能しないようです
$nameに"name"を代入しておくと機能しました
しかしそれを使って"なまえ"と入力するとまた機能しなくなります…
そういう仕様なんでしょうか?
今回は諦めてinputを使おうと思いますが、
何か分かる方いらっしゃればコメント下さい…!
長々と一人で失礼しました
もう少し検証したところ、
$0なり$nameなりに全角文字列が入っていると機能しないようです
$nameに"name"を代入しておくと機能しました
しかしそれを使って"なまえ"と入力するとまた機能しなくなります…
そういう仕様なんでしょうか?
今回は諦めてinputを使おうと思いますが、
何か分かる方いらっしゃればコメント下さい…!
長々と一人で失礼しました
530名前は開発中のものです。
2017/07/07(金) 13:04:29.85ID:c5kdWwsJ これで動かない?
*define
numalias name,100
game
*start
mov $name,"あいうえお"
textfield $name,100,50,320,70,10,20,1
$name
click
end
*define
numalias name,100
game
*start
mov $name,"あいうえお"
textfield $name,100,50,320,70,10,20,1
$name
click
end
531名前は開発中のものです。
2017/07/07(金) 19:06:54.52ID:ll7Gp+TB >>530
返信ありがとうございます!
頂いたスクリプトのみで動かすと機能しました!
しかし自分のに組み込むと駄目なので検証してみたところ
btndown 1 が機能している事が原因だと判明いたしました!
クリックで飛んだ先でtextfield命令があるので、
そのせいでマウスを押し続けている間はテキストフィールドが開いているが
指を離すと消えてしまうという状態になっていました
飛んだ先でbtndown 0を入れてもclickなりを挟まないと解除はできないようなので
btndownを諦めるか何かをクリックさせるかで解決できそうです
確実に動くスクリプトを頂いた事で、色々検証できました!
本当にありがとうございました
返信ありがとうございます!
頂いたスクリプトのみで動かすと機能しました!
しかし自分のに組み込むと駄目なので検証してみたところ
btndown 1 が機能している事が原因だと判明いたしました!
クリックで飛んだ先でtextfield命令があるので、
そのせいでマウスを押し続けている間はテキストフィールドが開いているが
指を離すと消えてしまうという状態になっていました
飛んだ先でbtndown 0を入れてもclickなりを挟まないと解除はできないようなので
btndownを諦めるか何かをクリックさせるかで解決できそうです
確実に動くスクリプトを頂いた事で、色々検証できました!
本当にありがとうございました
532名前は開発中のものです。
2017/07/07(金) 19:14:18.67ID:ll7Gp+TB 連投すみません
clickさせなくてもprintを挟めば大丈夫でした
解決しました、ありがとうございました!
clickさせなくてもprintを挟めば大丈夫でした
解決しました、ありがとうございました!
533名前は開発中のものです。
2017/10/18(水) 09:38:49.19ID:r1NFbPlC function NSCOM_print()
local n=NSPopInt()
if(n==1)then
NSUpdate()
else
NSExec('_print '..n)
end
end
NSExec('luasub print')
ひょっとしてprint 1ならNSUpdateに投げる的な分岐作った方がluasubなしの_print 1直接呼ぶより僅かに動作早い?
local n=NSPopInt()
if(n==1)then
NSUpdate()
else
NSExec('_print '..n)
end
end
NSExec('luasub print')
ひょっとしてprint 1ならNSUpdateに投げる的な分岐作った方がluasubなしの_print 1直接呼ぶより僅かに動作早い?
534名前は開発中のものです。
2017/10/19(木) 22:24:45.45ID:26ONJpRU print 1よりNSUpdate()の方が速いか?って言う意味なら
有意な差はないんじゃない?
--system.lua
function NSCOM_invalidate()
NSInvalidate(0,0,639,479)
end
function NSCOM_update()
NSUpdate()
end
有意な差はないんじゃない?
--system.lua
function NSCOM_invalidate()
NSInvalidate(0,0,639,479)
end
function NSCOM_update()
NSUpdate()
end
535名前は開発中のものです。
2017/10/19(木) 22:27:02.63ID:26ONJpRU ;00.txt
*define
luasub invalidate
luasub update
game
*start
setwindow 8,16,22,23,22,22,0,2,20,1,1,#999999,0,0,639,479
lsp 10,":c;>640,480,#238c82",0,0,128
lsp 11,":c;>640,480,#234d8c",0,0,255
print 1
クリックしてね
\
3回計測しています
時間かかるので、そのままでお待ちください…
for %100=1 to 3
mov $0,"*update0"
gosub *test
mov %10,%0
mov $0,"*update1"
gosub *test
mov %11,%0
mov $0,"*update2"
gosub *test
mov %12,%0
%100回目:
画面更新なし :%10
NSUpdate:%11
Print 1 :%12
br
next
*define
luasub invalidate
luasub update
game
*start
setwindow 8,16,22,23,22,22,0,2,20,1,1,#999999,0,0,639,479
lsp 10,":c;>640,480,#238c82",0,0,128
lsp 11,":c;>640,480,#234d8c",0,0,255
print 1
クリックしてね
\
3回計測しています
時間かかるので、そのままでお待ちください…
for %100=1 to 3
mov $0,"*update0"
gosub *test
mov %10,%0
mov $0,"*update1"
gosub *test
mov %11,%0
mov $0,"*update2"
gosub *test
mov %12,%0
%100回目:
画面更新なし :%10
NSUpdate:%11
Print 1 :%12
br
next
536名前は開発中のものです。
2017/10/19(木) 22:27:59.74ID:26ONJpRU 計測終了です
click
end
*test
resettimer
for %0=1 to 50
invalidate
gosub $0
next
gettimer %0
return
*update0
return
*update1
update
return
*update2
print 1
return
click
end
*test
resettimer
for %0=1 to 50
invalidate
gosub $0
next
gettimer %0
return
*update0
return
*update1
update
return
*update2
print 1
return
537名前は開発中のものです。
2017/10/20(金) 07:37:01.70ID:HX7QfCAd ttps://ux.getuploader.com/nsc_pub/download/8
細かく試してみた。僅かにNSUpdate()呼びの方が軽くはなるみたいだけど…
その僅かな差が問題になるほど頻繁に画面更新するスクリプトならそもそもNSLuaとか使った方がよくない?
って感想かなあ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
細かく試してみた。僅かにNSUpdate()呼びの方が軽くはなるみたいだけど…
その僅かな差が問題になるほど頻繁に画面更新するスクリプトならそもそもNSLuaとか使った方がよくない?
って感想かなあ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
538名前は開発中のものです。
2017/11/03(金) 06:10:40.79ID:p91MeMc2 setlayerで指定する「レイヤー番号」ってそれ自体はスプライト番号とはまったく別枠なの?
lsp 10,"*1"
と書いて初めてスプライトと結び付く?
十年以上勘違いしてたぜ……
lsp 10,"*1"
と書いて初めてスプライトと結び付く?
十年以上勘違いしてたぜ……
539名前は開発中のものです。
2017/11/04(土) 00:16:47.85ID:5V+lm//F >setlayerで指定する「レイヤー番号」ってそれ自体はスプライト番号とはまったく別枠なの?
Yes
レイヤ番号とは、プラグイン(.dll)の登録番号です
レイヤプラグインは32個まで登録できます(0-31)
>lsp 10,"*1"
>と書いて初めてスプライトと結び付く?
Yes
プラグインのDraw()が呼び出されるようになります
たとえば
setlayer 1,30,"foo.dll"
lsp 10,"*1"
とすると
NScripterは画面更新時に
スプライト10番を描画するタイミングで
foo.dllのDraw()を呼び出します
foo.dllのDraw()で雪を描いたり、雨を描いたり、動画のフレームを描いたりするわけです
「lsp 10,"test.png",0,0」
のようにイメージを読み込んで表示するのに対して
こうしたやり方を「動的に画像を生成する」といいます
Yes
レイヤ番号とは、プラグイン(.dll)の登録番号です
レイヤプラグインは32個まで登録できます(0-31)
>lsp 10,"*1"
>と書いて初めてスプライトと結び付く?
Yes
プラグインのDraw()が呼び出されるようになります
たとえば
setlayer 1,30,"foo.dll"
lsp 10,"*1"
とすると
NScripterは画面更新時に
スプライト10番を描画するタイミングで
foo.dllのDraw()を呼び出します
foo.dllのDraw()で雪を描いたり、雨を描いたり、動画のフレームを描いたりするわけです
「lsp 10,"test.png",0,0」
のようにイメージを読み込んで表示するのに対して
こうしたやり方を「動的に画像を生成する」といいます
540名前は開発中のものです。
2017/12/10(日) 19:37:29.14ID:UmUCyanG 最終バージョンのエヌスクリプターで作成したゲームを知人のパソコンで開こうとすると、立ち上がって少しで「動作を停止しました」として落ちてしまうそうです。
自分の環境win7のパソコン二台で試しましたが問題なく進みます。
知人のパソコンは8のようなのですが、ファイルの共有のプロパティに問題があるのではという意見を受け、
手元で確認したところ互換性にチェックを入れる項目がありました。
が、試しに開いた他ソフトのプロパティには存在する「セキュリティ」という項目もそれらしく見えたのですが
エヌスクリプターのエンジンのプロパティにはそれが含まれていません。
知人に何度も試してもらうのも申し訳なく、共有の問題が本当に原因なのか、悩んでいます。
グーグルでも「落ちるときは最終バージョンのエンジンを使って」とまでしか言及が見つからず途方に暮れております。
似たような状況に陥った方はいらっしゃらないでしょうか?またこれと思われる原因は他にありますでしょうか?
自分の環境win7のパソコン二台で試しましたが問題なく進みます。
知人のパソコンは8のようなのですが、ファイルの共有のプロパティに問題があるのではという意見を受け、
手元で確認したところ互換性にチェックを入れる項目がありました。
が、試しに開いた他ソフトのプロパティには存在する「セキュリティ」という項目もそれらしく見えたのですが
エヌスクリプターのエンジンのプロパティにはそれが含まれていません。
知人に何度も試してもらうのも申し訳なく、共有の問題が本当に原因なのか、悩んでいます。
グーグルでも「落ちるときは最終バージョンのエンジンを使って」とまでしか言及が見つからず途方に暮れております。
似たような状況に陥った方はいらっしゃらないでしょうか?またこれと思われる原因は他にありますでしょうか?
541名前は開発中のものです。
2017/12/11(月) 23:27:41.25ID:O6qCUX1D 「Windows 動作を停止しました」でググるとNScripter以外でも検索に引っかかるね
Vista以降で極たまに発生することがあるみたい
たぶん、Windowsのよく分からん不具合の一つだと思う
OSをリカバリーすると改善したっていう書き込み見たけど
ちょっと試すのは面倒くさいよね…
Vista以降で極たまに発生することがあるみたい
たぶん、Windowsのよく分からん不具合の一つだと思う
OSをリカバリーすると改善したっていう書き込み見たけど
ちょっと試すのは面倒くさいよね…
542名前は開発中のものです。
2017/12/12(火) 09:25:05.11ID:yJi9OCvU543名前は開発中のものです。
2017/12/12(火) 12:35:12.70ID:sSgfdsGT544名前は開発中のものです。
2017/12/12(火) 12:37:07.72ID:sSgfdsGT コーディングが悪いんだろうけどパラメータに応じて分岐する馬鹿みたいな量のif文を書いてしまっているので
switch命令欲しい
switch命令欲しい
545名前は開発中のものです。
2017/12/12(火) 23:55:16.45ID:w7ET5Fhl >>544
tablegoto使うかtablegosub作って、switchの代用にするのもありかも
tablegosubはNScrでも作れるけど、制御文多用するならLuaの方がやりやすいかも
--system.lua
NL_dofile("sample.lua")
function NSCOM_tablegosub()
local t = NSPopStr()
NSPopComma()
local num = NSPopInt()
_G[t][num]()
end
--sample.lua
--パラメーター分岐による処理の中身
--テーブルを用意して、処理を記述していく
sample = {}
sample[1] = function()
NSOkBox("1","sample")
end
sample[2] = function()
NSOkBox("2","sample")
end
sample[15] = function()
NSOkBox("15","sample")
end
tablegoto使うかtablegosub作って、switchの代用にするのもありかも
tablegosubはNScrでも作れるけど、制御文多用するならLuaの方がやりやすいかも
--system.lua
NL_dofile("sample.lua")
function NSCOM_tablegosub()
local t = NSPopStr()
NSPopComma()
local num = NSPopInt()
_G[t][num]()
end
--sample.lua
--パラメーター分岐による処理の中身
--テーブルを用意して、処理を記述していく
sample = {}
sample[1] = function()
NSOkBox("1","sample")
end
sample[2] = function()
NSOkBox("2","sample")
end
sample[15] = function()
NSOkBox("15","sample")
end
546名前は開発中のものです。
2017/12/12(火) 23:55:56.15ID:w7ET5Fhl ;00.txt
*define
luasub tablegosub
game
*start
inputnum %0,"数値を入力して下さい(1,2,15)",160,96,64,24
;パラメーターによる分岐が一応実現できる
;tablegosub (Luaの)テーブル名,パラメーター
tablegosub "sample",%0
end
*define
luasub tablegosub
game
*start
inputnum %0,"数値を入力して下さい(1,2,15)",160,96,64,24
;パラメーターによる分岐が一応実現できる
;tablegosub (Luaの)テーブル名,パラメーター
tablegosub "sample",%0
end
547名前は開発中のものです。
2017/12/13(水) 12:12:03.31ID:GSr2gHnf548名前は開発中のものです。
2017/12/14(木) 23:50:07.80ID:oLSFdB/z549名前は開発中のものです。
2017/12/15(金) 22:13:00.59ID:QOTdCGH1 蛇足かもしれんけど、NScrでtablegosub作るとこんな感じになるよ
使い方:
tablegosub "*label_",10とすると
*label_10にgosubする
パラメーターが負の数の場合、正負反転して頭に"M"が付く
tablegosub "*label_",-15だと
*label_M15にgosubする
パラメーターに合致するラベルがない場合、
ラベル+"defalut"にgosubする
;00.txt
*define
defsub tablegosub
game
*start
inputnum %0,"数値を入力して下さい",160,96,64,24
tablegosub "*sample_",%0
end
使い方:
tablegosub "*label_",10とすると
*label_10にgosubする
パラメーターが負の数の場合、正負反転して頭に"M"が付く
tablegosub "*label_",-15だと
*label_M15にgosubする
パラメーターに合致するラベルがない場合、
ラベル+"defalut"にgosubする
;00.txt
*define
defsub tablegosub
game
*start
inputnum %0,"数値を入力して下さい",160,96,64,24
tablegosub "*sample_",%0
end
550名前は開発中のものです。
2017/12/15(金) 22:13:52.38ID:QOTdCGH1 *tablegosub
;[%0][$0,$1]を使用
getparam $0,%0
if %0>=0 itoa $1,%0
if %0<0 mul %0,-1:itoa $1,%0:mov $1,"M"+$1
mov $1,$0+$1
labelexist %0,$1
if %0==0 mov $1,$0+"default"
gosub $1
return
;[%0][$0,$1]を使用
getparam $0,%0
if %0>=0 itoa $1,%0
if %0<0 mul %0,-1:itoa $1,%0:mov $1,"M"+$1
mov $1,$0+$1
labelexist %0,$1
if %0==0 mov $1,$0+"default"
gosub $1
return
551名前は開発中のものです。
2017/12/15(金) 22:14:32.14ID:QOTdCGH1 ;テーブルの処理
*sample_0
mesbox "0","sample"
return
*sample_1
mesbox "1","sample"
return
*sample_2
mesbox "2","sample"
return
*sample_14
mesbox "14","sample"
return
*sample_M1;-1
mesbox "-1","sample"
return
*sample_M2;-2
mesbox "-2","sample"
return
*sample_M99;-99
mesbox "-99","sample"
return
*sample_default
mesbox "default","sample"
return
*sample_0
mesbox "0","sample"
return
*sample_1
mesbox "1","sample"
return
*sample_2
mesbox "2","sample"
return
*sample_14
mesbox "14","sample"
return
*sample_M1;-1
mesbox "-1","sample"
return
*sample_M2;-2
mesbox "-2","sample"
return
*sample_M99;-99
mesbox "-99","sample"
return
*sample_default
mesbox "default","sample"
return
552名前は開発中のものです。
2017/12/16(土) 23:10:17.17ID:82GyQIvB553名前は開発中のものです。
2017/12/31(日) 18:29:03.90ID:/rN76OKL 簡単にお金が稼げる方法興味ある人だけ見てください。
グーグル検索⇒『来島のモノノリウエ』
3YM4IMJTW8
グーグル検索⇒『来島のモノノリウエ』
3YM4IMJTW8
■ このスレッドは過去ログ倉庫に格納されています
