Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablen anzeigen bei Map Name Display
Ken der Kot
17.03.2018, 18:54
Hello,
ich will hier (mit Pfeil markiert) Variablen anzeigen lassen. Zum Beispiel "Text: \V[1]"
Hab was cooles damit vor aber von Haus aus spielt der Maker da wohl nicht mit. Gibt es da eine Möglichkeit?
Grüße von deinem Ken der Kot
Irgendwo über "Main" einfügen:
class Window_MapName < Window_Base
def refresh
contents.clear
unless $game_map.display_name.empty?
tmap_name = $game_map.display_name
if tmap_name =~ /\\V\[(.*)]/i
tmap_name[/\\V\[(.*)]/] = $game_variables[$1.to_i].to_s
end
draw_background(contents.rect)
draw_text(contents.rect, tmap_name, 1)
end
end
end
Ken der Kot
18.03.2018, 16:40
Dankesehr :)
Aktuell geht aber leider gerade nur eine Variable und die bleibt konstant Null. Mach ich da was falsch?
Dein Ken der Kot
Ersetz das mal hiermit und schau ob es dann tut:
class Window_MapName < Window_Base
def refresh
contents.clear
unless $game_map.display_name.empty?
tmap_name = $game_map.display_name
tmap_name = tmap_name.gsub(/\\V\[(\d+)\]/i) { $game_variables[$1.to_i].to_s }
draw_background(contents.rect)
draw_text(contents.rect, tmap_name, 1)
end
end
end
class Window_MapName < Window_Base
def refresh
contents.clear
unless $game_map.display_name.empty?
tmap_name = $game_map.display_name
while tmap_name =~ /\\V\[(\d*)]/
tmap_name[/\\V\[(\d*)]/] = $game_variables[$1.to_i].to_s
end
draw_background(contents.rect)
draw_text(contents.rect, tmap_name, 1)
end
end
end
Edit: Gepanks war schneller :D
Ken der Kot
18.03.2018, 17:47
Hi Cepanks. Nein, leider nicht. Nun zeigt es keine Null mehr an, sondern \V[0001] :(
Edit: Danke Linkey, ich kann nun mehrere Werte anzeigen, aber sie bleiben immer noch bei Null, egal welchen Wert ich der Variable gebe.
Habe es selbst getestet, bei mir funktioniert es einwandfrei. Hast du die Variablen auch wirklich gesetzt?
Ken der Kot
18.03.2018, 18:17
Ja, ich verwende zwei Variablen und weiße denen über F9 testweise Werte zu. Aber die Variablen in der Anzeige bleiben bei Null. Das ist ja seltsam...
Edit: Grad auch in einem "ganz frischen" Testprojekt ohne Scripte getestet. Nur Nullen.
Auch das geht bei mir. Wie genau hast du den "Map Displaynamen" denn genannt?
Ken der Kot
18.03.2018, 19:04
Ich nannte ihn: Text: \V[0007] Text: \V[0008]
Die entsprechenden Variablen haben wie gesagt feste Werte ungleich Null zugewiesen bekommen.
Das läuft definitiv bei mir. Schick mir mal das neue Testprojekt, welches ohne Scripte ist. Bei dem muss es laufen.
Ken der Kot
18.03.2018, 19:35
Hast eine pm
Bei deinem Testprojekt gibt es gar keinen Mapwechsel, wie sollen die Variablen dann angezeigt werden?
Ich habe einfach mal eine zweite Map erstellt (kopie von der ersten). Und das Script funktioniert einwandfrei.
Ken der Kot
18.03.2018, 20:26
Achso, jetzt verstehe ich. Ich brauch das ohne den Teleport als Bedingung. Die Variablen sollen also angezeigt werden ohne dass ein Teleport oder Mapwechsel vorausgeht. Weil: Den Mapnamen zeige ich ja bereits über PAC an
#--------------------------------------------------------------------------
# * Create Map Window
#--------------------------------------------------------------------------
def create_map_window
x = PAC::MM::Windows_Pos ==:right ? Graphics.width-@command_window.width : 0
@map_window = Window_MenuMap.new(x, @command_window.height)
@map_window.visible = false if !PAC::MM::Map_Window
end
Nun müssen halt nur noch die Variablen in den Mapnamen und ich hab, was ich will. Verstehst du? :)
"Es klappt nicht mal in einem neuen Projekt ohne Scripts". Die Erwähnung, dass du es über ein Script aufrufst, wäre sehr hilfreich gewesen :)
Das verwendet ein eigenes Map-Window.
class Window_MapName < Window_Base
def refresh
contents.clear
unless $game_map.display_name.empty?
tmap_name = "" + $game_map.display_name
while tmap_name =~ /\\V\[(\d*)]/
tmap_name[/\\V\[(\d*)]/] = $game_variables[$1.to_i].to_s
end
tmap_name = tmap_name
draw_background(contents.rect)
draw_text(contents.rect, tmap_name, 1)
end
end
end
class Window_MenuMap < Window_Base
def refresh
contents.clear
unless $game_map.display_name.empty?
tmap_name = "" + $game_map.display_name
while tmap_name =~ /\\V\[(\d*)]/
tmap_name[/\\V\[(\d*)]/] = $game_variables[$1.to_i].to_s
end
draw_text(contents.rect, tmap_name, 1)
end
end
end
Kein Wunder, dass es nicht funktioniert hat :D
Was mir aber gerade beim durchschauen der Standard-Scripte noch aufgefallen ist: Window_Base hat schon eine Methode um solche speziellen Textcodes zu ersetzen,
draw_text(contents.rect, convert_escape_characters($game_map.display_name), 1)
würde also ausreichen und zusätzlich auch Heldennamen (\N[xxx]) und Namen der Währung (\G) ersetzen, falls das von Interesse ist.
Ken der Kot
18.03.2018, 22:21
Scheint alles zu funktionieren, dankeschön :D :)
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.