スクリプト/一味違うノベルゲームの作り方(履歴ID:554)
最終投稿者: kage1215
更新:2013/12/17 22:38:25
もともとあるspeak関数などで作成するのももちろんいいのですが、
ひと味ちがうノベルゲームを作りたい方向けのページ。
基礎知識として、スプライトは把握してたほうがベターです。
(現在鈍意更新中)
オリジナルなメッセージウインドウを設定する。ver1
オリジナルのメッセージウインドウを使用しようとするとspeak関数が使えません。
speak関数が使えないとなると、
ウインドウのサイズを指定するなどspeakと名前がついている関数を
設定し直す必要があります。
開始スクリプト
以下を開始スクリプトに貼り付けます
設定・作成方法
開始スクリプトの以下初期設定欄を調整することで、
オリジナルspeakウインドウを使ったノベルを作ることが出来ます。
lineでは一行あたりの表示時間の間隔を設定します。
変数は左から
(フォントサイズ,フォントカラー赤,フォントカラー緑,フォントカラー青
横位置(xPosition),縦位置(yPosition),幅(width),高さ(height))
変数は上から時計回りに指定します。
(上、右、下、左)です。
また、このpaddingを基に、クリックマークの位置を設定しています。
ここを設定しておくと、
名前欄に数字を打ち込むだけでそのキャラクターの名前が表示されます。
また、次に設定するcharacterWcolor()で、ウインドウの種類を設定します。
一番左は、空白にしてト書き部分にしておくといいでしょう。
characterNameで入れた人物順に数値を入れてください。
その際に、""の間に、,で区切って入力してください。
ウインドウの大きさを設定します
本文入力方法
またcharacterNameで指定した番号を入れる事もできます。
単位はミリ秒です。
その他、fontsizeやfontcolorは、Rmakeに実装されてるものを使用します。
ひと味ちがうノベルゲームを作りたい方向けのページ。
基礎知識として、スプライトは把握してたほうがベターです。
(現在鈍意更新中)
オリジナルなメッセージウインドウを設定する。ver1
オリジナルのメッセージウインドウを使用しようとするとspeak関数が使えません。
speak関数が使えないとなると、
ウインドウのサイズを指定するなどspeakと名前がついている関数を
設定し直す必要があります。
開始スクリプト
以下を開始スクリプトに貼り付けます
#OSW ver1.0 2013/12/17 setCanvasVisible(true) def OSW_wait(text,line)#waitの設定 setVariable("waitText", text) setVariable("waitLine", line) end def OSW_name(font,Fr,Fg,Fb,xp,yp,wide,height)#name欄の設定 setTextFontSize(font) setTextFontColor(Fr, Fg, Fb) if getVariable("talkareaN") deleteText(getVariable("talkareaN")) end setVariable("talkareaN", createText(xp, yp, wide, height))#名前欄ポジ・サイズ end def OSW_speakPadding(top,right,bottom,left) #speak欄padding setVariable("speakPadding",createArray()) getVariable("speakPadding")[0]=top; getVariable("speakPadding")[1]=right; getVariable("speakPadding")[2]=bottom; getVariable("speakPadding")[3]=left; end def characterName(name)#キャラクターの名前 setVariable("characterN",splitString(name, ",")) end def characterWcolor(y)#キャラクターの毎セリフウインドウY YP=splitString(y, ",") setVariable("characterY",createArray()) c=0 while c<getArrayLength(YP) getVariable("characterY")[c]=toNumber(YP[c]) c=c+1 end end def Ospeak(name,talk) #名前欄 ##名前欄No text=name if name>=0 text=getVariable("characterN")[name] y=getVariable("characterY")[name] else text=name y=getVariable("characterY")[0] #名前一覧未設定Y end #本文欄#################################### #背景指定 setSpriteRect(getVariable("speakBG"), 0,y,getVariable("OSWbgX"),getVariable("OSWbgY"),getSpeakWindowX(),getSpeakWindowY(),getSpeakWindowWidth(),getSpeakWindowHeight()) setSpriteZOrder(getVariable("speakBG"),20) drawCanvas() #文字位置指定 setVariable("talkarea", createText(getSpeakWindowX()+getVariable("speakPadding")[3],getSpeakWindowY()+getVariable("speakPadding")[0],getSpeakWindowWidth()-getVariable("speakPadding")[1],getSpeakWindowHeight()-getVariable("speakPadding")[2])) setText(getVariable("talkareaN"), text) text="" if getVariable("waitLine")==0 && getVariable("waitText")==0 setText(getVariable("talkarea"), talk) elsif getVariable("waitText")==0 talks=splitString(talk, "\n") c=0 while c<getArrayLength(talks) text=text+talks[c]+"\n" setText(getVariable("talkarea"), text) c=c+1 waitTime(getVariable("waitLine")) end else talks=splitString(talk, "") c=0 while c<getArrayLength(talks) text=text+talks[c] waitTime(getVariable("waitText")) if talks[c]==toString("\n") waitTime(getVariable("waitLine")) end setText(getVariable("talkarea"), text) c=c+1 end end setVariable("talkareaC", createText(getSpeakWindowX()+getSpeakWindowWidth()-getVariable("speakPadding")[1],getSpeakWindowY()+getSpeakWindowHeight()-getVariable("speakPadding")[2],getTextFontSize()*2,getTextFontSize()*2)) setText(getVariable("talkareaC"), "▼") startInput() loop = true while loop while hasInput() takeInput() if isMouseDown()||isKeyDown("ENTER") loop = false end end waitTime(30) end endInput() setSpriteRect(getVariable("speakBG"), 0,0,0,0,0,0,0,0) setSpriteZOrder(getVariable("speakBG"),0) deleteText(getVariable("talkarea")) deleteText(getVariable("talkareaC")) setText(getVariable("talkareaN"), "") drawCanvas() end ###############以下初期設定欄############################################### def OSW_default() setVariable("speakBG",createSprite(213826))#speak欄 画像IDを入れる setVariable("OSWbgX",800)#元画像speak横サイズ setVariable("OSWbgY",200)#元画像speak縦サイズ setSpriteZOrder(getVariable("speakBG"),0) OSW_wait(0,50)#waitの設定 text,line OSW_name(18,255,255,255,50,420,200,20)#name欄の設定 font,Fr,Fg,Fb,xp,yp,wide,height) OSW_speakPadding(20+25,60,40,40)#speak欄padding top,right,bottom,left characterName(" ,A子,B君,C仮面")#キャラクターの名前 characterWcolor("0,200,400,200*4")#キャラクターの毎セリフウインドウY setSpeakWindowRect(0, 400, 800, 200)#ウインドウの大きさ設定 setTextFontSize(18) setTextFontColor(255, 255, 255) end OSW_default()
設定・作成方法
開始スクリプトの以下初期設定欄を調整することで、
オリジナルspeakウインドウを使ったノベルを作ることが出来ます。
- setVariable("speakBG",createSprite(▲▲▲))#speak欄 画像IDを入れる
- setVariable("OSWbgX",800)#元画像speak横サイズ
- setVariable("OSWbgY",200)#元画像speak縦サイズ
- OSW_wait(0,50)#waitの設定 text,line
lineでは一行あたりの表示時間の間隔を設定します。
- OSW_name(18,255,255,255,50,420,200,20)#name欄の設定 font,Fr,Fg,Fb,xp,yp,wide,height
変数は左から
(フォントサイズ,フォントカラー赤,フォントカラー緑,フォントカラー青
横位置(xPosition),縦位置(yPosition),幅(width),高さ(height))
- OSW_speakPadding(20+25,60,40,40)#speak欄padding top,right,bottom,left
変数は上から時計回りに指定します。
(上、右、下、左)です。
また、このpaddingを基に、クリックマークの位置を設定しています。
- characterName(" ,A子,B君,C仮面")#キャラクターの名前
ここを設定しておくと、
名前欄に数字を打ち込むだけでそのキャラクターの名前が表示されます。
また、次に設定するcharacterWcolor()で、ウインドウの種類を設定します。
一番左は、空白にしてト書き部分にしておくといいでしょう。
- characterWcolor("0,200,400,200*4")#キャラクターの毎セリフウインドウY
characterNameで入れた人物順に数値を入れてください。
その際に、""の間に、,で区切って入力してください。
- setSpeakWindowRect(0, 400, 800, 200)#ウインドウの大きさ設定
ウインドウの大きさを設定します
- setTextFontSize(18)
- setTextFontColor(255, 255, 255)
本文入力方法
- Ospeak(name,text)
またcharacterNameで指定した番号を入れる事もできます。
- OSW_wait(20,1000)
単位はミリ秒です。
その他、fontsizeやfontcolorは、Rmakeに実装されてるものを使用します。
- 例
Ospeak(0,"その時、東の空から紫に光る謎の物体が\n迫ってくるのであった") waitTime(3000) setTextFontSize(24) OSW_wait(5,5) Ospeak(1,"空を見ろ!あれは何だ!\n鳥か!飛行機か!\nいや大迫カメンだ!!") OSW_wait(10,1000) setTextFontColor(255, 150, 200) Ospeak(2,"空を見ろ!\nあれは何だ!\n鳥か!\n飛行機か!\nいや大迫カメンだ!!") OSW_wait(20,1000) setTextFontColor(255, 255, 255) setTextFontSize(18) Ospeak("大迫仮面","やあやあ皆さん私が大迫仮面だ!!")