NScripter Ver.19.00
■ このスレッドは過去ログ倉庫に格納されています
商業流通でなければフリーで利用可能な ゲームエンジンNScripterについて語るスレです。 ・本家 ttp://www.nscripter.com/ ・うpろだ ttp://nscuploader.wkeya.com/ ・関連書籍 ・Nscripterオフィシャルガイド 改訂版 だれでもかんたん!ノベルゲームのつくりかた(※絶版) ttp://www.shuwasystem.co.jp/products/7980html/1852.html ttp://www.7netshopping.jp/books/detail/?accd=32002490 ttp://www.amazon.co.jp/exec/obidos/ASIN/479801852X/ ・あどばんすどNScripterオフィシャルガイド(※絶版) ttp://www.shuwasystem.co.jp/products/7980html/1104.html ttp://www.7netshopping.jp/books/detail/-/isbn/4798011045 ttp://www.amazon.co.jp/exec/obidos/ASIN/4798011045/ ※サポート情報あり。(サンプルダウンロード・正誤表) ttp://www.shuwasystem.co.jp/books/7980/1104-5/1104-5.html ・Nscripterではじめる ノベルゲーム制作 ttp://w3.shinkigensha.co.jp/books/4-7753-0496-8.html ttp://www.amazon.co.jp/exec/obidos/ASIN/4775304968/ ・Tips、解説、サンプル掲載サイト(1/2) NScripter Scripting Factory ttp://senzogawa.s90.xrea.com/ (リファレンス,FAQ,サンプル,ツール) 【NScripter−Tips】 ttp://sorejyadamedarou.sakura.ne.jp/nscripter/ (リンク集,Tips) SGP -Sphere Game Production- ※リンク切れ ttp://sgp.ivory.ne.jp/game/ (FAQ,Tips) Free Adventure Game World ttp://ryuji.s1.xrea.com/ (解説 − 初心者向け) 花鳥風月 ttp://autumoon.s35.xrea.com/ (解説 − 初心者向け) ・Tips、解説、サンプル掲載サイト(2/2) Binary Heaven ミラーサイト ttp://sorejyadamedarou.sakura.ne.jp/o_show/ (解説 − 初心者から中級者向け) nscr ※リンク切れ ttp://f39.aaa.livedoor.jp/~nscr/ (解説 − カスタマイズ − システム化) 國杜舗 ttp://www.interq.or.jp/earth/msym/ (サンプル − カスタマイズ − 演出追加,機能実装) 〜貴史たま+MEのHP〜 ttp://takasi.mydns.jp/takasi/ (サンプル − カスタマイズ − システム化 − wiki) without limit ttp://floralia.sakura.ne.jp/ (サンプル − カスタマイズ − システム化) ・スレタイ名称で過去ログ検索を行う場合のキーワード群 NScripter NScritper ・このスレで復号の話題を禁止している理由について 個々で作成した作品の著作権を侵害させない為の配慮として 解析ツールへの直リンクは行っておりません。 ・Nscripter以外のノベルツールに関する話題は、ここでは歓迎されません。 ・作成中のスクリプトを晒さなくて済むような技術的な話題については 最初にTips、解説、サンプル掲載サイトで解決可能であるかをご確認下さい。 ・また、ノベルツールの比較検討や論議については、下記のスレで行って下さい。 (但し、特定のノベルツールを叩く為のスレではありません) ノベルツール選考スレ 4th KIND http://toro.2ch.net/test/read.cgi/gamedev/1329043965/ ノベルツール選考スレ 3rd STRIKE (4th KINDの前スレ) http://hibari.2ch.net/test/read.cgi/gamedev/1145204843/ ノベルツール選考スレXP (3rd STRIKEの前スレ) http://pc8.2ch.net/test/read.cgi/gamedev/1083482407/ ・ゲーム製作板のローカルルール(一部抜粋) 扱う話題 ・プログラム、グラフィックス、サウンド、デザイン論などをゲーム製作の視点から ・ツール(HSP、ツクール等)についての話題 ・ゲームの共同製作やプロジェクト活動 禁止事項 単発質問スレ、単発依頼(「〜作って」)スレ、 個人叩き(個人に対する誹謗中傷)、ツール叩き(具体性のない批判) ・ローカルルールで板違いの話題に指定されている項目の内 このスレで抵触する可能性の高い項目について。 ・市販ゲームの質問や感想 このスレの場合、単なる板違いのみでは無く、複号ネタに繋がり易いです。 ・違法性を含む話題 ONScripterによる多種ハードウェア対応化の話題はお控え下さい。 このスレでの今までの判定結果は、限りなく黒に近い灰色です。 ・その他 ・ここは同人ゲーム板ではありません。(ローカルルールそのものが異なります) ・同人サークル活動に関する話題は、同人ゲーム板等でお願いします。 ・名無しでない同人サークルメンバーとしての書き込みはお控え下さい。 ・このスレでゲームの共同製作やプロジェクト活動の宣伝はお控え下さい。 ・不快な発言を見掛けても落ち着いてスルーして下さい。 <荒らし、煽り、晒しはマターリ放置で> ・彼らは放置が一番キライ ・彼らは常に誰かの反応を待っています ・彼らは煽りや自作自演であなたの反応を誘います ・彼らは華麗にスルーして自然消滅させましょう スレ立て人からのお知らせ ・うpろだのリンク表記を現行のurlに変更しました。 ・今回のリンク切れは表記の抹消では無く、リンク切れ表記の付加で対処しました。(今回のみの予定) ・本家からNScripterサポートBBSが無くなっていた為、テンプレを一部変更しました。 お知らせの追加 ・関連書籍の絶版表記の付加 関連書籍の追加候補 ノベルゲームのシナリオ作成技法 第2版(※絶版) ttp://www.shuwasystem.co.jp/products/7980html/2120.html ttp://www.7netshopping.jp/books/detail/-/accd/1102642651/subno/1 ttp://www.amazon.co.jp/exec/obidos/ASIN/4798021202/ >>8 ONScripterに違法性が在る根拠を教えて下さい 人の作ったものを勝手にコピーしてばらまく事に違法性がないと考える人ですか? >>13 フルスクラッチのプログラムが違法の根拠を教えて下さい linuxも違法なんですか? Windowsをフルスクラッチしてばらまいてみたらわかるんじゃない? スレを荒れさせない方便だよ そんな心配しなくても今や過疎スレだがな それって、古い商業ゲーのコンバートが流行ってた時代の名残でしょ。 商業の新作がNScrで出てる時期なら必要だったと思うけど 今じゃもうテンプレからその文面削っていいと思うけどね。 それより前スレ埋めようず 新作の有無は関係なくて、NSc製の商業タイトルが存在している限り 基本的に変わらないことだと思ってるよ。 もはや版権品のコンバートじゃなくて、 スマホ向けのオリジナルもの開発エンジンとして定着してんじゃんあれ 意味わからんのは なんで、自分が作ったのをそのツールで動かしても 犯罪者呼ばわりされなきゃいけないのかってことだ 例えば>>20 みたいなやつは ONScripterという違法ツールを使ってノベルゲーを公開してる作者を犯罪者呼ばわりしてるわけだ 違法ツール認定するってことは利用者を犯罪者呼ばわりするのと同じだからな それをわかっててエンジン利用者を排斥してるのわかってんのかね? 俺が疑問を持ってるのはそこだな 作品制作者を犯罪者呼ばわりするコミュニティって終わってんなってこと ONScripterが違法って言うより、 >・Nscripter以外のノベルツールに関する話題は、ここでは歓迎されません。 こちらに引っかかってると考えたほうがいいんじゃない? ONScripterは、文法的にはほとんど本家と同じだけど、 未対応の命令もあるし、微妙に動作が違う部分もあったりする。 質問者がONScripterを使っていることを明かさずに 話を進めていたりすると、本家しか使っていない人と 食い違いが出たりしそうだしね。 ONScripterについての話題を扱いたいなら、 専用のスレを立てるしかないのかも。 ・ONSという「ツール」 …… 合法 ├・他人の著作物のコンバート「行為」 …… 禁止されてる └・オリジナルゲームを作成する「行為」 …… 合法 例えONScripterを使う目的がオリジナルのタイトル製作であっても NScripterとの互換性が付いて回る性質上一緒くたに扱うのは無理。 それでもONScripterに拘るのであればさっさと別スレ立てるのがおすすめ。 >>24 ONScというツールの生まれが 「商業ゲームを勝手移植で携帯機でプレイ」なんだから仕方がない 容認してスマホ板から 「○○ってゲーム動かないんだけどどうやるの?」 って勘違い野郎に住み着かれて荒らされる自体を想定するなら 高橋直樹製でない無許可の互換ツールの除外は至極当たり前だろう 定期的に湧いてONScの話したいってgdgd暴れることこれからもするんだったら うっとおしいだけなんで別スレ立ててそっちで好きなだけONScの話しなよ どっちかつーと互換ツールなんかよりもNスク2の関心あるし Nスク2そろそろ来そうで楽しみだわ やっと袋文字が使えるようになるのか… 質問スレじゃないとは思うんですが・・・ テキストウィンドウにフリー素材を使おうとして setwindow 30,356,22,4,20,20,0,0,20,1,1,":a;画像名.jpg",30,300 とやっても画面の真ん中あたりで画像が切れてしまいます。 元画像のサイズをいろいろいじってみたんですが、切れてしまうか大きく はみだすかのどちらかで・・・。 同じ状況から解決した方、方法を教えていただければ・・・。 >>32 できました!ありがとうございます! 言われてみれば「c」でよかったんですね・・・ 初心者で、フリーノベルゲー製作中なので 良ゲー作ってご恩を返せたらと思います >>25 ,28 ここをスマホ板のヘルプ出張所に使おうにも質問内容と実際の動作が噛み合わなくてバレるね。 この板にONScスレを立てるとしてもスレの利用希望者はどれだけ居るのかなー? このスレの住民としてはONScスレにノータッチのまま今まで通りにマターリ進行して行くと思うよ。 今までどおりONScripter利用者は犯罪者として糾弾していきます といった荒らしの余地すら生むから話題そのものが非推奨なのよ、最初に質問した人分かってくれただろうか ONScスレが立ってから、ここの住人に絡みたいだけの人の仕業だったと判明されそうな流れっぽいね。 でも、それがそのまま未だにゲ製板にONScスレが立たない理由になっていると思うよ。 テンプレでONScripter利用者は犯罪者だと認定しているので このスレそのものがONScripterを糾弾する含みがある isdownとかcheckkeyみたいに 軽快に右クリックの押下状態を取得する方法ってないんだっけ? luaでよければNSGetClick()があるね 例としてはこんな感じで --system.lua rbutton = 0 function NSCOM_isrdown() local l,r,w,ld,rd = NSGetClick() if rd then rbutton = 1 end if r then rbutton = 0 end NSSetIntValue(NSPopIntRef(),rbutton) end >>44 の続き ;00.txt ;右クリック中は「0」を出力し続け、離すと改行して止まり、左クリックすると終了する。 *define luasub isrdown ;isrdown %var ;右ボタン押下中なら1、離してたら0を返す game *start *loop isdown %0 if %0=1 end isrdown %1 if %1=1 gosub *onrclick wait 2 goto *loop *onrclick *onrclick_loop isrdown %1 if %1=1 puttext "0/":wait 2:goto *onrclick_loop puttext "" return luaで44の参考にやったらできました!! 使ってみたらいい感じ。 そうだよこの早さが欲しかったんだよぉぉぉおおお(´;ω;`) ちょいとばかしlua勉強するわ。 ものによるんじゃね、どうせ勢いもあんまりないし書くだけ書いてみなされ NS2の質問で、質問は2つなんだけど、 ・立ち絵やその他スプライトを拡大縮小する事は出来るのか? ・立ち絵のアニメーションはできるのか? 最初のはリファレンスに命令が記載されてないけど これって拡大縮小はできないって事なのかな 二番目はspの引数にanimtimeを設定してセルに複数の画像を記述すれば アニメーションというか、簡単な画像の切り替えは出来るんだけど やりたいのはそういうのじゃなくて、例えば立ち絵を画面右側から左側に スーッと移動させるとか、画面上から下になんかのスプライト画像を落とすとか そういうアニメーションのやり方が分からない ここ数ヶ月全く触ってないけど、 自分はNS2で拡大縮小アニメーションや移動アニメーションなんかを弄ってました。 RESETTIMER と GETTIMER を利用して指定したミリ秒での操作を。 それと do と loop を利用して、その秒数の間だけ SPMOVELT を使ってアニメーションを行わせる、みたいな感じです。 >>51 レスありがとうございます。 resettimerとgettimerは拡大縮小の関係で使うという事でしょうか? ちょっと全く取っ掛かりが分からなくて・・・。 できればサブルーチンの例なんかご教授いただけると分かりやすのですが・・・ ループさせてspmoveのx値を1F単位で動かすのは考えて 実際にやってみたのですが、上手く行きませんでした 作ったループとspmoveを組合わせた処理は <01.txtに> defsub spmove_loop,"S" ;演出 - 立ち絵動かす用(左から右に移動) @spmove_loop param %name ;カウンタクリア %cnt = 0 ;ループ@▼開始 @spmove_loop2 if %cnt < 1000 then spmove %name,0+%cnt,0 %cnt = %cnt+1 ;デバッグ ;cprint %cnt ;ループ@▲終わり goto @spmove_loop2 else spdelete %name return <02.txtに> spmove_loop "CHR1" ;ループして動かすテスト として、中央の立ち絵を左から右にスーッと動かす 処理を実現したかったのですが、なぜか立ち絵が消えてしまいます spmove_loopのcnt変数内はcprintで確認して 任意の数字が代入されている事は確認できていますが スプライト自体がどう動いているのかよく分かりません 画面的にはspmove_loopを実行した途端立ち絵が消えてしまうので ミスの指摘ややり方などご教授お願いします 今すぐの動作は確認してないけど、自分が実際に使っていたものをちょっと弄ってはっつけて見ます lceffect "キャラクタ名",1 とか lceffect "キャラクタ名",2 とかで動くと思います lceffect が気軽に呼び出して使うメインのサブルーチン。パラメータが多く見えるのは削り残しです。 lcanimation は、 lceffect の中でのみ呼ばれるもっと細かい挙動をつかさどるサブルーチン (シナリオ上からは呼ばない) ; ニックネーム,エフェクトタイプ,画像中心からのX位置,画像中心からのY位置,サイズ @lceffect ; CTRL押されていれば処理しない if getskip() == 1 or 0<>GETKEY("CTRL") then return end if param %nick,%type,%xpos,%ypos,%size if %nick == #NIL or %nick == "" then OKBOX "立ち絵命令文のニックネームが不正です" , "lc命令文エラー" %spname = "character:" + %nick ; ★スプライトセット系。各自対応を getspinfo %spname , %spinfo if ISDEF(%spinfo.cx) == 1 and ISDEF(%spinfo.cy) == 1then ; ほしい情報がちゃんと定義されてる?(存在する?) if %type == 4 then lcanimation %spname,(%spinfo.cx+5),%spinfo.cy,0,60 lcanimation %spname,(%spinfo.cx-7),%spinfo.cy,0,60 lcanimation %spname,(%spinfo.cx+10),%spinfo.cy,0,60 lcanimation %spname,(%spinfo.cx-7),%spinfo.cy,0,60 lcanimation %spname,(%spinfo.cx+5),%spinfo.cy,0,60 lcanimation %spname,(%spinfo.cx),%spinfo.cy,0,60 elseif %type == 5 then lcanimation %spname,%spinfo.cx,%spinfo.cy-20,0,40 lcanimation %spname,%spinfo.cx,%spinfo.cy-40,0,40 lcanimation %spname,%spinfo.cx,%spinfo.cy-30,0,40 lcanimation %spname,%spinfo.cx,%spinfo.cy,0,30 end if end if end if return ; 立ち絵を動かすサブルーチンで呼ばれるサブルーチン。弄るのは・・・X,Y座標関係と傾きのみ? @lcanimation param %spname,%to.cx,%to.cy,%to.rot,%time ; SP "window:linebreak",{name={%ld1 , %ld2 , %ld1 , %ld2 , %ld1},xs=%size,ys=%size,cx=(%send_cx+%xpos),cy=(%send_cy+%ypos),animtime=100,animtype="round"} GETSPINFO %spname,%from ; CPRINT %from.cx ;----------------- ; %from から %to の値に %time掛けて 移行させる処理 ;------------------ RESETTIMER ;---- 時間処理開始 do %nowtime=GETTIMER() ;---- 経過時間取得 if %nowtime > %time then exit ;---- 経過時間が超過したらloopを抜ける end if ;---- 全体の何割経過したかを %parcentへ算出 %parcent = %nowtime / %time %now.cx = %from.cx - ((%from.cx - %to.cx) * %parcent) %now.cy = %from.cy - ((%from.cy - %to.cy) * %parcent) %now.rot = %from.rot - ((%from.rot - %to.rot) * %parcent) ; CPRINT "%parcent:"+STR(%parcent)+" / %now.cx:"+STR(%now.cx)+" / %now.cy:"+STR(%now.cy)+" / %now.rot:"+STR(%now.rot) SPMOVELT %spname,%now.cx,%now.cy, %from.xs , %from.ys , %now.rot , 255 print #C loop ; 【※】loop抜け@一番最後の処理で最終目標の to 値で表示させる。 cx,cyだけは中心位置が変更しないので、そもそもtoが存在しない SPMOVELT %spname, %to.cx , %to.cy , %from.xs , %from.ys , %from.rot , 255 print #C return レスありがとうございます。 取り急ぎお礼レスだけ書き込ませて頂きます。 これからよく内容読んで解析してみます >58 それで、すみません、 >>55-57 は拡大縮小のアニメーション処理は行っていないです 立ち絵をブルブル震わせたり、ジャンプぽい動きをさせたりだけで済ませるための命令として用意したので.. 概念としては >>57 の @lcanimation 内にある RESETTIMER do loop あたりに囲まれている処理をなんとなく読み解けば、応用できるのではないかと思います。 >>50 NScr2は触ってないので的外れだったらごめん 質問1 spにxsとxyに実数で指定すると拡大縮小します。 ただし、座標指定をスプライトの中心座標のcx,cyで指定しないと無効化されます 例: sp "CHR1",{name="test.png",cx=100,cy=100,xs=2.4,ys=0.5} 横2.4倍、縦0.5倍で表示されます sp "CHR1",{name="test.png",x=100,y=100,xs=2.4,ys=0.5,rot=45} 座標をx,yで指定しているので、xs,ys,rotの指定は無視されます 質問2 print文がないので画面が更新されていないだけだと思います 画面が更新されないまま、ループをぬけてspdeleteでスプライトが消えてるのではないかと あとループ処理中はなるべくsleepかwait系の命令をはさんでおいた方が良いかと思います >>61 xsとかysは知りませんでした・・・ basic命令テキストでグレップしたら確かに見つかりました sはscaleのsですかね 今までx,y,zしか使った事ないので、cx、cyも知りませんでした。 cxやxsの詳しい説明がNS2はリファレンスに記載ないので(だから現状NS2はβ版らしいですが) >あとループ処理中はなるべくsleepかwait系の命令をはさんでおいた方が良いかと思います なるほど これは多分、waitしないと1F枚に実行されて速度が早過ぎる、 処理が重くなるあたりの理由っぽいですね NS2はまだ個人ブログなどでの情報も少なく、手がかりがほぼ公式リファレンスだけで、 初心者の私には少々手厳しかったので非常に参考になりました。 ありがとうございました ・立ち絵である某さんを、1000ミリ秒(1秒)かけて、x100から x200へ移動させたい ・まずは RESETTIMER さんと GETTIMER さんの力を借りる 1000ミリ秒経過するまでは、ずっとループし続ける枠組みを作ります ; ▼ここから RESETTIMER do %nowtime=GETTIMER() ; loopでやり直されるたびに何秒経ったか常に数える if %nowtime > %time then ; パラメータで送られた 1000ミリ秒 になれば、loopを抜ける。逆に言えば時間になるまでは繰り返す exit ; 時間になるまでこのifの中は処理されません。 exit されません。 end if ; このあたりに、スプライトを描画させる処理を組む ; 例えば、500ミリ秒経過していれば、 1000ミリ秒でx100からx200への移動を行う過程で、 ; x150の座標を描画してあげればOK ; 200ミリ秒経過していれば、200と100の移動距離の差である 100 を、 1000ミリ秒 ÷ 200ミリ秒 = 1/5 もとい 20% にする ; 最初の位置 x100 + 移動距離 100 の 20% を足す → x120で某さん描画 みたいな感じ。 loop ; doに戻れ (exit でのみ loppをすり抜けられる) ; ここに、最終描画 (x200へ移動しきった) を行う処理。 ; ここに達しているという事は、 地獄の 1000ミリ秒 loop 工程を無事クリアしたという事 ; ▲ここまで 自分が >>57 で書いたのは、多分こんな感じになっています。 sleepとかwait入れてないや・・・(;゚ω゚) 大丈夫かしら >>63 ありがとうございます。 まだ内容解析できてないませんが、参考にさせて頂きます >>65 すみません、忘れていました・・・。 あともう一つ、教えていただきたいというかお聞きしたいのですが 今ノベルゲームを作っています そこで、私は「スプライト名」、「変数名」の2つを一覧.txtというファイルを作り そこで一覧化して管理する事にしました 例) フラグ名:%flag (内容 ON:1 OFF:0) 設定契機:@game_start、@event_1 解除契機:@ending、@test2 とかこういうのを一覧化しているんですが、こういうのはゲームを一本作るにあたって やった方がいいのでしょうか?それともやる必要はないのでしょうか? また、私は現在「スプライト名」、「変数名」について一覧化していますが この2つ以外にも一覧化すべき(または、した方が便利)なものがあれば ご教授頂けますでしょうか? >>66 横だけど > やった方がいいのでしょうか?それともやる必要はないのでしょうか? 最初にかっちり計画を立てて一気に組み上げるほうが向いてる人もいるし、逆に計画ばかり作りこみすぎてそれで満足しちゃう人もいるし こればっかりは好き好きだけど、画像とかの素材(手間がかかるもの)は最初に作っておいたほうがいいと思う でも、どんな出来でもいいからとにかく完成させることがすごーく大事だよ > この2つ以外にも一覧化すべき(または、した方が便利)なものがあれば やるんならラベル名、音楽、効果音あたりもかなー あとちょっとずれるけど、よく使う色もメモに書くなりライブラリとしてまとめるなりすると便利 >>67 確かに、ラベル名は一覧化しておいた方がよさそうですね ありがとうございます。 Nscripter始めて2日目の者ですが、ググったけど解らないんで教えて下さい。 音声のセリフと文字のセリフを同時に表示させて進めるアドベンチャーゲーム作ろうとしてるんですが オートで進める場合はどうやるんでしょうか? メニューのとこのオートモードを使うと音声が終わる前にどんどん先に行ってしまいます。 @を使わずに音声再生が終わったら次の音声に自動で行くにはどうしたら良いのでしょう? ageなくてええよ なんだっけ音声いれたことないからわかんないけど ファイルごとに長さ設定しておけばいいんじゃね? そうなんですか、それを全てのセリフで設定するのは面倒くさいですね…… >>69 これで上手くいかない? *define game *start テストスタート \ dwave 0,"test.ogg";適当な音声ファイル用意してね♪ あ \ い \ う \ end dwaveの詳しい仕様は NScripter Scripting Factory ttp://senzogawa.s90.xrea.com/ が参考になると思います 他にも Binary Heaven ミラーサイト ttp://sorejyadamedarou.sakura.ne.jp/o_show/ 【NScripter−Tips】 ttp://sorejyadamedarou.sakura.ne.jp/nscripter/ なども初心者には参考になるかと思います >>72 出来ました!マジ感謝です。有難うございますm(__)m 今までbgmやmp3でコールしてたのが出来ない原因なのかな? 3日目にして少し前進できそうです。 >>66 ttp://sorejyadamedarou.sakura.ne.jp/nscripter/tip04.htm#TIP1 ここの印刷して管理してるわ。 モニタと手元の紙別であると早い。 ラベル名は必要なくね? システム書いてる時なんて、コード見てコピペすればいいし。 シナリオ中なんてそれこそ用事ない気がする。 >>75 確かにそうですね NS2なんで分岐はselectですが@ラベルの飛び先を 一覧化しとけばいいかなと思ったんですが、飛び先は必ず単一だし そんなのファイル検索すればすぐ見つかるし、一覧化なんて逆に 手間かかるだけですね 一覧化の有用性は制作期間によるな 短期でサラッと作るのなら不必要だけど 2〜3年とか長期の見込みで作る気なら 覚えてて当然ってのも細かくメモしてる方が 製作からしばらく距離おいてド忘れした時に役立つ >>77 今作ってるのは短期なんですが、私はそもそもはじめたばかりですし 将来大きなウェイトのものを作る予定があるので、簡単なやり方じゃなく 大きな物作るときのやり方に慣れておきたいので短期の制作物でも 一覧化しました あとNS2ですが、selectやwait、clickなどの標準命令は大文字小文字 どちらでも機能しますが、命令の記述は大文字と小文字どっち使った方がいい とかありますか? 今は命令は全部小文字使ってます もしくは、この命令は小文字、この命令は大文字とか使い分けすると 便利、みたいな事ってありますか? 本体に付属されてるマニュアル命令郡の書き方に従って使った方がいい 命令覚える方はそれに合わせて記憶するのが自然だと思うから 初代Nスクでの話になるけど 以前、大文字で全部書かれたスクリプトに出会ったことあるけど 見慣れない書き方だから瞬時に判別できなくて読みづらくて仕方なかったよ >>79 アドバイスありがとうございます。 >>56 あたりでアドバイスして頂いた時とか、getspinfoは小文字、 ISDEFは大文字など混ざってるので、なんかの法則に従って 使い分けてるのかなと思ったんで聞いてみました 命令の大文字小文字はどちらかに統一した方がよさそうですね ただ、リファレンスは大文字なんですが、私は小文字で統一しちゃってます 大文字にした方がいいんだろうか・・・ でもNS2は今ベータ版という事で今後リファレンスが大きく 変わることもあるだろうし、とりあえず、様子見してみます すみません、あとひとつあるのですが、 未クリアの場合を0、クリアしたら1を立てて 1(クリア済み)なら背景を変えるとか、クリアしたかしてないかで 処理を変える事をやっています 結果から言えば出来たのですが、strsaveとstrloadを使いました そのファイルに初期値0を書き込み、クリアしたらstrsaveで0以外を書き込み、 その後、クリアしたか判別したい箇所手前でそのファイルをstrloadで 読みに行って、0以外(クリア済みフラグ)があれば、専用処理をする、としました リファレンスを見た限り、クリア判別に使えそうなのがこのファイルへの書き出し、 読み込みしかなかった(私として思い付かなかった)のでstrsave/strloadを使いましたが 通常の変数(ローカルでもグローバルでも)だけでクリア判別って不可能ですよね? 1:まずクリアフラグ用の変数を「_」で始まる変数で用意します 仮に「_flag00」としてみます 2:「最小規模システム」のサンプルを例にすると、 00.txtの@first_settings以下に次の一文を追加します _flag00 = 0 3:savedataフォルダの中身を全部消しておきます 以上でたぶん期待した動作になると思います >>82 >_で始まる変数はシステム変数です。どこからでもアクセスできます。 >セーブファイル単位ではなくエンジン単位で保存されるので、クリアフラグやコンフィグ設定等に使ってください。 すみません、上記のような説明がtxtに書いてありました。 試すのはこれからですが、とりあえずお礼レスだけさせて頂きます ありがとうございました。 NS2関係の質問している者ですが、もうちょっと質問しても大丈夫でしょうか・・・? タイトル画面に音楽室を表示して、BGM聞けるヤツがサウンドノベルには よくあると思いますが、それを実装しました。機能的には問題ありません。 そこで次に、今再生中の曲名を表示する機能を実装しようと思って やってみたのですが、上手くいきません。 もう10時間くらい悩んでいます 大した処理じゃない気がするんですが・・・なぜか上手くいきません。 ↓がソースです (02.txtの@title下に) ; 音楽室 ------------------- @soundroom bgmstop ;念のため spset "soundroom",100 sp "soundroom:back",{name="stages\soundroom.jpg",x=0,y=0,z=100} sp "soundroom:bar",{name="bar\soundroom_bar.png",x=0,y=460,z=99,a=160} sp "soundroom:s1",{name={"?曲1,menu3","?曲1,menu4"},x=120,y=340,z=0} (中略。曲2、曲3と続くだけです) sp "soundroom:s96",{name={"?再生中タイトル:,menu4","?再生中タイトル:,menu4"},x=50,y=480,z=0} sp "soundroom:s99",{name={"?停止,menu3","?停止,menu4"},x=710,y=530,z=0} btnclear "soundroom" btn "soundroom:s1" btn "soundroom:s96" btn "soundroom:s99" ↑の続き @soundroom_lp %retvolume = getbgmvolume() ;BGMボリューム取得(音楽室終了時ボリューム戻し用) %nowplay = 0 ;プレイ中曲判定フラグ ; 再生中タイトルのフォントを定義 spset "soundtitle",100 sp "soundtitle:none",{name={"?NONE,menu4"},x=270,y=480,z=0} sp "soundtitle:t1",{name={"?曲1,menu4"},x=270,y=480,z=0} (中略。曲2、曲3と続くだけです) spsetvisible "soundtitle",0 @soundroom_lp2 %nowvolume = getbgmvolume() ;BGMボリューム取得(音楽室内でのボリューム調整用) ;最低(最大)ボリュームを下回(上回)らないよう抑止 if %nowvolume > 0 then %nowvolume = 0 elseif %nowvolume < -10000 then %nowvolume = -10000 endif ↑の続き ; ボタン判定 ; %nowplayを判定し、押した曲がすでに再生中の場合は再度再生はしないよう抑止する btnexec %ret, "soundroom" ★ if %ret == "s1" and %nowplay <> 1 then spsetvisible "soundtitle",0 : spvisible "soundtitle:t1",1 : %nowplay = 1 : bgmfadeout 200 : wait 200,0 : bgmplay "sound\曲1.ogg" (中略。曲2、曲3と続くだけです) ★ if %ret == #R then spsetvisible "soundtitle",0 : spvisible "soundtitle:none",1 : bgmstop : bgmvolume %retvolume : spsetdelete "soundroom" : print #c : goto @title goto @soundroom_lp2 return ;音楽室ここまで ★の部分 ここがそれぞれの曲名をクリックした時に入るルートですが、 ここにcprint置くとちゃんと入る事は確認できています 曲2をクリックすれば曲2に、曲5をクリックすれば曲5に、右クリック時は#Rルートに ちゃんと入るのですが、spestvisible〜の処理が明らかにスルーされてるようなのですが 原因が全く理解できません デバッグエラーも出ないので記述ミスもないと思います。 spset "soundtitle",100 sp "soundtitle:none",{name={"?NONE,menu4"},x=270,y=480,z=0} ↑の2行だけを@game_start以降に置くとちゃんと表示されるのでスプライトも正常に生成されているはずです spsetvisible "soundtitle",0を削除しても表示されません z軸を疑いましたが、背景画像などを全部消しても表示されませんでした 何かヒント頂けないでしょうか・・・? >>87 1:spsetvisibleは「スプライトセット」の表示状態を変える命令です スプライトセットの中のスプライトの表示状態を一括で変更する命令ではないです 2:スプライトの状態を変更した後は、print #Cなどで画面に反映させましょう %ret=="s1"の場合、printで反映されずにループの頭(@soundroom_lp2)に戻ってます たぶん、こんなんではないかと NScripter標準のショートカットキー一覧ってどっかで確認できる? >>89 >1:spsetvisibleは「スプライトセット」の表示状態を変える命令です >スプライトセットの中のスプライトの表示状態を一括で変更する命令ではないです でも結果的には一括で変更しているように思えるのですが・・・ デフォルト(サンプル)のタイトル画面なんかがそのような動作をしている認識なのですが・・・ 試しに文章中で可視不可視を切り替えてみましたが、 spset "st",100 sp "st:a",{name={省略} sp "st:b",{name={省略} spsetvisible "st",0 文章1 spsetvisible "st",1 (★st1:1とst:bが両方表示される) 文章2 spsetvisible "st",0 (★st1:1とst:bが両方消去される) という結果になります 確かに「スプライトの可視状態を変更している」のではなく、「スプライトセットの可視状態を変更している」 のは分かっているつもりですが、結果としてはスプライトセットが内包しているスプライトの可視状態が一括で 変更されている(ように見える)という事ですよね? あと気づいたんですが、上記のようなスプライトを一つの画面に表示させるのではない処理って スプライトセットに纏めず、スプライト単位で(spsetを使わずspのみで)記述した方がいいのでしょうか? >>90 「D」「N」「Alt+Enter」くらいじゃね? >>92 Alt押したら突然処理止まって驚いたんだがごめん、俺の早とちりだったわ 右Altで止まるのってWindows側の機能なのね >>93 左右alt関係なく、Windowsの基本操作 アクティブウィンドウのメニュー操作をキーボードでするためのものだからNスク関係ないね もちろんメニューが無いdeletemenu時は機能しない >>94 Windows何年も使ってるのに今まで知らんかった…… 計測していたタイマーが停止分を考慮してくれずに悩んでいたんだけど、NSTimer()の後にNSDoEvents()持ってきたら上手いこと動いたわ >>91 >87のspsetvisible "soundtitle",0 : spvisible "soundtitle:t1",1 の部分がスプライトの表示フラグを全部クリアして、soundtitle:t1の表示フラグを 立てるに見えたのよ 「スプライトセット」は中身のスプライトとは独立した表示フラグを持っていて 両者の組み合わせでスプライトが画面に表示されたりされなかったりするのよ サンプル用意してみたから、よければ試してみて sp "background",{name="*800,600,#FF000000",x=0,y=0,z=0} FONT "st_a",{name="MS ゴシック",color=#FF0000FF,width=24,height=32} FONT "st_b",{name="MS ゴシック",color=#FF00FF00,width=24,height=32} spset "st",100 sp "st:a",{name="?スプライトst:a,st_a",x=128,y=32,z=0} sp "st:b",{name="?スプライトst:b,st_b",x=384,y=32,z=0} スタート スプライトst:aを非表示状態にします spvisible "st:a",0 [スプライトセット]を非表示状態にします spsetvisible "st",0 スプライトst:aを表示状態にします spvisible "st:a",1 スプライトst:aを表示状態にしました スプライトst:bを一度非表示状態にします spvisible "st:b",0 [スプライトセット]を表示状態にします spsetvisible "st",1 [スプライトセット]を表示状態にしました スプライトst:bを表示状態にします spvisible "st:b",1 以上です。\nお疲れ様でした。 quit >>96 すごく分かりやすいサンプル、ありがとうございます。 理解できたと思います。 spsetvisible "soundtitle",0 : spvisible "soundtitle:t1",1 ↑これって要するに、spvisibleでスプライトだけ可視にしても 直前で属しているspsetを不可視にしているからスプライト"soundtitle:t1"も 不可視のままだったんですね >>96 で言う13行目と同じ状態ですよね それを踏まえたうえで修正して、表示自体はできました。 スマートではない気がしますが、普通にsp単位で可視不可視を切り替えるようにしました ↓続きます ただ、今度はz軸の疑問が出てきてz軸は0〜100で 0が最も手前だという認識です 77と76では76が手前に表示されますよね? 例えば、z=77が文字でz=76が背景だと、文字は背景に隠れて 見えなくなると思います ですが、 spset "soundroom",100 sp "soundroom:back",{name="stages\rmenu_bg.jpg",x=0,y=0,z=100} ;背景です sp "soundroom:bar",{name="bar\soundroom_bar.png",x=0,y=460,z=99,a=160} ;背景の手前に表示する棒(バー) spset "st",99 ;スプライトセットとしても上記のセット"soundroom"より手前にしているはずなのですが sp "st_none",{name={"?---,menu4"},x=270,y=480,z=0} ;これを上記背景jpgより手前にしたい sp "st_t1",{name={"?灰色の思考,menu4"},x=270,y=480,z=0} ;これを上記背景jpgより手前にしたい としても、"soundroom:back"が"st_none"や"st_t1"より手前に表示されてしまい "st_none"や"st_t1"が見えなくなってしまいます これってz軸の認識おかしいですか? 単純に数値が0に近い方が手前に表示される、という認識なのですが・・・ 軸には正負あるから単純に大きい方が上なのではないかと試さずにエスパー sp "soundroom:back",{name="stages\rmenu_bg.jpg",x=0,y=0,z=100} ;背景です sp "soundroom:bar",{name="bar\soundroom_bar.png",x=0,y=460,z=99,a=160} ;背景の手前に表示する棒(バー) ↑これのz値を上下で交換して、背景のz値を99、棒(バー)のz値を100にすると 棒(バー)が背景に隠れて見えなくなるのでz値は数値が小さい方が手前、というのは 間違いないはずです。リファレンスにも書いてありました。 オートモードにして話を読み進めていって選択のところで選ぶ際に2回クリックをしないといけなくなります。 2回クリックして他のラベルに飛んだ時にはオートモードは解除されています。 これをオートモード状態で選択したあともオートモード状態が解除されない様にするにはどうしたらいいでしょうか? 選択肢前にオート状態チェック オートならフラグ立てる 選択肢を選ばせる 選択肢後にフラグ立ってたらオート命令を実行させる フラグはリセットさせる >>102 ありがとうございます しかし先週Nscripter始めたばかりでまだ良くわかってません。 もし良かったらもう少し具体的にお願いできないでしょうかm(__)m シスカマのソース内容を読んで理解できる程度のスキルを積む 変数の扱い方覚える 即物的に知っても意味無いから使い始めるなら 基礎は身に付けたほうがいい そうすれば>>102 が具体的な対処法を示してると分かるよ もっと簡単に考えてました。 102さんの言ってることは薄っすら分かるんですが、まさかシスカマまでいくとなると今の僕では出来なかもorz シスカマした方が楽だが、別になくてもできる。 select命令の前の行でisskipするだけで状態取得できる。 selectで飛んだラベルの先で判断してオートさせれ。 レス下さった皆さん、有難うございます。 isskipで何とかなりそうです。 まだNスク一週間未満でシスカマは座敷が高いけど頑張ってみます。 >>98 これだと"st_noe"と"st_t1"は スプライトセット名=""、スプライトセットのz値=10000のスプライトになってるね スプライトの名前を"st:none"、"st:t1"にすれば期待した動作になると思うよ >>109 本当にすみません・・・全く気付きませんでした・・・ 修正したら期待した動作になりました。 ありがとうございました。 >>109 あれ・・すみません、よく見たら >z値=10000のスプライトになってるね とありますが、この10000というのはどこから出てきた数値なんでしょうか? もしかしてスプライトのz値は属しているスプライトセットがあれば スプライトセットのz値xスプライトのz値なのか?と思って spset "gra",100 sp "gra:1",{name={"?テキスト,menu3","?テキスト,menu4"},x=350,y=530,z=8} spset "sa",99 sp "sa:1",{name="a\test.png",x=300,y=0,z=10} とやってみましたが、"sa:1"が"gra:1"より手前に表示されました これってもしかして、スプライトセットのz値が高い(上の例で言うとspset"gra")ものに 属しているスプライト(上の例だと"gra:1")は、それよりz値が低いスプライトセットが 属しているスプライト(上の例だと"sa:1")より手前には表示できないのでしょうか? つまり、セットが属しているスプライト自体のz値は、同じz値を持つスプライトセット間でのみ 意味があるような動作をしているように見えるのですが つまり上記の"gra:1"というスプライトを"sa:1"より手前に表示させるには"gra:1"を"gra"という スプライトセットから外すしかないんでしょうか? なんかz値って単に0に近ければ手前にくるだけのものって言っても spとspsetのネスト関係があるせいで思ったより複雑な動きしててよく分からなくなってきました sp z値 nscripter2とかでググっても何も出てきませんでした・・・ >>111 スプライトは必ずスプライトセットに所属します 明示的にスプライトセットを指定しない場合、スプライトセット名""のスプライトセットに自動で編入されます スプラトセット""のz値はデフォルトでは、10000に設定されています スプライトセットはz値にしたがってソートされます 数値の小さいほうが上で、数値の大きいほうが下になります スプライトのz値は、所属するスプライトセットの中でのみ有効です つまり、スプライトはスプライトセットを跨いだり飛び越えたりはしません 例: spsetz "a",100 spz "a:a01",200 spz "a:a02",201 spsetz "b",101 spz "b:b01",10 spz "b:b02",11 spz "c01",1 とした場合 ----"a"=100---- a:a01=200 a:a02=201 ----"b"=101---- b:b01=10 b:b02=11 ----""=10000---- c01=1 のように配置されます マニュアル「NScripter2BASIC命令・関数表.txt」が参考になると思います アンドロイドの実機でプレイした時に出る左端の右クリック、左クリック などのツールバーはどうすれば消せますか? >>112 ありがとうございます。 ちょっと今出張中なので試せないので、また触れるようになったら 試してみます bgmの音量を変えようとして bgm "bgm\xxx.ogg":bgmvol 30,50 って入力したら 次の文章に,50が出てくるようになってしまったんだが、 ,50を消すにはどうすればいいんでしょうか。 ていうかその50はなんなの? bgmvol に指定できるパラメータはボリューム値ひとつだけじゃないの。 vipで企画モノやってましたが、ポシャりそうなのでさっきテスト版的なのを アップしてきました ttp://iup.2ch-library.com/i/i1158160-1395674092.png ここで解決できなければこのような作りは出来ない箇所が多々ありました。 スペシャルサンクスにこのスレを挙げさせて頂きました(まだ完成してないですけど) >>112 すみません、あと一つ質問なのですが、ボタンの上にカーソルを置いた時にSEを 鳴らしたいのですが、エラーが出てエンジンが落ちます リファレンスを見るとボタンにカーソルが乗った時に音を鳴らすには BTN "sp4",{on="P(sp1,0)P(sp2,1)"} on="スプライト操作文字列" ボタンにカーソルが重なったときに実行する処理を指定します。 "S(test.ogg)" そのサウンドを再生します。 とあります。 つまり btn "test",{on="S(sound\test.ogg)"} とすればいい認識なのですが ↓続きます sp "title:start",{省略} btnclear "title" btn "title:start",{on="S=(sound\test.ogg)"} ;ボタン判定 btnexec %ret,"title" とすると、btnexecの箇所でエラーが出てNS2が落ちます。 しかもなぜか、たまにエラーが出ないケースもありました(セーブデータを消したりしてると)。 ただ、どちらのケースでも鳴らしたいSEは鳴りませんでした この理由が分かりません btn "title:start",{on="S=(sound\test.ogg)"} ↑この記述が間違っているとしか考えられないんですが リファレンス通りに書いてるつもりなんですが、どこかおかしい所ってありますか? あ、すまん2か 音鳴らす箇所削った状態では正常動作してる? >>118 これはバグっぽいね 応急処置でよければ、「system.lua」の2346〜2348行付近の (1) btn_f.btnse:stop() を basic_func.SESTOP(15) --btn_f.btnse:stop() に (2) btn_f.btnse:play{name=prm} を basic_func.SEPLAY(15,prm) --btn_f.btnse:play{name=prm} に の2ヶ所を置き換えれば音が鳴るようになります (SEの15chをボタン音用に割り当ててます) あと一応 >118の S=(sound\test.ogg)は構文エラーで、エラー吐かないけど音でないです >117の S(sound\test.ogg)こっち正解です >>120 レスありがとうございます。 exec削ったら普通に動作しますね・・・ >>121 レスありがとうございます。 >記述ミス すみません、ミスです 両方試しましたが、S(sound\test.ogg)だと強制終了しました 強制終了しなかったのは間違えて=付けてたせいでした 混乱させるようなレスすみませんでした これって公式にメールでフィードバックした方がいいですよね? >>123 >これって公式にメールでフィードバックした方がいいですよね? ですねえ 正式公開版を待ってもいい気もするけど お手数でなければ123さん、公式へ報告お願いしますm(_ _)m >>124 了解しました。 メールを送ってみます。 ありがとうございました。 >>124 さっきメール来てsystem.luaの修正が完了したので更新ました、との事です 導入してみると確かに修正されていて、ちゃんとSEがなるようになっていました ただボリューム値が_sevolではなく、独自で存在しているようで 同じファイルでもボタンSEと通常のseplayでは3倍ほど違ってしまいちょっと使いづらいので >>124 さんの内容で修正したsystem.luaの方に戻してしまいましたが・・・ すみません、3行目以降はコピペミスです 無視して下さい ちょっと小さめの効果音ファイル別途に用意する手もあるのよ、解決してるならそれでいいけど オフィシャルガイドを見ながら作ってます movie "test.avi",async,loop@ movie stop movie "test2.avi",async,loop@ 繋ぎ目をクロスフェードするにはどうしたらよいでしょうか? あと、動画が最前面に表示されるので、一番後ろにやって ボタンやテキストウィンドウを表示したいので、 ヒントだけでもいただけないでしょうか? ・間の繋ぎをムービーでないアニメーションで疑似的にやる ・ムービー二つ編集で繋げた方が早い ・ムービーが最前面ってのはNScripterの仕様、dllで何かあったかもしれんが忘れた NS2での暗号化のやり方を教えて下さい もしくは、サイトを教えてもらえませんか? >>133 上で何度もNS2の質問をしていた者ですが暗号化って 中身をユーザが見れないようにするパッケージングの事ですか? それなら付属のDOSツールで一発で出来ますけど、それではなく? >>134 レスありがとうございます スクリプトを書いたテキストをプレイヤーに見えないよう、暗号化したいのですが 旧作のnscmake.exeを使ってみたものの、ダメだったので、 2専用のツールが必要なのではと思うのですが、わからず、放置中です。 NScripter2開発ツールフォルダ内に入っていますよ nscr2.exeがそれです 起動後、1を選択→各ライブラリがあるフォルダを選択すればパッキングできます >>136 今、出来ました。ようやく発表できます。 親切にありがとうございました。 TwitterでNスクのダメキャンペーンされてる 今残ってるサイト主ってかなり情報公開してるだろ 変数仕様すら満足に公開されてない暗黒時代の手探りを知らんのだろな 2005年頃のあの一寸先は闇の感覚は今はないってのに贅沢だなw 何書かれてるのか知らんが、NSLuaならまだほんのちょっと分からんでもない けど、素のNScripterってノベルエンジンの中じゃユーザーコミュニティのカバー率屈指のレベルだと思うが 素のNスクのサンプルコードの公開を上級者が渋ってるって主張みたい 上級になるための橋渡しが足りないとさ そんなの、言ってる本人が公開しないのと同じような理由で講座の主が公開してないだけだろ ただの基地外だろそいつ Nscはかなり講座とサンプルが充実してて ちょっと頑張れば独自のゲームだって作れた Twitterで反論キャンペーン張ればいいだろ ここれでやるならせめて元の発言を貼るかなんかしないとわからん 中級者用の情報が足りてないって話なら見たけど >>138 が言うようなダメキャンペーンはどこでやってるのか知らん こんな所に特定出来るように貼れってか。ひでーやつだな 直接言わずにここで文句言う糞の自覚あるけど、さすがにそこまではできんわ 上手く使うためのテクニック類って相当そこら中に解説転がしてくれてあるけどな。numalias %0とかその筆頭じゃん、俺最初に見て感動したぞ NS2もはやくNS1と同じくらい情報揃えばいいんだけどな 仲良く公式マニュアル待ちだろうな 高橋さん自身が個人開発ゲームエンジンの将来にだいぶ悲観的な点気になりはするけど、上で使ってる人もいたしぽつぽつ使用例出てくるんじゃね。講座揃うのはまだまだ先だろうな >>146 俺自身がNS1ほど熱心に使いたいと思わないのもあるけど 他人任せじゃなくて自分から調べて情報開示しようと思わん辺りに NS2の先行きの厳しさを感じる NScripterで十分色々出来ちゃうのが逆に移行の遅れを生んでるってのもあるな Nsc1のbspで拾えるキーなんだけど、Dキーがデフォルトでデバッグモード起動が割り当てられてて使えない… デバッグ起動しないようにして使える方法ってある? デバッグって、nscript.datにしたら自動で起動しないようにならなかったっけ? だから、本番用のコードなら問題ないよ。 今もウィンドウが出たり消えたりするだけで、普通にDキー自体は取得できてるでしょ? 確認しました!wasdキーの十字操作諦めるとこだった…ありがとう! セーブデータの上限は200kbまでなのかな。 セーブが大きすぎるってエラー落ちしたんでちょっと検証してみた *define for %0 = 0 to 94 dim ?%0[20][20] next game *start ああああああ\ savegame 1 ああああ\ end 出てきたセーブは198kb、forループを95に増やしたらエラー落ちした。 あと21*21=441文字分の文字列変数で同じ事やったら190までループできた。出てきたセーブは199kb 上限は200KBだよ。以前はもうちょい少なかったけど何かのタイミングで拡張してくれた 元々NScrの配列変数で多次元配列使いまくらない限りはまず超えない値だったから、現在ではほとんど見掛けないエラーになったと思う 配列変数の値は保存しておきたい感じ? セーブファイルのサイズ上限(200KB)は 過去ログ15のレス660にも書かれてるね 失礼、やはり既出情報だったのね。配列セーブに残ると聞いて無計画に使いまくってた 配列変数作ること自体が容量肥大化させるからね… 普段は,や/区切りで一つの文字変数にぶち込んでおいて使う時だけsplitしてもいいのよ、操作頻度や今まで書いた量にもよるけど 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スクへ行けるものと思っていたんですが使ってみたら挙動が違くて・・ 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 どうしてもluaでやりたいという変態さんは NSCOM_test1()をNSGosub ("*test2")の前後で分割して 続きを呼び出すNスクのサブルーチンをNSGosub()した上で NSGosub ("*test2")をしてreturn 関数を分割せずにコルーチンを駆使すれば あたかもNスクと同期実行されているように書ける (それでも形式的でナンセンスな記述は残る) なお理論上できるというだけで実際やったことはない >>165 も言ってるけどコルーチンはNスクにreturnしても稼働状態で残るはず(俺も試したことはないが)、だから該当箇所をコルーチン化すればどうにかならないでもないけどやや面倒よ "「コルーチンがなければ生成、あればコルーチン実行」→Nスクにreturn"という関数作れば一応動きそうじゃね ぬう・・やっぱりちょっと難しいのですね。 コルーチン組むにしても手間が増えて煩雑になってしまいそうなんで、やはりNスク側にまとめてluaはdefsubの延長のような使い方にしようかな。 ありがとうございました! *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\ しまった、書き込みミス。スクリプトだけ先に書いてしまった デバックしてて気になったんだけど、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はどれも問題なく数値が代入されていたので実行上は問題ないのかもと思ったけどなんか妙な挙動してそうで怖い… &の条件絞込の回数制限とかってあったっけ? 検証できる環境がないので分からないけど、バッファオーバーフローぽいね。 1つの命令文が長すぎるのが原因だと思う。 命令文を80〜120文字以内くらいに収めた方がいいと思うよ。 フラグ用の変数を用意してif分を分割するか、for-next使うといいと思う。 すみません、NS2の質問です。 NS2はサンプルのテキストがウィンドウ表示なんですが これを全画面表示になるようサンプルスクリプトを自分で考えて改造しました。 通常の表示は問題なく行えるようになったのですが、バックログ機能を使うと 表示がおかしくなります。 多分ですが、そもそものやり方が悪いと思うのですが 今のやり方以外思いつかず、しかもこのバックログ表示バグの修正案も 思いつかずで詰まっています。 どなたか解決策か、もしくは根本的におかしい場合別のやり方を 教えて頂けないでしょうか ↓改造した00.txtの一部(問題と思われる箇所) @text param %tag,%text 〜voiceとか、この辺はデフォルトから変えていませんので省略〜 ; 改ページ記号がある場合、改ページ実施 if line == 16 or %text == "改ページ_" then spfill "window:text1",0,#00000000 ; テキストを消す spfill "window:text2",0,#00000000 ; テキストを消す spfill "window:text3",0,#00000000 ; テキストを消す spfill "window:text4",0,#00000000 ; テキストを消す spfill "window:text5",0,#00000000 ; テキストを消す spfill "window:text6",0,#00000000 ; テキストを消す spfill "window:text7",0,#00000000 ; テキストを消す spfill "window:text8",0,#00000000 ; テキストを消す spfill "window:text9",0,#00000000 ; テキストを消す spfill "window:text10",0,#00000000 ; テキストを消す spfill "window:text11",0,#00000000 ; テキストを消す spfill "window:text12",0,#00000000 ; テキストを消す spfill "window:text13",0,#00000000 ; テキストを消す spfill "window:text14",0,#00000000 ; テキストを消す spfill "window:text15",0,#00000000 ; テキストを消す ; 何行目かの情報をクリア line = 0 %kaipage = 1 endif endif ; フォントがMSゴシックの場合 if _font == 0 then if line == 1 then if %text <> "改ページ_" then ; 1行目表示 spputtext "window:text1",0,%text,{font="text",wait=(9-_textspeed)*10,w=28,h=20},{font="rubytext"} endif else if line == 2 then if %text == "改ページ_" then ; 改ページ判定の場合は2行目を1行目に表示 spputtext "window:text1",0,%text,{font="text",wait=(9-_textspeed)*10,w=28,h=20},{font="rubytext"} endif ; 2行目表示 spputtext "window:text2",0,%text,{font="text",wait=(9-_textspeed)*10,w=28,h=20},{font="rubytext"} else if line == 3 then ; 3行目表示 spputtext "window:text3",0,%text,{font="text",wait=(9-_textspeed)*10,w=28,h=20},{font="rubytext"} ※以下15行目まで同じ処理です。長すぎるので省略 endif endif endif ; フォントがMS明朝の場合 else if line == 1 then if %text <> "改ページ_" then ; 1行目表示 spputtext "window:text1",0,%text,{font="text2",wait=(9-_textspeed)*10,w=28,h=20},{font="rubytext"} endif else if line == 2 then if %text == "改ページ_" then ; 改ページ判定の場合は2行目を1行目に表示 spputtext "window:text1",0,%text,{font="text2",wait=(9-_textspeed)*10,w=28,h=20},{font="rubytext"} endif ; 2行目表示 spputtext "window:text2",0,%text,{font="text2",wait=(9-_textspeed)*10,w=28,h=20},{font="rubytext"} ※以下15行目まで同じ処理です。長すぎるので省略 endif ; 何行目かの情報を+1して次の行へ移行 line = line+1 return ;スクリプト改造箇所終わり これをバックログで実行すると http://iup.2ch-library.com/i/i1203511-1401076566.png こうなってしまいます(当然といえば当然ですが・・・) 何かいい方法があれば教えて頂けないでしょうか・・・ 変数_fontを、_font="text"とか_font="text2"としてあげると spputtext "window:text",0,%text,{font=_font,wait=(9-_textspeed)*10,w=28,h=20},{font="rubytext"} が効くので、if文がいらなくなって便利ですよ。 ノベル形式にするには色々やり方があると思いますが、一例として、 まずsystem.luaのfunction basic.text(stag,stext)を少しいじります。 --特殊:basic.textは表示文に対応しています。登録の必要はありません。 t_text = "" function basic.text(stag,stext) if stag==nil and stext==nil then return end if stext ~= "p" then t_text = t_text..stext.."\\n" return end local logtbl={tag=stag,text=t_text} basic.backlog[basic.backlogheader]=logtbl basic.backlogheader=basic.backlogheader+1 if basic.backlogheader>BACKLOGSIZE then basic.backlogheader=1 end basic.exec_call("@text",stag,t_text) t_text = "" end 次に、02.txtの@title_startの辺りのスプライトの設定を適当な大きさと位置に変えます。 sp "window:window", {name="*800,600,#88333333",x=0,y=0,z=1000} sp "window:text", {name="*672,504,#00000000",x=128,y=64,z=10} 使い方: 行頭の半角文字の「>p」で改ページするようになります。 例: ああああ いいいい >p うううう >p >>179 レスありがとうございます。 ただやってみたのですが、バックログの話ではなく、通常表示において >pがある場所に来ると、それ以降文章が全く表示されず、かつ最後までクリックを全く待たず シナリオが進んでしまうようです。 肝心のlua層の記述(>>178 の部分)について、私がluaの事を全く理解できてないので その記述のどこが問題なのか分かりませんが、returnやendを削除したり、>pの記述を 変えてみたりなど、その程度の事はやってみましたが、どうも上手く行きません。 >p以降全く文章が表示されないのは if stext ~= "p" then t_text = t_text..stext.."\\n" return end あたりのendが関係している?のでしょうか? ああああああ ええええええ てすと 次で改行 >p bg 背景1 ららららららら てすとその2 bg 背景2 quit ;終了 などとすると、「次で改行」までは普通で、それ以降の「らららら」や「てすとその2」が表示されず 背景だけが背景1→背景2と自動で切り替わって、最後のquitにたどり着くようで、そのまま終了されてしまいました。 「>p」のタイミングで文章を表示してるので、「>p」必須です。 例: bg 背景1 ららららららら てすとその2 >p bg 背景2 quit ;終了 動作の説明: 表示文字列を、表示せずに一旦「\n」で連結して保存しています。 「>p」で「@text」に飛んで、 ・テキストウィンドウのクリア ・(保存した)表示文字列を(一括して)表示 ・クリック待ち という動作になってます。 なるべくスクリプトを改変せずにノベルっぽくできるようにしましたが、 完全にノベル用のスクリプトにするには 「system.lua」をいじらないと難しいと思います。 >>182 レスありがとうございます。 >p〜>pで囲まないといけなかったんですね。 そのようにしたら、確かに表示はできましたが、>p〜>pの間の文章って 「_」とか「click」などの命令が一切効かなくなるようです。 >p〜>p間の文章は全てクリック待ちが発生せず進んでしまいました。 とりあえずこの機能完璧に実装するにはlua使えないと話にならなそうですね・・・ 諦めてNS2のサンプルと同じウィンドウ方式でいくか、>>177 のバグ放置にするか、 lua頑張って勉強して実装するかのどれかにします。 すみません、ありがとうございました。 すみません、一応解決しました。 頭悪い方法ですが、"改ページ_"と書いた改ページ判定文字を" "と全角2つにしました。 それなら一応、バックログ時に"改ページ"という明らかな単語は見えませんので 見た目的には解消しました。 お騒がせ致しました。 bspやspstrの制御文字列Pの連番も使えたら便利なんだけどなあ maxkaisoupageの最大値って50なんですかね? 50以上の数値にすると50より前のログが表示されない… 調べてないが常識的に考えてそんな使わんだろ!?みたいな数値が上限になってることは時々ある 50ページ以上ログ辿るようなゲームだと独自システム組んだ方が色々楽になりそう サンプルシステム流用してるだけじゃなければ どこ弄ればいいか分かりそうなものだけど >>186 最大値は50ではありません。もっと上です 基本的なことなのですが、調べてもさっぱり分からないのでどなたか教えてください。 スプライトボタンにマウスオンしたときに、セル1に切りかわると同時に効果音が鳴るようにしたいのですが、 bsp 11,"P11,0","P11,1,","" この状態からどうすればいいんでしょうか? nscripterようのリファレンスでrubyon2が非推奨になってるけどなんでだろう。 使いたいけどちと恐いな 非推奨命令も動くものは動くからな、数値ラベルなんかはサイズ指定にバグ抱えてるけど2.96で動く ある程度ポピュラーだった命令ではっきり動かなくなったのってzenkakkoくらいじゃね 鯖が急になくなってしまったので取り急ぎ移転しました 数日間サイトが見られない状態になっていたことをお詫びします http://nscuploader.daiwa-hotcom.com/ 【レビュー】手持ちの「NScripter」製ゲームをChrome上でプレイ可能にするWebアプリ“NscPlayer” - 窓の杜 http://www.forest.impress.co.jp/docs/review/20140718_658306.html NaClを利用するというのは技術的には面白いけど 何というか始まる前から終わっているみたいな 俺はこういうの見ちゃうと逆に仮想環境じゃ絶対動かないゲーム作りたくなる すげーな。マルチプラットフォーム一番実現したエンジンがNScripterになるとは や、文法同じなだけで、別物のエミュレーターみたいなもんだけどさ 2がluaだからluaがコンパイルできる環境なら結構簡単に動作クローン作れると思う。D3D使ってもどうせ今はGLの方がスーパーセットだし。 Nscripterをはじめたばかりで、解説サイト様を見ながらいろいろ試しています bgのイベント絵を表示したまま、画面をチカチカッと 白や赤で瞬かせたくて、 白い画像を作ってイベント絵と 交互に表示してみたりしたのですが、 なんだかもっさりしてしまいます 人と人がぶつかった時とかの演出で使うつもりです 市販のゲームではとてもよく見る演出なのですが、 解説サイト様を見てもどうやっているのかわかりません・・・ きっとものすごく初歩的なことだと思いますが、 どうにもわからないので 教えていただけないでしょうか スプライト画像を先に読み込ませておいて 前面に表示させる→消すってやればいいんじゃないかと思うけど チカチカ演出は嫌われるぞ フラッシュ・ウインドウごとクエイク・ポポポ音は三大嫌われ要素 ここぞという場面で使う分にはいいんじゃね>ウェイト 多用されたらそっとウインドウ閉じるけど ひょっとしなくてもNSLuaのテクスチャとNScripter2のテクスチャって概念違う? >>196 ろだ無くなったと思ったら移転してたのね 良かった >> @NaokiTakahashi >> NScripter互換エンジンについての私の見解を公開しました。 >> http://www.nscripter.com/compatible.txt 作者さんありがとう 前から明言されてた内容だけど、誰かがひたすら問い合わせでもしたのかね Nsc1なんだけど、デフォルトだとウィンドウに表示させるテキストの行に ;でコメントアウトしたらバグって表示されることを今知った… 同じことをtextgosub使ってシスカマすると問題なく表示されるんだが、本来やってはいけないことだったんかいな。注釈付に使ってたんだが不安になってきた 「実行ブロックで命令書いた後にセミコロン打って注釈入れたつもりが文字化けた」でいいな?エスパーするぞ? NScripterはごく限られた命令除いて素直に書かれた命令を一個一個読む 命令文の後にセミコロン打つと「命令」「"半角セミコロンで始まっているテキスト"を表示(仕様外なので当然化ける)」と解釈される。 半角セミコロンがコメントアウトとして機能するのは物理的な行頭に書いてある場合(その行を読まないという挙動) 定義節ではそもそもテキストが表示されない仕様なので、このようなことにはならない。 ここまで書いてなんか違うこと聞いてる気がしてきた 普通の表示文を普通にコメントアウトするだけなら当然化けないよ。どんな文章が化けたのよ 命令後にセミコロンつけたらだめなのか… mov %0,100 ;○○の目的のために値代入 とかかなりやってた… 文字化けしたのは たかし「あああ」\ ;◎このセリフは主人公弱気な感じで たかし「あああ」\ みたいなセリフ等のテキスト表示文にも注釈つけてたんだけど、何気なくシスカマなしのデフォルトでやったら、2つめのたかし「あああ」が ;楷・、・、たかし「あああ」って表示されてた。全角文字で始まる表示分には一部の命令以外書けない仕様(だったっけ?)だからよくよく考えたら当然なんだけど、 これをtextgosubでシスカマした状態で表示すると注釈部分は表示されず、だったもんで今までこの仕様気づかなかったんだ。 textgosub使って注釈表示されないならそれでええやん、なんだけど、仕様外の事やって変なバグ起こしてないか心配なってきて textgosub使わんから自信はないけど、textgosubだと呼ばれるたびに切り出して解釈するのかね。 まあ動いてるなら大丈夫じゃね、変数操作でもないしメモリ吹っ飛ばしたりはしないだろう 心配&行分け直すのが面倒臭いなら公開直前にツールなり使って機械的に消す手もある(こっちの方がリスキーな気もするけどそらは置いといて) >>216 「命令文の後にコメント」、普通にいっぱい使ってるけど問題なんか起きたことないよ 「テキスト行の後にコメント」のほうはなんとなくまずい感じするんで避けてたけど Nスクはテキスト周りの挙動が怪しいから >>220 実行節でも? 2ch不特定多数開発モノで文字化け多発したと思ったら原因が命令後の注釈だった、という経験ならある。むしろ化けない例があるとは思ってなかった、何かしら法則見出せるかもしれんな 俺も今んとこ化けたことないかなあ。ちなみにver2,95と2,96 しかしなんとなく不安 >>221 定義節も実行節もどちらも正常、verは最新 Nスク解説サイトのサンプルでも多用されてるし問題ないだろ こことかhttp://sorejyadamedarou.sa kura.ne.jp/nscripter/system_customize.htm おかしくなる原因はスクリプトファイルの文字コード関係じゃねーの? あー新しいバージョンで直ってる可能性考えてなかったな、俺が経験したってのもひぐらし全盛期時代の古い話だし ひぐらし以前の大昔バージョンからふつうに命令後コメント効くぞ どーせ、セミコロンの前に全角スペースでもいれてんだろ 配列変数バリバリに使うような人がそんな初歩的なミスするだろうか 自前で行ずらして直しちゃったから元がどうなっていたか思い出せん >>218 のは命令後じゃなくて 表示テキストのケツにコメント行でしょ 普通に文字化けするけど わざと言ってんの? >>227 よく流れ読みなよ 命令後のコメントはOKで、テキスト行末尾のコメントはNGって話でしょ Nsc1って環境依存的な不具合あるかな? 新ボタン命令でオンマウスでSE鳴らすスタート画面作ったんだけど、 マウス合わせたらSEがノイズみたく連続再生されてクリックしても次へ進めないって一部のプレイヤーに言われたんだけど、自分の環境じゃ再現されないんだよね。 聞いたことないけど、OSとかどんどん変わってきてるから絶対に無いとは言えんなぁ。 一部のプレイヤーってと、複数いるわけ? ちゃんと実行環境とか聞いてみた? 今のところ3人ぐらいは聞いてるかな。環境は一応聞いてはいるけど、7だったり8,1だったり、DirectXもまちまち(基準は満たしてる)でよく分からない。 症状は共通しているっぽいけど… てきとー言うけど メモリ容量とかどうだろ? スワップしてもたついてるのかもと思った 「マウス合わせたら」に相当する命令箇所を一応書いてもらえるとひょっとすると誰かが知恵出せるかもしれん その「異状がでる部分のみの短いサンプルプログラム」を作って 報告者の人たちに試してもらって、それでもやはり異状がでるなら 画像データ、音声データ込みで晒してみるのが一番かもね。 >>232 プレイヤー側のメモリ不足って線かな?タスクマネージャー見てみると100MBくらい使ってたし、もしかしたらあるかもしれない >>233 文字制限ギリだったんで次のレスに >>234 連絡つくかわからないけど試してみようかな。 2つくらいゲーム作ったんだけど、そのどっちもできんかった。っていう人もいたし症例以外に法則性が見いだしづらいな *title bgm "bgm\title.ogg" *re_load_title lsp sp_cg,":c;img\title.jpg",0,0 exec_dll "fontext.dll/Add,g_comickoin_free.ttf" spfont "g_コミック古印体-教漢(標準)",30,30,1,0,0,0 *titleloop2 mov %0,10:mov %1,1 lsp %0,":a;img\youhisi2.png",267,351 : sub %0,%1 lsp %0,":s/22,30,0;#000000"+"EXIT",360,502 : sub %0,%1 lsp %0,":s/21,30,0;#000000"+"GALLERY",332,466 : sub %0,%1 lsp %0,":s/22,30,-1;#000000"+"LOADGAME",321,430 : sub %0,%1 lsp %0,":s/22,30,0;#000000"+"START",350,394 : sub %0,%1 lsp %0,":a;system\pen2.png",-100,-100 : sub %0,%1 mov $saveload_return,"*re_load_title" print 2 *titleloop bclear bsp 6,"","M5,320,367S1,(se\on.wav)","" bsp 7,"","M5,320,405S1,(se\on.wav)","" bsp 8,"","M5,320,442S1,(se\on.wav)","" bsp 9,"","M5,320,479S1,(se\on.wav)","" bdef "P6P7P8P9C5" bexec $20 if $20 == "S6" spfont clear:for %1=5 to 10 : csp %1 : next :csp sp_cg:bgmstop:kuro2 5:goto *newgame if $20 == "S7" for %1=5 to 10 : csp %1 : next :csp sp_cg : kuro2 1 : goto *system_load if $20 == "S8" goto *gallery if $20 == "S9" end goto *titleloop defsubとかnumaliasだらけでアレだけど書くだけ書いてみました。 とりあえず新ボタン命令の方であることは分かった すまん俺旧ボタン留まったままで分からんわ…… *titleloopからgoto *titleloopを高速処理してて クリック認識されてないみたいだし、 bexecの前にbtimeでも入れてみたら? たぶんbtime 50ぐらいがちょうどいいんでないかな。 何らかの要因でbexec突破しちゃってるってのはあるかもな。それならボタン定義が連打されるので新しく音が鳴り続ける 今更だけどver2,95です。せめて自分の環境で不具合再現できれば色々試行錯誤できそうなんだけどね。2,96も同梱しておこうかな btime置いてみたら確かに挙動が症例っぽくなった。試しにbtime 0にしたらクリック効かなくなったしbexec機能が飛ばされてるってことでいいのかも 今度ダメ元で高橋さんにも聞いてみようかな どうもありがとう btimeに0放り込むのは「時間制限付きのクイズです、制限時間0秒な」と言ってるのと同義 症例出てる人に再現実験やってもらえるのであれば、問題出てる箇所のbexec直後で何のボタンが入力されているか取得&保存&テキストに追記で出力する手はあるな bexecをどのように通り過ぎちゃっているのか分かれば問題の大きな切り分けになる Nsc2での質問です。 テキスト文中での変数の表示なんですが、@textの%textに 上手く変数の中身が渡せず変数名がそのまま表示されます。 Nsc1のように何か変数の1文字目に決められた文字をつけないといけないのでしょうか? 上のマウスオーバーで効果音のやつ 効果音ファイルwavやめてoggで解決するぞ 2年前同じこと起きてそれでいけた >>245 まじで!有益な情報ありがとう。音声環境oggで統一してみる あー、ファイルの再生時間が極端に短いのが原因って線なのかもしれんのね それなら俺もnsogg2.dllに切り替わった時期のやつで引っかかった事あったな あれ?でもさ、299にあるけど 「クリックしても次へ進めない」ってのもwavからoggにすれば解決するの? クリックが拾えていないのは「何らかの原因で高速でボタン待ち突破してしまうせいで、ボタン待ち終了〜ボタン待ち開始間にクリックが入ってしまっている」だと思う その場合は一応、NSLuaの最終クリック情報取得命令とtrapを併用すれば抜けを99.9%潰せる でもボタン待ち抜けちゃうのが根本的におかしいんだから原因潰した方が早い wavやめてoggのやつちょうど俺も助かったわ。 やりとりしてくれてアリガト。 つかTIPSにも書いてあったんだなこれ。いまさら気がついたorz 文章量多くて見落とすわw 左クリックを指定した時間無効にするにはどうすればいいですか? クリックしても文字をゆっくり表示させたいんです ごく限られた箇所だけの話なら文中で!wとか使えばいいんじゃね !wも試したんですけど 表示したいのは文字がゆっくり動いて その間はクリックしても一気に文字が表示されない っていう風にしたいんです もちろんご指摘の通り、〜○章〜 って感じで一部分にしか使いません それユーザーが一番クリックしてスキップしたいところやんな こ!w100う!w100すれば目的は達されるんじゃね 章表示に強制ウェイトかかるゲーム見たら俺はクソゲーと判断するけど 章タイトルでやりたいなら 画像でやりゃいいんじゃねの 皆さんご指摘ありがとうございます! >>256 さんのようにやろうと思ったんですが最終的にwaitだけにしました(クリックで文字一瞬で表示 プレイヤーの快適さなんてまったく考えてませんでしたw 自分でこうしたいなぁ と思う演出だけじゃ駄目なんですね いろいろ見返しが必要です 乙 テストプレイしてみないと気付かなかったりすることもあるしね 出番を貰い損ねたtrap命令が今日も恨めしそうに周りを見ている bgで背景画面 selectで”はじめる”等の選択のタイトルにしたんですが 全体的に明るさが暗いです 全体の明るさを上げるにはどうすればいいでしょうか? ・setwindowなりでウインドウの透過度変える(Nスクのテキストウインドウは、かまいたちの夜やひぐらしみたいな"画面全体に黒背景の半透明ウインドウ被せる"がデフォルト) ・背景素材明るくする 好きな方を選ぶ >>265 ありがとうございます! setwindow 8,16,23,16,26,26,0,2,20,1,1,#FFFFFF,0,0,639,479 にしてタイトル画面のみ明るくできました。 質問です。 englishモードで改行無視を行う良い方法はないでしょうか。 埋め込み記号無効の仕様のため代替を探しております。 全角文字ならば正常に改行無視するのですが、>から始まる半角英字の文章の場合は/も文章として見做されてしまいます。 english一切使わずに半角文字+半角スペース偶数バイトで誤魔化すのが一番手っ取り早い気はする なるほど、ありがとうございます。 例えばenglishモードで >This is a pen./ としているところを通常モードで This is a pen. / と表示するということですね。 調べてみたらONScripterでも英語に対応しているようですね。 これを使うのもありかな……と思ったらcygwin?でやたら色々コンパイルしたりしないといけないようで大変そうw 偶数になるように半角スペースしかないのかな…… /使いたい場所の量によると思う 装飾にちょっと使う程度なら偶数バイトで十分だし、がっつり英文使いまくるなら何かしら別の対策考えた方がいいかも がっつりなんですよね…… grepすると1500箇所越えでしたから結構な量です。 「>(英文)/」の塊は全箇所に書き込み済み? 「hoge "(英文)"」に置換した上でdefsub hogeと定義して *hoge getparam $0 len %0,$0 mod %0,2 if %0==1 mov $0,$0+" " mov $0,$0+"/" $0 return と「奇数なら末尾に半角スペース足した上で/足して表示」というdefsub命令に置き換えちゃうのはどうだろう と思ったけど変数に放り込んだ/って機能したっけ?とか+" "ってそのまま機能したっけ?とか俺が色々忘れている うろ覚えだけど This is a pen. / みたいな偶数の単語が並んだ英文の場合は半角スペースはスルーされて Thisisa pen. / みたいに奇数の箇所だけ利いて表示されたと思う。 >>273 過去ログを遡って調べてみます! >>274 >>275 その通りでした…… /や>は使用箇所に打ち込み済みなので試してみましたが、 半角スペース作戦は失敗のようです。 あれ、偶数バイトは2バイト目しか半角スペース使えないんだっけ(というか1バイト目の半角スペースは無視されるんだっけ)……こりゃ失敗。 NSLuaでフルスクリーン中にエラー吐くと裏にエラーウインドウ出ちゃって死ねる問題、 Alt+Tabでデスクトップに直接フォーカスすると一応解決するんだね おうかがいします。 常時押せるスプライトボタンを作る方法はないでしょうか? *text_lbを使うと似たようなことはできるようですが、テキスト末尾のクリック待ちの時以外反応しないように思えます。 つまり、長めの文章が表示されている途中でボタンを押せるようにしたいのですが… よろしくお願いします >>279 NSLuaでテキスト表示させて、1文字表示ずつにクリック監視すりゃ出来るけど・・・ 改ページ待ちの時以外に反応させる意味ってないんじゃね テキスト表示中の画面クリックは、全テキストを一気に表示という動作のがメジャーだと思う >>280 ありがとうございます。 > テキスト表示中の画面クリックは、全テキストを一気に表示という動作のがメジャーだと思う 言われてみれば確かにそうですね。 テキストとは別にシステムやアイテム用のウインドウにジャンプするボタンを設置したかったんですが、テキスト末尾に来ないと反応しなくて、違和感感じてました。 NSLuaとなると自分には敷居が高く難しそうです(´・ω・`) なんとかだましだましやってみようかと思います(`・ω・´) その辺気にするようなプレイヤーは大抵テキスト瞬間表示をデフォにするから問題ないという説もある 例えばテキストの表示途中のあるタイミングでボタンを押せばシナリオ分岐する、みたいな特殊なゲームでないかぎり282が真理だと思う。 >>282 >>283 どうもです!そう言われると安心します quake命令についてなんですけど 例えば1280×720の画面に同サイズの背景を表示した状態でquakex 10,500を実行すると 揺れた際に黒地がでてきてしまうのですが、これって仕方ないのでしょうか? そもそもquakeはユーザーに嫌がられる的な意味で割と非推奨な気がしないでもない >>288 捨てで 800×600とか他のサイズ作って スクリプト作ってquake試してみれば 実感できると思う >>289-290 レス遅くなりましてすみません そうですか、できないんですね ありがとうございました どうしても気になるならウインドウ揺らすの諦めてスプライトを動かす手も全く無いではない でもたぶん誰も気にしない system.lua単独起動時にNSExec("reset")を呼び出した場合、Luaコードの実行はそのまま続いて変数だけが初期化された。 存在しない*start探しに行ってエラー吐くんじゃね?と思って実行したけど意外にも通るらしい。 defineresetも同様に通ったので、system.lua自身を再読み込みした上でNSCOM_main関数を頭から呼び直すようにすれば関数外に書いた変数は全面リセット可能かも。 変数だけが初期化された→(NScripterの)変数だけが初期化された 一方でsystem.lua単独起動時のNSExec("definereset")は無視されるっぽい?NScripterの変数は初期化されないし、system.lua内の操作もそのまま残る。 あーごめん、「単独起動時のdefineresetはエラーこそ吐かないが無視される」が正確な挙動みたい。2レス前で大嘘書いてしまった 質問させてください テキスト表示中に左クリックすると、テキストが末尾まで瞬間表示されますが あれと同様の動作を下ホイールで実現したいです なにかいい方法はないでしょうか? textgosubとかのシステムカスタマイズ族ってその辺の挙動指定出来んの? pretextgosubやtextgosubでの制御はやってみたんですが、うまくいかなかったです… 仕様とのことなので諦めることにします ありがとうございました 一応できなくもない…ということでサンプル上げてみました >>196 のうpろだのn_0247.zipです よければ試してみてください ろだのファイル落とそうとしたら内部エラー出るけど一時的なものだろうか 500エラー出ますね こちらに上げてみたので、もしよければどうぞ http://www1.axfc.net/u/3436539.zip DLkey:5432 プログラムのリファレンスなどを何度見ましても、やりたい事の再現方法がわからず、 どこかで質問したかったのですが、ここ以外によさそうな掲示板が見つけられなかったので、 一つ質問させていただきたいです……。 やりたい内容は、バックログの文章操作です。 以下のような文章を書いたとします。 〜〜〜〜〜 こんにちは。@ やりたい事があるのですが、\ 解決出来ません……。@ 〜〜〜〜〜 これを一通り表示させた後、バックログを表示させれば当然上記の三行が表示されますが、そこを何とかして変えたいです。 つまり普通に読み進めた時は上記の三行が表示されますが、バックログを表示させた時は…… 〜〜〜〜〜 こんにちは やりたい事があるのですが、 調べても、 解決出来ません……。 〜〜〜〜〜 のように文章を変更(追加)したいのです。 考えたのですが、自分には再現方法が思いつきませんでした……。 何か良いアイデアがございましたら、アドバイスをいただけないでしょうか……。 よろしくお願いします……。 読んだ文章を表示させるのがログなんだから当然だろ… 何故そんな仕様にしたいのかは分かりませんが、バックログの挙動をいじるとしたらシステムカスタマイズをしてログの自作から必要になってくるのではないでしょうか。 該当部に着たら 表示したいテキストに差し替えるように バックログのシステム組めば良いと思うの >>305 なんだそりゃ バックログをゲームシステムに組み込んで何か悪戯?驚かせ?でもしたいのかしら 自前でバックログ風のニセ画面を作るのがいいよ 皆さん早速ありがとうございます。 もちろん意図はありましたが、ややこしい上、長文になりそうだったので省いていました^^; しかし、せっかく懇意にしていただけました事ですし、拙い文章かもしれませんが意図を記載してみます。 今現在、私のゲームでは所々文字のフォントが変えられるようにしています。例えば、 「いきなりの質問にも答えていただき、ありがとうございます」の「ありがとうございます」だけを特定のフォントに変える。という具合です。それ以外は通常(?)のMSゴシックで表示をします。 通常Nスクはフォントを一部だけ変える事は出来ず、変えようとすると全ての文字が変わってしまいます。 ではフォント変更をどう再現しているかと言いますと、「ありがとうございます」をフォントを変更したスプライトとして表示させているのです。スプライトならばフォントを変えるのも簡単ですから。 さて、これで一部のフォント変更は晴れて出来るようになる訳ですが、一つ問題が出ます。 フォントを変更した部分はスプライト表示なので、バックログに格納されないのです。 つまり、最初に読んだ段階ではちゃんと「いきなりの質問にも答えていただき、ありがとうございます」とフォントも分けられた状態でしっかり表示されるのですが、 その後、バックログでその部分を表示させると「ありがとうございます」はスプライトだったが故、「いきなりの質問にも答えていただき、」としか表示されなくなってしまうのです。 なので、バックログでもフォントを変えて表示……とまでは言わないけれど、せめて、表示くらいはされるようにしたい……。 と思いまして、現在どうしたらいいものかと悩んでいます。 以上が私の意図です。非常にわかりにくいかもしれません。申し訳ございません。 皆さんの回答を拝見しまして、単純ながらもシステムカスタマイズでバックログを作るという発想がなかったなと気付きました。 しかしながらまだ具体的な解決案は浮かんでおりません……すみません……。 と、>>308 さんの一連のアイデアはどういった意味でしょうか?申し訳ないですが理解が及びませんでした……。 どういった命令を使うか?などもう少しだけ踏み入って教えていただけないでしょうか? ご期待に沿えるかわからないけど、 システムカスタマイズでのバックログの実装と バックログの中身の差し替えのサンプルを上げてみました。 よければどうぞ http://www1.axfc.net/u/3439540.zip DLKey:5432 >>310 該当部分をAとした場合、 その部分にフラグ立てて バックログ(カスタマイズ前提)参照時に 該当部分A(文字スプライト)を を表示したいものに変えてみようってことです >>311 拝見させていただきました。わざわざこのような素晴らしいプログラムを組んでいただきありがとうございます。 そうです!まさしくこんな動きが出来たらいいなと思っていました! しかし、いかんせんLuaという言語を知らず、何がどうなっているのか部分的に理解が及びませんでした……。 NScripterの命令だけで再現するのは無理なのでしょうか? また、「バックログを改変できますが、改変すると、ログがログでなくなってしまうのであまり使い出がないかも…です」 というお言葉も何か不便があることを示されているのかもしれませんが、これはどういった意味でしょうか……? >>312 ありがとうございます。 ……す、すみません……!!>>311 さんに引き続き大変お恥ずかしい限りなのですが、 理解し切る事が出来ませんでした……。 大変申し訳ないのですが、もしよろしければ、もう少し詳しくお教えいただけることは出来ますでしょうか……? >下ホイールで瞬間表示 NSLuaAnimationInterval(33) NSLuaAnimationMode(true) function NSCALL_animation() local l,r,w=NSGetClick() if(w<=-1)then if(not NSNSosippa)then NSExec('textspeed 0') NSNSosippa=true end else NSNSosippa=false NSExec('textspeed 9') --←現在の表示速度に合わせる end end NSExec('luacall animation') --------------------- とりあえず公式のnslua.dll入れてフォルダ内にsystem.lua作ってこれコピペしとけばいいんじゃね、見るからに機能不足だけど >Luaという言語を知らず 妖精さんの魔法だと思っておくのが嫌ならsenzogawaさんの講座でも見に行けばいいんじゃね? このスレの住人だってほとんどは実装当初Luaを知らなかったぞ >>304 落としてみたら予想外の解決策でものすごく驚いた。dllが視野に入ってるとこんな解決法もあるのか…… >>313 組み方に言及されてもわしゃスクリプトを使って答える気ないよ やりたいことの希望は分かるんだけど バックログをシステムカスタマイズして組めることが そもそもの前提になるのでそれを習得してないとやれるようなことじゃないので どうしてもやりたいなら時間かけて基本になるバックログの組み方を覚えるべき 別に損するってわけでもないしできる幅も増えるので >>313 Nスクのみ(Luaなし)のバージョン上げました よければどうぞ http://www1.axfc.net/u/3440932.zip DLKey:5432 >「ログがログでなく〜うんぬん」 特に深い意味はないです >310のようなケースは別として、 「ログを改変する必要性ってなくない?」くらいの意味です >305だけの情報だと「なぜログを改変する必要が?」と思いましたし、 「たけしの挑戦状でも作るつもりかしらん?」と思いました 皆様ありがとうございます。 >>317 前回のサンプルを見まして、LUAがわからないながらも大体のやっている事は何とか把握できまして、 丁度自分でもNスクのみで実装のアイデアが湧いたところでした。 実際にそれで組めましたし、>>317 様の新しいバージョンも見たところ、 ほとんど同じ流れになってるっぽいですw 素晴らしいスクリプト、視点、のおかげで解決できました! 本当にありがとうございます!とても困っていたので……! 数年ぶりに弄ってて気づいたんだけど nscrってwin7でなら普通にh264再生できるのな こりゃまだまだ使い道あるかもしれん Naoki TakahashiさんはTwitterを使っています: "NScripter2はこのまま仕様を固めてしまおう。 さすがに数年寝かせただけあって(仕事で使いまくってましたが)内製エンジンとしては十分こなれてると思う。 あとは一般公開に向けてのブラッシュアップに専念する。デバッグとドキュメントとサンプル作成。" https://twitter.com/NaokiTakahashi/status/584140839665795072 Naoki TakahashiさんはTwitterを使っています: "今ADV形式とノベル形式のサンプルを作ってたところ。あとはスプライト周りのサンプルつけたら同梱サンプルは完成。 で、これ以上仕事で機能追加するきっかけがなさそうなんだよなあこれ。俺が今受けてる仕事だと。動画もこれでいけそうならば。" https://twitter.com/NaokiTakahashi/status/584141225160155136 Naoki TakahashiさんはTwitterを使っています: "チュートリアル的なゲームコンテンツをちまちま公開しつつ、次のプロジェクトに移るかな。" https://twitter.com/NaokiTakahashi/status/584141664395993089 👀 Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f) 久しぶりにやる気になってるのか あまり期待しても肩透かしくらいそうだから 放置気味に静観してるのが吉 Naoki TakahashiさんはTwitterを使っています: "NScr2は、ウィザードには無理がある(カスタマイズの要件が多すぎそう) なので、結局、チュートリアルを作ることにした。特設ページを作って今後の更新を予告などした。 最低でも週一くらいで更新していくかなあ。" https://twitter.com/NaokiTakahashi/status/587424016392007680 犬と猫さんとこの新作ゲームはどうやらシステム部分の多くをnsluaに移行したらしく いろいろ参考になることをやっているよ Nスク触り始めたんだけどドキュメントって公式にあるやつだけ? だいぶ昔から非公式の解説サイトに依存する形なので、体系的に覚えるならろだの非公式マニュアルとNScripter Tipsあたり見とくと吉 解説が最新事情に対応してないサイトもあるから注意 よく使われてたサイト貼ろうとしたらNGワード どうなってんのこの掲示板… エヌスク2がでたしエヌスク1の最終バージョンの完全なドキュメント欲しいなー って思うけどまとめるにしても情報のソースすらないから困る ドキュメントガクソだよなぁ 後付けだらけでスパゲッティになってるのもクソだけど ドキュメント作るとしてwikiあたりで編集できればいいかね まあNScrに熟達してて編集するやつがいないってオチなんだろうけど 今更、初代のドキュメント整備しようぜって言われもなー… 使い道って全ての命令群を備えてるわけじゃない互換系しか思い当たらないんだが だよな。ろだ主氏と先祖川氏のドキュメントで充分すぎるくらい整ってる 一番グダグダだった音回りは後付けに次ぐ後付けを経て「いいからdwaveとbgmだけ使ってあとは全部忘れろ」に落ち着いたし、 2.96で半端に終わってしまったのは新ボタンくらいじゃないか ノベルエンジン探してるやつ見かけたら別のエンジンに誘導すればいいだけ 新規は完全にお呼びじゃないし ノベルゲーがエロゲ業界共々退潮著しくて、コミュニティ崩壊状態だからな… 吉里吉里もギリギリ維持されているような状態だし >>341 新ボタンはマジで神だぞ。とにかく断然早い。たったそれだけだけど、ほんとに違う。 あと細かいけど2.93から実装だな。 拡張スプライトって使い勝手はどうなの? スプライトの代わりに使えってこと? 拡張スプライトは縦横に引き延ばしたり回転させたりしたい場合に使う 表示順がスプライトほど融通利かなかったりそもそも(相対的に)重かったりするので必要に応じてどうぞ 徐々に拡大にしていく感じにしてみたけど画像が汚いな… アニメーションには向かないってことか 拡大はオマケで回転が主だと思う 拡大するのではなく、大きめの画像を縮小した状態から等倍に近付けていくと汚くなりにくいかもしれない みなさんはNS2に移行しましたか それもとこれからですか >>350 昔やったことあるけど、 ドット絵っぽくなるだけだよ 効果としては面白いと思ったから使いようはあるかもしれない >>351 使い回しコードが外部dllに依存しすぎで移行しようにもできません >>353 ヘビーなNスクユーザーなら大体みんなそうなるよなw ろだです。長い間放置していてすみませんでした ダウンロードができないという問題を把握しました が、パーミッションをいくら確認しても解決できず 当方の知識では解決できそうにありませんので、外部にアップローダを借りることにしました 今後はとりあえずそちらのほうにアップお願いします。ご不便をおかけして大変申し訳ありません >>302 さんの一連のサンプルもアップしておきました http://ux.getuploader.com/nsc_pub/ また、同時に他のファイルのバックアップ保管庫も作りましたので、サイトが見られないなどの際にご利用ください http://ux.getuploader.com/nsc_arc/ 👀 Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) むいむいさんとこのスプライト操作プラグインを落とそうと思ったら変なページに飛ばされて落とせない 他のプラグインも軒並み落とせない あとsenzogawaさんとこも500エラーで見れない ツイッターやべえな 作者とエヌスクの未来は暗いのか ttp://www.eiji8pou.net/ 自体がドメイン切れてるね WebArchiveから落とせなければアウト、ダメモトで本人に頼むのも手かもしれないが Hrm. Wayback Machine doesn't have that page archived. おわた 持ってはいるが、添付テキストに二次配布の言及がないので 良いのかも分からず支援できん そろそろ一時代築いて引退ってことでいいんじゃないか? 今Nscで作ってるのは個人だろうけど個人でももっとリッチな環境で作れる時代になったよ でもWindows用一本でサウンドノベル作るって前提なら未だに最前線級だと思うんだ Androidへの互換性だってあるしマダマダイケルヤロ これまで使ってるなら手持ちのプラグイン豊富に持ってるだろうから イケるだろうけど新規なら他をあたれ ドキュメント、コミュニティ、リソース 全部崩壊してて後から来た人には劇物だよ 先祖川さんのリファレンスにろだの検索機能追加スクリプト入れて使ってる 検索はctrl+Fで済ませてるな そもそもワード知らんとヒットもしないから 流し読みが主だし。 btnnowindowerase ボタン時にテキストウィンドウが消えなくなります ↑この命令を使ってもbtnwait命令やbexec命令を使うと テキストウィンドウが消えてしまうんだけど、どうすればいい? ボタンが出てる時にテキストウィンドウが消えると ゲーム内容的にかなり困る 組み方が悪くて動作が変ってことじゃないなら 文字スプライトに置き換えろ btnnowindowerase命令は、機能していないみたいだね erasetextwindow 0が代わりに使えると思います ;00.txt *define game *start bg #FF0000,1 setwindow 16,320 +16,20,23,26,26,0,2,20,1,1,#999999,0,320,639,479 ああああ いいいいい \ ううううう@ erasetextwindow 0 ;この行をコメントアウトすると違いがよくわかります。 lsp 100,":s#0000FF#00FF00#00FF00"+"ボタン01",320 -96,240 -96 bclear bsp 100 bexec %100 bclear erasetextwindow 1 おわり \ end こういった情報は貴重だな 仕様が不明だと正常な動作と異常な動作の見分けすらつかないからハマる ドキュメントに反映されていくといいんだけどな erasetextwindowって基本じゃねの 知らん方が変というか シスカマのサンプルに組み込まれてるレベルものを気付いてないんだし ドキュメントに反映しても見落とす気がすんだけど… >374-377ってbtnnowindoweraseについての話だと思うんだけど これの使い方わかる人いる? btnnowindoweraseでググっても取り扱っているページほぼ見ない(あっても相当古い)し俺自身使った記憶もない 気付いたら非対応になっていたzenkakkoパターンの誰にも気付かれなかった版じゃないか? ちょっと軽く調べたけど btnnowindoweraseってbtntimeに関連していて effectskipが追加されてほぼ用なしなった命令じゃないっけ? 過去スレで画像エフェクト表示の時にクリックすると 次のテキスト表示が一瞬で表示される云々で 回避法で利用されてた覚えある つまり意味ある命令だった期間が元々非常に短いのかな? あんまり使用されないうちに存在意義失っちゃって非推奨命令として知られることもなかったと 先祖川さんとこのリファレンスを見るに ver.2.48からの命令っぽいから 期間自体はそれなりに長いじゃないの ゲーム内のボタンクリックでウェブサイトに飛ばすようにしたくて、検索したらshell命令を使えばいいらしいのですが shell "(指定URL)"でやってもページが開かない… なにか他に必要なのかな?教えていただけると助かります うちの環境では普通に開けるよ *define game *start shell "http://google.co.jp" ; shell "00.txt" \ end >>386 ありがとうございます!386さんのをコピペして、 IE11じゃ開かなかったけどGoogle Chromeをインストールしたらそっちで開きました これは解決したってことでいいのかなw とにかくありがとうございました! 右クリックの挙動をキーに割り当てることってできますか? ボタン命令は新の方使ってて、メニュー画面から戻るときなどに右クリックで戻る、というようにスクリプト組んでたんですが、 後からマウス使わずキーボードだけでもある程度操作できるようにしたいと思ってしまいました。 けど今から一つ一つにボタン操作後の挙動にif分岐挟んでいくと量がかなり多くなってしまい… 理想としてはdefine部に命令一つ書くだけでボタン待ち時にこのキーを押すと右クリックしたものとして扱い、進むようにする…というものがあれば嬉しいのですが 色々やりたいことをする≠楽して組む だから労力は惜しむな bexecをラップするのはありかなと思う サブルーチンを1個追加するだけで、振る舞いを変えられるのがメリットです *define defsub bexec ;bexecをラップ化する game *start ボタンを押してね! bclear bcursor bexec $100,%100 wait 20 mesbox $100,"押されたよ!" goto *start ;--- 追加するサブルーチン --- ;--- %500,%501をワークエリアに使う *bexec getparam s%500,i%501 _bexec $%500,%%501 if $%500 == "A" mov $%500,"RCLICK" ;aが押されたら、RCLICKを返す return ;--- なるほど…! bexecの下は大体if分岐になるからdefsub化した既存命令内でキー割り当てするのですね。 ありがとう! 参考になりました! そうか、数字や文字で返すからボタン待ち命令乗っ取るとこういうすり替えが可能なのか 今更ではあるけど、x264再生できるレイヤープラグイン欲しかったなぁ すっかりmp4普及したせいでmpegとかoggのエンコ環境がもう手元にないよ… H.264ってパテント問題なかったっけ? FFmpegでMPEG-1に変換できると思うよ NSfont.dllの外字登録は結局ns2アーカイブに対応しているのでしょうか? nscripter覚書やtipsにはpng化すればver2.96はエラー回避できると書いてあるのですが、 png使用で、ver2.95、ver2.96両方試したんですがどっちも画像が見つかりませんと出て落ちてしまいました(アーカイブ前は問題なく機能します) ぐぐったらver16のスレで同じようなことを言ってる人がいたんですが、他の人はns2アーカイブでも問題なく使えているの気になりました。 うちの環境では問題なく使えるよ ns2ファイルにアクセスできないか、ns2ファイル内の画像ファイルにアクセスできてないかの どちらかだと思うから テストして問題を切り分けてみるといいと思うよ まずこれを試してみて、 *start ;ns2アーカイブ内のabcフォルダの中に画像ファイルがあるとした場合 lsp 10,":c;abc\hurt.png",320,240 print 1 \ end 問題が無ければ、こっちを試してみる *start exec_dll "NSFont.dll/gaiji,伝,abc\hurt.png" あいうえお伝 \ end すみません、色々検証してみたんですが、妙な挙動を見つけました。 まず頂いたスクリプトだと問題なく動作します。アーカイブ内のhurt.pngをきっちり読み込んで表示文もちゃんとハートが出てました。 なのですが、同じことを自前のスクリプトでやるとどうしてもアーカイブからhurt.pngが見つからないとエラー落ちします。 んで、全く同じ記述を定義節でやらず実行節で走らせたら、問題なく読み込めました。 exec_dll命令は定義実行両方でできるはずなのですが、NSFontの読み込みはアーカイブを使う場合、何故か定義節でやろうとするとエラー落ちする… そんな気がするんですが、どうなんでしょうかね… ns2アーカイブは、定義節からはアクセスできないみたいだね nsaアーカイブだと定義節でも問題ないみたいです ;nsaアーカイブを使った場合 *define nsa exec_dll "NSFont.dll/gaiji,伝,abc\hurt.png" game *start あいうえお伝 \ end 推測だけど、NScripterはアーカイブの扱いについて アーカイブを使わないモード、nsaアーカイブモード、ns2アーカイブモードの3種類のモードがあって、 nscripter起動時には、アーカイブを使わないモードで game命令に到達した時に、00.ns2ファイルがあると、ns2アーカイブモードにセットされるみたいです なるほど。ns2アーカイブにはnsaに相当する命令がないから実行中からでないと読み込めないってことですかね。 とりあえず今後は外字登録は実行中に済ませることにします。 >ns2アーカイブは、定義節からはアクセスできない 知らなかったそんなの… バイト単位で調べるNSGetFileInfoはたしか定義説中の実行でも大丈夫だったよね? 推測だけど、nscripterが起動してから実行していく順序が 1:定義節実行(luasub、luacallは、名前がとりあえず登録されるだけ) 2:game命令到達 3:00.nsがあれば、ns2アーカイブモードにセットされてアーカイブが有効になる 4:system.luaを読み込んで実行。(luasub、luacallもここで有効になる) 5:*startラベルに飛ぶ こんな感じになってるぽいです Luaスクリプトはアーカイブモードが確定してから実行されるので NSGetFileInfoはns2アーカイブを問題なく使えるみたいです 【先出し週刊ファミ通】『RPGツクールMV』シリーズ最新作が大幅に進化を遂げて登場 http://www.famitsu.com/news/201508/04085014.html マルチデバイス対応でスマホでもつくーる >>402 定義節専用命令はluasub登録できないってことでいいのかな? system.lua最優先で読んでるものとばかり思い込んでた >>267-276 NSCALL_text乗っ取って 「長さ偶数バイトのテキストが末尾"/"なら"半角スペース+/"に置換して表示」 「置換した直後のテキストが半角スペースから始まっていたら削って表示」 とかやればある程度対応できるかも?クリック待ち処理ごと自作することになるけど >>405 たぶん、game命令でsystem.luaが読み込まれる&実行されてるので luasubで登録した関数が有効になるのは*start以降になると思います 以下のサンプルは普通に動きますが、 ;00.txt *define defsub foo foo game *start end *foo mesbox "foo","foo" return 次のサンプルでは、"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 Nスクで作られたとあるフリゲで遊んでたら オートマッピング付きの簡易3Dダンジョンが実装されててびっくりしたよ *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内から実行すれば通るかも? >>409 座標1つにつき1文字でまとめて情報管理しちゃえば割とどうとでもなるよ、 マップの数増えると保存はめんどいけど ということは 1:定義節実行(luasub、luacallは、名前がとりあえず登録されるだけ) 2:game命令到達、通常変数初期化。00.nsがあれば、ns2アーカイブモードにセットされてアーカイブが有効になる 3:(luasub、luacallがここで有効になる) 4:system.luaを読み込んで実行。 5:*startラベルに飛ぶ こうか >>410 "不正な命令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とか'_'プリフィックスをつけた方がいいくらいかもです 定義節専用命令を、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直後の初期化処理で間に合うものは、実行節で初期化する、というのもアリかなと思いました。 >>411 だいたいそんな感じだと思います 細かいことを言えば、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 を読み込んだ(&実行した)直後から有効になります 現在行の情報が吹っ飛1行目に戻される→既に読んだ定義節命令読んでエラー の順なので、「system.lua読み込み中の」「定義節専用命令実行」に限っては goto *start *define game *start みたいな書き方で一応動く。公式では二重実行ダメと言われてるけど、1行目に戻される以外の問題は今のところ発見されていないと思う 定義節専用命令は呼び出すタイミングが固定だから(たぶん)安全に通るけど、 実行節中で二重呼び出しされ(た後本体に戻)るようなスクリプトは避けた方が脳に優しいはず 外字登録だけだったら local t={"伝","abc\\hurt.png","言","abc\\foot.png",} for i=1,#t,2 do NSExec('exec_dll "NSFont.dll/gaiji,'..t[i]..','..t[i+1]..'"') end とか書けばある程度まとめて記述できる。でも >定義節で使うリソースは、アーカイブにまとめずにいっそ裸で置いておくとか 俺もこれに賛成。フォルダに入れときゃダイジョーブダイジョーブ luacallの有効タイミングに関しては 「その場で有効になってはいるけど、肝心の呼び出す関数がsystem.lua読むまで登録されない」と 解釈した方が納得しやすいかな(内部的には「game命令を読むまで有効化されない」が実際の挙動っぽい気もするけど)。 NSCALL_やNSCOM_自体は起動後に定義し直すことも出来るくらい(書き換えるとしてもせいぜいanimationくらいか)普通のlua変数だし、その意味じゃdefsubと僅かに位置付け違っているかもしれない NScripter更新されてますね(不正なセーブデータ読み込みに伴う脆弱性修正) そもそも今までのverも怪しげなセーブデータ拾ってこなければ大丈夫だから サポートめんどくさければ、そう告知しとけばいいぞ 今回のそれかはともかく データ読み込みまわりに脆弱性があることは 随分昔にT2氏が言及していたような bmp修正って真上でレスされてるdefine内だとns2で弾かれるって件じゃないのね 前スレの>256あたりにもあるけど ns2からbmpファイルを読み出せないバグがあったのよ いつの間にかNスク2の講座ページ(?)みたいなの無くなってるね rubyon2にフォントサイズの整数倍を指定したら2サイズの文字を同時に表示できないか? と思い試していたスクリプトが一応動いたのでサンプル上げておきます ttp://ux.getuploader.com/nsc_pub/download/5/nsc_pub_5.zip 内部でlocate命令を使うためバックログが壊れます。大きい方の文字は特殊記号がほとんど使えません。 👀 Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) 命令って大文字小文字どっちでも完全にまったく構わんの?なんか差って出る? どう見てもマルチポストなあれに反応してあれだけどNスク開発者でMac使うのはかなり重度のマゾヒストではなかろうか… >>428 言われて気がついたかも? チュートリアルの需要があったら誰か作ると思うよ。 つ「言い出しっぺの法則」 つか、正式版に同梱されてんじゃないの?>Nスク2の講座ページ Nスク2使ってる人が情報不足で喘いでいる様子は見ないから機能してる情報源は一応あるんじゃない? ふと存在を思い出したけど日本語以外を拒否するdll(getlang.dll)って現存しないんだっけ?2009年ごろのやつ 唐突だけどNscの統合開発環境ソフトみたいなのってないのかな? 今はサクラエディタでいろいろ設定して色分けとか予測変換とか駆使してやってるけど、かゆいとこに手が届かない感じがして微妙にストレス溜まる… 命令の簡単なリファレンスとか、インテリセンスとかエラー予測とかがついた簡素なテキストエディタでもいいから欲しいわ 一年くらい前から同じようなこと考えてるな 便利なIDE作れたらなあと思いながらなかなか仕様も決まらんし手も付けてないが ろだのn0241ってファイル破損してる?アーカイブの方も含めて解凍するとdeffontd.dが途中で切れてしまう >>440 正常なファイルをあげなおしました ご迷惑おかけしてすみません ろだと言えばスレへのリンクが板移転前のurlになってる気がする x字間を-(文字サイズの半分)に 一文字ずつ表示 全角文字を表示したらlocateで1文字飛ばす これで見た目上は奇数バイトの半角文字テキストを表示できないだろうか テキスト表示速度って瞬間表示前提にしちゃって大丈夫かな、速度可変にするとシステムカスタマイズが色々めんどい 表示遅くてイライラすることはあっても、早くすぎて嫌だっていう声聞いたことないし俺はテキストスピード調節自体をなくしたよ。 袋文字プラグインやdeffontd.dllは瞬間表示前提だよね(deffontd.dllは無理すればゆっくり表示もできなくはないけど) 現代人が時間ないのか分からんけどツクール系ノベルとかでも瞬間表示主流になって久しい 文字表示の合間に演出入れるとか 文字待ち演出しないなら瞬間表示の方が テキストをサッと読めて楽ってのはあるのかもね deffontd.dllでテクスチャ用意→スプライト化→ドロップシャドウdllのうちどちらか→表示 でdeffontd.dllの機能使いつつ袋文字使えるって認識で合ってる? 非公式マニュアルのダウンロード版解凍できないというツイート見かけた 今試してみたら破損してるっぽいです >>454 あれー 確認したけどうちではトップからのも倉庫からのも大丈夫だなあ ファイル倉庫の方を試してみたけど、うちの環境ではダメだったよ ツールはunzip(6.00 linux)です 「セントラルディレクトリの終端レコードのシグネチャが見つからない」ってエラーがでるっす 手元の解凍ソフトで試したら7zipでは解凍できた。WinRARとLhaplusではエラーになる ファイル自体は無事だけどファイル形式情報に問題が出ている →そういう場合に無視して解凍するソフトならセーフ、違ったらアウト こうかね 皆さん報告ありがとう たぶん 7zipで圧縮率を最大にしてたのが問題だったっぽいです アーカイブしなおして上げなおしました。これで大丈夫なはず サイズは変わってますが中身は一緒です 7zipの最大圧縮率って他のソフトで解凍出来なくなる場合があるのか、俺も気を付けよう NScripter2特設ページ http://www.nscripter.com/nscr2.html NScripter2本体(16/03/14) エンジン本体と開発ツールとマニュアルと最小限のサンプルスクリプトが同梱されています。(9.27)サンプルスクリプトの選択肢処理のバグ修正(8.27)v1.10 バグ修正 必ず最新版を使ってください。(3/14)v1.11 バグ修正、画像の座標を別ファイルに切り分けることを可能にした。 台本ツール(16/03/14) プレーンテキストのシナリオファイルから台本作成するツールです。nscr2.exeで動いています。NScripter2専用というわけではありませんが、タグの仕様に合わせてあるので便利です。 (04/15)仕様変更、作品名を管理するようにした。(03/14)対応テキスト形式を増やし、誤字にもかなり強くした。 deffont.dllって半角コンマは表示できない? できるよ、こんな感じで NSDCall(0,"*640,48",fontproc,"24,24,あいうえお,かきくけこ") NSDCall(0,"*640,48",fontproc,"24,24,,,,,,,,,,,,,,,,,,") NSDCall(0,"*640,48",fontproc,"24,24,,,,,%#FF0000,,,,%#00FF00,,,,") deffontd.dllだと引数の数がぶれるせいか上手く出せなかったような気がする deffontd.dllは、自分の環境だとn_0241.zipがうまく解凍できないのでちょっとわからないですね まとめてzipになってる方駄目でも ttp://nscuploader.daiwa-hotcom.com/uploader_list.htm の方は解凍できるんじゃない? 同梱されてるソース見ると半角カンマでsplitしていて バラした結果が3,4,5,7,8個以外だと throw new Exception("フォントのDLLに渡したパラメータ数が不正です。: " ~ toString(params.length)); で処理中断してるみたいね >>466 ありがとう、解凍できました >467に書いてある通りで、半角カンマは出力できないね readValue()を改変してエスケープ文字を飛ばすようにして while(str[pos] != ',' && str[pos] != '\0'){ if(str[pos] == '%') result ~= cast(char)str[pos++];//追加する一文 if(str[pos] == '\0') break;//念のため result ~= cast(char)str[pos++]; } Font()内のエスケープ文字の処理にcase ',':追加すれば "%,"で半角カンマ出力できるようになると思うけど 自力で改変&コンパイルできる人いたら頑張ってみて あるいは%直後の文字を見ている箇所少しいじって 「%cなら,に置き換える」的な処理作っても大丈夫だと思う そっちの方がスマートだね //文字そのものを表示したいらしい。そのまま表示部へ。 break; //3行追加 case 'c': str[pos] = ','; break; D言語コンパイルできる環境ないんでテストしてないけど こんなんでいけるかしら? ウインドウサイズ変えて遊んでたら偶然起きた現象(Win8.1の32bitで発生) ;$V4095G200S120,100L10000 みたいな極端に小さいウインドウで起動すると初期状態の黒背景が一部変になる(右下が白い) だいぶ前のバージョンの話なんですが、どなたか教えていただけませんでしょうか? たとえば以下のようなsetwindow命令を一度出すと、その後の文字スプライトにも 文字に影が付いてしまうのですが、これを回避する方法はありませんでしょうか? setwindow3 50,470,30,3,23,23,0,4,60,0,1,"image\system\window.bmp",0,425 これを以下のようにして再度命令を出すことで影を失くすことはできますが、 これでは表示されていたテキストが消滅してしまいますので困っています。 setwindow3 50,470,30,3,23,23,0,4,60,0,0,"image\system\window800.bmp",0,425 どうかよろしくお願いします。 ごめん、書き込み失敗した… spfont "MS ゴシック",23,23,0,4,0,0 を事前に一回指定しておくといいかも >>474 ありがとうございます、今調べてみましたらそういう命令があったのですね、知りませんでした。 さっそく試してみます、重ねてありがとうございました。 新ボタン命令(っぽい処理)をLuaで真似て作った ttp://ux.getuploader.com/nsc_pub/download/7/nsc_pub_7.zip btrans等再現できない(と思われる)機能は再現してなかったりするけど使う人いたらどうぞ 👀 Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) 影なしの文字スプライトって微妙に使い所難しくない? 俺が使おうとするとどうしても背景色に溶け込んじゃう >背景に溶け込む ・下にテキストウィンドウ代わりのスプライトを半透明で敷いておく ・フォントを大きく、太文字にする 対策ってこれくらいかしら? >使いどころ DropShadowとか使いたい場合は、影ない方がいいのかも >>478 あーなるほど、プラグインのために使うってのが頭からすっぽり抜けてた anm.dllの作者さんはもう見てないだろうか pupudebug.dllのフォントの大きさをもっと大きくして欲しい・・・ 高解像度ディスプレイだからか字が豆粒みたいで非常に見にくい 最終2012年だから微妙に厳しそう だけどサイトに連絡先乗ってるからダメもとで要望出してみてもいいんじゃないか >>480 まさか使ってくれてる人がいたとは思いませんでした。 pupudebugを久しぶりに更新して、フォントサイズを変更できるようにしときました。 詳しくは00.txtの最後のほうを見て下さい。 1週間前にも告知いたしましたが再度告知致します。 ゲ製板の任意ワッチョイの導入についての投票を8月7日(日)に行います。 スレの>>2の訂正部分に気を付けて是非参加お願い致します。 http://tamae.2ch.net/test/read.cgi/vote/1469829608/ >>483 レス見てなかった 対応ありがとうございます!これでデバッグが捗ります! 【訂正】 >>484 において8/7(日)に行うと告知されたワッチョイ導入についての投票ですが、 自治スレでは投票の是非について結論が出ておらず、 現時点において投票の実施が決まったという事実はありません なお、ワッチョイ導入そのものが否決されたわけではありません 導入についての議論は現在も自治スレにおいて継続中です ご意見のある方は自治スレまでお越しください ■ ゲーム製作技術板自治04 [無断転載禁止]©2ch.net・ http://echo.2ch.net/test/read.cgi/gamedev/1469698797/ 荒らしが出没しておりワッチョイの議論だけでなく投票自体もまとまらないから 投票を開始しましたが【訂正】と言い投票自体を妨害する方が出没しています。 投票自体は20:59まで行っており、確認時間も23:59までの3時間行っておりますので 是非参加お願いいたします。 http://tamae.2ch.net/test/read.cgi/vote/1469829608/ NScripterDSってplayexしたoggファイルをstopで停止できなかったりする? playとplayloopexで再生されたファイルは止まるけどplayexだけ0が返っちゃう あ、playfreeで再生されてるとそもそもstopで止まらないのか… 連投すまん、stopにフェード時間与えるとボリュームが0になるだけで再生が止まらない。これは仕様?Win8.1 仕様ぽいね[OS:Wine-1.4] exec_dll "NScriterDS.dll/Volume|name|0|time" してるだけみたい 自前でStopしてVolume再設定するといいかも ;test01.oggを読み込んで再生する *define stralias file_name,"test01.ogg" defsub play_ds game *start exec_dll "NScripterDS.dll/Load|" + file_name + "|" + file_name + "|2" クリックで再生する\ play_ds file_name クリックでフェードアウトする click exec_dll "NScripterDS.dll/Stop|" + file_name + "|2000" delay 2000 クリックで再生する\ ;exec_dll "NScripterDS.dll/Volume|" + file_name +"|10000" play_ds file_name 終了します\ exec_dll "NScripterDS.dll/Free|" + file_name end *play_ds getparam $0 exec_dll "NScripterDS.dll/Stop|" + $0 exec_dll "NScripterDS.dll/Volume|" + $0 + "|10000" exec_dll "NScripterDS.dll/Play|" + $0 return ありがと、新しくloadするにせよロード済みのid使うにせよplay前にあらかじめstopとボリューム初期化噛ませておいた方が安全ですかね… splitが標準命令に入ってるのは割と偉い判断だったと思う >>493 ものすごい遅いレスだけど、stopとfreeの違いはリファレンスに書いてあるよ あとろだのラッパーなんかも見てみるといいと思う よほど特殊な使い方でない限りは2曲前のメモリを解放するようにしとけばクロスフェードさせつつメモリの心配せずに済むと思う @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使うためには何すりゃいいですか? こんな感じかな //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( 書き込み失敗した… 続きです //関数のポインタ変数に実際のアドレスを割り当てる 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") >>498-499 おおお動いた!ダメもとで聞いてみてよかった、ありがとうございますっ! 1.20がリリースされて同梱のサンプルが動かせるようになってるね 1.11で再発したprintとtimeのバグも修正されたけど tend bdup bjoiny sdelete clearmessage sklppauseのバグは相変わらずかぁ・・・ あどばんすどNscripterオフィシャルガイドの、セーブ、ロード画面のカスタマイズを参考に、セーブ、ロード画面をカスタマイズしたのですが、ロードすると、ゲーム画面ではなく、セーブ画面でロードされてしまいます 。 どのようにすれば、ゲーム画面でロードされるようになるのでしょうか? 本が手元にないから分からないけど、とりあえず *define節に autosaveoff を追加してみたらどうかしら? >>503 出来ました! とても悩んでいたので助かりました。 ありがとうございました。 セーブポイント周りの仕様は(太古の時代は知らんけど)基本互換性維持してきたNScripterの数少ない変更があった点だから本参考だと引っ掛かる 2.92以後対応の解説サイトならその辺も書いてくれてると思う gettag命令では、文字列変数は取得できないのでしょうか。 mov $Name, 途切れて失礼しました、表示できない文字使ったのかも。 gettag $0 で、ブラケットで囲った$Nameを取得し、名前ウィンドウに表示しようとしても空白になってしまいます。分かる方、どうか返信お願いいたします。 [$Name]をgettag $varで拾うと空文字列になるね >取得し、名前ウィンドウで表示 やるならこんな感じかな *define humanz 200 windowback pretextgosub *pretext_lb numalias Name,800 game ;続く *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 506です、返信気付かずお返事遅れてすみません! >>508 言葉足らずですみませんでした>_< >>509 すごい! 詳細な実例ありがとうございます!! 助かりました! 命令の引数以外に書かれた$0や%0はだいたい中身に自動変換されると思って間違いない 改めてテストしてみたけど [$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 LuaアリならNSCall_tag内で変換するといいかもしれんね ろだです アップローダのファイル倉庫にあるアーカイブですが、>>459 問題により差し替えました(中身は一緒) 本スレへのリンクも後ほど更新いたします 長い間ほったらかしにしてしまいすみませんでした また、ご指摘いただいた方々には重ねてお詫びを申し上げます なんかセーブするとsave1.ssっていうファイルが出来てるけどなんなんでしょうか 実態はスクリーンショットbmpみたいだけどスクショ系命令は使ってません >>518 自作のスクリプトの話? このスクリプトで.ssってファイルできる? *define game *start くりっく \ savegame 10 end >>519 自作のスクリプトの話です >>519 で.ssはできなかったから組み方の問題か…… かなり作りこんでるから原因究明に骨が折れそうだ わかった!NSDCopyToBgやbgcopyを使うと.ssが一時作成されて、セーブ時にそれがそのまま残るみたいだ 以下は検証スクリプトなので、まずい所あれば指摘してもらえるとありがたいです *define game *start bgcopy drawfill 255,0,128 draw savegame 1 click end 本当だね。うちの環境でも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 ありがとさんくす 仕様なら気にすることないですね これでやっと先に進める…… ろだが繋がらない状態が続いてるみたい? ファイルが入用な方は直接こちらから飛んでください(すみません) http://ux.getuploader.com/nsc_pub/ http://ux.getuploader.com/nsc_arc/ 👀 Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) 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 のように代入しておいたりすると機能しません そんな事で使い物になる筈がないので 私がとんでもないみす勘違いをしているのかもしれませんが… どなたか分かる方がいらっしゃったら助言下さるとありがたいです! >>527 一行目 $0で取得することしかできないのでしょうか? 「$0でしか」取得することしかできないのでしょうか? の間違いでしたすみません >>527 もう少し検証したところ、 $0なり$nameなりに全角文字列が入っていると機能しないようです $nameに"name"を代入しておくと機能しました しかしそれを使って"なまえ"と入力するとまた機能しなくなります… そういう仕様なんでしょうか? 今回は諦めてinputを使おうと思いますが、 何か分かる方いらっしゃればコメント下さい…! 長々と一人で失礼しました これで動かない? *define numalias name,100 game *start mov $name,"あいうえお" textfield $name,100,50,320,70,10,20,1 $name click end >>530 返信ありがとうございます! 頂いたスクリプトのみで動かすと機能しました! しかし自分のに組み込むと駄目なので検証してみたところ btndown 1 が機能している事が原因だと判明いたしました! クリックで飛んだ先でtextfield命令があるので、 そのせいでマウスを押し続けている間はテキストフィールドが開いているが 指を離すと消えてしまうという状態になっていました 飛んだ先でbtndown 0を入れてもclickなりを挟まないと解除はできないようなので btndownを諦めるか何かをクリックさせるかで解決できそうです 確実に動くスクリプトを頂いた事で、色々検証できました! 本当にありがとうございました 連投すみません clickさせなくてもprintを挟めば大丈夫でした 解決しました、ありがとうございました! 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直接呼ぶより僅かに動作早い? print 1よりNSUpdate()の方が速いか?って言う意味なら 有意な差はないんじゃない? --system.lua function NSCOM_invalidate() NSInvalidate(0,0,639,479) end function NSCOM_update() NSUpdate() end ;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 計測終了です 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 ttps://ux.getuploader.com/nsc_pub/download/8 細かく試してみた。僅かにNSUpdate()呼びの方が軽くはなるみたいだけど… その僅かな差が問題になるほど頻繁に画面更新するスクリプトならそもそもNSLuaとか使った方がよくない? って感想かなあ 👀 Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) setlayerで指定する「レイヤー番号」ってそれ自体はスプライト番号とはまったく別枠なの? lsp 10,"*1" と書いて初めてスプライトと結び付く? 十年以上勘違いしてたぜ…… >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」 のようにイメージを読み込んで表示するのに対して こうしたやり方を「動的に画像を生成する」といいます 最終バージョンのエヌスクリプターで作成したゲームを知人のパソコンで開こうとすると、立ち上がって少しで「動作を停止しました」として落ちてしまうそうです。 自分の環境win7のパソコン二台で試しましたが問題なく進みます。 知人のパソコンは8のようなのですが、ファイルの共有のプロパティに問題があるのではという意見を受け、 手元で確認したところ互換性にチェックを入れる項目がありました。 が、試しに開いた他ソフトのプロパティには存在する「セキュリティ」という項目もそれらしく見えたのですが エヌスクリプターのエンジンのプロパティにはそれが含まれていません。 知人に何度も試してもらうのも申し訳なく、共有の問題が本当に原因なのか、悩んでいます。 グーグルでも「落ちるときは最終バージョンのエンジンを使って」とまでしか言及が見つからず途方に暮れております。 似たような状況に陥った方はいらっしゃらないでしょうか?またこれと思われる原因は他にありますでしょうか? 「Windows 動作を停止しました」でググるとNScripter以外でも検索に引っかかるね Vista以降で極たまに発生することがあるみたい たぶん、Windowsのよく分からん不具合の一つだと思う OSをリカバリーすると改善したっていう書き込み見たけど ちょっと試すのは面倒くさいよね… >>540 自分もwin8.1で、いろんな所のNスク製ゲームやってるけど落ちた事はないよ 一応、互換性は右クリック→互換性のトラブルシューティングで変更できるみたい もう試してたらゴメン >>540 >>541 >>542 配布したゲームのプレイヤーの何人かからWin8以降の環境でゲームを起動したら 上手く動作しなかったという連絡もらったけど その後OSを再起動したら問題なく動いたらしい コーディングが悪いんだろうけどパラメータに応じて分岐する馬鹿みたいな量のif文を書いてしまっているので switch命令欲しい >>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 ;00.txt *define luasub tablegosub game *start inputnum %0,"数値を入力して下さい(1,2,15)",160,96,64,24 ;パラメーターによる分岐が一応実現できる ;tablegosub (Luaの)テーブル名,パラメーター tablegosub "sample",%0 end >>543 .541.542 再起動とソフトの入れ直しで解決したようです 手元で現象が確認できずあくまでも「したようだ」とのことなのがもどかしいですが ありがとうございました >>545-546 tablegoto命令の存在を知らなかった… ありがとう!Lua難しそうだけどやっぱり使えないと駄目だなあ 蛇足かもしれんけど、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 ;[%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 ;テーブルの処理 *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 >>549-551 すごく詳しいサンプルありがとうございます これを参考に今日明日がんばってみます 簡単にお金が稼げる方法興味ある人だけ見てください。 グーグル検索⇒『来島のモノノリウエ』 3YM4IMJTW8 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる