PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gegner sollen Position nicht verlassen


whatever828
28.02.2013, 14:11
Hallo Leute.

Ein kleines aber dringendes Problem. :cool:
Wie kann ich Gegner befehlen sich nicht von ihrer Position zu entfernen, sich aber trotzdem zu verteidigen. Mein Problem ist nähmlich: Ich habe in einem Dorf ein Haus welches mit Gegnern und Geiseln besetzt ist. Hab auch den Befehl "doStop this;" (bei jeder Einheit) verwendet, aber mir scheint sobald ein weiterer Gegner (nicht im Haus) eine Rauchgranate (orange?) geworfen hat, kommen die meisten/alle aus dem Haus und untersuchen den Platz wo die Granate geworfen wurde und kehren nicht mehr zurück. :sauer:

Mein Wunsch wäre es wenn sie nur die Position halten/bewachen würden und sich nur um Spieler die zu den Geiseln wollen angreifen.

Vielleicht weiß jemand eine Lösung.

mfg whatever828

Vienna
28.02.2013, 17:43
Kopiere den folgenden Code in die Initialisierungszeile dieser Einheiten.

Warten1 = true;
temp = this spawn
{
private ["_pos","_dir"];
_pos = position _this;
_dir = getDir _this;
while {alive _this and Warten1} do
{
sleep 1;
_this setPos _pos;
_this setDir _dir
}
};

Sollten sie ihre Position verlassen, dann werden sie spätestens nach einer Sekunde wieder auf den alten Platz in ihrer alten Blickrichtung zurückgestellt. Die Zeit kannst du bei sleep ändern.

Beachte die Variable Warten1. Sie lässt den Code so lange laufen, bis ihr Wert auf false gesetzt wird: Warten1 = false;

Das kannst du z.B. mit einem Auslöser tun, wenn Feinde dessen Bereich betreten.

Für weitere Soldaten an einem anderen Ort änderst du die Variable auf Warten2 usw.

whatever828
28.02.2013, 19:31
Danke erstmal.

Habs gerade ausprobiert und es klappt auch (klappt nicht bei Einheiten auf Dächern). Nur.... jetzt läuft die Einheit in einer Endlosschleife.
Meine Vorgehensweise ist folgende. Ich stell mich mit meiner Einheit (egal ob Freund oder Feind) auf ein Haus und spring herunter. Daraufhin geht die Einheit diesem Geräusch nach - was ich aber verhindern will, weil die Einheit soll ja bei den Geiseln bleiben und diesen Bereich nicht verlassen. :motz:
Auch der Befehl this disableAI "MOVE"; hat nichts gebracht.

Hatt sonst noch wer eine Idee wie ich das in den Griff bekomme?

AHTNTEPPOP
28.02.2013, 20:09
Sollte eigentlich so funktionieren. Hast du evtl. noch irgend welche Mods mit am laufen?
KI Mods evtl. :komisch:

Vienna
28.02.2013, 20:27
Verringere bei denen am Dach den Zeitintervall von sleep von 1 auf 0.1

Wenn das auch nicht hilft, dann auf 0.01

whatever828
28.02.2013, 22:09
Ok. Hat jetzt geklappt. Hab den Zeitintervall auf 0.01 gestellt.

Ich bin auf noch was gestoßen. Da die Einheiten mit diesem Code immer am Kartenboden spawnen müssen bei Einheiten die in verschiedenen Stockwerken spawnen sollen kleine Änderungen vorgenommen werden. Man muss bei dem Befehl this setPosATL (this modelToWorld[0,0,-6]); die Höhenangabe in einen positiven Wert umwandeln. Hier muss man halt mit der Höhe experimentieren.
Beispiel: this setPosATL (this modelToWorld[0,0,+6]);

Danke nochmal für die schnelle und ausgezeichnete Hilfe. :daumen: