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.
Wachposten - Harte Nuss?
- Find dA real
- Hobby-Archäologe
- Beiträge: 233
- Registriert: 28.12.2005, 00:16
- Sinitrena
- Tastatursteuerer
- Beiträge: 678
- Registriert: 08.05.2004, 01:01
- Wohnort: Frankfurt
- Kontaktdaten:
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.
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"
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
Statt
geht auchSinitrena hat geschrieben:if (cWache.Moving==1) {
}
else { ... }
Code: Alles auswählen
if (!cWache.Moving) { ... } // ! = Negierung/not
Use gopher repellent on funny little man
- TheRock
- Rätselmeister
- Beiträge: 2136
- Registriert: 21.05.2006, 19:13
- Wohnort: Berlin
- Kontaktdaten:
- Find dA real
- Hobby-Archäologe
- Beiträge: 233
- Registriert: 28.12.2005, 00:16