PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was hab ich falsch gemacht?


TaNDO
28.03.2014, 13:49
temp = [Civil1,Player] spawn { if {(_this select 1) distance (_this select 2) > 100} do { (_this select 0) doMove position (_this select 1); sleep 1 } };

Also... Zivilist rennt zum Player ... soweit alles gut nur wenn er dann in die 100 meter reingeht folgt er mir immer noch d.h. ich kann nicht stoppen bis wann er mir folgt :stupid:
Danke für eure Antworten

Drunken Officer
28.03.2014, 13:57
Das script kann so nicht funktionieren
IF () then {}

du hast geschrieben if {} do {} oder meinst du while do?

dann ist _this select 2 nicht vergeben. Gezählt wird mit 0 beginnend.

Läuft er in die 100 MEter rein, rennt er noch immer zu letzten ihm durchgegebenen Position.
Du musst also, wenn die 100 unterschritten wird sagen:
_pos = position (_this select 0); (_this select 0) doMove _pos

Eine Schleife die nicht wahr ist, wird übergangen. Also wenn die 100 Meter wieder aufgebaut werden, muß du das script neu starten oder eine while {true} als Hauptschleife nehmen

TaNDO
28.03.2014, 14:10
Oh sry ich meinte natürlich : temp = [Civil1,LKW,] spawn { while {(_this select 0) distance (_this select 1) > 100} do { (_this select 0) doMove position (_this select 1); sleep 1 } };

Vienna
28.03.2014, 14:59
[Civil1,LKW,] spawn .... Der Fehler ist der Beistrich nach LKW


Hast du die Anzeige von Skriptfehlern beim Aufruf von Arma nicht aktiviert?

".....\xxx.exe" -showscripterrors

https://community.bistudio.com/wiki/...tup_Parameters

TaNDO
28.03.2014, 15:16
Funktioniert immer noch nicht...

Vienna
28.03.2014, 17:41
Die Routine ist lauffähig!

Wenn der Civ über 100m entfernt ist, dann sendet ihn diese Routine so lange an die jeweilige Position des LKW, bis der Abstand 100m oder weniger beträgt. Dann wird die Routine beendet, aber der Civ läuft nun die letzten 100m noch an die letzte befohlene Position.

Was willst du eigentlich genau?

Drunken Officer
28.03.2014, 22:07
Die Routine ist lauffähig!

Wenn der Civ über 100m entfernt ist, dann sendet ihn diese Routine so lange an die jeweilige Position des LKW, bis der Abstand 100m oder weniger beträgt. Dann wird die Routine beendet, aber der Civ läuft nun die letzten 100m noch an die letzte befohlene Position.

Was willst du eigentlich genau?

Genau dass hatte ich ihm auch gesagt. Und wie er das "weiterlaufen" unterbinden kann.

Evtl. so.
Hier rennt die Puppe bis Distanze kleiner 100 ist. Sie bleibt stehen, bis die Distanze wieder größer als 100 ist und rennt los. (was aber Blödsinn ist. Dient nur zur Veranschaulichung)
Das Script läuft so lange, wie beide PArteien am Leben sind.

ttemp = [Civil1,LKW] spawn
{
while {alive (_this select 0) && alive (_this select 1)} do
{
while {(_this select 0) distance (_this select 1) > 100} do
{
(_this select 0) doMove position (_this select 1);
sleep 1;
};
_pos = getPos (_this select 0);
(_this select 0) doMove _pos;
waitUntil {sleep 1; (_this select 0) distance (_this select 1) > 100};
};
};

TaNDO
29.03.2014, 17:11
Danke ich habs hinbekommen !:daumen: