X



NScripter Ver.19.00
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。垢版2014/01/30(木) 22:41:08.23ID:BRbRh5DC
商業流通でなければフリーで利用可能な
ゲームエンジンNScripterについて語るスレです。

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

・うpろだ
ttp://nscuploader.wkeya.com/
0503名前は開発中のものです。垢版2016/11/25(金) 22:46:10.83ID:yC/lz6Qk
本が手元にないから分からないけど、とりあえず
*define節に
autosaveoff
を追加してみたらどうかしら?
0505名前は開発中のものです。垢版2016/11/30(水) 13:15:10.98ID:LfnZhDu1
セーブポイント周りの仕様は(太古の時代は知らんけど)基本互換性維持してきたNScripterの数少ない変更があった点だから本参考だと引っ掛かる
2.92以後対応の解説サイトならその辺も書いてくれてると思う
0507名前は開発中のものです。垢版2017/01/09(月) 11:43:16.28ID:iggXj3Pm
途切れて失礼しました、表示できない文字使ったのかも。
gettag $0 で、ブラケットで囲った$Nameを取得し、名前ウィンドウに表示しようとしても空白になってしまいます。分かる方、どうか返信お願いいたします。
0509名前は開発中のものです。垢版2017/01/10(火) 05:39:33.41ID:sNJP6WMc
[$Name]をgettag $varで拾うと空文字列になるね
>取得し、名前ウィンドウで表示
やるならこんな感じかな

*define
humanz 200
windowback
pretextgosub *pretext_lb
numalias Name,800
game
;続く
0510名前は開発中のものです。垢版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
0511名前は開発中のものです。垢版2017/01/11(水) 01:52:52.48ID:TZAgad9L
506です、返信気付かずお返事遅れてすみません!
>>508 言葉足らずですみませんでした>_<
>>509 すごい! 詳細な実例ありがとうございます!! 助かりました!
0513名前は開発中のものです。垢版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
0515名前は開発中のものです。垢版2017/03/03(金) 14:04:20.11ID:/5wdTSkq
ろだです
アップローダのファイル倉庫にあるアーカイブですが、>>459問題により差し替えました(中身は一緒)
本スレへのリンクも後ほど更新いたします

長い間ほったらかしにしてしまいすみませんでした
また、ご指摘いただいた方々には重ねてお詫びを申し上げます
0516ろだ垢版2017/03/03(金) 19:10:57.96ID:D0vIifTb
リンク修正しました
0518名前は開発中のものです。垢版2017/03/06(月) 12:15:06.47ID:CwNFW8Kj
なんかセーブするとsave1.ssっていうファイルが出来てるけどなんなんでしょうか
実態はスクリーンショットbmpみたいだけどスクショ系命令は使ってません
0520名前は開発中のものです。垢版2017/03/07(火) 21:07:10.19ID:venXESi6
>>519
自作のスクリプトの話です
>>519で.ssはできなかったから組み方の問題か……
かなり作りこんでるから原因究明に骨が折れそうだ
0522518垢版2017/03/17(金) 14:01:39.41ID:EZUijqDG
わかった!NSDCopyToBgやbgcopyを使うと.ssが一時作成されて、セーブ時にそれがそのまま残るみたいだ
以下は検証スクリプトなので、まずい所あれば指摘してもらえるとありがたいです

*define
game

*start
bgcopy
drawfill 255,0,128
draw

savegame 1
click
end
0523名前は開発中のものです。垢版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
0524518垢版2017/03/18(土) 21:02:23.77ID:4e5QTXWB
ありがとさんくす
仕様なら気にすることないですね
これでやっと先に進める……
0527名前は開発中のものです。垢版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
のように代入しておいたりすると機能しません

そんな事で使い物になる筈がないので
私がとんでもないみす勘違いをしているのかもしれませんが…
どなたか分かる方がいらっしゃったら助言下さるとありがたいです!
0528名前は開発中のものです。垢版2017/07/06(木) 20:52:54.18ID:zKaQ02ia
>>527 一行目 $0で取得することしかできないのでしょうか?

「$0でしか」取得することしかできないのでしょうか?
の間違いでしたすみません
0529名前は開発中のものです。垢版2017/07/06(木) 21:21:34.67ID:zKaQ02ia
>>527
もう少し検証したところ、
$0なり$nameなりに全角文字列が入っていると機能しないようです
$nameに"name"を代入しておくと機能しました

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

長々と一人で失礼しました
0530名前は開発中のものです。垢版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
0531名前は開発中のものです。垢版2017/07/07(金) 19:06:54.52ID:ll7Gp+TB
>>530
返信ありがとうございます!
頂いたスクリプトのみで動かすと機能しました!
しかし自分のに組み込むと駄目なので検証してみたところ
btndown 1 が機能している事が原因だと判明いたしました!

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

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

確実に動くスクリプトを頂いた事で、色々検証できました!
本当にありがとうございました
0532名前は開発中のものです。垢版2017/07/07(金) 19:14:18.67ID:ll7Gp+TB
連投すみません
clickさせなくてもprintを挟めば大丈夫でした
解決しました、ありがとうございました!
0533名前は開発中のものです。垢版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直接呼ぶより僅かに動作早い?
0534名前は開発中のものです。垢版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
0535名前は開発中のものです。垢版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
0536名前は開発中のものです。垢版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
0537名前は開発中のものです。垢版2017/10/20(金) 07:37:01.70ID:HX7QfCAd
ttps://ux.getuploader.com/nsc_pub/download/8
細かく試してみた。僅かにNSUpdate()呼びの方が軽くはなるみたいだけど…
その僅かな差が問題になるほど頻繁に画面更新するスクリプトならそもそもNSLuaとか使った方がよくない?
って感想かなあ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
0538名前は開発中のものです。垢版2017/11/03(金) 06:10:40.79ID:p91MeMc2
setlayerで指定する「レイヤー番号」ってそれ自体はスプライト番号とはまったく別枠なの?
lsp 10,"*1"
と書いて初めてスプライトと結び付く?
十年以上勘違いしてたぜ……
0539名前は開発中のものです。垢版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」
のようにイメージを読み込んで表示するのに対して
こうしたやり方を「動的に画像を生成する」といいます
0540名前は開発中のものです。垢版2017/12/10(日) 19:37:29.14ID:UmUCyanG
最終バージョンのエヌスクリプターで作成したゲームを知人のパソコンで開こうとすると、立ち上がって少しで「動作を停止しました」として落ちてしまうそうです。
自分の環境win7のパソコン二台で試しましたが問題なく進みます。
知人のパソコンは8のようなのですが、ファイルの共有のプロパティに問題があるのではという意見を受け、
手元で確認したところ互換性にチェックを入れる項目がありました。
が、試しに開いた他ソフトのプロパティには存在する「セキュリティ」という項目もそれらしく見えたのですが
エヌスクリプターのエンジンのプロパティにはそれが含まれていません。
知人に何度も試してもらうのも申し訳なく、共有の問題が本当に原因なのか、悩んでいます。
グーグルでも「落ちるときは最終バージョンのエンジンを使って」とまでしか言及が見つからず途方に暮れております。
似たような状況に陥った方はいらっしゃらないでしょうか?またこれと思われる原因は他にありますでしょうか?
0541名前は開発中のものです。垢版2017/12/11(月) 23:27:41.25ID:O6qCUX1D
「Windows 動作を停止しました」でググるとNScripter以外でも検索に引っかかるね
Vista以降で極たまに発生することがあるみたい
たぶん、Windowsのよく分からん不具合の一つだと思う

OSをリカバリーすると改善したっていう書き込み見たけど
ちょっと試すのは面倒くさいよね…
0542名前は開発中のものです。垢版2017/12/12(火) 09:25:05.11ID:yJi9OCvU
>>540
自分もwin8.1で、いろんな所のNスク製ゲームやってるけど落ちた事はないよ
一応、互換性は右クリック→互換性のトラブルシューティングで変更できるみたい
もう試してたらゴメン
0543名前は開発中のものです。垢版2017/12/12(火) 12:35:12.70ID:sSgfdsGT
>>540 >>541 >>542
配布したゲームのプレイヤーの何人かからWin8以降の環境でゲームを起動したら
上手く動作しなかったという連絡もらったけど
その後OSを再起動したら問題なく動いたらしい
0544名前は開発中のものです。垢版2017/12/12(火) 12:37:07.72ID:sSgfdsGT
コーディングが悪いんだろうけどパラメータに応じて分岐する馬鹿みたいな量のif文を書いてしまっているので
switch命令欲しい
0545名前は開発中のものです。垢版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
0546名前は開発中のものです。垢版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
0547名前は開発中のものです。垢版2017/12/13(水) 12:12:03.31ID:GSr2gHnf
>>543.541.542
再起動とソフトの入れ直しで解決したようです 手元で現象が確認できずあくまでも「したようだ」とのことなのがもどかしいですが
ありがとうございました
0549名前は開発中のものです。垢版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
0550名前は開発中のものです。垢版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
0551名前は開発中のものです。垢版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
0552名前は開発中のものです。垢版2017/12/16(土) 23:10:17.17ID:82GyQIvB
>>549-551
すごく詳しいサンプルありがとうございます
これを参考に今日明日がんばってみます
0553名前は開発中のものです。垢版2017/12/31(日) 18:29:03.90ID:/rN76OKL
簡単にお金が稼げる方法興味ある人だけ見てください。

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

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

ニューススポーツなんでも実況