22.01.2016, 16:56 | #1 (permalink) |
Registriert seit: 22.01.2016
Beiträge: 21
|
Bräuchte Hilfe bei Spawnscript
Hallo,
zur Zeit arbeite ich mit der Ryans Zombies and Demons Mod und wollte mir ein einfaches Script schreiben das einige KI Einheiten um den Spieler herum spawnen lässt wenn er einen Trigger auslöst. Die Mod liefert zwar ein Spawner Modul mit aber das funktioniert leider nur einmal. Momentan arbeite ich nur mit einem Auslöser und einem Marker. Im Auslöser habe ich folgendes eingetragen: PHP-Code:
Ich habe zwar schon einiges versucht aber ich bekomme es absolut nicht hin Grüße Duke Geändert von Duke_87 (22.01.2016 um 22:10 Uhr). |
22.01.2016, 22:09 | #2 (permalink) |
Registriert seit: 22.01.2016
Beiträge: 21
|
Ich habe nun ein Script mit dem Name zspawn.sqf in dem ich folgendes stehen habe:
PHP-Code:
Hat hierzu jemand einen Tipp für mich? |
23.01.2016, 09:41 | #3 (permalink) |
Registriert seit: 02.07.2006
Ort: Kabul
Alter: 38
Beiträge: 2.666
|
PHP-Code:
hoschi |
23.01.2016, 10:54 | #4 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
mit BIS eigener Funktion:
Code:
_spawnpos = [player, 90+(random 30), (random 360)] call BIS_fnc_relPos; GroupOne_X = [_spawnpos , EAST, ["RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow"]] call BIS_fnc_spawnGroup; {_x allowfleeing 0} forEach units GroupOne_X;
__________________
Bewegende Momente bei ArmA 3 Geändert von Drunken Officer (23.01.2016 um 10:57 Uhr). |
23.01.2016, 15:49 | #5 (permalink) |
Registriert seit: 22.01.2016
Beiträge: 21
|
Danke für eure Mühe! Beide Versionen funktionieren echt super
Ich habe noch auf eigene Faust versucht eine zweite Gruppe mit Spawn delay einzufügen und habe folgende Syntax eingebaut: [waitUntil{ time > 50 }] Aber irgendwie funktioniert das nicht wirklich. Die KI spawnt ganz kurz direkt am Spieler und verschwindet dann auch sofort wieder. Ist die Syntax von Grund auf falsch oder kommt es auf die Stelle an wo ich sie einbaue? |
23.01.2016, 16:21 | #6 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
Code:
_spawnpos = [player, 90+(random 30), (random 360)] call BIS_fnc_relPos; GroupOne_X = [_spawnpos , EAST, ["RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow"]] call BIS_fnc_spawnGroup; {_x allowfleeing 0} forEach units GroupOne_X; sleep 40 + (random 20); _spawnpos = [player, 90+(random 30), (random 360)] call BIS_fnc_relPos; GroupOne_X = [_spawnpos , EAST, ["RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow"]] call BIS_fnc_spawnGroup; {_x allowfleeing 0} forEach units GroupOne_X; Code:
_spawnpos = [player, 90+(random 30), (random 360)] call BIS_fnc_relPos; GroupOne_X = [_spawnpos , EAST, ["RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow"]] call BIS_fnc_spawnGroup; {_x allowfleeing 0} forEach units GroupOne_X; waituntil { sleep 1; {alive _x} count units GroupOne_X <= 1}; _spawnpos = [player, 90+(random 30), (random 360)] call BIS_fnc_relPos; GroupOne_X = [_spawnpos , EAST, ["RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow"]] call BIS_fnc_spawnGroup; {_x allowfleeing 0} forEach units GroupOne_X;
__________________
Bewegende Momente bei ArmA 3 |
23.01.2016, 22:49 | #7 (permalink) |
Registriert seit: 23.01.2016
Beiträge: 20
|
Das Script ist toll, ich hab mir die Mod auch vor einiger Zeit runter geladen und das funktioniert alles sehr gut. Ich hab da aber trozdem noch 2 Fragen (sorry bin was skripten angeht ein echter voll Noob)....
1.ich weiß wie ich ein Skript über den Trigger starte aber was muss ich eingeben damit es beim verlassen des Triggers sofort beendet wird? 2. Wenn die Einheiten spawnen, dann spawnen sie für den Bruchteil einer Sekunde direkt am Spieler und verteilen sich dann auf den eingestellten Radius. Liegt das am Skript oder muss ich irgend etwas anderes ändern damit das nicht mehr passiert? Danke vorab für alle Antworten. mfg Niels |
23.01.2016, 23:27 | #8 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
1. Das Script wird von allein beendet, da kein Loop verbaut wurde
2. Mit dem Bruchteil einer Sekunde liegt am Script. Ich denke du nutzt Hoschi seines. Da wird die Figur am Spieler stellt und dann verteilt,
__________________
Bewegende Momente bei ArmA 3 |
24.01.2016, 10:31 | #9 (permalink) |
Registriert seit: 23.01.2016
Beiträge: 20
|
Ja danke, ich hab die beiden Skripte durcheinander geworfen, jetzt sieht der Spawn super ordentlich aus.
Du hast dir schon viel mühe gegeben und ich trau mich ja fast nicht zu fragen aber ist es schwierig ein Loop einzubauen, dass nach und nach immer weiter gespawnt wird? |
24.01.2016, 13:24 | #10 (permalink) |
Registriert seit: 22.01.2016
Beiträge: 21
|
Aaaalso, ich weiß nicht ob das richtig ist was ich gemacht habe aber so funktioniert eine Wiederholung bei mir:
PHP-Code:
PHP-Code:
|
24.01.2016, 17:07 | #11 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
Soll der Loop nur laufen, wenn der Spieler in einem Bereich ist oder immer? Soll das ganze SP oder MP sein? Hier ein Code (Singleplayer), der läuft das ganze Spiel über. Es werden, wenn die Zombies bekämpft wurden, neue Zombies spawnen. Code:
private ["_spawnpos", "_grp", "_grp2"]; while {true} do { //--- eine TRUE-Schleife läuft immer, da keine Bedingung abgefragt wird //--- erstes Zombie-Squad _spawnpos = [player, 90+(random 30), (random 360)] call BIS_fnc_relPos; _grp = [_spawnpos , EAST, ["RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow"]] call BIS_fnc_spawnGroup; {_x allowfleeing 0} forEach units _grp; //---- wartet mit dem 2. Squad, 40 sekunden + Zufall 0-20 sleep 40 + (random 20); //--- 2. Zombie-Squad _spawnpos = [player, 90+(random 30), (random 360)] call BIS_fnc_relPos; _grp2 = [_spawnpos , EAST, ["RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow"]] call BIS_fnc_spawnGroup; {_x allowfleeing 0} forEach units _grp2 //--- wartet bis beide zombie gruppen jeweils nur noch eins oder null sind //--- man kann auch mit einem sleep arbeiten oder andere Bedingung setze waituntil { sleep 1; {alive _x} count units _grp <= 1 && {alive _x} count units _grp2 <= 1}; }; //--- Ende WHILE-Schleife
__________________
Bewegende Momente bei ArmA 3 Geändert von Drunken Officer (24.01.2016 um 17:21 Uhr). |
24.01.2016, 17:23 | #12 (permalink) |
Registriert seit: 23.01.2016
Beiträge: 20
|
Danke sehr, ich wollte dass es mit dem spawn so ist das es startet wenn man in den Trigger geht und dass es aufhört wenn man ihn wieder verlässt. Solange man in dem Trigger steht sollen immer wieder neue Zombies kommen.
Ich dachte man kann das über den Trigger steuern dass eben das Script angeht und einfach wieder aus, aber so ist das wohl leider nicht^^ |
24.01.2016, 18:56 | #13 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
doch, kann man.
Trigger auf MEHRFACH, Aktivierung durch Blau bei Aktivierung: Code:
QuarkSahneKuchen= [player, thistrigger] spawn { hint "test, Spieler im TriggeR"; while { (_this select 0) in list (_this select 1) } do { _spawnpos = [player, 90+(random 30), (random 360)] call BIS_fnc_relPos; _grp = [_spawnpos , EAST, ["RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow"]] call BIS_fnc_spawnGroup; {_x allowfleeing 0} forEach units _grp; sleep 10; _spawnpos = [player, 90+(random 30), (random 360)] call BIS_fnc_relPos; _grp2 = [_spawnpos , EAST, ["RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow","RyanZombieB_Soldier_02_f_1_1slow"]] call BIS_fnc_spawnGroup; {_x allowfleeing 0} forEach units _grp2; waituntil { sleep 1; count units _grp <= 1 && count units _grp2 <= 1}; hint "neu Runde Zombies"; }; player sideChat "raus aus dem Trigger"; };
__________________
Bewegende Momente bei ArmA 3 Geändert von Drunken Officer (24.01.2016 um 19:16 Uhr). |
24.01.2016, 20:05 | #14 (permalink) |
Registriert seit: 23.01.2016
Beiträge: 20
|
Muss ich irgend etwas bestimmtes beachten wenn ich deinen Code benutze?
Also ich habe ihn als test.sqf abgespeichert und im Trigger bei Aktivierung folgendes eingetragen: nul = execVM "test.sqf"; Wenn ich im Spiel jetzt durch den Trigger laufe bekomme ich zeitgleich als hint: "test, Spieler im TriggeR" und die Sidechat Nachricht: "raus aus dem Trigger" angezeigt aber es spawnt nichts. |
24.01.2016, 21:22 | #15 (permalink) |
Registriert seit: 22.01.2016
Beiträge: 21
|
Ja ein klein bisschen schon :-) Der Code kommt direkt in den Trigger rein. Das funktioniert alles wirklich erstklassig, von mir auch noch einmal ein Danke für die gemachte Mühe und natürlich auch für die Hilfe! Grüße Duke |
24.01.2016, 23:19 | #16 (permalink) |
Registriert seit: 23.01.2016
Beiträge: 20
|
Da hab ich wohl beim lesen gepennt
Aber ich habe trozdem noch eine Frage zu der Triggermethode: Ich habe den Code wie folgt unter aktivieren stehen: PHP-Code:
Ist das normal so oder ist mir ein Schnitzer im Code passiert? |
25.01.2016, 06:59 | #17 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
ja, da der player geprüft wird. Damit du es verstehst, mal kurz erklärt.
Die While-Schleife prüft eine Bedingung
Du kannst sehr viel mehr prüfen. Du kannst die Seite prüfen, die Anzahl der feindlichen Einheiten, die Distanz zwischen Objekten, die Waffe es Spielers, usw... Zu deinem "Problem" mit dem Fahrzeug: Aändere mal 2 Sachen ab. 1. Bei der Bedingung des Trigger, da steht original "this" drinn schreibst du rein this && (vehicle player) in thislist //--- stellt sicher, dass nur der Spieler den Trigger auslöst und keine KI 2. änder den Spawn-Array QuarkSahneKuchen = [(vehicle player), thistrigger] spawn .... Player == die Figur (vehicle player) == Figur ODER das Fahrzeug in welchem die Figur sich befindet. ! Falls das ganze mal im Multiplayer funktionieren soll, kannst du nicht ohne Weiters mit "Player" arbeiten. Der Server kennt keinen Player ! Dann muss der Trigger lokal ausgeführt werden. Das Script mit einer Public-Variable geblockt werden und die Einheiten durch den Clienten erzeugt werden. Blockt man das Script nicht und 3 Spieler sind im Trigger, zieht das Script 3x an. Denn JEDER lädt die Karte und JEDER hat den Trigger mit der Bedingung.
__________________
Bewegende Momente bei ArmA 3 Geändert von Drunken Officer (25.01.2016 um 07:19 Uhr). |
25.01.2016, 09:51 | #18 (permalink) |
Registriert seit: 22.01.2016
Beiträge: 21
|
puh... das nenne ich mal ausführlich und komplex aber jetzt verstehe ich das ganze auch besser
Ich habe aber mal eine etwas andere Frage zu dem ganzen. Im Prinzip wollte ich das mit dem Spawn ja nur wissen, da das Spawnmodul der Mod nur einmal funktioniert. Gäbe es nicht die Möglichkeit das Modul über ein Auslößer oder ein Script neu zu starten? Geändert von Duke_87 (25.01.2016 um 10:34 Uhr). |
Stichworte |
ki spawn |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Arma III Multiplayer Performance Hilfe | ChristianP112 | Technische Fragen & Probleme | 2 | 12.03.2015 23:21 |
Modder/Skripter bietet Hilfe an | PrivateJoker2 | Rollenspiel & Zombie Ecke | 5 | 11.07.2014 00:48 |
Suche Hilfe zum einstellen eines ArmA 3 Altis Life Server | Icecreamx | Rollenspiel & Zombie Ecke | 3 | 27.02.2014 14:11 |
Brauche hilfe bei ein zwei auslöser | Lotos | Editing & Scripting | 4 | 18.01.2014 15:41 |
Bräuchte hilfe - CTD - unsupported sample frequency: 44100 | XXSturmXX | Technische Fragen & Probleme | 1 | 30.12.2010 14:05 |