PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Trigger an ki binden


aXXIs262
16.02.2009, 18:55
hi,

hab so meine probleme, und zwar will ich das ein Auslöser erst ausgelöst wird, wenn man eine Person gefunden hat, da die Person aber durch die gegend rennt, muss der Trigger ihr folgen, aber wie mache ich das?

laut editing guide so:

triggername setPos getPos Name

also das verstehe ich so:

"name der Triggers" setpos getpos "Name der Person"

nur wo gebe ich das ein ? im trigger ? in der person oder in einer .sqs ?

das habe ich noch nicht raus...

danke für die schnellen antworten :)

[GNC]Lord-MDB
16.02.2009, 23:23
in ein Script (sqs) und zwar als Schleife

Ghost_Aut
17.02.2009, 03:02
Hallo könntest es mit einem sgs Script versuchen1

#Test1
~1
"name der Triggers" setpos getpos "Name der Person"
~0.1
?alive "Name der Person":goto "End"
~0.1
goto "Test1"

#End
exit

aXXIs262
17.02.2009, 06:13
aha... werde ich nachher mal ausprobieren....aber schonmal danke dafür...

eine andere frage:

Wie kann ich es schaffen das Zivilisten oder auch gegner auf den Spieler warten bis sie aktiv werden ? also das sie nicht wegrennen bzw rumlaufen etc. bevor ich da bin :)

Garstiger Hobbit
17.02.2009, 07:30
Hier ist dann noch mal ne Sqf variante.

while {true} do{
"name der Triggers" setpos getpos "Name der Person";
if(!alive "Name der Person" || Variable)exitwith{};
sleep 0.1;
};

if(true)exitwith{};

Ich gehe mal davon aus das du ne Publicvariable ausgibst wenn die Person gefunden ist,sonst das || variable rausnehmen.

öffnen kannst du das ganze in der Init der Einheit mit : handle=[] execVM "(name des script).sqf".

Vienna
17.02.2009, 17:57
Den Auslöser brauchst du nicht nachsetzen! Erstelle einen Auslöser in der Größe des Bereiches in dem sich die Zielperson bewegen kann.

Nehmen wir an die Zielperson ist von OPFOR, bewegt sich in einen Radius von 500m und soll von BLUFOR gefunden werden.

Achse A:500 Achse B:500

Aktivierung: [BLUFOR] [Einmal] [Vorhanden]

Bedingung: call{_a=false;{if(NameZielperson distance _x < 10)then{_a=true}}forEach thislist;_a}

Bei Akt.: Deine Aktion wenn die Zielperson einen Abstand zu einem Gegner von unter 10m hat .....

aXXIs262
18.02.2009, 06:29
ich habe nahc einigen versuchen nun den Script von "Garstiger Hobbit" genommen, danke dafür, den anderen auch nen riesen dank :)

ich habe jetzt so einiges in meiner Mission gebastelt, nur leider laufen manchmal einige KI's verwirrt durch die gesamte map, vor allem meine KI die gesucht werden soll, die rennt manchmal von dem Ort, wo ich sie platziert habe weg, und das sehr weit.... Die KI dann zu finden ist auch so schon schwer aber dann auf der ganzen Map suchen, naja nicht so toll oder ?

kann ich der KI einen Bewegungsradius zuweisen ?

und noch ne Frage: Wie kann ich der KI namen vergeben ? also Captain Hook, Major Pain und so, damit das nacher in der nachbesprechungs angezeigt wird :)

aXXIs262
20.02.2009, 15:09
habe schonwieder ein problem...

folgendes:

ich bastel an einer coopmap für 2 spieler, und dort soll eine ki gruppe einen spieler, der einen trigger auslöst, joinen, das klappt auch...

Das habe ich wie folgt gemacht

Trigger gruppiert mit dem spieler1 und da mit namen des spieler1 den joinbefehl und einen deletebefehl für den 2. auslöser eingebaut. (also spieler1 löst aus und die gruppe joint)

für spieler 2 habe ich einen 2. trigger gemacht wie bei spieler1

also hat die KI 2 auslöser für jeden spieler einen, nur ich will ja das der Auslöser mitwandert und das bekomme ich nur hin wenn ich einen Auslöser habe (verstehe die script wohl nicht so richtig)

kann ich eine sqs schreiben die prüft wer den auslöser auslöst und dann dementsprechend joinen lässt ?

[GNC]Lord-MDB
20.02.2009, 15:42
jo mit list "triggername" da stehen dann alle objekte dirn die zur seite des Trigger gehören wenn der nicht auf "keine" steht.

dann braucht du noch abfragen ob der Player in list "triggername" ist.
und dann den join lassen.

aXXIs262
20.02.2009, 16:05
hmmm.. verstehe ich jetzt nicht so ganz...

ich habe wie folgt den trigger

Bedingung: this && gamer2 in thisList;

bei aktivierung: [ai1] join gamer2; hint "Text!"; deleteVehicle gamer2trigger; deleteVehicle gamer1trigger;

???

für gamer 1 das selbe

aber wie binde ich nun beie trigger an die ki oder wie baue ich einen trigger der beides macht :)

Vienna
20.02.2009, 17:24
Warum und mit wem soll der Auslöser mitwandern?

Das scheint mir eher eine Aufgabe für den "distance" Befehl zu sein.

aXXIs262
20.02.2009, 17:59
jo,

die ki soll von einem der 2 spieler abgeholt werden...
das Problem ist das die ki über die map rennt (und die 2 auslöser sollten ihr folgen). Die Ki muss gesucht werden, und wenn man dann näher drann ist (auslöser hat 3 meter), joint die KI die Gruppe des finders.

im moment überlege ich das irgendwie anders zu machen, hab nur keine ahnung :(

[GNC]Lord-MDB
20.02.2009, 18:15
trigger auf der map basteln und auf ein mal aktivierung stellen

Player distance ai1 < 5

[ai1] join gamer2; hint "Text!";

aXXIs262
21.02.2009, 13:30
geil, werde ich gleich mal probieren :)

aXXIs262
21.02.2009, 13:44
habs probiert und es funktioniert genauso wie ich es mir vorgestellt habe :D

1000dank

[GNC]Lord-MDB
21.02.2009, 14:20
nix zu Danken :daumen:

aXXIs262
25.02.2009, 16:40
ihc habe aber noch eine frage... was anderes diesmal...

ich habe eine gruppe erstellt mit hilfe eines Auslösers:



[ ai4,ai2,ai3,ai1] join grpnull;
[ ai4,ai2,ai3,ai1] join grprescue;
group grprescue selectLeader ai4;
WP1 = grprescue addWaypoint [2545.085693,13.860000,2619.653320, 20];wp1 setWaypointType "move";

das klappt aber nicht, keiner der 4 einheiten macht anstalten sich zum wegpunkt zu begeben, ich denke mal das es an dem gruppennamen liegt, weil da bin ich mir nicht sicher ob er so vergeben wird :(

aber die meine gruppe verlassen sie und scheinen auch eine neue gruppe zu bilden...

ahh editing ist schon manchmal :( wenn man nicht den syntax beherrscht

burns
25.02.2009, 16:55
wenn man nicht den syntax beherrscht

Vielleicht helfen ja folgende Seiten:
join - Bohemia Interactive Community (http://community.bistudio.com/wiki/join)
group - Bohemia Interactive Community (http://community.bistudio.com/wiki/group)
selectLeader - Bohemia Interactive Community (http://community.bistudio.com/wiki/selectLeader)
addWaypoint - Bohemia Interactive Community (http://community.bistudio.com/wiki/addWaypoint)

Das Biki ist teilweise schon hilfreich :)

Ob in deinem script was verkehrt ist, keine Ahnung, kenn mich selber kaum mit Editing aus.
Könnte höchstens noch ne Lösung anbieten die allerdings nur im SP funzt:
grprescue commandmove getpos markername;
commandMove - Bohemia Interactive Community (http://community.bistudio.com/wiki/commandMove)

[GNC]Lord-MDB
25.02.2009, 17:21
Bekommt´s ne Fehlermeldung ?
Ich denke das da sie Gruppe nicht existiert

createGroup - Bohemia Interactive Community (http://community.bistudio.com/wiki/createGroup)

grprescue= createGroup Seite;
[ ai4,ai2,ai3,ai1] join grpnull;
[ ai4,ai2,ai3,ai1] join grprescue;
group grprescue selectLeader ai4;
WP1 = grprescue addWaypoint [2545.085693,13.860000,2619.653320, 20];wp1 setWaypointType "move";

aXXIs262
25.02.2009, 18:11
nee, geht leider nicht, werde gleich nochmal einen neuen wegpunkt machen, evtl. leigts daran..

aXXIs262
25.02.2009, 18:29
grprescue= createGroup West;
[ ai4,ai2,ai3,ai1] join grpnull;
[ ai4,ai2,ai3,ai1] join grprescue;
grprescue selectLeader ai4;
WP1 = grprescue addWaypoint [getMarkerPos "GrpM", 0];
wp1 setWaypointType "move";

das geht doch :) also, gnaz einfach, 4 meiner leute (ai1-4) verlassen meine Truppe und sind ab dann eine eigene :) und gehen zum Marker (GrpM) , das mit dem marker ist auch einfahcer als mit den x,y,z koordinaten...

aXXIs262
01.03.2009, 14:51
ich habe wieder ein problem :(

_heli = group h1;
grprescue= createGroup West;
[ ai4,ai2,ai3,ai1] join grpnull;
[ ai4,ai2,ai3,ai1] join grprescue;
grprescue selectLeader ai4;
WP1 = grprescue addWaypoint [getMarkerPos "GrpM", 0];
wp1 setWaypointType "Get in";
[grprescue, 1] synchronizeWaypoint [ [_heli, 1] ];

das soll die neue truppe dazu bringen in einen hubschruaber einzusteigen, der einen wegpunkt auf laden hat, nur leider funktioniert das nicht...

hat da einer eine idee zu ?

also, mal genau erklärt... die gruppe wird erstellt und der Wegpunkt mit Get in vergeben, der Hubschrauber hat den 1 wegpunkt auf laden an einem H... es kommt kein Fehler, nur die leute bleiben stehen und der hubschrauber auch, also in der luft...

aXXIs262
01.03.2009, 18:34
_heli = group h1;
grprescue= createGroup West;
[ ai4,ai2,ai3,ai1] join grpnull;
[ ai4,ai2,ai3,ai1] join grprescue;
grprescue selectLeader ai4;
WP1 = grprescue addWaypoint [getMarkerPos "GrpM", 0];
wp1 setWaypointType "get in";
WP2 = _heli addWaypoint [getMarkerPos "GrpM", 0];
wp2 setWaypointType "Load";
WP3 = _heli addWaypoint [getMarkerPos "GrpM2", 0];
wp3 setWaypointType "move";
[_heli, 1] synchronizeWaypoint [[grprescue, 1]];

das funktioniert auch nciht... was mache ich nur falsch ? der Heli bleibt in der Luft und die Soldaten machen keine anstalten irgenwas zu tun...