next up previous contents
Nächste Seite: Die charJ.dlg Aufwärts: WeiDU Vorherige Seite: Die char.dlg   Inhalt

Die charP.dlg

Diese Datei regelt das Rauswerfen von Mitgliedern einer Gruppe. Wenn man im Spielbildschirm die Gruppe ändert und diesen Charakter entfernt, wird dieser Dialog gestartet.

Die Datei beginnt also mit

BEGIN charP

IF $\sim$Global(``CHARKickedOut'',''GLOBAL'',0) Global(``CHARJoinedParty'',''GLOBAL'',1)$\sim$ THEN BEGIN 1

Die Variable soll sicherstellen, dass der Charakter nicht aus der Gruppe entfernt wurde. Sie ist unbedingt notwendig! Die Funktion kann nicht von der Variablen CHARJoinedParty übernommen werden. Zumindest war dies bei mir einmal eine Fehlerquelle. Ich sehe keinen Grund für diese neue Variable, Wes Weimer auch nicht, aber es ging nicht ohne (empirisches Wissen vs. Logik). Mit CHARJoinedParty stellen wir sicher, dass ich der Charakter auch in der Gruppe befindet.

SAY $\sim$Ich soll Euch verlassen?$\sim$ IF $\sim\sim$ THEN REPLY $\sim$Nein, ich kann nur meine Maus nicht bedienen.$\sim$ DO $\sim$JoinParty()$\sim$ EXIT

Nach dem ``Entfernen'' über den Spielbildschirm gilt ein Charakter als entfernt. Will man das Verhindern muss man ihn praktisch wieder aufnehmen. Dazu die Aktion JoinParty().

IF $\sim\sim$ THEN REPLY $\sim$Ja, weg mit Euch.$\sim$ DO $\sim$SetGlobal(``CHARKickedOut'',''GLOBAL'',1) SetGlobal(``CHARJoinedParty'',''GLOBAL'',0)$\sim$ EXIT END

Nachdem der Charakter aus der Gruppe etngültig entfernt wurde, müssen wir die beiden Variablen auf den richtigen Wert setzen.

Jetzt müssen wir dem Charakter die Möglichkeit geben wieder aufgenommen zu werden:

IF $\sim$Global(``CHARKickedOut'',''GLOBAL'',1) Global(``CHARJoinedParty'',''GLOBAL'',0)$\sim$ THEN BEGIN 2

Wir stellen mit Hilfe der beiden Variablen fest, dass der Charakter aus der Party geworfen wurde.

SAY $\sim$Was denn, soll ich mitreisen oder nicht? Wisst Ihr überhaupt, was Ihr wollt?$\sim$

IF $\sim\sim$ THEN REPLY $\sim$Reist mit uns!$\sim$ DO $\sim$SetGlobal(``CHARKickedOut'',''GLOBAL'',0) SetGlobal(``CHARJoinedParty'',''GLOBAL'',1) JoinParty()$\sim$ EXIT

IF $\sim\sim$ THEN REPLY $\sim$Bleibt wo Ihr seid!$\sim$ EXIT

END

Das ganze jetzt noch mal zusammen:

BEGIN charP

IF $\sim$Global(``CHARKickedOut'',''GLOBAL'',0)$\sim$ THEN BEGIN 1

SAY $\sim$Ich soll Euch verlassen?$\sim$

IF $\sim\sim$ THEN REPLY $\sim$Nein, ich kann nur meine Maus nicht bedienen.$\sim$ DO $\sim$JoinParty()$\sim$ EXIT

IF $\sim\sim$ THEN REPLY $\sim$Ja, weg mit Euch.$\sim$ DO $\sim$SetGlobal(``CHARKickedOut'',''GLOBAL'',1) SetGlobal(``CHARJoinedParty'',''GLOBAL'',0)$\sim$ EXIT

END

IF $\sim$Global(``CHARKickedOut'',''GLOBAL'',1) Global(``CHARJoinedParty'',''GLOBAL'',0)$\sim$ THEN BEGIN 2

SAY $\sim$Was denn, soll ich mitreisen oder nicht? Wisst Ihr überhaupt, was Ihr wollt?$\sim$

IF $\sim\sim$ THEN REPLY $\sim$Reist mit uns!$\sim$ DO $\sim$SetGlobal(``CHARKickedOut'',''GLOBAL'',0) SetGlobal(``CHARJoinedParty'',''GLOBAL'',1) JoinParty()$\sim$ EXIT

IF $\sim\sim$ THEN REPLY $\sim$Bleibt wo Ihr seid!$\sim$ EXIT

END

Theoretisch kann ein Char auch irgendwohin geschickt werden. Dazu kann man in Dialog 1 noch folgende Antwort hinzunehmen.

IF $\sim\sim$ THEN REPLY $\sim$Geht in den Tempelbezirk.$\sim$ DO $\sim$SetGlobal(``CHARKickedOut'',''GLOBAL'',1) SetGlobal(``CHARJoinedParty'',''GLOBAL'',0) MoveGlobal(``AR0900'',''CHAR",[2029.3136])$\sim$ EXIT

Hierzu haben wir die Aktion MoveGlobal verwendet. AR0900 gibt das Gebiet an (den Tempelbezirk), in das CHAR an den Ort [x,y] gehen soll. x und it y sind die Koordinaten auf der Karte. Man sollte vor den Benutzung der Koordinaten sicherstellen, dass dort auch ein freier Platz ist (auf dem hier benutzten steht schon MEIN NPC!). CHAR ist die DeathVariable (DV) des Charakters, diese ist der spielinterne ``Name'' des Charakters. Er muss nicht identisch mit dem normalen Namen des Charakters sein, da der normale Name manchmal ja länger als 8 Zeichen sein soll. Dadurch können zwei unterschiedlich Charaktere denselben Namen haben, ihre DV muss aber unterschiedlich sein. Wie weiter unten (siehe 3.2.7) beschrieben gibt es auch andere Aktionen für den Gebietswechsel. Ach ja, noch für die Korrekten. Die im Spiel enthaltenen NPCs können aus der Unterwelt nicht in ein anderes Gebiet gehen. Wenn man also das nachemfpinden will, muss für die obere Antwort die Bedingung rein, dass es sich nicht um eine Unterweltkarte handeln darf. Eine einzige Bedinung dafür gibt es nicht. Man muss JEDE Unterweltkarte überprüfen. Die Daten holt man sich aus den *P.dlg-Dateien der Original-NPCs.


next up previous contents
Nächste Seite: Die charJ.dlg Aufwärts: WeiDU Vorherige Seite: Die char.dlg   Inhalt
maus 2003-02-14