Ich bewege mich mommentan im Kreis, ich möchste die daten eines Events auf der Map mittels RGSS Script auslesen, aber es geht einfach nicht.
Wenn ich "p $game_event" über Script ausführen lasse erhalte ich nur ein simples "nil" und mit $game_map.events bekomme ich zwar viele Parameter, allerdings kann ich weder ".name" noch sonst etwas abfragen. *
Jemand ne Ahnung WO die Daten der Events gespeichert werden und WIE man sie abfragen/ändern kann?
Edit: und kommt mir nicht mit Scientia oder phylomortis, wenn ihr nicht wisst wo genau dort etwas genaues steht.
Allerdings greifst du dort auf ein Array zu, was alle Events der Map enthält, daher musst du zuerst über die Angabe der EventID auf das eigentliche Event-Objekt zugreifen.
Desweiteren sind nicht alle Daten des Event-Objektes von aussen einlesbar, aber es sind schon eine ganze Menge. Es gibt dabei eine Unterscheidung zwischen dem Game_Event-Objekt und dem RPG::Event-Objekt. Ersteres ist es, was dir das Array der Game-Map liefert. Jedes Game_Event-Objekt beinhaltet dann noch ein RPG::Event-Objekt, welches aber nicht von außen aufrufbar ist.
Das RPG::Event-Objekt ist das Objekt, welches man im Editor erstellt hat. Es enthält den Namen, x und y-Position sowie ein Array aller Eventseiten. Das Game_Event dagegen repräsentiert die aktuelle Seite des Events und sorgt dafür, daß diese sich ändert falls die Bedingungen dafür eintreffen.
Die Frage ist letztendlich was genau du machen möchtest. Ansonsten funktioniert ohne weitere Änderungen folgender Code:
Schau dir die Skripte "Game_Event" und "Game_Character 1" an. Dort kannst du sehen auf welche Attribute du von außen lesend zugreifen kannst (attr_reader :attribut), auf welche schreibend (attr_writer :attribut) und auf welche du sowohl lesend als auch schreibend zugreifen kannst (attr_accessor :attribut)
Attribute die mit keinem dieser drei Funktionen verknüpft werden sind für dich von außen nicht angreifbar. Es sei denn du änderst das natürlich =).
Um also zB auf das RPG::Event-Objekt zugreifen zu können, das im attribut "event" gespeichert wird fügst du der Game_Event-Klasse einfach folgende Zeile hinzu:
Natürlich solltest du die Zeile dort hinzufügen wo bereits die anderen drei Attribute so definiert werden.
Danach kannst du dann auf das RPG::Event zugreifen. Welche Attribute dies besitzt steht in der Help-File, alle Attribute sind da übrigens lesend.
Ich hoffe ich konnte dir ein wenig helfen und nicht zu sehr verwirren =).
Ne ist ok verwirrt bin ich nicht und funktioniert so auch wunderbar. "$game_map.events[id].event" hatte ich vorher auch schon abgefragt, aber ohne erfolg.
Ich muss nur leider sagen, dass ich mir den Großteil meiner bisherigen RGSS Kenntnisse per "TryAndError" Verfahren angeeignet habe, da ich mit den meisten Ruby Tutorialen nicht viel anfangen konnte.
Hat bisher auch wunderbar geklappt ohne das ich alles unspielbar gemacht habe .
Countermodivizierung, weiteres Menü über Shift und ein paar Spielereinen mit der Terrain ID, aber an dem bin ich diesmal einfach gegen die Wand gelaufen und wuste nicht warum.
Also danke, du hast mir ne Menge Frustration ersparrt.
(und wenn mein Script so klappt auch ein paar hundert Variablen und Arbeitsminuten^^)
EDIT:
Ok, andere frage, wie kann man das Charakterset eines Events mit RGSS ändern?
$game_map.events[event_id].page.graphic.character_name
ändert es zwar scheinbar in der datenbank, aber das angezeigte Bild ist nach wie vor das selbe wie vorher ^^
Edit3: Ist nichtmehr so wichtig wenns nicht geht, hab einen Weg gefunden den ich für alle benötigten Scripte nutzen kann, ist zwar nicht ganz so ohne Arbeit, aber dafür idiotensicherer^^ und wenn ich stundenlang pixle kann ich auch mal 1-2 min pro Event in kauf nehmen.