メッセージ関数完成!!!
投稿者: きゅうり 投稿日: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を忘れずに。")
コメントする
コメントするには、ログインする必要があります。
コメント一覧
退会したユーザー(投稿日:2013/01/03 22:40,
履歴)
1文字分解出てきたときからやれそうダナーって思ってたけど
いざやるとこんなになるのか・・・
な に こ れ す ご い
いざやるとこんなになるのか・・・
な に こ れ す ご い
長いほうは開始スクリプトにでも書けばいいんですよね?
ってか使えますか?
長いほうは開始スクリプトでOKです。
選択肢は未実装です。確かに選択肢がないのはまずいな・・・
「日本語ノベルえでぇた」で使えるサイズなら基本的にOKだと思います(未検証)
messe_g_ID変数に画像IDを入れればOKのはずです。
IDを変えるのは65行目、67行目でいいんですか?