ERM: Pandoras Box / If-Abfragen

Rund um das inoffizielle Addon Wake of Gods

Moderatoren: Thies, mara, Radagast, Azurdrachen

Antworten
Benutzeravatar
samot
Drache
Drache
Beiträge: 2797
Registriert: Mo 16.07.2001 - 12:48
Wohnort: Koblenz
Kontaktdaten:

Beitrag von samot »

Wie kann ich mittels ERM die Geschenke etc. einer Pandoras Box ändern?
Ich hab auf der Karte einen Bauern plaziert und diesen mittels !#OBx/y/l:T6; in eine Pandora-Box umgewandelt. Wenn ich diese jetzt besuche, wird allerdings ein etwas weiter südlich liegendes Ereignis ausgelöst...

Wie kann ich if (then ... else) Abfragen machen, d.h. wenn Antwort auf Frage = 1 dann weiter ansonsten beende Funktion oder mach was anderes?

mfg

Thomas
Wollt Ihr den Hebel umlegen? - Ja - Peng, jetzt ist der Hebel tot...
Darksir
Ritter/Amazone
Ritter/Amazone
Beiträge: 686
Registriert: Di 24.07.2001 - 07:41

Beitrag von Darksir »

:D Lustige Idee einen Bauern in eine Pandorras Box zu verwandeln :D

Mit dem T-Befehl kannst du die Box (glaube ich) (noch) nicht beeinflussen. Alle Objekte die du beeinflussen kannst findest du unter "Objects" in der ERM-Help. Du kannnst natürlich so tun als ob und eine komplette Pandorrasbox scripten.

If-Abfragen unterscheiden sich je nach dem wie du sie anwendest. Zwei Beispiele

1. Über eine Dialog Box mit Flags
Flags sind boolsche Variablen, die entweder 0 oder 1 enthalten. Wenn du eine Dialogbox mit einer Frage öffnest mußt du immer eine Flag setzen.

!!IF:Q1^Möchtest du 2000 Gold geschenkt?^;
Hier benutze ich die Flag 1. Der Spieler bekommt die typische Dialogbox, bei der er zustimmen oder ablehnen kann.

Anschießend fragst du bei der Ausführung die Flag 1 ab. stimmt der Spieler zu, ist diese positiv. Die beiden Anweisungen werden nur ausgeführt, wenn `&1` wahr ist.
!!IF&1:M^Für so eine Armen schlucker habe ich immer ein Almosen^;
!!OW&1:R1/6/d2000;

Lehnt der Spieler ab, ist Flag 1 negativ. Diese Anweisung wird nur ausggeführt wenn `&-1` wahr ist
!!IF&-1:M^Du scheinst es ja dicke zu haben^;

Ein anderes Beispiel mit Abfrage einer Interger Variablen.

Die Variable 1 bekommt einen zufälligen Wert zwischen 0 und 2:
!!VRv1:S0 R2;

Die Ausführung ist ähnlich der oben nur, dass du diesmal die Variable v1 abfragst, je nachdem welcher Status wahr ist, wird die entsprechende Funktion ausgeführt.
!!IF&v1=0:M^Die Variable hat den Wert 0^;
!!IF&v1=1:M^Die Variable hat den Wert 1^;
!!IF&v1=2:M^Die Variable hat den Wert 2^;

Wenn du Stringvariablen abfragst, kannst du nur überprüfen ob die Variable einen Wert (+) enthällt oder leer (-) ist.

Dieter
Benutzeravatar
samot
Drache
Drache
Beiträge: 2797
Registriert: Mo 16.07.2001 - 12:48
Wohnort: Koblenz
Kontaktdaten:

Beitrag von samot »

Danke erstmal für Deine ausführliche Antwort.

Eine Möglichkeit eine Funktion (bzw. Receiver) zu beenden, wenn ein bestimmtes Flag nicht mehr gesetzt ist (also eine Art Return oder goto end) gibt es aber nicht, oder? Es wäre praktisch, da ich ja sonst, je nach Aufgabe, bei jedem Befehl das Flag abfragen müßte.

Eine eigene Pandora-Box würde ich vermutlich über !!HE-1:C manuell skripten müssen, da sie nicht in der ERM-Liste auftaucht.

Inzwischen ist es mir allerdings gelungen, einen Bauern dazu zu bringen, mir z.B. 20 Goblins zu geben (!!OBx/y/l:T58 und Uxy laut FormatC-Tabelle).

mfg

Thomas
Wollt Ihr den Hebel umlegen? - Ja - Peng, jetzt ist der Hebel tot...
Darksir
Ritter/Amazone
Ritter/Amazone
Beiträge: 686
Registriert: Di 24.07.2001 - 07:41

Beitrag von Darksir »

Wenn du eine Funktion mit einer bestimmten Flag (variablen) abfragst, dann wird diese Funktion nur ausgeführt wenn deine Abfrage wahr ist:

!!FU1&v1=1:P;

!?FU1;
... dies ist die Funktion

einen abort oder end Befehl gibt es nicht, da hast du richtig vermutet.

Dieter
Antworten

Zurück zu „Heroes 3 WoG“