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/

512 :名前は開発中のものです。:2016/11/26(土) 00:00:05.95 ID:66ydR4P1.net
>>511
出来ました!
とても悩んでいたので助かりました。
ありがとうございました。

513 :名前は開発中のものです。:2016/11/30(水) 13:15:10.98 ID:LfnZhDu1.net
セーブポイント周りの仕様は(太古の時代は知らんけど)基本互換性維持してきたNScripterの数少ない変更があった点だから本参考だと引っ掛かる
2.92以後対応の解説サイトならその辺も書いてくれてると思う

514 :名前は開発中のものです。:2017/01/09(月) 11:28:50.26 ID:iggXj3Pm.net
gettag命令では、文字列変数は取得できないのでしょうか。
mov $Name,

515 :名前は開発中のものです。:2017/01/09(月) 11:43:16.28 ID:iggXj3Pm.net
途切れて失礼しました、表示できない文字使ったのかも。
gettag $0 で、ブラケットで囲った$Nameを取得し、名前ウィンドウに表示しようとしても空白になってしまいます。分かる方、どうか返信お願いいたします。

516 :名前は開発中のものです。:2017/01/09(月) 18:09:26.27 ID:ywG/2S3b.net
・切れる文字列の例
・実際のコード

517 :名前は開発中のものです。:2017/01/10(火) 05:39:33.41 ID:sNJP6WMc.net
[$Name]をgettag $varで拾うと空文字列になるね
>取得し、名前ウィンドウで表示
やるならこんな感じかな

*define
humanz 200
windowback
pretextgosub *pretext_lb
numalias Name,800
game
;続く

518 :名前は開発中のものです。:2017/01/10(火) 05:40:24.83 ID:sNJP6WMc.net
*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

519 :名前は開発中のものです。:2017/01/11(水) 01:52:52.48 ID:TZAgad9L.net
506です、返信気付かずお返事遅れてすみません!
>>516 言葉足らずですみませんでした>_<
>>517 すごい! 詳細な実例ありがとうございます!! 助かりました!

520 :名前は開発中のものです。:2017/01/16(月) 06:04:15.87 ID:nj83EOt6.net
命令の引数以外に書かれた$0や%0はだいたい中身に自動変換されると思って間違いない

521 :名前は開発中のものです。:2017/01/16(月) 22:28:04.88 ID:2AWcRuBO.net
改めてテストしてみたけど
[$Name]をgettag $varすると、普通に"$Name"って文字列が帰ってくるね

lsp sp,":s#RRBBGG"+"$str",x,yが
lsp sp,":s#RRBBGG"+"",x,yと同じスプライト(width=1,heigh=fontの高さ)を生成するみたい

>517で空文字列っていうのは勘違いでした。

*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

522 :名前は開発中のものです。:2017/01/29(日) 19:14:56.67 ID:k6gD2cV+.net
LuaアリならNSCall_tag内で変換するといいかもしれんね

523 :名前は開発中のものです。:2017/03/03(金) 14:04:20.11 ID:/5wdTSkq.net
ろだです
アップローダのファイル倉庫にあるアーカイブですが、>>466問題により差し替えました(中身は一緒)
本スレへのリンクも後ほど更新いたします

長い間ほったらかしにしてしまいすみませんでした
また、ご指摘いただいた方々には重ねてお詫びを申し上げます

524 :ろだ:2017/03/03(金) 19:10:57.96 ID:D0vIifTb.net
リンク修正しました

525 :名前は開発中のものです。:2017/03/04(土) 03:57:29.26 ID:BlNMk/oC.net
お疲れ様です

526 :名前は開発中のものです。:2017/03/06(月) 12:15:06.47 ID:CwNFW8Kj.net
なんかセーブするとsave1.ssっていうファイルが出来てるけどなんなんでしょうか
実態はスクリーンショットbmpみたいだけどスクショ系命令は使ってません

527 :名前は開発中のものです。:2017/03/06(月) 22:18:35.43 ID:XazHrUeb.net
>>526
自作のスクリプトの話?

このスクリプトで.ssってファイルできる?
*define
game
*start
くりっく
\
savegame 10
end

528 :名前は開発中のものです。:2017/03/07(火) 21:07:10.19 ID:venXESi6.net
>>527
自作のスクリプトの話です
>>527で.ssはできなかったから組み方の問題か……
かなり作りこんでるから原因究明に骨が折れそうだ

529 :名前は開発中のものです。:2017/03/07(火) 21:08:50.30 ID:venXESi6.net
ちなみにほぼLuaで組んじゃってます

530 :518:2017/03/17(金) 14:01:39.41 ID:EZUijqDG.net
わかった!NSDCopyToBgやbgcopyを使うと.ssが一時作成されて、セーブ時にそれがそのまま残るみたいだ
以下は検証スクリプトなので、まずい所あれば指摘してもらえるとありがたいです

*define
game

*start
bgcopy
drawfill 255,0,128
draw

savegame 1
click
end

531 :名前は開発中のものです。:2017/03/17(金) 22:17:32.04 ID:n1ztOFiG.net
本当だね。うちの環境でも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

532 :518:2017/03/18(土) 21:02:23.77 ID:4e5QTXWB.net
ありがとさんくす
仕様なら気にすることないですね
これでやっと先に進める……

533 :名前は開発中のものです。:2017/03/21(火) 00:46:14.18 ID:kpuQAphR.net
長年使ってるのに知らんかった

534 :名前は開発中のものです。:2017/04/17(月) 19:42:02.42 ID:8Pnq25O/.net
ろだが繋がらない状態が続いてるみたい?
ファイルが入用な方は直接こちらから飛んでください(すみません)
http://ux.getuploader.com/nsc_pub/
http://ux.getuploader.com/nsc_arc/ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)


535 :名前は開発中のものです。:2017/07/06(木) 19:17:21.49 ID:zKaQ02ia.net
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
のように代入しておいたりすると機能しません

そんな事で使い物になる筈がないので
私がとんでもないみす勘違いをしているのかもしれませんが…
どなたか分かる方がいらっしゃったら助言下さるとありがたいです!

536 :名前は開発中のものです。:2017/07/06(木) 20:52:54.18 ID:zKaQ02ia.net
>>535 一行目 $0で取得することしかできないのでしょうか?

「$0でしか」取得することしかできないのでしょうか?
の間違いでしたすみません

537 :名前は開発中のものです。:2017/07/06(木) 21:21:34.67 ID:zKaQ02ia.net
>>535
もう少し検証したところ、
$0なり$nameなりに全角文字列が入っていると機能しないようです
$nameに"name"を代入しておくと機能しました

しかしそれを使って"なまえ"と入力するとまた機能しなくなります…
そういう仕様なんでしょうか?
今回は諦めてinputを使おうと思いますが、
何か分かる方いらっしゃればコメント下さい…!

長々と一人で失礼しました

538 :名前は開発中のものです。:2017/07/07(金) 13:04:29.85 ID:c5kdWwsJ.net
これで動かない?

*define
numalias name,100
game
*start
mov $name,"あいうえお"
textfield $name,100,50,320,70,10,20,1
$name
click
end

539 :名前は開発中のものです。:2017/07/07(金) 19:06:54.52 ID:ll7Gp+TB.net
>>538
返信ありがとうございます!
頂いたスクリプトのみで動かすと機能しました!
しかし自分のに組み込むと駄目なので検証してみたところ
btndown 1 が機能している事が原因だと判明いたしました!

クリックで飛んだ先でtextfield命令があるので、
そのせいでマウスを押し続けている間はテキストフィールドが開いているが
指を離すと消えてしまうという状態になっていました

飛んだ先でbtndown 0を入れてもclickなりを挟まないと解除はできないようなので
btndownを諦めるか何かをクリックさせるかで解決できそうです

確実に動くスクリプトを頂いた事で、色々検証できました!
本当にありがとうございました

540 :名前は開発中のものです。:2017/07/07(金) 19:14:18.67 ID:ll7Gp+TB.net
連投すみません
clickさせなくてもprintを挟めば大丈夫でした
解決しました、ありがとうございました!

541 :名前は開発中のものです。:2017/10/18(水) 09:38:49.19 ID:r1NFbPlC.net
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直接呼ぶより僅かに動作早い?

542 :名前は開発中のものです。:2017/10/19(木) 22:24:45.45 ID:26ONJpRU.net
print 1よりNSUpdate()の方が速いか?って言う意味なら
有意な差はないんじゃない?

--system.lua
function NSCOM_invalidate()
NSInvalidate(0,0,639,479)
end
function NSCOM_update()
NSUpdate()
end

543 :名前は開発中のものです。:2017/10/19(木) 22:27:02.63 ID:26ONJpRU.net
;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,488,#238c82",0,0,128
lsp 11,":c;>640,488,#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

544 :名前は開発中のものです。:2017/10/19(木) 22:27:59.74 ID:26ONJpRU.net
計測終了です
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

545 :名前は開発中のものです。:2017/10/20(金) 07:37:01.70 ID:HX7QfCAd.net
ttps://ux.getuploader.com/nsc_pub/download/8
細かく試してみた。僅かにNSUpdate()呼びの方が軽くはなるみたいだけど…
その僅かな差が問題になるほど頻繁に画面更新するスクリプトならそもそもNSLuaとか使った方がよくない?
って感想かなあ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)


546 :名前は開発中のものです。:2017/11/03(金) 06:10:40.79 ID:p91MeMc2.net
setlayerで指定する「レイヤー番号」ってそれ自体はスプライト番号とはまったく別枠なの?
lsp 10,"*1"
と書いて初めてスプライトと結び付く?
十年以上勘違いしてたぜ……

547 :名前は開発中のものです。:2017/11/04(土) 00:16:47.85 ID:5V+lm//F.net
>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」
のようにイメージを読み込んで表示するのに対して
こうしたやり方を「動的に画像を生成する」といいます

548 :名前は開発中のものです。:2017/12/10(日) 19:37:29.14 ID:UmUCyanG.net
最終バージョンのエヌスクリプターで作成したゲームを知人のパソコンで開こうとすると、立ち上がって少しで「動作を停止しました」として落ちてしまうそうです。
自分の環境win7のパソコン二台で試しましたが問題なく進みます。
知人のパソコンは8のようなのですが、ファイルの共有のプロパティに問題があるのではという意見を受け、
手元で確認したところ互換性にチェックを入れる項目がありました。
が、試しに開いた他ソフトのプロパティには存在する「セキュリティ」という項目もそれらしく見えたのですが
エヌスクリプターのエンジンのプロパティにはそれが含まれていません。
知人に何度も試してもらうのも申し訳なく、共有の問題が本当に原因なのか、悩んでいます。
グーグルでも「落ちるときは最終バージョンのエンジンを使って」とまでしか言及が見つからず途方に暮れております。
似たような状況に陥った方はいらっしゃらないでしょうか?またこれと思われる原因は他にありますでしょうか?

549 :名前は開発中のものです。:2017/12/11(月) 23:27:41.25 ID:O6qCUX1D.net
「Windows 動作を停止しました」でググるとNScripter以外でも検索に引っかかるね
Vista以降で極たまに発生することがあるみたい
たぶん、Windowsのよく分からん不具合の一つだと思う

OSをリカバリーすると改善したっていう書き込み見たけど
ちょっと試すのは面倒くさいよね…

550 :名前は開発中のものです。:2017/12/12(火) 09:25:05.11 ID:yJi9OCvU.net
>>548
自分もwin8.1で、いろんな所のNスク製ゲームやってるけど落ちた事はないよ
一応、互換性は右クリック→互換性のトラブルシューティングで変更できるみたい
もう試してたらゴメン

551 :名前は開発中のものです。:2017/12/12(火) 12:35:12.70 ID:sSgfdsGT.net
>>548 >>549 >>550
配布したゲームのプレイヤーの何人かからWin8以降の環境でゲームを起動したら
上手く動作しなかったという連絡もらったけど
その後OSを再起動したら問題なく動いたらしい

552 :名前は開発中のものです。:2017/12/12(火) 12:37:07.72 ID:sSgfdsGT.net
コーディングが悪いんだろうけどパラメータに応じて分岐する馬鹿みたいな量のif文を書いてしまっているので
switch命令欲しい

553 :名前は開発中のものです。:2017/12/12(火) 23:55:16.45 ID:w7ET5Fhl.net
>>552
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

554 :名前は開発中のものです。:2017/12/12(火) 23:55:56.15 ID:w7ET5Fhl.net
;00.txt
*define
luasub tablegosub
game
*start
inputnum %0,"数値を入力して下さい(1,2,15)",160,96,64,24

;パラメーターによる分岐が一応実現できる
;tablegosub (Luaの)テーブル名,パラメーター
tablegosub "sample",%0

end

555 :名前は開発中のものです。:2017/12/13(水) 12:12:03.31 ID:GSr2gHnf.net
>>551.541.542
再起動とソフトの入れ直しで解決したようです 手元で現象が確認できずあくまでも「したようだ」とのことなのがもどかしいですが
ありがとうございました

556 :名前は開発中のものです。:2017/12/14(木) 23:50:07.80 ID:oLSFdB/z.net
>>553-554
tablegoto命令の存在を知らなかった…
ありがとう!Lua難しそうだけどやっぱり使えないと駄目だなあ

557 :名前は開発中のものです。:2017/12/15(金) 22:13:00.59 ID:QOTdCGH1.net
蛇足かもしれんけど、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

558 :名前は開発中のものです。:2017/12/15(金) 22:13:52.38 ID:QOTdCGH1.net
*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

559 :名前は開発中のものです。:2017/12/15(金) 22:14:32.14 ID:QOTdCGH1.net
;テーブルの処理
*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

560 :名前は開発中のものです。:2017/12/16(土) 23:10:17.17 ID:82GyQIvB.net
>>557-559
すごく詳しいサンプルありがとうございます
これを参考に今日明日がんばってみます

561 :名前は開発中のものです。:2017/12/31(日) 18:29:03.90 ID:/rN76OKL.net
簡単にお金が稼げる方法興味ある人だけ見てください。

グーグル検索⇒『来島のモノノリウエ』

3YM4IMJTW8

総レス数 561
191 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★