Wenn ich ein AKS u.a. durch Variablen erstelle, wie kann ich dann eine Variable oder einen Text so wie im Kampfsystem anzeigen lassen?
Wenn ich ein AKS u.a. durch Variablen erstelle, wie kann ich dann eine Variable oder einen Text so wie im Kampfsystem anzeigen lassen?
Interssiert mich auch, deswegen push ich den Thread mal. ^^
Die Klasse RPG::Sprite bietet diese Funktionalität. In dieser Klasse (und daher auch in allen Subklassen) befindet sich eine Methode namens damage, welche 2 Parameter erhält. Den Schaden (entweder eine Ganzzahl oder einen String wie z.b. "Miss!"), sowie einen boolschen Wert der angibt ob es sich bei dem Treffer um einen kritischen Treffer gehandelt hat oder nicht. Ruft man diese Methode auf, wird über dem Sprite die nächsten paar Frames die Schadensanimation abgespielt.
Der Trick liegt daran an die enstprechende Instanz des Sprites zu kommen, denn aus dem Scriptbefehl direkt heraus gibt es keine Möglichkeit darauf zuzugreifen.
Die Spriteklasse die Events auf der Map darstellt ist Sprite_Character. Am besten lässt man das diese Klasse selbst regeln, und versucht gar nicht erst von außen darauf zuzugreifen. Dazu fügt man am Ende der update Methode (innerhalb, nicht danach) von besagter Klasse folgenden Code ein:
Das ist aber noch nicht alles. Die Sprite_Character Klasse überwacht nämlich ständig eine Instanz der Klasse Game_Character, bei welchem es sich auch um eine Map Event handeln kann (genauer gesagt ist das dann eine Instanz von Game_Event, welche aber eine Subklasse von Game_Character ist). Auf diese kann man innerhalb der Sprite_Character Klasse mit @character zugreifen. Diese Game_Character Klasse hat aber keine Methoden zum setzen und Abfragen von damage, damage_pop und critical. Also muss man diese hinzufügen. Dazu erweitert man die ganzen attr_accessor definitionen von Game_Character um folgendes:
Danach muss man dafür sorgen, dass diese im Konstruktor der Klasse auch noch ordentlich intitialisiert werden. In der initialize Methode von Game_Character schreibt man noch folgendes hinein:
Damit wären nun alle Vorbereitungen getroffen um auf einem Map_Event Schaden anzeigen zu können. Auf die Map Events kann innerhalb eines Script-Commands per $game_map.events[<event_id>] zugegriffen werden (<event_id> ist dabei natürlich durch die Id des Events zu ersetzen). Z.B. so
Auch hier ist <event_id> wieder durch die richtige ID des Events zu ersetzen (ohne die spitzen Klammern).
Vor allen Änderungen natürlich eine Sicherheitskopie machen
Edit: Hab gerade ausprobiert, was ich da geschrieben habe, und es hat einwandfrei funktioniert![]()
--
Geändert von The_Burrito (07.01.2008 um 00:18 Uhr)