メッセージ関数完成!!!
投稿者:
きゅうり
投稿日:2013/01/03 18:26
自作のメッセージ関数です。
このスクリプトをアレンジしてもOKです。
以下の画像を使用しています。
ノベルの場合
RPGの場合
使用例
ツイート
このスクリプトをアレンジしてもOKです。
| ゲームタイプ | 利用 |
|---|---|
| 2DアクションRPG | Yes |
| 2DRPG | Yes |
| ノベルゲーム | Yes |
以下の画像を使用しています。
ノベルの場合
#ノベルの場合のスクリプトです。RPGで使うと大きさが画面に合いません。
setCanvasVisible(true)
def eti_age(a, aki, indexs)#インデックス(変数indexs)に数値や文字列を追加する関数
#a = 配列 aki = 追加する数値や文字列 indexs = 入れるインデックス
a_n = (getArrayLength(a) - 1)
while a_n >= indexs
a_n_pra = a_n + 1 ; a[a_n_pra] = a[a_n] ; a_n = a_n - 1
end
a[indexs] = aki
return a
end
def click_wait()#クリック待ち
startInput()
loop = true
while loop
while hasInput()
takeInput()
if isMouseDown() || isKeyDown("Z")
loop = false
end
end
waitTime(30)
end
endInput()
end
#配列全検索 配列にあるだけ全て探す
def indexOfArray_x(ar, n)
l = getArrayLength(ar) ; r = createArray()
r[0] = -1 ; i = 0 ; m = 0
while i < l
if ar[i] == n
r[m] = i ; m = m + 1
end
i = i + 1
end
return r
end
#配列を一気に設定する関数
def Array(a)
a = splitString(a, ",")
return a
end
#色は「赤」「黄」「紫」「茶」「灰」「青」「緑」「水」「橙」「白黒」の10色が使えます
setVariable("このゲームで使うメッセージウィンドウの色を指定します", "緑")
#メッセージ関数
def speak_j(n,h)#n = 名前 h : 表示する文字 ## j : 自作のj
#//////////////////////////////////////////////////
#ライセンス:自由に利用可(編集可)
#
# メッセージ表示 Ver.1.00
#
#原作者:きゃうり アレンジ元:いない 作:きゅうり
#//////////////////////////////////////////////////
#1行に約30文字まで入ります。
#4行まで入ります。
#改行の2文字等を抜いて、1度に120文字くらいまで表示可能です。
iro = createArray() ; iro = Array("赤,黄,紫,茶,灰,青,緑,水,橙,白黒")
i = 0
while i < 10
if getVariable("このゲームで使うメッセージウィンドウの色を指定します") == iro[i]
if i < 5
messe_g_ID = 165702 ; messe_g_h = 192 * i
else
messe_g_ID = 165695 ; messe_g_h = 192 * (i - 5)
end
end
i = i + 1
end
messe = createSprite(messe_g_ID)#メッセージウィンドウ
setSpriteRect(messe, 0, messe_g_h, 800, 180, 0, 0, 800, 180)
setSpritePosition(messe, 0, 420)
drawCanvas()
setTextFontColor(0, 0, 0)
setTextFontSize(20) ; name_txt = createText(11, 422, 178, 21) ; setText(name_txt, n) ; setTextFontSize(28)
honbun_txt = createText(15, 449, 769, 137)
h = splitString(h, "") ; h = eti_age(h, "", 0) ; i = 1 ; skip = 0 ; h_mojisu = getArrayLength(h)
syasen = createArray() ; syasen = indexOfArray_x(h, "/")
ssi = getArrayLength(syasen)#斜線略してss それによくあるローカル変数の名前iでssi
i = 0
while i < ssi
if h[syasen[i] + 1] == "n"
h[syasen[i]] + h[syasen[i] + 1]
elsif h [syasen[i] + 1] == "\""
qw = 1
while (syasen[i] + qw) < h_mojisu
h[syasen[i]] = h[syasen[i + qw]]
qh = qh + 1
end
popArray(h)
end
i = i + 1
end
kaigyou = createArray() ; kaigyou = indexOfArray_x(h, "/n") ; po = 0
honbun_txt = createText(15, 449, 769, 137)
startInput()
while h_mojisu > i
while hasInput()
takeInput()
if isMouseDown() || isKeyDown("Z")
skip = 1
end
end
if skip == 1
s = sliceArray(h, i, (h_mojisu - i)) ; s = joinArray(s, "") ; h[0] = h[0] + s ; i = h_mojisu
else
h[0] = h[0] + h[i]
end
setText(honbun_txt, h[0])
i = i + 1
waitTime(15)#表示速度(ミリ秒)
end
endInput() ; setTextFontColor(255, 255, 255)
click_wait()
deleteText(name_txt) ; deleteText(honbun_txt)
deleteSprite(messe)
drawCanvas()
end
RPGの場合
#RPGの場合のスクリプトです。ノベルで使うと大きさが画面に合いません。
setCanvasVisible(true)
def eti_age(a, aki, indexs)#インデックス(変数indexs)に数値や文字列を追加する関数
#a = 配列 aki = 追加する数値や文字列 indexs = 入れるインデックス
a_n = (getArrayLength(a) - 1)
while a_n >= indexs
a_n_pra = a_n + 1 ; a[a_n_pra] = a[a_n] ; a_n = a_n - 1
end
a[indexs] = aki
return a
end
def click_wait()#クリック待ち
startInput()
loop = true
while loop
while hasInput()
takeInput()
if isMouseDown() || isKeyDown("Z")
loop = false
end
end
waitTime(30)
end
endInput()
end
#配列全検索 配列にあるだけ全て探す
def indexOfArray_x(ar, n)
l = getArrayLength(ar) ; r = createArray()
r[0] = -1 ; i = 0 ; m = 0
while i < l
if ar[i] == n
r[m] = i ; m = m + 1
end
i = i + 1
end
return r
end
#配列を一気に設定する関数
def Array(a)
a = splitString(a, ",")
return a
end
#色は「赤」「黄」「紫」「茶」「灰」「青」「緑」「水」「橙」「白黒」の10色が使えます
setVariable("このゲームで使うメッセージウィンドウの色を指定します", "白黒")
#メッセージ関数
def speak_j(n,h)#n = 名前 h : 表示する文字 ## j : 自作のj
#//////////////////////////////////////////////////
#ライセンス:自由に利用可(編集可)
#
# メッセージ表示(RPG専用) Ver.1.00
#
#原作者:きゃうり アレンジ元:きゅうり 作:きゅうり
#//////////////////////////////////////////////////
#1行に約30文字まで入ります。
#4行まで入ります。
#改行の2文字等を抜いて、1度に120文字くらいまで表示可能です。
iro = createArray() ; iro = Array("赤,黄,紫,茶,灰,青,緑,水,橙,白黒")
i = 0
while i < 10
if getVariable("このゲームで使うメッセージウィンドウの色を指定します") == iro[i]
if i < 5
messe_g_ID = 165702 ; messe_g_h = 192 * i
else
messe_g_ID = 165695 ; messe_g_h = 192 * (i - 5)
end
end
i = i + 1
end
messe = createSprite(messe_g_ID)#メッセージウィンドウ
setSpriteRect(messe, 0, messe_g_h, 800, 180, 0, 0, 1275, 281)
setSpritePosition(messe, 0, 269)
drawCanvas()
setTextFontColor(0, 0, 0)
setTextFontSize(12) ; name_txt = createText(8, 268, 109, 16) ; setText(name_txt, n) ; setTextFontSize(18)
honbun_txt = createText(12, 289, 487, 84)
h = splitString(h, "") ; h = eti_age(h, "", 0) ; i = 1 ; skip = 0 ; h_mojisu = getArrayLength(h)
syasen = createArray() ; syasen = indexOfArray_x(h, "/")
ssi = getArrayLength(syasen)#斜線略してss それによくあるローカル変数の名前iでssi
i = 0
while i < ssi
if h[syasen[i] + 1] == "n"
h[syasen[i]] + h[syasen[i] + 1]
elsif h [syasen[i] + 1] == "\""
qw = 1
while (syasen[i] + qw) < h_mojisu
h[syasen[i]] = h[syasen[i + qw]]
qh = qh + 1
end
popArray(h)
end
i = i + 1
end
kaigyou = createArray() ; kaigyou = indexOfArray_x(h, "/n") ; po = 0
honbun_txt = createText(12, 289, 487, 84)
startInput()
while h_mojisu > i
while hasInput()
takeInput()
if isMouseDown() || isKeyDown("Z")
skip = 1
end
end
if skip == 1
s = sliceArray(h, i, (h_mojisu - i)) ; s = joinArray(s, "") ; h[0] = h[0] + s ; i = h_mojisu
else
h[0] = h[0] + h[i]
end
setText(honbun_txt, h[0])
i = i + 1
waitTime(15)#表示速度(ミリ秒)
end
endInput() ; setTextFontColor(255, 255, 255)
click_wait()
deleteText(name_txt) ; deleteText(honbun_txt)
deleteSprite(messe)
drawCanvas()
end
使用例
speak_j("きゅうり","改行も\nダブルクォーテーションも入力可能。\"\n関数の_jを忘れずに。")
コメントする
コメントするには、ログインする必要があります。
コメント一覧
1文字分解出てきたときからやれそうダナーって思ってたけど
いざやるとこんなになるのか・・・
な に こ れ す ご い
いざやるとこんなになるのか・・・
な に こ れ す ご い
長いほうは開始スクリプトにでも書けばいいんですよね?
ってか使えますか?
長いほうは開始スクリプトでOKです。
選択肢は未実装です。確かに選択肢がないのはまずいな・・・
「日本語ノベルえでぇた」で使えるサイズなら基本的にOKだと思います(未検証)
messe_g_ID変数に画像IDを入れればOKのはずです。
IDを変えるのは65行目、67行目でいいんですか?