HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-167/)
-   -   Gegner sollen Position nicht verlassen (https://hx3.de/editing-scripting-167/gegner-position-verlassen-22272/)

whatever828 28.02.2013 14:11

Gegner sollen Position nicht verlassen
 
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.
Code:

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:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:10 Uhr.

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias


SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119