スクリプト/かな・カナ入力

最終投稿者:    mini 光楼(114) 更新:2017/02/05 14:38:59
画像のクリップ不要、RPG・ノベル対応の、かな・カナ・全角英数の入力が出来る関数です。

まず下のスクリプトを開始スクリプトにコピペしてください。
#この関数はikosami様の配列を一気に設定する関数を使用しています。
def Array(a) #配列設定用関数
return splitString(a, ",")
end

def nyuuryoku(a,segen) #文字入力関数Ver4
OutputTextColorR=255;OutputTextColorG=255;OutputTextColorB=255
TextSizeColorR=255;TextSizeColorG=127;TextSizeColorB=0
TextTypeColorR=0;TextTypeColorG=255;TextTypeColorB=255
InputTextColorR=255;InputTextColorG=255;InputTextColorB=0
UpDownColorR=100;UpDownColorG=255;UpDownColorB=100
Fsiz=getTextFontSize();FBold=getTextFontBold();FItlc=getTextFontItalic()
CR=getTextFontColorR();CG=getTextFontColorG();CB=getTextFontColorB()
setTextFontBold(false)
setTextFontItalic(false)
case a when 0 bay=1.5625;OutputTextSize=48;UpAmount=20;when 1 bay=1;OutputTextSize=30;UpAmount=0;end
setTextFontSize(OutputTextSize)
setTextFontColor(OutputTextColorR,OutputTextColorG,OutputTextColorB)
OutPoint=0;GoMove=false
PointXmr=4*bay;PointYmr=21*bay-UpAmount;PointWmr=504*bay;PointHmr=110*bay
mr=createText(PointXmr,PointYmr,PointWmr,PointHmr)
case a when 0 InputTextSize=60;when 1 InputTextSize=38;end
setTextFontSize(InputTextSize)
BlockSize=42*bay
HalfBlockSize=21*bay
PointUp=168*bay-UpAmount
PointDown=378*bay-UpAmount
setTextFontColor(TextSizeColorR,TextSizeColorG,TextSizeColorB)
PointX1=4;PointY1=168*bay-UpAmount;PointW1=BlockSize;PointH1=BlockSize
s1=createText(PointX1,PointY1,PointW1,PointH1)
setTextFontColor(TextTypeColorR,TextTypeColorG,TextTypeColorB)
PointX8=46*bay;PointY8=168*bay-UpAmount;PointW8=BlockSize;PointH8=BlockSize
s8=createText(PointX8,PointY8,PointW8,PointH8)
setTextFontSize(InputTextSize/2)
setTextFontColor(UpDownColorR,UpDownColorG,UpDownColorB)
PointXup=470*bay;PointYup=138*bay-UpAmount;PointWup=HalfBlockSize;PointHup=HalfBlockSize
TextUp=createText(PointXup,PointYup,PointWup,PointHup)
PointXdw=491*bay;PointYdw=138*bay-UpAmount;PointWdw=HalfBlockSize;PointHdw=HalfBlockSize
TextDown=createText(PointXdw,PointYdw,PointWdw,PointHdw)
setTextFontColor(InputTextColorR,InputTextColorG,InputTextColorB)
setTextFontBold(true)
bou=createText(4,126*bay+21*bay-UpAmount,600*bay,HalfBlockSize)
setTextFontBold(false)
setTextFontSize(InputTextSize)
PointX2=4;PointY2=210*bay-UpAmount;PointW2=BlockSize*2;PointH2=BlockSize
s2=createText(PointX2,PointY2,PointW2,PointH2)
PointX3=4;PointY3=252*bay-UpAmount;PointW3=BlockSize*2;PointH3=BlockSize
s3=createText(PointX3,PointY3,PointW3,PointH3)
PointX4=4;PointY4=294*bay-UpAmount;PointW4=BlockSize;PointH4=BlockSize
s4=createText(PointX4,PointY4,PointW4,PointH4)
PointX5=46*bay;PointY5=294*bay-UpAmount;PointW5=BlockSize;PointH5=BlockSize
s5=createText(PointX5,PointY5,PointW5,PointH5)
PointX6=4;PointY6=336*bay-UpAmount;PointW6=BlockSize;PointH6=BlockSize
s6=createText(PointX6,PointY6,PointW6,PointH6)
PointX7=46*bay;PointY7=336*bay-UpAmount;PointW7=BlockSize;PointH7=BlockSize
s7=createText(PointX7,PointY7,PointW7,PointH7)
mi=createArray()
bango=0;loops=0
Dan0=168*bay-UpAmount;Dan1=210*bay-UpAmount;Dan2=252*bay-UpAmount;Dan3=294*bay-UpAmount;Dan4=336*bay-UpAmount
while bango<50
mx=466-42*loops
mi[bango]=createText(mx*bay,Dan0,BlockSize,BlockSize)
mi[bango+1]=createText(mx*bay,Dan1,BlockSize,BlockSize)
mi[bango+2]=createText(mx*bay,Dan2,BlockSize,BlockSize)
mi[bango+3]=createText(mx*bay,Dan3,BlockSize,BlockSize)
mi[bango+4]=createText(mx*bay,Dan4,BlockSize,BlockSize)
bango=bango+5
loops=loops+1
end
m=createArray()
r=0
while r<10 do m[r]=createArray();r=r+1;end
#0大文字かな 1大文字カナ 2小文字かな 3小文字カナ 4濁点かな 5濁点カナ 6半濁点かな 7半濁点カナ 8大文字英数 9小文字英数
m[0][0]=Array("あ,ア,ぁ,ァ,あ,ア,あ,ア,0,0")
m[0][1]=Array("い,イ,ぃ,ィ,い,イ,い,イ,P,p")
m[0][2]=Array("う,ウ,ぅ,ゥ,ゔ,ヴ,う,ウ,+,+")
m[0][3]=Array("え,エ,ぇ,ェ,え,エ,え,エ,¥,\")
m[0][4]=Array("お,オ,ぉ,ォ,お,オ,お,オ,Κ,κ")
m[1][0]=Array("か,カ,か,カ,が,ガ,か,カ,9,9")
m[1][1]=Array("き,キ,き,キ,ぎ,ギ,き,キ,O,o")
m[1][2]=Array("く,ク,く,ク,ぐ,グ,く,ク,L,l")
m[1][3]=Array("け,ケ,け,ケ,げ,ゲ,け,ケ,/,/")
m[1][4]=Array("こ,コ,こ,コ,ご,ゴ,こ,コ,Ι,ι")
m[2][0]=Array("さ,サ,さ,サ,ざ,ザ,さ,サ,8,8")
m[2][1]=Array("し,シ,し,シ,じ,ジ,し,シ,I,i")
m[2][2]=Array("す,ス,す,ス,ず,ズ,す,ス,K,k")
m[2][3]=Array("せ,セ,せ,セ,ぜ,ゼ,せ,セ,.,.")
m[2][4]=Array("そ,ソ,そ,ソ,ぞ,ゾ,そ,ソ,Θ,θ")
m[3][0]=Array("た,タ,た,タ,だ,ダ,た,タ,7,7")
m[3][1]=Array("ち,チ,ち,チ,ぢ,ヂ,ち,チ,U,u")
m[3][2]=Array("つ,ツ,っ,ッ,づ,ヅ,つ,ツ,J,j")
m[3][3]=Array("て,テ,て,テ,で,デ,て,テ,M,m")
m[3][4]=Array("と,ト,と,ト,ど,ド,と,ト,Η,η")
m[4][0]=Array("な,ナ,な,ナ,な,ナ,な,ナ,6,6")
m[4][1]=Array("に,ニ,に,ニ,に,ニ,に,ニ,Y,y")
m[4][2]=Array("ぬ,ヌ,ぬ,ヌ,ぬ,ヌ,ぬ,ヌ,H,h")
m[4][3]=Array("ね,ネ,ね,ネ,ね,ネ,ね,ネ,N,n")
m[4][4]=Array("の,ノ,の,ノ,の,ノ,の,ノ,Ζ,ζ")
m[5][0]=Array("は,ハ,は,ハ,ば,バ,ぱ,パ,5,5")
m[5][1]=Array("ひ,ヒ,ひ,ヒ,び,ビ,ぴ,ピ,T,t")
m[5][2]=Array("ふ,フ,ふ,フ,ぶ,ブ,ぷ,プ,G,g")
m[5][3]=Array("へ,ヘ,へ,ヘ,べ,ベ,ぺ,ぺ,B,b")
m[5][4]=Array("ほ,ホ,ほ,ホ,ぼ,ボ,ぽ,ポ,Ε,ε")
m[6][0]=Array("ま,マ,ま,マ,ま,マ,ま,マ,4,4")
m[6][1]=Array("み,ミ,み,ミ,み,ミ,み,ミ,R,r")
m[6][2]=Array("む,ム,む,ム,む,ム,む,ム,F,f")
m[6][3]=Array("め,メ,め,メ,め,メ,め,メ,V,v")
m[6][4]=Array("も,モ,も,モ,も,モ,も,モ,Δ,δ")
m[7][0]=Array("や,ヤ,ゃ,ャ,や,ヤ,や,ヤ,3,3")
m[7][1]=Array("!, ,!, ,<,゛,<,゜,E,e")
m[7][2]=Array("ゆ,ユ,ゅ,ュ,ゆ,ユ,ゆ,ユ,D,d")
m[7][3]=Array("?,~,?,~,>,*,>,*,C,c")
m[7][4]=Array("よ,ヨ,ょ,ョ,よ,ヨ,よ,ヨ,Γ,γ")
m[8][0]=Array("ら,ラ,ら,ラ,ら,ラ,ら,ラ,2,2")
m[8][1]=Array("り,リ,り,リ,り,リ,り,リ,W,w")
m[8][2]=Array("る,ル,る,ル,る,ル,る,ル,S,s")
m[8][3]=Array("れ,レ,れ,レ,れ,レ,れ,レ,X,x")
m[8][4]=Array("ろ,ロ,ろ,ロ,ろ,ロ,ろ,ロ,Β,β")
m[9][0]=Array("わ,ワ,ゎ,ヮ,わ,ワ,わ,ワ,1,1")
m[9][1]=Array("ゐ,ヰ,-,-,「,;,[,;,Q,q")
m[9][2]=Array("ゑ,ヱ,ー,―,」,:,],:,Z,z")
m[9][3]=Array("を,ヲ,を,ヲ,を,ヲ,を,ヲ,A,a")
m[9][4]=Array("ん,ン,ん,ン,ん,ン,ん,ン,Α,α")
if segen==-1
sm="字数制限なし"
else
sm=segen+"文字まで入力可"
end
i=0;boo=sm
while i<20 do boo=boo+"―";i=i+1;end
setText(bou,boo)
setText(s2,"削除");setText(s3,"終了");setText(s4,"゛");setText(s5,"゜");setText(s6,"、");setText(s7,"。");setText(TextUp,"▲");setText(TextDown,"▼")
rui=0
moziretu=createArray()
kaz=0
main=true
while main
if (rui==2)||(rui==3)||(rui==9)
setText(s1,"大")
else
setText(s1,"小")
end
if (rui==1)||(rui==3)||(rui==5)||(rui==7)
setText(s8,"英")
elsif (rui==8)||(rui==9)
setText(s8,"平")
else
setText(s8,"片")
end
gyo=0
loopst=0
while gyo<10
setText(mi[loopst],m[gyo][0][rui]);setText(mi[loopst+1],m[gyo][1][rui]);setText(mi[loopst+2],m[gyo][2][rui]);setText(mi[loopst+3],m[gyo][3][rui]);setText(mi[loopst+4],m[gyo][4][rui])
gyo=gyo+1
loopst=loopst+5
end
startInput();loop=true
while loop
while hasInput()
takeInput()
if isMouseDown()
pos=getMousePosition()
if ((pos[0]>=PointX1)&&(pos[0]<PointX8))&&((pos[1]>=PointY1)&&(pos[1]<PointY2))
if rui==2
rui=0
elsif rui==3
rui=1
elsif (rui==0)||(rui==4)||(rui==6)
rui=2
elsif rui==8
rui=9
elsif rui==9
rui=8
else
rui=3
end
loop=false
elsif ((pos[0]>=PointX8)&&(pos[0]<88*bay))&&((pos[1]>=PointY8)&&(pos[1]<PointY2))
if (rui==0)||(rui==2)||(rui==4)||(rui==6)
rui=rui+1
elsif (rui==1)||(rui==5)||(rui==7)
rui=8
elsif rui==3
rui=9
elsif rui==8
rui=0
elsif rui==9
rui=2
end
loop=false
elsif ((pos[0]>=PointX4)&&(pos[0]<PointX5))&&((pos[1]>=PointY4)&&(pos[1]<PointY6))
if rui==4
rui=0
elsif rui==5
rui=1
elsif (rui==0)||(rui==2)||(rui==6)
rui=4
elsif (rui==1)||(rui==3)||(rui==7)
rui=5
end
loop=false
elsif ((pos[0]>=PointX5)&&(pos[0]<88*bay))&&((pos[1]>=PointY5)&&(pos[1]<PointY7))
if rui==6
rui=0
elsif rui==7
rui=1
elsif (rui==0)||(rui==2)||(rui==4)
rui=6
elsif (rui==1)||(rui==3)||(rui==5)
rui=7
end
loop = false
elsif ((pos[0]>=PointX2)&&(pos[0]<88*bay))&&((pos[1]>=PointY2)&&(pos[1]<PointY3))
if kaz>0
kaz=kaz-1;popArray(moziretu)
end
elsif ((pos[0]>=PointX3)&&(pos[0]<88*bay))&&((pos[1]>=PointY3)&&(pos[1]<PointY4))
loop=false;main=false
elsif ((pos[0]>=PointX6)&&(pos[0]<PointX7))&&((pos[1]>=PointY6)&&(pos[1]<PointDown))&&((kaz<segen)||(segen==-1))
moziretu[kaz]="、";kaz=kaz+1
elsif ((pos[0]>=PointX7)&&(pos[0]<88*bay))&&((pos[1]>=PointY7)&&(pos[1]<PointDown))&&((kaz<segen)||(segen==-1))
moziretu[kaz]="。";kaz=kaz+1
elsif ((pos[0]>=88*bay)&&(pos[0]<508*bay))&&((pos[1]>=PointUp)&&(pos[1]<PointDown))&&((kaz<segen)||(segen==-1))
G=9-floor((pos[0]-88*bay)/BlockSize)
D=floor((pos[1]-PointUp)/BlockSize)
moziretu[kaz]=m[G][D][rui]
kaz=kaz+1
elsif (((pos[0]>=PointXup)&&(pos[0]<(PointXup+PointWup)))&&((pos[1]>=PointYup)&&(pos[1]<(PointYup+PointHup))))&&(OutPoint>0)
OutPoint=OutPoint-1
GoMove=true
elsif ((pos[0]>=PointXdw)&&(pos[0]<(PointXdw+PointWdw)))&&((pos[1]>=PointYdw)&&(pos[1]<(PointYdw+PointHdw)))
OutPoint=OutPoint+1
GoMove=true
end
if GoMove
deleteText(mr)
setTextFontSize(OutputTextSize);setTextFontColor(OutputTextColorR,OutputTextColorG,OutputTextColorB)
amt=OutPoint*OutputTextSize
mr=createText(PointXmr,PointYmr-amt,PointWmr,PointHmr+amt)
GoMove=false
end
setText(mr,joinArray(moziretu, ""))
end
end
waitTime(30)
end
endInput()
end
setTextFontSize(Fsiz)
setTextFontColor(CR,CG,CB)
setTextFontBold(FBold)
setTextFontItalic(FItlc)
deleteTextAll()
MOZI=joinArray(moziretu,"")
setVariable("文字列",MOZI)
return getVariable("文字列")
end

↑は好きなように改造していただいても構いません。

そして、使いたい場所に以下のものを書きます。
  • ノベルゲームの場合(文字数制限は20に設定)
nyuuryoku(0,20)

  • RPGの場合(文字数制限は無しに設定)
nyuuryoku(1,-1)

#第1引数をノベルなら0、RPGなら1にする。
#第2引数は制限文字数。無制限にするには-1を設定。

見にくい場合は後ろに黒い画像を表示させることをおすすめします。

入力した文字をspeak文で表示するには、
speak(getVariable("文字列")) #getVariable("文字列")には、入力した文字列が入っています。


speak(nyuuryoku(1,-1)) #文字入力を終了した直後に表示

の二通りの方法があります。

  • 使い方の例
    • その1
speak("伝言を教えてくれ。")
nyuuryoku(1,10)
if getVariable("文字列") == "ホゲホゲ"
 speak("そうかそうか、ありがとな!")

elsif getVariable("文字列") == "ゲホゲホ"
 speak("出直して来い!!")

elsif getVariable("文字列") == "いちいちよん"
 speak("それは伝言じゃない、ワシの名だ")

else
 speak("う~ん、よくわからんな……")

end


    • その2
speak("よし、お前の名前を教えてくれ!")
speak("ちなみにマウスで入力だ!")
speak("名前は"+nyuuryoku(1,8)+"か……")
speak("よし、ここに勇者"+getVariable("文字列")+"の誕生だ!!")


    • その3
speak("パスワードをマウスで入力してください。")
if nyuuryoku(1,-1) == "ハロー アールメイクワールド!"
 speak("正解です")
else
 speak("不正解です") 
end


これで終わりです。

テストゲームを用意しています。
かな・カナ入力テストゲーム - 【ノベルゲーム】

  • 更新履歴
バージョン更新内容
4.0文字の縦スクロールを可能に, 文字の並び変更, ゔとヴの追加, 記号を少々追加, ノベルゲームだと下のほうが入力しづらい問題の修正, 文字数削減
3.1つ・ツが小さくならないバグを修正
3.0全角英数・一部のギリシャ文字に対応
2.0文字数削減
1.0公開
#過去のバージョンのスクリプトが欲しい場合、連絡下さい。

コメントする

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

コメント一覧

            mini mosmoss(投稿日:2017/02/04 19:47, 履歴)
質問失礼します。
この関数をプレイヤーの名前設定に使っているんですが、
初期状態で仮の名前(仮の入力結果)を表示させるアレンジを作っています。
そのため、この関数の構成について質問します。

1、関数開始〜case a まで「フォントの大きさなどの設定」
2、配列mを作る〜メインループ開始前「入力ボードの描画」
3、「moziretuの配列生成、文字数格納変数kazuを0と設定」
4、メインループ内「入力処理」
5、メインループ脱出後「配列moziretuを文字列に変換し返り値とする」

こんな感じでいいでしょうか?

配列moziretuと変数kazらへんが要なのではないかとあたりをつけています

上のアレンジできたらまた貼りにきますね(^ω^っ)3
            mini mosmoss(投稿日:2017/02/04 20:36, 履歴)
最初から仮の入力結果を表示するスクリプトアレンジができました
def nyuuryoku(a,segen,name) 
#nameは配列
上に述べた行程で3にあたる、
配列moziretuの生成と文字数を入れる変数kazの設定の次に
次の追加分のスクリプトを入れます
moziretu=createArray()
kaz=0
#追加分ここから
if name
moziretu=name 
kaz=getArrayLength(name)
setText(mr,joinArray(moziretu, ""))
end
#追加分ここまで
main=true
nameはmoziretu配列に代入するために、文字を一つずつ入れた配列になります
例えばエディタ上でこんな感じに書きます
b=createArray()
b[0]="ま"; b[1]="じ"; b[2]="た"; b[3]="い"
#せっかくなので b=Array("ま,じ,た,い") の形でもいいかと思います
a=nyuuryoku(1,8,b) 
speak(a,"と名乗りました")
    mini 光楼(114)(投稿日:2017/02/05 12:12, 履歴)
文字入力関数を使っていただきありがとうございます!

この長い関数を解読してアレンジするとは凄いですね!
僕は自分で作ったスクリプトすら解読するのが苦手なので尊敬します。

関数の構成はそんな感じです。
もう少し分かりやすくしたものを最後に載せておきます。
解読苦手なので合ってるかは怪しいですが(汗)

アレンジについてですが少し助言をさせて頂きます。

nameに入れるのを配列ではなく"まじたい"という文字列にし、
追加分のところでsplitString(name, "")で分割する方法にするともっと良くなるかもしれません。

以上です。

def Array(a) #配列設定用関数
	return splitString(a, ",")
end

def nyuuryoku(a,segen) #文字入力関数Ver4
	#フォント設定
	OutputTextColorR=255;OutputTextColorG=255;OutputTextColorB=255
	TextSizeColorR=255;TextSizeColorG=127;TextSizeColorB=0
	TextTypeColorR=0;TextTypeColorG=255;TextTypeColorB=255
	InputTextColorR=255;InputTextColorG=255;InputTextColorB=0
	UpDownColorR=100;UpDownColorG=255;UpDownColorB=100
	#フォント設定記憶
	Fsiz=getTextFontSize();FBold=getTextFontBold();FItlc=getTextFontItalic()
	CR=getTextFontColorR();CG=getTextFontColorG();CB=getTextFontColorB()
	#フォント設定反映 & テキスト位置設定
	setTextFontBold(false)
	setTextFontItalic(false)
	case a when 0 bay=1.5625;OutputTextSize=48;UpAmount=20;when 1 bay=1;OutputTextSize=30;UpAmount=0;end
	setTextFontSize(OutputTextSize)
	setTextFontColor(OutputTextColorR,OutputTextColorG,OutputTextColorB)
	OutPoint=0;GoMove=false
	PointXmr=4*bay;PointYmr=21*bay-UpAmount;PointWmr=504*bay;PointHmr=110*bay
	mr=createText(PointXmr,PointYmr,PointWmr,PointHmr)
	case a when 0 InputTextSize=60;when 1 InputTextSize=38;end
	setTextFontSize(InputTextSize)
	BlockSize=42*bay
	HalfBlockSize=21*bay
	PointUp=168*bay-UpAmount
	PointDown=378*bay-UpAmount
	setTextFontColor(TextSizeColorR,TextSizeColorG,TextSizeColorB)
	PointX1=4;PointY1=168*bay-UpAmount;PointW1=BlockSize;PointH1=BlockSize
	s1=createText(PointX1,PointY1,PointW1,PointH1)
	setTextFontColor(TextTypeColorR,TextTypeColorG,TextTypeColorB)
	PointX8=46*bay;PointY8=168*bay-UpAmount;PointW8=BlockSize;PointH8=BlockSize
	s8=createText(PointX8,PointY8,PointW8,PointH8)
	setTextFontSize(InputTextSize/2)
	setTextFontColor(UpDownColorR,UpDownColorG,UpDownColorB)
	PointXup=470*bay;PointYup=138*bay-UpAmount;PointWup=HalfBlockSize;PointHup=HalfBlockSize
	TextUp=createText(PointXup,PointYup,PointWup,PointHup)
	PointXdw=491*bay;PointYdw=138*bay-UpAmount;PointWdw=HalfBlockSize;PointHdw=HalfBlockSize
	TextDown=createText(PointXdw,PointYdw,PointWdw,PointHdw)
	setTextFontColor(InputTextColorR,InputTextColorG,InputTextColorB)
	setTextFontBold(true)
	bou=createText(4,126*bay+21*bay-UpAmount,600*bay,HalfBlockSize)
	setTextFontBold(false)
	setTextFontSize(InputTextSize)
	PointX2=4;PointY2=210*bay-UpAmount;PointW2=BlockSize*2;PointH2=BlockSize
	s2=createText(PointX2,PointY2,PointW2,PointH2)
	PointX3=4;PointY3=252*bay-UpAmount;PointW3=BlockSize*2;PointH3=BlockSize
	s3=createText(PointX3,PointY3,PointW3,PointH3)
	PointX4=4;PointY4=294*bay-UpAmount;PointW4=BlockSize;PointH4=BlockSize
	s4=createText(PointX4,PointY4,PointW4,PointH4)
	PointX5=46*bay;PointY5=294*bay-UpAmount;PointW5=BlockSize;PointH5=BlockSize
	s5=createText(PointX5,PointY5,PointW5,PointH5)
	PointX6=4;PointY6=336*bay-UpAmount;PointW6=BlockSize;PointH6=BlockSize
	s6=createText(PointX6,PointY6,PointW6,PointH6)
	PointX7=46*bay;PointY7=336*bay-UpAmount;PointW7=BlockSize;PointH7=BlockSize
	s7=createText(PointX7,PointY7,PointW7,PointH7)
	mi=createArray()
	bango=0;loops=0
	Dan0=168*bay-UpAmount;Dan1=210*bay-UpAmount;Dan2=252*bay-UpAmount;Dan3=294*bay-UpAmount;Dan4=336*bay-UpAmount
	while bango<50
		mx=466-42*loops
		mi[bango]=createText(mx*bay,Dan0,BlockSize,BlockSize)
		mi[bango+1]=createText(mx*bay,Dan1,BlockSize,BlockSize)
		mi[bango+2]=createText(mx*bay,Dan2,BlockSize,BlockSize)
		mi[bango+3]=createText(mx*bay,Dan3,BlockSize,BlockSize)
		mi[bango+4]=createText(mx*bay,Dan4,BlockSize,BlockSize)
		bango=bango+5
		loops=loops+1
	end
	#入力欄設定
	m=createArray()
	r=0
	while r<10 do m[r]=createArray();r=r+1;end
	#0大文字かな 1大文字カナ 2小文字かな 3小文字カナ 4濁点かな 5濁点カナ 6半濁点かな 7半濁点カナ 8大文字英数 9小文字英数
	m[0][0]=Array("あ,ア,ぁ,ァ,あ,ア,あ,ア,0,0")
	m[0][1]=Array("い,イ,ぃ,ィ,い,イ,い,イ,P,p")
	m[0][2]=Array("う,ウ,ぅ,ゥ,?,ヴ,う,ウ,+,+")
	m[0][3]=Array("え,エ,ぇ,ェ,え,エ,え,エ,¥,\")
	m[0][4]=Array("お,オ,ぉ,ォ,お,オ,お,オ,Κ,κ")
	m[1][0]=Array("か,カ,か,カ,が,ガ,か,カ,9,9")
	m[1][1]=Array("き,キ,き,キ,ぎ,ギ,き,キ,O,o")
	m[1][2]=Array("く,ク,く,ク,ぐ,グ,く,ク,L,l")
	m[1][3]=Array("け,ケ,け,ケ,げ,ゲ,け,ケ,/,/")
	m[1][4]=Array("こ,コ,こ,コ,ご,ゴ,こ,コ,Ι,ι")
	m[2][0]=Array("さ,サ,さ,サ,ざ,ザ,さ,サ,8,8")
	m[2][1]=Array("し,シ,し,シ,じ,ジ,し,シ,I,i")
	m[2][2]=Array("す,ス,す,ス,ず,ズ,す,ス,K,k")
	m[2][3]=Array("せ,セ,せ,セ,ぜ,ゼ,せ,セ,.,.")
	m[2][4]=Array("そ,ソ,そ,ソ,ぞ,ゾ,そ,ソ,Θ,θ")
	m[3][0]=Array("た,タ,た,タ,だ,ダ,た,タ,7,7")
	m[3][1]=Array("ち,チ,ち,チ,ぢ,ヂ,ち,チ,U,u")
	m[3][2]=Array("つ,ツ,っ,ッ,づ,ヅ,つ,ツ,J,j")
	m[3][3]=Array("て,テ,て,テ,で,デ,て,テ,M,m")
	m[3][4]=Array("と,ト,と,ト,ど,ド,と,ト,Η,η")
	m[4][0]=Array("な,ナ,な,ナ,な,ナ,な,ナ,6,6")
	m[4][1]=Array("に,ニ,に,ニ,に,ニ,に,ニ,Y,y")
	m[4][2]=Array("ぬ,ヌ,ぬ,ヌ,ぬ,ヌ,ぬ,ヌ,H,h")
	m[4][3]=Array("ね,ネ,ね,ネ,ね,ネ,ね,ネ,N,n")
	m[4][4]=Array("の,ノ,の,ノ,の,ノ,の,ノ,Ζ,ζ")
	m[5][0]=Array("は,ハ,は,ハ,ば,バ,ぱ,パ,5,5")
	m[5][1]=Array("ひ,ヒ,ひ,ヒ,び,ビ,ぴ,ピ,T,t")
	m[5][2]=Array("ふ,フ,ふ,フ,ぶ,ブ,ぷ,プ,G,g")
	m[5][3]=Array("へ,ヘ,へ,ヘ,べ,ベ,ぺ,ぺ,B,b")
	m[5][4]=Array("ほ,ホ,ほ,ホ,ぼ,ボ,ぽ,ポ,Ε,ε")
	m[6][0]=Array("ま,マ,ま,マ,ま,マ,ま,マ,4,4")
	m[6][1]=Array("み,ミ,み,ミ,み,ミ,み,ミ,R,r")
	m[6][2]=Array("む,ム,む,ム,む,ム,む,ム,F,f")
	m[6][3]=Array("め,メ,め,メ,め,メ,め,メ,V,v")
	m[6][4]=Array("も,モ,も,モ,も,モ,も,モ,Δ,δ")
	m[7][0]=Array("や,ヤ,ゃ,ャ,や,ヤ,や,ヤ,3,3")
	m[7][1]=Array("!, ,!, ,<,゛,<,゜,E,e")
	m[7][2]=Array("ゆ,ユ,ゅ,ュ,ゆ,ユ,ゆ,ユ,D,d")
	m[7][3]=Array("?,~,?,~,>,*,>,*,C,c")
	m[7][4]=Array("よ,ヨ,ょ,ョ,よ,ヨ,よ,ヨ,Γ,γ")
	m[8][0]=Array("ら,ラ,ら,ラ,ら,ラ,ら,ラ,2,2")
	m[8][1]=Array("り,リ,り,リ,り,リ,り,リ,W,w")
	m[8][2]=Array("る,ル,る,ル,る,ル,る,ル,S,s")
	m[8][3]=Array("れ,レ,れ,レ,れ,レ,れ,レ,X,x")
	m[8][4]=Array("ろ,ロ,ろ,ロ,ろ,ロ,ろ,ロ,Β,β")
	m[9][0]=Array("わ,ワ,ゎ,ヮ,わ,ワ,わ,ワ,1,1")
	m[9][1]=Array("ゐ,ヰ,-,-,「,;,[,;,Q,q")
	m[9][2]=Array("ゑ,ヱ,ー,―,」,:,],:,Z,z")
	m[9][3]=Array("を,ヲ,を,ヲ,を,ヲ,を,ヲ,A,a")
	m[9][4]=Array("ん,ン,ん,ン,ん,ン,ん,ン,Α,α")
	if segen==-1
		sm="字数制限なし"
	else
		sm=segen+"文字まで入力可"
	end
	i=0;boo=sm
	while i<20 do boo=boo+"―";i=i+1;end
	setText(bou,boo)
	setText(s2,"削除");setText(s3,"終了");setText(s4,"゛");setText(s5,"゜");setText(s6,"、");setText(s7,"。");setText(TextUp,"▲");setText(TextDown,"▼")
	rui=0 #入力文字種
	moziretu=createArray() #入力文字
	kaz=0 #入力文字数
	main=true

文字数の関係で載せきれなかったので分割します(^-^;
    mini 光楼(114)(投稿日:2017/02/05 12:13, 履歴)
	while main #メインループ
		#入力欄描画処理
		if (rui==2)||(rui==3)||(rui==9)
			setText(s1,"大")
		else
			setText(s1,"小")
		end
		if (rui==1)||(rui==3)||(rui==5)||(rui==7)
			setText(s8,"英")
		elsif (rui==8)||(rui==9)
			setText(s8,"平")
		else
			setText(s8,"片")
		end
		gyo=0
		loopst=0
		while gyo<10
			setText(mi[loopst],m[gyo][0][rui]);setText(mi[loopst+1],m[gyo][1][rui]);setText(mi[loopst+2],m[gyo][2][rui]);setText(mi[loopst+3],m[gyo][3][rui]);setText(mi[loopst+4],m[gyo][4][rui])
			gyo=gyo+1
			loopst=loopst+5
		end
		#入力処理
		startInput();loop=true
		while loop
			while hasInput()
				takeInput()
				if isMouseDown()
					pos=getMousePosition()
					if ((pos[0]>=PointX1)&&(pos[0]<PointX8))&&((pos[1]>=PointY1)&&(pos[1]<PointY2))
						if rui==2
							rui=0
						elsif rui==3
							rui=1
						elsif (rui==0)||(rui==4)||(rui==6)
							rui=2
						elsif rui==8
							rui=9
						elsif rui==9
							rui=8
						else
							rui=3
						end
						loop=false
					elsif ((pos[0]>=PointX8)&&(pos[0]<88*bay))&&((pos[1]>=PointY8)&&(pos[1]<PointY2))
						if (rui==0)||(rui==2)||(rui==4)||(rui==6)
							rui=rui+1
						elsif (rui==1)||(rui==5)||(rui==7)
							rui=8
						elsif rui==3
							rui=9
						elsif rui==8
							rui=0
						elsif rui==9
							rui=2
						end
						loop=false
					elsif ((pos[0]>=PointX4)&&(pos[0]<PointX5))&&((pos[1]>=PointY4)&&(pos[1]<PointY6))
						if rui==4
							rui=0
						elsif rui==5
							rui=1
						elsif (rui==0)||(rui==2)||(rui==6)
							rui=4
						elsif (rui==1)||(rui==3)||(rui==7)
							rui=5
						end
						loop=false
					elsif ((pos[0]>=PointX5)&&(pos[0]<88*bay))&&((pos[1]>=PointY5)&&(pos[1]<PointY7))
						if rui==6
							rui=0
						elsif rui==7
							rui=1
						elsif (rui==0)||(rui==2)||(rui==4)
							rui=6
						elsif (rui==1)||(rui==3)||(rui==5)
							rui=7
						end
						loop = false
					elsif ((pos[0]>=PointX2)&&(pos[0]<88*bay))&&((pos[1]>=PointY2)&&(pos[1]<PointY3))
						if kaz>0
							kaz=kaz-1;popArray(moziretu)
						end
					elsif ((pos[0]>=PointX3)&&(pos[0]<88*bay))&&((pos[1]>=PointY3)&&(pos[1]<PointY4))
						loop=false;main=false
					elsif ((pos[0]>=PointX6)&&(pos[0]<PointX7))&&((pos[1]>=PointY6)&&(pos[1]<PointDown))&&((kaz<segen)||(segen==-1))
							moziretu[kaz]="、";kaz=kaz+1
					elsif ((pos[0]>=PointX7)&&(pos[0]<88*bay))&&((pos[1]>=PointY7)&&(pos[1]<PointDown))&&((kaz<segen)||(segen==-1))
							moziretu[kaz]="。";kaz=kaz+1
					elsif ((pos[0]>=88*bay)&&(pos[0]<508*bay))&&((pos[1]>=PointUp)&&(pos[1]<PointDown))&&((kaz<segen)||(segen==-1))
						G=9-floor((pos[0]-88*bay)/BlockSize)
						D=floor((pos[1]-PointUp)/BlockSize)
						moziretu[kaz]=m[G][D][rui]
						kaz=kaz+1
					elsif (((pos[0]>=PointXup)&&(pos[0]<(PointXup+PointWup)))&&((pos[1]>=PointYup)&&(pos[1]<(PointYup+PointHup))))&&(OutPoint>0)
						OutPoint=OutPoint-1
						GoMove=true
					elsif ((pos[0]>=PointXdw)&&(pos[0]<(PointXdw+PointWdw)))&&((pos[1]>=PointYdw)&&(pos[1]<(PointYdw+PointHdw)))
						OutPoint=OutPoint+1
						GoMove=true
					end
					#入力文字表示欄描画処理
					if GoMove
						deleteText(mr)
						setTextFontSize(OutputTextSize);setTextFontColor(OutputTextColorR,OutputTextColorG,OutputTextColorB)
						amt=OutPoint*OutputTextSize
						mr=createText(PointXmr,PointYmr-amt,PointWmr,PointHmr+amt)
						GoMove=false
					end
					setText(mr,joinArray(moziretu, ""))
				end
			end
			waitTime(30)
		end
		endInput()
	end
	#設定戻し
	setTextFontSize(Fsiz)
	setTextFontColor(CR,CG,CB)
	setTextFontBold(FBold)
	setTextFontItalic(FItlc)
	deleteTextAll()
	MOZI=joinArray(moziretu,"")
	setVariable("文字列",MOZI)
	return getVariable("文字列")
end
            mini mosmoss(投稿日:2017/02/05 14:38, 履歴)
ありがとうございます!
アレンジスクリプト良くなりました(^ω^)
def nyuuryoku(a,segen,name) 
#nameは文字列

moziretu=createArray()
kaz=0
#追加分ここから
if name
name=splitString(name, "")
moziretu=name 
kaz=getArrayLength(name)
setText(mr,joinArray(moziretu, ""))
end
#追加分ここまで
main=true
こんな感じでしょうか

解説コメントつけて頂きありがとうございます(^ω^)
わかる部分が増えました
ガッツを褒めていただき(?)ありがとうございます
ガッツと質問を手段の常としております(^^;)

使っていて思ったんですが、まっすぐ横棒に記号と英語のものしかなく日本語文字のものがないかも?
m[9][2]=Array("ゑ,ヱ,ー,―,」,:,],:,Z,z")
上のように書いてある二つ並んだ記号横棒の右の記号横棒を
下のように日本語文字の横棒にして使っています(ややこしい)
m[9][2]=Array("ゑ,ヱ,ー,ー,」,:,],:,Z,z")
Icon mini ikosami(投稿日:2015/06/05 13:40, 履歴)
使いやすいですね(^_^)

http://page.rmake.jp/wikis/145
これつかってくれると、短く見やすくできます。

m[r][0][0]="あ" ;m[r][0][1]="ア" ;m[r][0][2]="ぁ" ;m[r][0][3]="ァ" ;m[r][0][4]="あ" ;m[r][0][5]="ア" ;m[r][0][6]="あ" ;m[r][0][7]="ア"
m[r][1][0]="い" ;m[r][1][1]="イ" ;m[r][1][2]="ぃ" ;m[r][1][3]="ィ" ;m[r][1][4]="い" ;m[r][1][5]="イ" ;m[r][1][6]="い" ;m[r][1][7]="イ"
m[r][2][0]="う" ;m[r][2][1]="ウ" ;m[r][2][2]="ぅ" ;m[r][2][3]="ゥ" ;m[r][2][4]="う" ;m[r][2][5]="ウ" ;m[r][2][6]="う" ;m[r][2][7]="ウ"
m[r][3][0]="え" ;m[r][3][1]="エ" ;m[r][3][2]="ぇ" ;m[r][3][3]="ェ" ;m[r][3][4]="え" ;m[r][3][5]="エ" ;m[r][3][6]="え" ;m[r][3][7]="エ"
m[r][4][0]="お" ;m[r][4][1]="オ" ;m[r][4][2]="ぉ" ;m[r][4][3]="ォ" ;m[r][4][4]="お" ;m[r][4][5]="オ" ;m[r][4][6]="お" ;m[r][4][7]="オ"


の部分だけやってみました。

def Array(a)
  a = splitString(a, ",")
return a
end



m[r][0] = Array("あ,ア,ぁ,ァ,あ,ア")
m[r][1] = Array("い,イ,ぃ,ィ,い,イ")
m[r][2] = Array("う,ウ,ぅ,ゥ,う,ウ")
m[r][3] = Array("え,エ,ぇ,ェ,え,エ")
m[r][4] = Array("お,オ,ぉ,ォ,お,オ")
    mini 光楼(114)(投稿日:2015/06/06 10:54, 履歴)
ありがとうございます、早速使わせていただきました!
Kusokuso mini kusokuso(投稿日:2015/03/26 15:50, 履歴)
おつかれさまです。