Anmelden

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

Linkey
18.03.2018, 16:30
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

Cepanks
18.03.2018, 17:43
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

Linkey
18.03.2018, 17:45
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.

Linkey
18.03.2018, 17:51
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.

Linkey
18.03.2018, 18:29
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.

Linkey
18.03.2018, 19:13
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

Linkey
18.03.2018, 20:13
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? :)

Linkey
18.03.2018, 21:06
"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

Cepanks
18.03.2018, 21:15
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 :)