Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rpg-Maker XP - Namenseingabe



The Black Mole
12.10.2005, 20:52
Soooo.
Da ich schon sehr lange ein Namenseingabescript
gesucht aber nie gefunden habe, außer vielleicht
irgendwelche abgespeckten Versionen davon,
habe ich mir das Original vorgenommen und
umprogrammiert. Ersetzt im Maker-XP einfach das
Script "Window_NameInput" durch folgenden
code:



#=====================================
# ■ Window_NameInput
#-------------------------------------------------------
# ©2005 by The Black Mole
#===========================================

class Window_NameInput < Window_Base
CHARACTER_TABLE =
[
"A","B","C","D","E",
"F","G","H","I","J",
"K","L","M","N","O",
"P","Q","R","S","T",
"U","V","W","X","Y",
"Z","1","2","3","4",
"5","6","7","8","9",
"0", "Ä" ,"Ö", "Ü" ,"ß",
" "," "," "," "," ",
"a", "b" ,"c", "d" ,"e",
"f","g","h","i","j",
"k","l","m","n","o",
"p","q","r","s","t",
"u","v","w","x","y",
"z",":",";",".",",",
"-","#","+","?","!",
"ä","ö","ü","=","&",
" "," ", " " , " " , " " ,
"©","®","(",")","™",
"²","³","§","$","%",
"{","}","[","]","°",
"*","~","µ","€","@",
"»"," "," "," "," ",
" "," "," "," "," ",
" "," "," "," "," ",
" ", " " ," ", " " ," ",
" "," "," "," "," ",
" ", " " ," ", " " ," ",
" "," "," "," "," ",
" "," "," "," "," ",
" "," "," "," "," ",
" "," "," "," "," ",
" "," "," "," "," ",
" "," "," "," "," ",
" "," "," "," "," ",
" "," "," ", " " , " " ,
]
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 128, 640, 352)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
@index = 0
refresh
update_cursor_rect
end
#--------------------------------------------------------------------------
# ● 文字の取得
#--------------------------------------------------------------------------
def character
return CHARACTER_TABLE[@index]
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0..179
x = 4 + i / 5 / 9 * 152 + i % 5 * 28
y = i / 5 % 9 * 32
self.contents.draw_text(x, y, 28, 32, CHARACTER_TABLE[i], 1)
end
self.contents.draw_text(544, 9 * 32, 64, 32, "Okay", 1)
end
#--------------------------------------------------------------------------
# ● カーソルの矩形更新
#--------------------------------------------------------------------------
def update_cursor_rect
# カーソル位置が [決定] の場合
if @index >= 180
self.cursor_rect.set(544, 9 * 32, 64, 32)
# カーソル位置が [決定] 以外の場合
else
x = 4 + @index / 5 / 9 * 152 + @index % 5 * 28
y = @index / 5 % 9 * 32
self.cursor_rect.set(x, y, 28, 32)
end
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
super
# カーソル位置が [決定] の場合
if @index >= 180
# カーソル下
if Input.trigger?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
@index -= 180
end
# カーソル上
if Input.repeat?(Input::UP)
$game_system.se_play($data_system.cursor_se)
@index -= 180 - 40
end
# カーソル位置が [決定] 以外の場合
else
# 方向ボタンの右が押された場合
if Input.repeat?(Input::RIGHT)
# 押下状態がリピートでない場合か、
# カーソル位置が右端ではない場合
if Input.trigger?(Input::RIGHT) or
@index / 45 < 3 or @index % 5 < 4
# カーソルを右に移動
$game_system.se_play($data_system.cursor_se)
if @index % 5 < 4
@index += 1
else
@index += 45 - 4
end
if @index >= 180
@index -= 180
end
end
end
# 方向ボタンの左が押された場合
if Input.repeat?(Input::LEFT)
# 押下状態がリピートでない場合か、
# カーソル位置が左端ではない場合
if Input.trigger?(Input::LEFT) or
@index / 45 > 0 or @index % 5 > 0
# カーソルを左に移動
$game_system.se_play($data_system.cursor_se)
if @index % 5 > 0
@index -= 1
else
@index -= 45 - 4
end
if @index < 0
@index += 180
end
end
end
# 方向ボタンの下が押された場合
if Input.repeat?(Input::DOWN)
# カーソルを下に移動
$game_system.se_play($data_system.cursor_se)
if @index % 45 < 40
@index += 5
else
@index += 180 - 40
end
end
# 方向ボタンの上が押された場合
if Input.repeat?(Input::UP)
# 押下状態がリピートでない場合か、
# カーソル位置が上端ではない場合
if Input.trigger?(Input::UP) or @index % 45 >= 5
# カーソルを上に移動
$game_system.se_play($data_system.cursor_se)
if @index % 45 >= 5
@index -= 5
else
@index += 180
end
end
end
# L ボタンか R ボタンが押された場合
if Input.repeat?(Input::L) or Input.repeat?(Input::R)
# ひらがな / カタカナ 移動
$game_system.se_play($data_system.cursor_se)
if @index / 45 < 2
@index += 90
else
@index -= 90
end
end
end
update_cursor_rect
end
end

Nun dürfte auch bei euch die Namenseingabe
voll Funktionsfähig sein. Have Fun cya

Ichthys
12.10.2005, 21:01
also gefallen tut mir das schon aber gehört das nicht in das Entwickler-Forum (http://www.multimediaxis.de/forumdisplay.php?f=66) :confused:

~Ichthys~

Lukas
12.10.2005, 21:22
Wieso verwendest du nicht direkt den ASCII-Code? Unterstützt Ruby doch sicher auch (Integers haben die methode chr(), das weiß ich. Bei den Strings musst du notfalls über each_byte() gehen, gibt aber wahrscheinlich auch noch 'ne andere Lösung), außerdem hast du damit wahrscheinlich 'ne höhere Kompatibilität zu anderen Scripten als wenn du 'ne eigene Zeichentabelle benutzt.

The Black Mole
12.10.2005, 22:04
Wieso unbedingt einen ACII-Code wenns auch so geht?
Also bei mir und einigen kollegen klappt es wunderbar
dieses script. Das einzigste was man braucht ist evtl die
neuere RGSS100J.dll Die kriegt man aber glaub ich auf
www.rpgxp.de weiß ich aber nich genau.

Papiertiger
23.11.2005, 19:39
hm, bei mir kommt da ein feher, trotz der neuen .dll


????? 'Window_NameInput' ? 117 ??? NameError ????????

undefined local variable or method '_se' for #<Window_NameInput:0x464a950>

3mmis
25.11.2005, 19:53
bei mir übrigens auch. wo muss man denn die .dll datei reinkopieren? ich hab se da, wo die "RPG Maker XP.exe" und die andere .dll datei ist. ist das das falsche verzeichnis vielleicht?

Der Drake
26.11.2005, 09:40
...warum benutzt du nicht einfach die legale englische Version? Dann wäre das Skript unnötig...


Wieso verwendest du nicht direkt den ASCII-Code? Unterstützt Ruby doch sicher auch
Nunja, es gibt auch Zeichen die nicht im ASCII Code enthalten sind, unter anderem die japanischen. Das Skript war im Orginal auf japanisch, alles was er gemacht hat ist die ursprünglichen Zeichen durch etwas lesbarere zu ersetzen.


hm, bei mir kommt da ein feher, trotz der neuen .dll
Weil es auch nicht an der .dll liegt, ersetze einfach alle
"$data_system.cursor _se"
durch
"$data_system.cursor_se"
Ich hab zwar keinen blassen Schimmer wie das Leerzeichen darein gekommen ist, aber das steht in deiner Fehlermeldung.

Silvionator
26.11.2005, 22:28
viell. versteh ich was falsch aber ich glaub ich hab ne easy lösung gefunden.


1. Öffnet ein Event
2. Geht in die 3te Registerkarte
3. Das dritte in der der rechten Spalte von oben anklicken. Hat den Namen "Helden Namen eingeben"
4. Fertig

Papiertiger
26.11.2005, 22:47
@Der Drake: danke, jetz funktionierts^^