スクリプト/一味違うノベルゲームの作り方

最終投稿者:Pink2 mini kage1215 更新:2013/12/17 22:38:25
もともとあるspeak関数などで作成するのももちろんいいのですが、
ひと味ちがうノベルゲームを作りたい方向けのページ。
基礎知識として、スプライトは把握してたほうがベターです。

(現在鈍意更新中)


オリジナルなメッセージウインドウを設定する。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を入れる
セリフのウインドウに使いたい画像IDを▲▲▲に入力します

  • setVariable("OSWbgX",800)#元画像speak横サイズ
元画像の、セリフウインドウの1つあたりの横のサイズを入力します

  • setVariable("OSWbgY",200)#元画像speak縦サイズ
元画像の、セリフウインドウの1つあたりの縦のサイズを入力します

  • OSW_wait(0,50)#waitの設定 text,line
textでは一文字あたりの表示時間の間隔
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
登場人物のセリフウインドウの種類(元画像の縦位置、つまりYPosition)を設定します。
characterNameで入れた人物順に数値を入れてください。
その際に、""の間に、,で区切って入力してください。

  • setSpeakWindowRect(0, 400, 800, 200)#ウインドウの大きさ設定
これは、もともとRmakeにあるスクリプトです。
ウインドウの大きさを設定します

  • setTextFontSize(18)
本文部分のフォントサイズを設定します

  • setTextFontColor(255, 255, 255)
本文部分の文字色を設定します。

本文入力方法

  • Ospeak(name,text)
name欄に表示したい名前を入れます。
また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("大迫仮面","やあやあ皆さん私が大迫仮面だ!!")



コメントする

コメントするには、ログインする必要があります。

コメント一覧

コメントはありません。