Wachposten - Harte Nuss?

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Find dA real
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 233
Registriert: 28.12.2005, 00:16

Wachposten - Harte Nuss?

Beitrag von Find dA real »

Hallo - ich habe einen Wachposten der von a nach b laufen soll - allerdings (und das ist jetzt wohl das komplizierte):

Er soll quasi als schleife so lange laufen bis man über einen bestimmten hotspot bzw. eine bestimmte region tritt (sprich ihm zu nahe kommt). Dann soll er Stehen bleiben und "guten Abend" sagen - bis man sich wieder von diesem Punkt bewegt (rückwärts). Bei Vorwärts soll automatisch "rundialog(5); angehen.
Benutzeravatar
Sinitrena
Tastatursteuerer
Tastatursteuerer
Beiträge: 678
Registriert: 08.05.2004, 01:01
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Sinitrena »

Das Laufen im Kreis geht etwa so:
if (cWache.Moving==1) {
}
else {
cWache.Walk(100, 180);
cWache.AddWaypoint(205, 190);
cWache.AddWaypoint(15, 190);
}

(in repeatedly execute)



----------------

Soll er noch bis an eine bestimmte Stelle laufen, um Guten Tag zu sagen, sich dem Spieler zuwenden etc? Ich geh mal davon aus.

Als nächstes gebe ich dir den Tipp eine Region und keinen Hotspot zu verwenden, und da dann bei Player Walks onto region reinzuschreiben:

position=1;
cWache.Walk (100,100,eBlock);
cWache.FaceCharacter(player);
cWache.Say("Guten Abend");

position wäre dabei einfach ein int, der speichert, wo sich der player gerade aufhält.


--------------

Zum rückwärtslaufen würde ich sagen, die schreibst einfach bei player walks of region:

position=0;


----------------

Zum vorwärtslaufen könntest du eine weitere Region setzten, eben auf alles, was als vorwärts gilt und da dann bei player walks onto region:

dWache.Start(); //sollte eigentlich den Dialog starten, ich bin mir nur mit dem neuen Script in der beziehung nicht ganz sicher.



--------------------


Nochmal alles zusammen im Überblick:

bevor irgendetwas anderes im RoomScript steht:
int position;

in repetedly_execute:
if (position==0) {
if (cWache.Moving==1) {
}
else {
cWache.Walk(100, 180);
cWache.AddWaypoint(205, 190);
cWache.AddWaypoint(15, 190);
}
}

bei player walks onto region (region 1):
position=1;
cWache.Walk (100,100,eBlock);
cWache.FaceCharacter(player);

bei player walks off region (region 1);
position=0; //die Wache nimmt ihren Rundgang hierdurch wieder auf

player walks onto region (region 2):
position=1; //ist glaub ich nicht unbedingt nötig da ein Dialog repetedly execute unterbricht, sorgt aber zumindest dafür, dass die Wache nicht gleichzeitig reden und laufen will
dWache.Start();


---------------------------------------------------------------------------------
Wenn ich nichts vergessen habe müsste das jetzt gehen.
http://www.sinitrena.de.vu Meine Spiele: "A very special dog", "A magic stone", "James Bond - Who wants to live again?", "Lonely Night", "Death of an Angel", "The Witch, the Wizard and the Blue Cup", "Emerald Eyes"
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Statt
Sinitrena hat geschrieben:if (cWache.Moving==1) {
}
else { ... }
geht auch

Code: Alles auswählen

if (!cWache.Moving) { ... }   // ! = Negierung/not
Use gopher repellent on funny little man
Benutzeravatar
TheRock
Rätselmeister
Rätselmeister
Beiträge: 2136
Registriert: 21.05.2006, 19:13
Wohnort: Berlin
Kontaktdaten:

Beitrag von TheRock »

elender perfektionist^^!
"Er schaute mich an, als hätte ich auf einer Beerdigung gepupst"-George Stobbart, Philosoph

"Kreativität ist so lange in der Scheiße wühlen, bis man den Nugget findet!"-Peter Schindhelm, Kunstlehrer
Benutzeravatar
Find dA real
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 233
Registriert: 28.12.2005, 00:16

Beitrag von Find dA real »

Vielen Dank. Funktioniert soweit ganz gut - musste ein wenig tüfteln da er bei mir halt nicht stupide von a nach b läuft sondern um eine ecke quasi, und der ist immer irgendwie hängen geblieben.

Aber jetzt gehts danke nochmal :-)
Antworten