HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   [Arma 3] Npc's Animationen wiederholen lassen? (https://hx3.de/editing-scripting-187/arma-3-npcs-animationen-wiederholen-lassen-24232/)

TombStone 04.09.2014 21:36

[Arma 3] Npc's Animationen wiederholen lassen?
 
Hallo Community,

ich hätte da mal eine wichtige Frage, und zwar hatte ich vor ein Szenario zu machen und damit es etwas attraktiver und lebendiger wird, hatte ich vor, dass die Npc's Liegestützen machen sollen.
Zwar hab ich jetzt hinbekommen, dass sie eigenständig eine Liegestütz machen, aber danach nicht wiederholen? :(
Und ich wüsste gerne, was ich machen muss, damit sie es machen, ich benutze einen Trigger wo ich in das Bedinungsfeld: time>1; und in das Aktivierungsfeld: soldier1 playMoveNow "AmovPercMstpSnonWnonDnon_exercisePushup";

P.S.: Habe schon versucht einfach Time>2, etc. einzugeben, hat aber auch nicht funktioniert??

Benötige dringen Hilfe, wäre nett, wenn mir schnell geantwortet werden kann! :)


MfG
TombStone

Nokman 04.09.2014 21:54

Die Bedingung die du da sagst ist das er "time>1" heist ist die Mission schon 1 sekunde am Laufen. Der 2 Triger denn du erstellst sagt das selbe nur Läuft die Mission schon seit 2 sek umd löst ihn aus was du brauchst ist eine Schleife

Code:

while {true} do {
waituntil {animationState soldier1 != "AmovPercMstpSnonWnonDnon_exercisePushup"};
soldier1 playMoveNow "AmovPercMstpSnonWnonDnon_exercisePushup";
};

while ist die Schleife
waituntil er wartet bis das in {} erfüllt ist
animationState abfrage welche animation gerade der soldier1 macht wenn es NICHT die Pushup ist führt er die Animation aus.
und fängt wieder von vorne an und wartet bis es vorbei ist.


Code:

while {true} do {
sleep XXXX;
soldier1 playMoveNow "AmovPercMstpSnonWnonDnon_exercisePushup";
};

Das ist auch eine möglichkeit dann musst du nur schauen testen ab wann er die Animation wiederholen soll bei XXX die Zeit eintragen.

TombStone 04.09.2014 21:58

Danke schonmal für die Antwort, hoffe die Frage kommt jetzt nicht irgendwie Blöd oder so, nur wo muss ich genau den Code einfügen? In die Bedinung oder in die Aktivierung? :D

MfG
TombStone

Nokman 04.09.2014 22:07

Habe denn Code gerade noch mal Oben geändert While Bedingung muss in einer {} stehen

Du musst es in einen Script packen wenn es immer sein soll dann in die Init.sqf in einen Ordner wo die Mission.sqf liegt erstellst du einfach eine init.sqf und fügst denn script rein dann Läuft es von allein bei missionsstart.

Ein Trigger kann keine Sleep oder wait befehle bearbeiten.

TombStone 04.09.2014 22:10

Okay, ich werde es direkt mal ausprobieren, wiedermal danke für deine Antwort! :)


MfG
TombStone

Drunken Officer 05.09.2014 14:54

Mach ein Spawnscript in die Init der Einheit. Reicht doch völlig aus.

Soll es SP oder MP sein? Animationen sind lokal und müssen über das Netzwerk verbreitet werden.

Nokman 05.09.2014 20:04

aber nur um sie Syncron zu halten so wie sie ist in der Init.sqf läuft die Animation bei jeden ab minimaler Zeitlicher unterschied.

Was Drunken Officer Sagt ist das du in der Init der Einheit es auch eintragen kanst dort aber ein Spawn befehl auslösen.

Code:

nul = [] spawn {
while {true} do {  waituntil {animationState soldier1 != "AmovPercMstpSnonWnonDnon_exercisePushup"};  soldier1 playMoveNow "AmovPercMstpSnonWnonDnon_exercisePushup";  };
};

Was du auch Achten musst wenn es in der Init.sqf steht wenn noch mehr da rein Soll sollte es auch in einen Spawn ausgeführt werden da das Spiel die Init.sqf nicht weiter ausführt da er in der Schleife festhängt

TombStone 06.09.2014 21:50

Ich hatte eigentlich vor ein CO-OP Szenario zu erstellen, und wie gesagt, die Npc's zur besseren Idylle! ;) :daumen:

MfG
TombStone

Drunken Officer 08.09.2014 10:25

Dann wird das so nix werden. Du mußt die Animationen über das Netzwerk verteilen.

TombStone 08.09.2014 14:10

Achso schade, wird sicher eh noch was dauern bis X-Cam raus kommt, mit meinem jetzigen Map Editor Programm ist es mega aufwändig... :D


MfG
TombStone

burns 08.09.2014 16:44

Zitat:

Zitat von Drunken Officer (Beitrag 477036)
Dann wird das so nix werden. Du mußt die Animationen über das Netzwerk verteilen.

Wat? Kann es sein, das du sowas einfach noch nie selber probiert hast?

Ich kenn da einige Missionen mit Liegestütz, und die haben alle Null Probleme die Animationen übers Netzwerk zu verteilen. Weshalb auch, denn wenn das ein Problem wäre, würdest du wohl kaum deine Mitspieler sich jemals im MP bewegen sehen :ugly:



@OP: Mach den Animationsaufruf Quatsch innen Trigger.
Ist quasi "Easymode" für MP, funzt immer.

Drunken Officer 08.09.2014 17:55

Doch Burns habe ich.
Ich habe einem Verletzen in der init eine Animation zugewiesen, das hat nicht so einfach geklappt.
Genauso wenig, wenn du via AddAction jemanden die HÄnde hoch nehmen läßt.
Ich habe mir dazu eine globaleVariabel gebaut usw. Dann hat es funktioniert

Wenn die Sache über einen Trigger funktioniert, dann ist ja toll. Dann habe ich auch wieder etwas dazu gelernt.

Habe es gerade auf dem Dedi mit einem Trigger getest und es funktioniert.

burns 08.09.2014 20:08

:daumen:


Ausm Script heraus muss man die Variable erst rumschicken, das hast du richtig erkannt.
(und dabei ist dann auch die Reihenfolge wichtig, Terp ist damals an mir verzeifelt weil ich's so machte:
Code:

publicvariable "terpistfies"; terpistfies = true;
Hat lange gedauert bis ich verstanden habe, warum das sorum nicht geht :zahn:



Wie gesagt, Trigger sind Easymode.
Darin ist der ganze Publicvariable Mist quasi engineseitig implementiert.



Hatte mal ne Missi gebaut in der gibts pro Arieinschlag nochn bösen Sound der gleichzeitig abgespielt wird, selbst das geht einwandfrei im Netz, dank Triggermagie :trill:

Vienna 09.09.2014 19:05

Zitat:

Zitat von burns (Beitrag 477055)

Wie gesagt, Trigger sind Easymode.
Darin ist der ganze Publicvariable Mist quasi engineseitig implementiert.

Trigger sind lokal! Es kommt auf die Bedingung an, die den Trigger schaltet.

Schaltet der Trigger bei Anwesenheit einer Seite mit this, dann wird das auf allen PCs auslösen, weil die Anwesenheit bei allen gegeben ist.

Oder man schaltet den Trigger mit der Entfernung von Objekten (Objekt1 distance Objket2), so wird auch in diesem Fall der Trigger bei allen auslösen.

Wenn aber zum Schalten eine Variable verwendet wird, dann ist diese mit publicVariable zu übertragen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 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