[Tutorial] Technische Details zur Modprogrammierung

Maus

Senior Member
Registriert
07.08.2002
Beiträge
9.380
Teil 1: wie lese ich einen Dialog, der in WeiDU geschrieben ist?

a) Standardform einen Dialoges mit dem HC

Code:
IF ~AB~ THEN BEGIN Dialogname
SAY ~Hallo~
IF ~CheckStatGT(Player1,5,INT)~ THEN REPLY ~Ich kann sprechen~ GOTO nächsterDialog
IF ~~ THEN REPLY ~Gngngngn~ EXIT
END

IF ~~ THEN BEGIN nächsterDialog
...


Zuerst wird eine Bedinung (AB) geprüft, die erfüllt sein muss, dass der Dialog gestartet wird. Dann wird mit BEGIN der Dialog gestartet. Dialogname ist der Name des Dialoges, damit man die verschiedenen Dialoge auseinanderhalten kann. Mit SAY sagt dann derjenige, um dessen Dialogdatei es sich handelt etwas ("Hallo").

Danach kommen die ganzen Antwortmöglichkeiten des HC. Mit IF ~irgendwas~ werden wieder Bedingungen festgelegt, die erfüllt sein müssen, damit die Antwort zur Auswahl steht. Die erste Antwort ist möglich, wenn der HC eine höherer Intelligenz als 5 hat (mind. 6). Dann ist die Antwort (ich kann sprechen) möglich. Wird sie ausgewählt, geht das Gespräch mit dem Dialog nächsterDialog weiter. Bei der zweiten Antwort muss keine Bedinung erfüllt werden, die steht immer zur Verfügung (Merke: die Bdinungen müssen immer so gewählt werden, dass mind. eine Antwort möglich ist). Wird die zweiten Antwort ausgewählt, wird der Dialog mit EXIT abgebrochen.

Man sieht, dass sich dies ziemlich weit verzweigen kann, wenn man viele Antwortmöglichkeiten hat, die zu unterschiedlichen Dialogen weiterleiten.

b) Änderungen beim Dialog mit einem NPC

der Anfang ist derselbe, also

Code:
IF ~~ THEN BEGIN Name
SAY  ~Hallo Korgan~

aber dann muss man zu der Dialogdatei von Korgan überleiten

Code:
IF ~~ THEN DO EXTERN BKorgan KName

wobei es dann in der Datei BKorgan mit dem Dialog KName weitergeht. Da das eine ziemlich Schreibarbeit ist wenn es einen längeren Wortwechsel gibt. Daher kann man auch CHAIN benutzen

Code:
CHAIN BKorgan KName
~Hallo Chiara~
== BChiara
~Wie geht es Korgan?~
== BKorgan
~Schlecht, ich habe Hunger~
== BChiara
~Hier hast du etwas
END BKorgan Schluss

Wobei dann noch in die BKorgan-Datei der Schluss eingetragen werden muss. Dies dient nur dazu, dass man einen solchen Dialog lesen kann. Wer es ausführlicher wissen will, soll im meinem Tutorial nachschauen.
 
Zuletzt bearbeitet von einem Moderator:

Maedhros

Sohn Feanors
Registriert
08.06.2002
Beiträge
824
Dann hab ich zu den technischen Sachen auch gleich ein paar Anfängerfragen: Ich brauche Befehle, um:

-jemanden weggehen zu lassen
-XP zu erhöhen, und zwar für die Gurpppe, nicht für einen einzelnen.. aber da kann ich auch noch mal in Maus' Tutorial schauen, ich eine da stand was davon drin
- den Ruf zu erhöhen

Eine dritte Person sich in ein Gespräch zwischen HC und einem NPC einschalten zu lassen.

Und, ja, dann kann ich erstmal die eine Dialogdatei überarbeiten.
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
9.380
3. IncReputation(Zahl); Zahl kann auch negativ sein, dann wird der Ruf gesenkt.

1. das muss glaube ich mit einem Skript gemacht werden. Wenn der Charakter ganz gehen soll, dann ist es LeaveArea(). Wenn er in eine andere Area soll, gibt es mehrere Möglichkeiten MovoToArea(ARxxxx,[x.y],a) ist eine davon.

2. weiss nicht, aber einfach mal die Dialoge im Spiel anschauen.
 

Caswallon

Chronist
Registriert
13.08.2001
Beiträge
11.460
1. Wie Maus gesagt hat, als Scriptbefehl; kann man aber auch als Action in einem Dialog haben.
Sähe bei WeiDU etwa so aus (bin mir nicht ganz sicher):

...
THEN DO ~LeaveArea()~ EXIT

Damit verläßt der Sprecher die Gegend, und der Dialog wird beendet.

Solche Sachen - kleine Cutscenes, Scripte und ähnliches - könnte ich auch mit übernehmen, wenn man mir sagt, was passieren soll. :)

Cas
 

Maedhros

Sohn Feanors
Registriert
08.06.2002
Beiträge
824
Ich nehme an, mit dem Befehl bringt man die Wache dann dazu, aus dem Gebiet herauszulaufen? Nicht daß sie einfach in der Luft verschwindet.

Mit der Wache ist der oben genannte "jemand" gemeint.. verzeiht meine Schusseligkeit.
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
9.380
Richtig, die läuft dann schnustracks weg und kann nicht mehr angesprochen werden.
 

Maedhros

Sohn Feanors
Registriert
08.06.2002
Beiträge
824
Oh, dann ist das ja perfekt *feil*
 

Maedhros

Sohn Feanors
Registriert
08.06.2002
Beiträge
824
Wie schaut das mit der Erfahrung für die Gruppe aus?
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
9.380
Tja, da muss ich mal schauen, das kann ich dir erst morgen sagen.
 

Seradin

Kleine Drow
Registriert
20.09.2002
Beiträge
1.386
@Maedhros: Wenn du NI hast, schau einfach in den *.IDS nach. Muesse glaub ich in der Trigger.IDS stehen.
 

Maedhros

Sohn Feanors
Registriert
08.06.2002
Beiträge
824
Hm, ich mach da grad den IDS Browser auf und da hopst mir so ein schönes "AddexperienceParty(Zahl)" ins Auge. Kann es das schon sein?
 

Arodon

Kleriker des Helm
Registriert
01.04.2002
Beiträge
1.787
*auch aml ne Frage hat*
Was bedeutet Hardcodiert?
Ich weiß das das heißt, das wir es nciht mehr verändern können*g* Aber noch?
 

Seradin

Kleine Drow
Registriert
20.09.2002
Beiträge
1.386
Sieht danach aus. Sonst koennte es noch etwas mit GetXPParty(Zahl) sein.

@Arodon: Es bedeutet soviel, dass es in der exe-Datei sitzt und nicht in Dateien die man bearbeiten kann.
 

Maedhros

Sohn Feanors
Registriert
08.06.2002
Beiträge
824
Naja, das heißt halt, es ist fest im Programm drin... und kann nicht mehr geändert werden. Das ist eigentlich alles glaub ich.

@ Seradin: In der Trigger.IDS stehen irgendiwe nur Bedingungen drin. In der Action.IDS hab ich das mit den XP gefunden
 

Seradin

Kleine Drow
Registriert
20.09.2002
Beiträge
1.386
Nehm das aus der Action.IDS. Sorry, war oben mein Fehler, ist ja eine Aktion. Die Trigger.IDS brauch man z.B. fuer Skripte um Dinge auszuloesen.
 

Arodon

Kleriker des Helm
Registriert
01.04.2002
Beiträge
1.787
Wieso beutzen die sowas? Muss doch extrem umständlich sein das in .exe`s zu packen oder?
 

Maedhros

Sohn Feanors
Registriert
08.06.2002
Beiträge
824
Schon okay, jede Wette, daß ich Dich in Hinsicht auf Schusseligkeit noch um Längen übertreffe :D

Hey, das sieht mir auch glatt nach der Liste von Befehlen aus, die ich mal gesucht hatte... gut zu wissen.
 

Maedhros

Sohn Feanors
Registriert
08.06.2002
Beiträge
824
@Arodon: Also, eigentlich ist es schwerer, Sachen so zu machen, daß sie hinterher von anderen verändert werden können, ohne das ganze Programm neu compilieren zu müssen... Naja, kommt immer drauf an, wie man programmiert.
 

Maedhros

Sohn Feanors
Registriert
08.06.2002
Beiträge
824
So, jetzt hab ich doch glatt mal wieder eine Frage... und zwar möchte ich bei einem Reply als Bedingung festlegen, daß der Sprecher ein bestimmter Charakter nicht ist. Negation ging je mit einem "!", aber wie frage ich die DeathVariable ab?

(Hintergrund: Es wäre etwas unlogisch, wenn Chiara Jacob nach der Geschichte fragen würde, wie die beiden sich kennengelernt haben)
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
9.380
IF ~!IsGabber("V#Chiara")~

IsGabber fragt nach dem Sprecher.
 
Oben