Banner left   Banner center   Banner right

Germanenglish Home · News · Diary · Screenshots · Documentation (Wiki) · Downloads · Guestbook · Forum

Home · Benutzer registrieren · Suchen · Statistik · FAQ · Benutzerliste

Zur Zeit online: keiner ausser dir

 X-Force - Fight For Destiny - Forum —› Testversion —› [V0.910X-Skript] neues Eventsystem Teil2

Autor Mitteilung
verfasst am: 28.05.2006, 23:12
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
So, nach längerer Wartezeit (und der Anschaffung einer funktionierenden Tastatur) hier nun der 2. Teil zum Eventsystem. Hier werden die beiden Funktionen register_event() und register_special_event() behandelt. Im Gegensatz zur v0.900 gibt es ab V0.910 nicht mehr für jedes mögliche Event einen eigenen Befehl. Statt dessen wurden die Events in 2 Kategorien eingeteilt. Die erste Kategorie sind Ereignisse, die mit einem bestimmten Objekt (z.B. Basis, UFO, Bodeneinsatz etc.) zusammenhängen. Für sie ist die Funktion register_event() zuständig.

Die 2. Kategorie sind solche Ereignisse, die nicht direkt mit einem Objekt zusammenhängen, sondern auf allgemeine Spielparameter (Vertrauensänderungen, Credits, Wochenende, Aufruf einer bestimmten Seite etc.) reagieren. Dafür gibt es die Funktion register_special_event().

Funktion register_event: Die Funktion register_event() erwartet 3 Parameter.
Der erste Parameter ist der Name der aufzurufenden Prozedur (analog zu register_timed_event; siehe Eventsystem Teil 1).

Der zweite Parameter ist ein Objekt. Allerdings darf hier nicht wie bei register_timed_event ein beliebiges Objekt zugewiesen werden. Statt dessen muss hier immer das Objekt übergeben werden, auf das sich dieses Event bezieht. Soll z.B. auf den Abschuss eines UFOs reagiert werden, so so muss das entsprechende UFO übergeben werden. Oder soll auf die Zerstörung einer Basis reagiert werden, dann muss die entsprechende Basis angegeben werden. Es erfolgt eine Prüfung des Objektes, so dass keine Basis bei einem UFO-Event übergeben werden kann.

Der 3. Parameter ist eine Konstante vom Typ TEventID. Sie bestimmt, auf welches Ereignis register_event reagieren soll. Die möglichen Werte für die EventID finden sich im Objektbrowser unter Konstanten -> TEventID (Anmerkung: EVENT_SPECIAL_... sind für register_special_event und können bei register_event nicht genutzt werden). Derzeit sind folgende Werte für die EventID zulässig:

- EVENT_ONBASISDESTROYED: Mit dieser ID kann man darauf reagieren, wenn eine Basis zerstört wird (derzeit können allerdings nur Alphatronbergwerke zerstört werden, da für Außenposten und Hauptbasen noch nicht geklärt ist, was als Kriterium für die Zerstörung verwendet werden soll). Entsprechend muss als Objekt eine Basis (TBasis) übergeben werden.

- EVENT_ONEINSATZTIMEUP: Wird ausgelöst, wenn die Zeit für das bewerkstelligen eines Bodeneinsatzes überschritten wird. Entsprechend muss als Objekt ein Einsatz (TEinsatz) übergeben werden.

- EVENT_ONEINSATZWIN: Wird ausgelöst, sobald der Bodeneinsatz gewonnen wurde.

- EVENT_ONSCHIFFMOVE: Wird ausgelöst, sobald sich ein Flugzeug (TRaumschiff) von der aktuellen Position bewegt.

- EVENT_ONSCHIFFREACHEDDESTINATION: Wird ausgelöst, wenn ein Transporter (TRaumschiff, siehe raumschiff_api_DoTransport*) seine Zielposition erreicht.

- EVENT_ONSCHIFFSHOOTDOWN: Wird ausgelöst, wenn ein Flugzeug abgeschossen wird.

- EVENT_ONUFOCOMMANDCOMPLETE: Wird ausgelöst, wenn ein UFO (TUFO) einen Befehl beendet hat. Als Objekt muss ein UFO übergeben werden. Wird nur ausgelöst, wenn die KI des UFOs per Skript gesteurt wird (TUFO.UserKI = true).

- EVENT_ONUFODISCOVERED: Wird ausgelöst, wenn das UFO das erste mal von einem Sensor erfasst wird.

- EVENT_ONUFOESCAPE: Wird ausgelöst, wenn das UFO entkommen ist.

- EVENT_ONUFOHITBYBASE: Wird ausgelöst, wenn das UFO von einer Basis getroffen wird (Fehlschüsse führen zu keiner Reaktion).

- EVENT_ONUFOKAMPFWIN: Wird ausgelöst, wenn das UFO einen Luftkampf gewinnt.

- EVENT_ONUFONEARESTENEMYCHANGED: Wird ausgelöst, wenn der nächste Feind durch einen anderen ersetzt wird, das erste mal ein Feind in der Sensorreichweite des UFOs auftaucht oder der Feind, die Sensorreichweite verlässt. Über TUFO.NearestEnemy kann auf das gegnerische Flugzeug zugegriffen werden.

- EVENT_ONUFONEWCOMMAND: Wird ausgelöst, wenn das UFO einen neuen automatischen Befehl erhält. Dieses Ereignis kann nicht stattfinden, wenn bei dem UFO die Eigenschaft UserKI:=true gesetzt wurde.

- EVENT_ONUFOSHOOTDOWN: Wird ausgelöst, wenn das UFO abgeschossen wurde.

Funktion register_special_event: Die Funktion register_special_event erwartet nur 2 Parameter. Diese entsprechen den Parametern von register_event, nur das der Parameter für ein Objekt wegfällt. Außerdem dürfen für TEventID nur die EVENT_SPECIAL...-Werte angegeben werden. Derzeit sind folgende EventIDs zulässig:

- EVENT_SPECIAL_ONCOUNTRYFRIENDLYCHANGED: Ermöglicht eine Reaktion, sobald sich das Vertrauen eines Landes ändert.

- EVENT_SPECIAL_ONCREDITSCHANGED: Ermöglicht eine Reaktion, sobald sich die Credits des Spielers ändern.

- EVENT_SPECIAL_ONENTERPAGE: Wird ausgelöst, sobald der Spieler ein neues Menü betritt (z.B. das Labor oder die UFOPädie; am besten mal ins Skript OnEnterPage.xms schauen, welches im Installationspaket von X-Force mitgeliefert wird. Auch im Tutorialspielsatz wird dies verwendet, um z.B. Text auszugeben, sobald der Spieler ins Menü "Luftfahrzeuge ausrüsten" wechselt).

- EVENT_SPECIAL_ONNOTENOUGHMONEY: Wird ausgelöst, sobald er Spieler eine Rechnung nichtmehr bezahlen kann.

- EVENT_SPECIAL_ONWEEKEND: Wird immer am Wochenende ausgelöst.

Als Beispielskript für die Verwendung von register_special_event sei an der Stelle noch auf das Beispielskript "SpecialEvents.xms" (unter data/sktipts/...) verwiesen.


Noch eine abschließende Bemerkung. Die Events werden nur ausgelöst, wenn die Mission noch aktiv ist. Sobald eine Mission mit mission_win, mission_loose oder mission_abort bzw. durch Abschuss aller UFOs bei MissionType=mzUFOs beendet ist, werden alle registrierten Events in dieser Mission gelöscht.



Du musst dich registrieren um auf dieses Thema zu antworten.
Login :: » Name » Passwort

Ladezeit (sec.): 0.010 · Powered by miniBB 1.6 with parts of 1.7 © 2001-2003