Mein Problem: Ich habe mir eine Klasse namens Gametext geschrieben welche aus einer formatierten
externen Textdatei den Inhalt für die Textboxen extrahiert und in einem multidim. (Hash)Array
speichert. Aber, sobald Window_Message mit refresh durch ist, ist der aufgerufene Arrayinhalt wech.
Sprich, eines NPC's Inhalt von EventCommand Showtext ist zB der Text "\no[0]" über den dann der
eigentliche Inhalt für diese Textbox über den Gamtext Arrays, mithilfe der Zahl in \no[#], bestimmt werden kann
(zusammen mit den Mapnamen).
# Dementsprechen wurde Window_Message um folgenden Code erweitert:
# If waiting for a message to be displayed
if $game_temp.message_text != nil
text = $game_temp.message_text
# ----- Text aus externer Quelle generieren
if text[/\\no\[\d+\]/] != nil #yay, \no[#]
text[/\\no\[/]=""
text[/\]/]=""
b = text
text = $gametext.get_text2(b.to_i) #übergabe von Teil des Array-Keys
end
# Control text processing
soweit so gut (und in der Textbox im Spiel wird der Text auch korrekt angezeigt), aber sobald
while ((c = text.slice!(/./m)) != nil) von Window_Message
erreicht wird, "frißt" c = text.slice!(/./m)) den text im Array von $gametext bei jeder Iteration
Schrittweise ("Anfangsbuchstabe" für "Anfangsbuchstabe") auf ... ? (durch viele Test-prints rausgefunden)
Entsprechend ist der Text des NPCs beim nächsten Ansprechen ein leerer (nicht nil) String.
Das macht für mich irgendwie keinen Sinn(außer Vodoo?), denn get_text soltle doch der einzige Zugriff auf den
Array sein... .
Aber vielleicht hat da ja jemand eine Idee, warum's tut was es tut.
(am multidim. Array liegts nicht, ich hab auch einen 1D-Array ausprobiert)
Ich hoffe das war jetzt halbwegs verständlich. ^^"