・ゲーム製作板のローカルルール(一部抜粋)
扱う話題
・プログラム、グラフィックス、サウンド、デザイン論などをゲーム製作の視点から
・ツール(HSP、ツクール等)についての話題
・ゲームの共同製作やプロジェクト活動
禁止事項
単発質問スレ、単発依頼(「〜作って」)スレ、
個人叩き(個人に対する誹謗中傷)、ツール叩き(具体性のない批判)
・ローカルルールで板違いの話題に指定されている項目の内
このスレで抵触する可能性の高い項目について。
・市販ゲームの質問や感想
このスレの場合、単なる板違いのみでは無く、複号ネタに繋がり易いです。
・違法性を含む話題
ONScripterによる多種ハードウェア対応化の話題はお控え下さい。
このスレでの今までの判定結果は、限りなく黒に近い灰色です。
・その他
・ここは同人ゲーム板ではありません。(ローカルルールそのものが異なります)
・同人サークル活動に関する話題は、同人ゲーム板等でお願いします。
・名無しでない同人サークルメンバーとしての書き込みはお控え下さい。
・このスレでゲームの共同製作やプロジェクト活動の宣伝はお控え下さい。
・不快な発言を見掛けても落ち着いてスルーして下さい。
<荒らし、煽り、晒しはマターリ放置で>
・彼らは放置が一番キライ
・彼らは常に誰かの反応を待っています
・彼らは煽りや自作自演であなたの反応を誘います
・彼らは華麗にスルーして自然消滅させましょう
スレ立て人からのお知らせ
・うpろだのリンク表記を現行のurlに変更しました。
・今回のリンク切れは表記の抹消では無く、リンク切れ表記の付加で対処しました。(今回のみの予定)
・本家からNScripterサポートBBSが無くなっていた為、テンプレを一部変更しました。
>>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
とやっても画面の真ん中あたりで画像が切れてしまいます。
元画像のサイズをいろいろいじってみたんですが、切れてしまうか大きく
はみだすかのどちらかで・・・。
同じ状況から解決した方、方法を教えていただければ・・・。
33 :
31:2014/02/08(土) 14:21:42.06 ID:z0REhtaf
>>32 できました!ありがとうございます!
言われてみれば「c」でよかったんですね・・・
初心者で、フリーノベルゲー製作中なので
良ゲー作ってご恩を返せたらと思います
良ゲーよりもまずは完成だな
>>25,28
ここをスマホ板のヘルプ出張所に使おうにも質問内容と実際の動作が噛み合わなくてバレるね。
この板にONScスレを立てるとしてもスレの利用希望者はどれだけ居るのかなー?
このスレの住民としてはONScスレにノータッチのまま今まで通りにマターリ進行して行くと思うよ。
今までどおりONScripter利用者は犯罪者として糾弾していきます
といった荒らしの余地すら生むから話題そのものが非推奨なのよ、最初に質問した人分かってくれただろうか
ONScスレが立ってから、ここの住人に絡みたいだけの人の仕業だったと判明されそうな流れっぽいね。
でも、それがそのまま未だにゲ製板にONScスレが立たない理由になっていると思うよ。
テンプレでONScripter利用者は犯罪者だと認定しているので
このスレそのものがONScripterを糾弾する含みがある
キ○ガイかかわると碌なことが無い
NScを使わない限りこのスレに用は無い
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勉強するわ。
Luaは部分的に使うだけでもいいから凄く便利だよ
48 :
名前は開発中のものです。:2014/03/07(金) 20:20:52.95 ID:DmPgneNa
NS2の質問はあり?
ものによるんじゃね、どうせ勢いもあんまりないし書くだけ書いてみなされ
50 :
名前は開発中のものです。:2014/03/10(月) 14:23:40.66 ID:G1yKz/y2
NS2の質問で、質問は2つなんだけど、
・立ち絵やその他スプライトを拡大縮小する事は出来るのか?
・立ち絵のアニメーションはできるのか?
最初のはリファレンスに命令が記載されてないけど
これって拡大縮小はできないって事なのかな
二番目はspの引数にanimtimeを設定してセルに複数の画像を記述すれば
アニメーションというか、簡単な画像の切り替えは出来るんだけど
やりたいのはそういうのじゃなくて、例えば立ち絵を画面右側から左側に
スーッと移動させるとか、画面上から下になんかのスプライト画像を落とすとか
そういうアニメーションのやり方が分からない
ここ数ヶ月全く触ってないけど、
自分はNS2で拡大縮小アニメーションや移動アニメーションなんかを弄ってました。
RESETTIMER と GETTIMER を利用して指定したミリ秒での操作を。
それと do と loop を利用して、その秒数の間だけ SPMOVELT を使ってアニメーションを行わせる、みたいな感じです。
52 :
名前は開発中のものです。:2014/03/10(月) 21:11:53.42 ID:G1yKz/y2
>>51 レスありがとうございます。
resettimerとgettimerは拡大縮小の関係で使うという事でしょうか?
ちょっと全く取っ掛かりが分からなくて・・・。
できればサブルーチンの例なんかご教授いただけると分かりやすのですが・・・
ループさせてspmoveのx値を1F単位で動かすのは考えて
実際にやってみたのですが、上手く行きませんでした
53 :
名前は開発中のものです。:2014/03/10(月) 21:13:01.04 ID:G1yKz/y2
作ったループと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
54 :
名前は開発中のものです。:2014/03/10(月) 21:15:37.95 ID:G1yKz/y2
<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 :
名前は開発中のものです。:2014/03/10(月) 22:19:53.73 ID:G1yKz/y2
レスありがとうございます。
取り急ぎお礼レスだけ書き込ませて頂きます。
これからよく内容読んで解析してみます
>58
それで、すみません、
>>55-57 は拡大縮小のアニメーション処理は行っていないです
立ち絵をブルブル震わせたり、ジャンプぽい動きをさせたりだけで済ませるための命令として用意したので..
概念としては
>>57 の @lcanimation 内にある
RESETTIMER
do
loop
あたりに囲まれている処理をなんとなく読み解けば、応用できるのではないかと思います。
60 :
名前は開発中のものです。:2014/03/10(月) 22:26:32.41 ID:G1yKz/y2
>>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系の命令をはさんでおいた方が良いかと思います
62 :
名前は開発中のものです。:2014/03/10(月) 22:40:34.61 ID:G1yKz/y2
>>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入れてないや・・・(;゚ω゚) 大丈夫かしら
64 :
名前は開発中のものです。:2014/03/10(月) 23:05:08.31 ID:G1yKz/y2
>>63 ありがとうございます。
まだ内容解析できてないませんが、参考にさせて頂きます
メール欄にsageって入力してな(´・ω・`)
>>65 すみません、忘れていました・・・。
あともう一つ、教えていただきたいというかお聞きしたいのですが
今ノベルゲームを作っています
そこで、私は「スプライト名」、「変数名」の2つを一覧.txtというファイルを作り
そこで一覧化して管理する事にしました
例)
フラグ名:%flag (内容 ON:1 OFF:0)
設定契機:@game_start、@event_1
解除契機:@ending、@test2
とかこういうのを一覧化しているんですが、こういうのはゲームを一本作るにあたって
やった方がいいのでしょうか?それともやる必要はないのでしょうか?
また、私は現在「スプライト名」、「変数名」について一覧化していますが
この2つ以外にも一覧化すべき(または、した方が便利)なものがあれば
ご教授頂けますでしょうか?
>>66 横だけど
> やった方がいいのでしょうか?それともやる必要はないのでしょうか?
最初にかっちり計画を立てて一気に組み上げるほうが向いてる人もいるし、逆に計画ばかり作りこみすぎてそれで満足しちゃう人もいるし
こればっかりは好き好きだけど、画像とかの素材(手間がかかるもの)は最初に作っておいたほうがいいと思う
でも、どんな出来でもいいからとにかく完成させることがすごーく大事だよ
> この2つ以外にも一覧化すべき(または、した方が便利)なものがあれば
やるんならラベル名、音楽、効果音あたりもかなー
あとちょっとずれるけど、よく使う色もメモに書くなりライブラリとしてまとめるなりすると便利
>>67 確かに、ラベル名は一覧化しておいた方がよさそうですね
ありがとうございます。
69 :
名前は開発中のものです。:2014/03/12(水) 16:22:55.74 ID:IPkEpZcv
Nscripter始めて2日目の者ですが、ググったけど解らないんで教えて下さい。
音声のセリフと文字のセリフを同時に表示させて進めるアドベンチャーゲーム作ろうとしてるんですが
オートで進める場合はどうやるんでしょうか?
メニューのとこのオートモードを使うと音声が終わる前にどんどん先に行ってしまいます。
@を使わずに音声再生が終わったら次の音声に自動で行くにはどうしたら良いのでしょう?
ageなくてええよ
なんだっけ音声いれたことないからわかんないけど
ファイルごとに長さ設定しておけばいいんじゃね?
そうなんですか、それを全てのセリフで設定するのは面倒くさいですね……
73 :
名前は開発中のものです。:2014/03/13(木) 11:57:52.40 ID:smWtYmi3
>>72 出来ました!マジ感謝です。有難うございますm(__)m
今までbgmやmp3でコールしてたのが出来ない原因なのかな?
3日目にして少し前進できそうです。
sage
>>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値は数値が小さい方が手前、というのは
間違いないはずです。リファレンスにも書いてありました。
101 :
名前は開発中のものです。:2014/03/19(水) 16:21:55.73 ID:ffvKRji2
オートモードにして話を読み進めていって選択のところで選ぶ際に2回クリックをしないといけなくなります。
2回クリックして他のラベルに飛んだ時にはオートモードは解除されています。
これをオートモード状態で選択したあともオートモード状態が解除されない様にするにはどうしたらいいでしょうか?
選択肢前にオート状態チェック オートならフラグ立てる
選択肢を選ばせる
選択肢後にフラグ立ってたらオート命令を実行させる フラグはリセットさせる
103 :
名前は開発中のものです。:2014/03/19(水) 16:55:59.57 ID:ffvKRji2
>>102 ありがとうございます
しかし先週Nscripter始めたばかりでまだ良くわかってません。
もし良かったらもう少し具体的にお願いできないでしょうかm(__)m
シスカマのソース内容を読んで理解できる程度のスキルを積む
変数の扱い方覚える
即物的に知っても意味無いから使い始めるなら
基礎は身に付けたほうがいい
そうすれば
>>102が具体的な対処法を示してると分かるよ
105 :
101:2014/03/19(水) 17:42:38.14 ID:ffvKRji2
もっと簡単に考えてました。
102さんの言ってることは薄っすら分かるんですが、まさかシスカマまでいくとなると今の僕では出来なかもorz
シスカマした方が楽だが、別になくてもできる。
select命令の前の行でisskipするだけで状態取得できる。
selectで飛んだラベルの先で判断してオートさせれ。
長年積み重なった便利命令が地味に色々ある
108 :
101:2014/03/19(水) 19:36:35.24 ID:ffvKRji2
レス下さった皆さん、有難うございます。
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」が参考になると思います
113 :
helpよろしくです:2014/03/21(金) 22:13:47.94 ID:NWe/nM23
アンドロイドの実機でプレイした時に出る左端の右クリック、左クリック
などのツールバーはどうすれば消せますか?
>>112 ありがとうございます。
ちょっと今出張中なので試せないので、また触れるようになったら
試してみます
115 :
初心者A:2014/03/23(日) 21:39:50.64 ID:JwvyC9fe
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)"}
↑この記述が間違っているとしか考えられないんですが
リファレンス通りに書いてるつもりなんですが、どこかおかしい所ってありますか?
VIP企画ものは即時成果物が鍵だぜ
>bexec
あ、すまん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 了解しました。
メールを送ってみます。
ありがとうございました。
126 :
名前は開発中のものです。:2014/03/26(水) 04:04:23.62 ID:VNyvE/Qt
>>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キーがデフォルトでデバッグモード起動が割り当てられてて使えない…
デバッグ起動しないようにして使える方法ってある?
bspじゃなかったbexecだった
デバッグって、nscript.datにしたら自動で起動しないようにならなかったっけ?
だから、本番用のコードなら問題ないよ。
今もウィンドウが出たり消えたりするだけで、普通にDキー自体は取得できてるでしょ?
確認しました!wasdキーの十字操作諦めるとこだった…ありがとう!
お、アクションゲームでも作るのかい
ちょっとしたRPG作ろうと思って
セーブデータの上限は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"という関数作れば一応動きそうじゃね
167 :
名前は開発中のものです。:2014/05/15(木) 04:06:19.02 ID:f8gwu8O3
168 :
163:2014/05/15(木) 06:32:41.56 ID:LzCNjPYY
ぬう・・やっぱりちょっと難しいのですね。
コルーチン組むにしても手間が増えて煩雑になってしまいそうなんで、やはり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はどれも問題なく数値が代入されていたので実行上は問題ないのかもと思ったけどなんか妙な挙動してそうで怖い…
&の条件絞込の回数制限とかってあったっけ?
あ、使ったverは最終更新版の2.96です
検証できる環境がないので分からないけど、バッファオーバーフローぽいね。
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行目まで同じ処理です。長すぎるので省略
変数_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
179 :
178:2014/05/26(月) 22:49:05.47 ID:eYuz/ba5
次に、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にたどり着くようで、そのまま終了されてしまいました。
182 :
178:2014/05/27(火) 23:53:33.57 ID:2Rb3MHi3
「>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頑張って勉強して実装するかのどれかにします。
すみません、ありがとうございました。
184 :
183:2014/05/28(水) 15:56:39.32 ID:Wvo5+9lJ
すみません、一応解決しました。
頭悪い方法ですが、"改ページ_"と書いた改ページ判定文字を" "と全角2つにしました。
それなら一応、バックログ時に"改ページ"という明らかな単語は見えませんので
見た目的には解消しました。
お騒がせ致しました。
bspやspstrの制御文字列Pの連番も使えたら便利なんだけどなあ
maxkaisoupageの最大値って50なんですかね?
50以上の数値にすると50より前のログが表示されない…
調べてないが常識的に考えてそんな使わんだろ!?みたいな数値が上限になってることは時々ある
50ページ以上ログ辿るようなゲームだと独自システム組んだ方が色々楽になりそう
サンプルシステム流用してるだけじゃなければ
どこ弄ればいいか分かりそうなものだけど
>>186 最大値は50ではありません。もっと上です
基本的なことなのですが、調べてもさっぱり分からないのでどなたか教えてください。
スプライトボタンにマウスオンしたときに、セル1に切りかわると同時に効果音が鳴るようにしたいのですが、
bsp 11,"P11,0","P11,1,",""
この状態からどうすればいいんでしょうか?
192 :
191:2014/06/03(火) 20:16:40.31 ID:7Mkr3K2a
自己解決しました!お騒がせしました。
nscripterようのリファレンスでrubyon2が非推奨になってるけどなんでだろう。
使いたいけどちと恐いな
非推奨命令も動くものは動くからな、数値ラベルなんかはサイズ指定にバグ抱えてるけど2.96で動く
ある程度ポピュラーだった命令ではっきり動かなくなったのってzenkakkoくらいじゃね
rubyon2って管理面倒くさくね?
196 :
ろだ:2014/07/17(木) 00:29:58.88 ID:4sIE6b1L
乙やで
サーバが無くなっちゃ仕方ないね
乙です
NaClを利用するというのは技術的には面白いけど
何というか始まる前から終わっているみたいな
俺はこういうの見ちゃうと逆に仮想環境じゃ絶対動かないゲーム作りたくなる
すげーな。マルチプラットフォーム一番実現したエンジンがNScripterになるとは
や、文法同じなだけで、別物のエミュレーターみたいなもんだけどさ
非公式とはいえ異様なくらい対応広い文法になったな
2がluaだからluaがコンパイルできる環境なら結構簡単に動作クローン作れると思う。D3D使ってもどうせ今はGLの方がスーパーセットだし。
Nscripterをはじめたばかりで、解説サイト様を見ながらいろいろ試しています
bgのイベント絵を表示したまま、画面をチカチカッと
白や赤で瞬かせたくて、
白い画像を作ってイベント絵と
交互に表示してみたりしたのですが、
なんだかもっさりしてしまいます
人と人がぶつかった時とかの演出で使うつもりです
市販のゲームではとてもよく見る演出なのですが、
解説サイト様を見てもどうやっているのかわかりません・・・
きっとものすごく初歩的なことだと思いますが、
どうにもわからないので
教えていただけないでしょうか
スプライト画像を先に読み込ませておいて
前面に表示させる→消すってやればいいんじゃないかと思うけど
チカチカ演出は嫌われるぞ
フラッシュ・ウインドウごとクエイク・ポポポ音は三大嫌われ要素
ウェイトは?
それでも必要とあらばやっちゃうんだけどね
ここぞという場面で使う分にはいいんじゃね>ウェイト
多用されたらそっとウインドウ閉じるけど
211 :
名前は開発中のものです。:2014/08/20(水) 07:02:16.94 ID:3QG01HIf
ひょっとしなくてもNSLuaのテクスチャとNScripter2のテクスチャって概念違う?
>>196 ろだ無くなったと思ったら移転してたのね
良かった
前から明言されてた内容だけど、誰かがひたすら問い合わせでもしたのかね
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すれば目的は達されるんじゃね
章表示に強制ウェイトかかるゲーム見たら俺はクソゲーと判断するけど
俺なら制作者に粘着して引退に追い込むわ
せ、せやな
俺なら解析してスクリプト修正してプレイする
章タイトルでやりたいなら
画像でやりゃいいんじゃねの
261 :
254:2014/11/19(水) 00:38:25.34 ID:WoRr7bT3
皆さんご指摘ありがとうございます!
>>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箇所越えでしたから結構な量です。
ろだのdeffontd.dllで頑張るとか?
「>(英文)/」の塊は全箇所に書き込み済み?
「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が真理だと思う。
アッ―!!
すいません誤爆しました
許さん@
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レス前で大嘘書いてしまった