PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Random KI, Problem bei Auslösung


Papabär
04.11.2016, 01:08
Moin Leute,

mich plagt folgendes Problem:

Ich habe ein Script aus der Versenkung geholt, womit zufällige Einheiten spawnen (mit zufälligem Verhalten, Anzahl und Bewegung)

Mein Problem: Ich bekomme es nicht hin, dass es nur dann ausgelöst wird, wenn ein Spieler in der Nähe des Markers ist.


Ich habe es nun versucht mittel waitUntil zu lösen, dann spawnen die Einheiten aber überhaupt nicht mehr. :ugly:
Die Mission ist im Anhang, falls jemand etwas mehr Übersicht über die Architektur benötigt (es sind Mods vorhanden, für die Scripts sind aber nur die Marker benötigt.)

Hat wer von euch eine Idee wie ich das ganze lösen könnte? In Sachen Performance macht es überhaupt keinen Sinn alles von Anfang spawnen zu lassen, weil dadurch die Performance nur unnötig in den Keller rauscht (die Leichen werden automatisch gelöscht.)


nul = [getMarkerPos "Task_tank_1",2 + random 3, 50 + random 50] call task1_tanks;
nul = [getMarkerPos "Task_tank_2",2 + random 5, 50 + random 50] call task2_tanks;



waitUntil {((player distance getMarkerPos "Task_1") <= 3000)};
hint "TEST";
/*
File: "sts_tanks.sqf";
Author: Phantom
visit: http://www.24th-sts.eu

e.g.
[[position,number of units,radius] execvm "sts_tanks";

sts_tanks = compile preprocessFile "fn_tanks.sqf"; // call from init.sqf
[[position,number of units,radius] call sts_unitspawn;

terms of use: feel free to use and modify
*/

if (!isServer) exitWith {};

private ["_pos","_num","_unitpool","_unitspawn","_grp","_type","_behaviourpool","_behaviour"];

_pos = _this select 0;
_num = _this select 1;
_rad = _this select 2;

_anz = 4;

_units = ["rhs_t90_tv", "rhs_t90a_tv", "rhs_t80", "rhs_t80a", "rhs_t72bc_tv", "rhs_zsu234_aa", "CUP_O_ZSU23_SLA", "CUP_O_ZSU23_TK"];

_group = createGroup east;
_type = _units call bis_fnc_selectRandom;
_vehicle = _type createVehicle (_pos);



for "_unitspawn" from 1 to _anz do
{
_unit = _group createUnit ["O_Soldier_F", _pos, [], 0, "FORM"];
_unit moveInCargo _vehicle;
[_unit,2 + floor(random 3)] call sts_unitskill;
[_unit,_pos,_rad] call cba_fnc_taskPatrol;
_behaviourpool = ["careless","safe","aware"];
_behaviour = _behaviourpool call bis_fnc_selectRandom;
_unit setBehaviour _behaviour;
_unit setspeedmode "limited";
{_x addmpeventhandler ["mpkilled", {_this execvm "scripts\deletebody.sqf"}]} forEach units _group;
};
_unit1 = _group createUnit ["O_Soldier_F", _pos, [], 0, "FORM"];
_unit1 moveInDriver _vehicle;

_unit2 = _group createUnit ["O_Soldier_F", _pos, [], 0, "FORM"];
_unit2 moveInGunner _vehicle;



Ich bin für jeden hilfreichen Tipp dankbar :)

Ps das Script ist von einem alten Clan, den es nicht mehr gibt. Die Nutzung ist erlaubt, siehe Kopfbereich des Scripts.

Drunken Officer
04.11.2016, 07:49
Bevor ich mich ransetze.

1. kommt es mehr als 1x vor, das Einheiten spawnen?
2. ist das für MP ? (Server kennt keinen player)
3. soll es auslösen, wenn
a) eine gewisse Anzahle blauer Einheit die Distanz unterschreitet?
b) eine gewisse Anzahle blauer Einheit, welche Spieler sind, die Distanz unterschreitet?
c) alle Spieler müssen die Distanz unterschritten haben

Edit:
Wie bitte sollen die gespawnten Einheiten noch Platz in einem Kampfpanzer finden. Das beißt sich!

Sinn würde nur ergeben:
a) Kampfpanzer und Patrouille agieren selbstständig
b) du musst SPZ (BMP-Klassen spawnen lassen !)
Da brauche ich noch eine Entscheidung

Drunken Officer
04.11.2016, 08:45
hier mal eine Variante, bei welcher die Patroillie und der Kampfpanzer eigenstädnig agieren.
Es löst aus, wenn eine Spielbare Einheit die Triggerdistanz unterschreitet.
Die Spawnpos kann ein Array sein [x,y,z] ein Marker oder ein Objekt
["spawnmarker",4,300,2000] execVM "script.sqf";
[Warlord,4,250,3000] execVM "script.sqf";
[[54564.6677, 1345.3455, 0.788] ,4,800,1498] execVM "script.sqf";


if (!isServer) exitWith {};
private ["_spawnpos","_num","_behaviour", "_tankarray", "_tank", "_einheiten", "_unit"];
if (isMultiplayer) then {_einheiten = playableUnits} else {_einheiten = switchableUnits };

_spawnpos = _this select 0;
_num = _this select 1;
_rad = _this select 2;
_trigger = _this select 3;

_anz = 4;


switch (typeName _spawnpos) do
{
case "ARRAY" : {_spawnpos = _spawnpos};
case "STRING": {_spawnpos = getMarkerPos _spawnpos};
case "OBJECT": {_spawnpos= getpos _spawnpos};
};

waituntil {sleep 1; {_x distance _spawnpos < _trigger} count _einheiten > 0 };
_vehiclearray = [_spawnpos, 0, ["rhs_t90_tv", "rhs_t90a_tv", "rhs_t80", "rhs_t80a", "rhs_t72bc_tv", "rhs_zsu234_aa"] call bis_fnc_selectRandom, EAST] call bis_fnc_spawnvehicle;
_tank = _vehiclearray select 0;
[_tank, _spawnpos,_rad] call CBA_fnc_taskPatrol;

waituntil {sleep 2; _tank distance _spawnpos > 10 };
_group = createGroup east;
_unit = _group createUnit ["O_Soldier_TL_F", _spawnpos, [], 0, "FORM"];
for "_unitspawn" from 1 to (_anz-1) do
{

_unit = _group createUnit [["O_Soldier_AR_F","O_Soldier_GL_F","O_Soldier_LAT_F"] call bis_fnc_selectRandom, _spawnpos, [], 0, "FORM"];
[_unit,2 + floor(random 3)] call sts_unitskill;
};
//--- erst nach der kompletten Gruppe den Patrolmanager ausführen!!
{_x addmpeventhandler ["mpkilled", {_this execvm "scripts\deletebody.sqf"}]} forEach units _group; //--- kann man mittels Editor einstellen und wieso MPKilled? Ein Killed würde reichen. Sever löscht die Einheit und weg ist das Objekt.

_behaviour = ["careless","safe","aware"] call bis_fnc_selectRandom;
_group setBehaviour _behaviour;
_group setspeedmode "limited";
[_group, _spawnpos,_rad] call CBA_fnc_taskPatrol;

Papabär
04.11.2016, 10:21
Bevor ich mich ransetze.

1. kommt es mehr als 1x vor, das Einheiten spawnen?
2. ist das für MP ? (Server kennt keinen player)
3. soll es auslösen, wenn
a) eine gewisse Anzahle blauer Einheit die Distanz unterschreitet?
b) eine gewisse Anzahle blauer Einheit, welche Spieler sind, die Distanz unterschreitet?
c) alle Spieler müssen die Distanz unterschritten haben

Edit:
Wie bitte sollen die gespawnten Einheiten noch Platz in einem Kampfpanzer finden. Das beißt sich!

Sinn würde nur ergeben:
a) Kampfpanzer und Patrouille agieren selbstständig
b) du musst SPZ (BMP-Klassen spawnen lassen !)
Da brauche ich noch eine Entscheidung

Moin Drunken Officer,

ich danke dir jetzt schonmal für deine Mühe :) :daumen: :daumen:

Zu dein Fragen:

1. In gewisser Weise schon, allerdings nur 1x je Trigger. Sprich sind Spieler bei Ort A löst es aus und ist damit durch, ist er bei Ort B löst es aus und der Ort ist durch.
2. Richtig, es sollte MP sein :) In Scripting bin ich leider echt noch ein ziemlicher Leie, bin aber dabei mich hineinzufuchsen und brauche noch hier und da etwas Unterstützung (um es dann auch zu verstehen wie es andere dann machen.)
3.
b. Nur ein Spieler, da es in dem Sinne keine blue KI gibt und die Tasks auch solo machbar sein sollten :)

Zur Nutzung setze ich dann einfach einen Trigger mit "["spawnmarker",4,300,2000] execVM "script.sqf";" als Init zB und einem Marker namens spawnmarker wo sie erscheinen oder?

Und wie sieht das ganze bei den Scripts hier aus:

Unitspawn:
waitUntil {((player distance getMarkerPos "Task_1") <= 3000)};
hint "TEST";
/*
File: "sts_unitspawn.sqf";
Author: Phantom
visit: http://www.24th-sts.eu

e.g.
[[position,number of units,radius] execvm "sts_unitspawn";

sts_unitspawn = compile preprocessFile "sts_unitspawn.sqf"; // call from init.sqf
[[position,number of units,radius] call sts_unitspawn;

terms of use: feel free to use and modify
*/

if (!isServer) exitWith {};

private ["_pos","_num","_unitpool","_unitspawn","_grp","_type","_behaviourpool","_behaviour"];

_pos = _this select 0;
_num = _this select 1;
_rad = _this select 2;

_unitpool =
[
"rhs_vdv_at",
"rhs_vdv_efreitor",
"rhs_vdv_grenadier_rpg",
"rhs_vdv_aa",
"rhs_vdv_maschinegunner",
"rhs_vdv_arifleman",
"rhs_vdv_medic",
"rhs_vdv_rifleman",
"rhs_vdv_grenadier",
"rhs_vdv_marksman"
];

for "_unitspawn" from 1 to _num do
{
_grp = creategroup east;
_type = _unitpool call bis_fnc_selectRandom;
_unit = _grp createUnit [_type, _pos, [], 0, "private"];
[_unit,2 + floor(random 3)] call sts_unitskill;
[_unit,_pos,_rad] call cba_fnc_taskPatrol;
//_behaviourpool = ["careless","safe","aware","combat"];
_behaviourpool = ["careless","safe","aware"];
_behaviour = _behaviourpool call bis_fnc_selectRandom;
_unit setBehaviour _behaviour;
_unit setspeedmode "limited";
{_x addmpeventhandler ["mpkilled", {_this execvm "scripts\deletebody.sqf"}]} forEach units _grp;
};


Housepos
waitUntil {((player distance getMarkerPos "Task_1") <= 3000)};
hint "TEST";
if (!isServer) exitWith {};

private ["_detect_pos","_detect_rad","_numhouses","_numhouses_men_in_house","_skill","_behaviour","_trooptype",
"_house_man_types","_all_houses","_selected_houses","_hcc","_in_house_pos","_full_house","_point","_unit_type","_grp_houses",
"_sel_house","_check_in_house_pos","_check_pos_numhouses","_check_in","_house_pos_arr","_house_pos","_x","_unit","_arrow_over_point"];

_detect_pos = _this select 0;
_detect_rad = _this select 1;
_numhouses = _this select 2;
_numhouses_men_in_house = _this select 3;
_trooptype = _this select 4;
_skill = _this select 5;
_behaviour = _this select 6;
//_nightvision = _this select 7;

_house_man_types = [];
_all_houses = [];
_selected_houses = [];
_hcc = 0;

if(debug)then
{
hintSilent "Script begins";
};

switch (_trooptype) do
{
case 1:{
_house_man_types = ["rhs_vdv_at","rhs_vdv_efreitor","rhs_vdv_grenadier_rpg","rhs_vdv_aa","rhs_vdv_maschinegunner","rhs_vdv_arifleman","rhs_vdv_medic","rhs_vdv_rifleman","rhs_vdv_grenadier","rhs_vdv_marksman"];
};
case 2:{
_house_man_types = ["rhs_vdv_at","rhs_vdv_efreitor","rhs_vdv_grenadier_rpg","rhs_vdv_aa","rhs_vdv_maschinegunner","rhs_vdv_arifleman","rhs_vdv_medic","rhs_vdv_rifleman","rhs_vdv_grenadier","rhs_vdv_marksman"];
};
};

_all_houses = nearestObjects [_detect_pos, ["house"], _detect_rad];

sleep 1;

if (count _all_houses > 0) then
{
while {count _selected_houses != _numhouses && _hcc < 100} do
{
_sel_house = _all_houses call BIS_fnc_selectRandom;

_check_in_house_pos = [];
_check_pos_numhouses = 0;

while {format ["%1", _sel_house buildingPos _check_pos_numhouses] != "[0,0,0]"} do
{ _check_in = _sel_house buildingPos _check_pos_numhouses;
If(_check_in select 0 > 0 && _check_in select 1 > 0)then
{_check_in_house_pos = _check_in_house_pos + [_check_in];};
_check_pos_numhouses = _check_pos_numhouses + 1;
sleep 0.05;
};


if(_sel_house in _selected_houses)then{}else
{if(count _check_in_house_pos > 0 && damage _sel_house < 0.4)then{
_selected_houses = _selected_houses + [_sel_house];};};
_hcc = _hcc + 1;
sleep 0.05;

};

};

if (count _selected_houses > 0) then
{

{
_house_pos_arr = [];
_house_pos = 0;

while { format ["%1", _x buildingPos _house_pos] != "[0,0,0]"} do
{_in_house_pos = _x buildingPos _house_pos;
if(_in_house_pos select 0 > 0 && _in_house_pos select 1 > 0)then
{ _house_pos_arr = _house_pos_arr + [_in_house_pos];};
_house_pos = _house_pos + 1;
sleep 0.05;
};

if(debug)then{
hint format ["House with Positions: \n %1",_house_pos_arr];
};

if(count _house_pos_arr > 0)then
{
for "_full_house" from 1 to _numhouses_men_in_house do
{
_point = _house_pos_arr call BIS_fnc_selectRandom;
_unit_type = _house_man_types call BIS_fnc_selectRandom;
_grp_houses = createGroup EAST;

_unit = _grp_houses createUnit [_unit_type, _point, [], 1, "PRIVATE"];
_unit setPos (_x buildingPos (random _house_pos));
_unit allowFleeing 0;
{_x addmpeventhandler ["mpkilled", {_this execvm "scripts\deletebody.sqf"}]} forEach units _grp_houses;

switch (_skill) do
{
case 1:{
{[_x,1] call sts_unitskill;}forEach units _grp_houses;
};
case 2:{
{[_x,2] call sts_unitskill;}forEach units _grp_houses;
};
case 3:{
{[_x,3] call sts_unitskill;}forEach units _grp_houses;
};
case 4:{
{[_x,4] call sts_unitskill;}forEach units _grp_houses;
};
case 5:{
{[_x,1] call sts_unitskill;}forEach units _grp_houses;
};
case 6:{
{[_x,2] call sts_unitskill;}forEach units _grp_houses;
};
case 7:{
{[_x,3] call sts_unitskill;}forEach units _grp_houses;
};
case 8:{
{[_x,4] call sts_unitskill;}forEach units _grp_houses;
};
case 9:{
{[_x,1] call sts_unitskill;}forEach units _grp_houses;
};
case 10:{
{[_x,2] call sts_unitskill;}forEach units _grp_houses;
};
};

switch(_behaviour)do
{
case 1:{
_grp_houses setBehaviour "CARELESS";
};
case 2:{
_grp_houses setBehaviour "SAFE";
};
case 3:{
_grp_houses setBehaviour "AWARE";
};
case 4:{
_grp_houses setBehaviour "COMBAT";
};
case 5:{
_grp_houses setBehaviour "STEALTH";
};

};

if (debug) then
{
_arrow_over_point = createVehicle ["Sign_Sphere100cm_F", getPos _unit, [], 0, "NONE"];
_arrow_over_point setPosASL [(getPosASL _unit select 0), (getPosASL _unit select 1),(((getPosASL _unit) select 2) + 10)];
};

sleep 0.05;
};
};
sleep 0.05;
}forEach _selected_houses;

};

if(debug)then{
hint "Script end!";
};

Was müsste ich dort machen, damit sie auch so funktionieren, wie das von dir umgeschriebene Script?


Zu guter Letzt habe ich hier noch das selbe Script wie bei den Panzern, nur mit Hubschraubern, die aber nicht fliegen möchten, wüsstest du wieso?

waitUntil {((player distance getMarkerPos "Task_1") <= 3000)};
hint "TEST";
/*
File: "sts_air.sqf";
Author: Phantom
visit: http://www.24th-sts.eu

e.g.
[[position,number of units,radius] execvm "sts_air";

sts_air = compile preprocessFile "fn_air.sqf"; // call from init.sqf
[[position,number of units,radius] call sts_unitspawn;

terms of use: feel free to use and modify
*/

if (!isServer) exitWith {};

private ["_pos","_num","_unitpool","_unitspawn","_grp","_type","_behaviourpool","_behaviour"];

_pos = _this select 0;
_num = _this select 1;
_rad = _this select 2;

_anz = 4;

_units = ["O_Heli_Attack_02_F", "O_Heli_Light_02_F"];

_group = createGroup east;
_type = _units call bis_fnc_selectRandom;
_vehicle = _type createVehicle (_pos);



for "_unitspawn" from 1 to _anz do
{
_unit = _group createUnit ["O_Soldier_F", _pos, [], 0, "flyinheight 100"];
_unit moveInCargo _vehicle;
[_unit,2 + floor(random 3)] call sts_unitskill;
[_unit,_pos,_rad] call cba_fnc_taskPatrol;
_behaviourpool = ["careless","safe","aware"];
_behaviour = _behaviourpool call bis_fnc_selectRandom;
_unit setBehaviour _behaviour;
_unit setspeedmode "limited";
{_x addmpeventhandler ["mpkilled", {_this execvm "scripts\deletebody.sqf"}]} forEach units _group;
};
_unit1 = _group createUnit ["O_Soldier_F", _pos, [], 0, "flyinheight 100"];
_unit1 moveInDriver _vehicle;

_unit2 = _group createUnit ["O_Soldier_F", _pos, [], 0, "flyinheight 100"];
_unit2 moveInGunner _vehicle;


Ich hoffe ich löcher dich nicht zu sehr mit Fragen :) ich schau mir erstmal das von dir umgeschrieben Script an :) :daumen:

Drunken Officer
04.11.2016, 15:00
Ich schaue mir die Varianten mal in Ruhe an. Heute schraube ich mal an meiner Missi weiter, morgen bekommst du zu mindest eine Teilantwort

Papabär
04.11.2016, 15:59
Das wäre super von dir. Im Prinzip bräuchte ich das ganze auch nur für housepos und unitspawn :) :daumen:

Drunken Officer
05.11.2016, 10:00
Deine Scripte sind etwas verwirrend.
Ich persönlich gehe so ran. Ich lasse durch die ServerInit.sqf die Variablen.sqf laden. Darin verpacke ich alle Variablen die ich so für die Mission brauche. Es dient nur er Übersicht.
Wenn du öfters Einheiten spawnen läßt, kannst du einmal einen Pool anlegen und diesen dann abfragen.

z.B. habe ich folgende globale Variablen abgelegt. (global = andere Scripte auf dem Server kennen diese Variable. Nicht andere Clienten, dass wäre public. Variablen-sqf wurde durch die ServerInit angelegt)


var_Buildings = [
"Land_i_House_Big_02_V1_F","Land_i_Shop_01_V1_F","Land_i_House_Big_01_V1_F",
"Land_i_House_Small_03_V1_F","Land_Pier_F","Land_i_Shop_02_V1_F",
"Land_i_Stone_Shed_V1_F","Land_i_Addon_03mid_V1_F","Land_i_Addon_03_V1_F",
"Land_i_Stone_HouseBig_V1_F","Land_i_Stone_HouseSmall_V1_F","Land_u_Addon_02_V1_F",
"Land_Pier_small_F","Land_i_Addon_04_V1_F","Land_i_House_Small_01_V2_F",
"Land_Pier_Box_F","Land_Chapel_Small_V1_F","Land_u_House_Small_02_V1_F","Land_Metal_Shed_F","Land_Lighthouse_small_F"
];

var_Soldiers = [ "I_Soldier_AR_F",
"I_Soldier_GL_F",
"I_Soldier_LAT_F",
"I_soldier_F",
"I_medic_F",
"I_Soldier_SL_F"
];


DOF_FNC_FILLMULTIHOUSE =
{

private ["_center", "_radius", "_houseList", "_buildingPositionsarray", "_pool", "_buildingpos","_mencount"];
_center = (_this select 0);
_radius = (_this select 1);
_mencount = (_this select 2);


_debug = true; //--- für Markeranzeige

switch (typeName _center) do
{
case "ARRAY" : {};
case "STRING": {_center = (getMarkerpos _center)};
case "OBJECT": {_center = (position _center)};
};

_houseList = nearestObjects [_center,var_Buildings, _radius];
// _houseList= _center nearObjects ["Building",_radius];

_buildingPositionsarray = [];

{
_bpos = [_x] call BIS_fnc_buildingPositions;
_buildingPositionsarray = _buildingPositionsarray + _bpos;
} forEach _houseList;


for "_i" from 0 to _mencount do
{
_buildingpos = _buildingPositionsarray call BIS_fnc_selectRandom;
_grp = creategroup RESISTANCE;
_einh = _grp createUnit [(Soldiers call BIS_fnc_selectRandom), _buildingpos, [], 0, "FORM"];
_einh allowfleeing 0;
_einh setCombatMode "red";
_einh setBehaviour "AWARE";
_buildingPositionsarray = _buildingPositionsarray - [_buildingpos];

if (_debug) then
{
_txt=format ["ENEM:%1",_i];
_debugmarker=createMarker [_txt, getpos _einh];
_debugmarker setMarkerShape "ICON";
_debugmarker setMarkerType "hd_dot";
_debugmarker setMarkerText _txt;
_debugmarker setMArkerColor "ColorYellow";
};
}; // ende for Schleife


};



Jetzt erstellst du einen Marker oder ein Objekt (z.B. ein Autowrack). Wir nehmen mal ein Wrack und benennen es CP_1 (CP = Centerpoint). In die Init des Objektes, welches nun die als CP_1 bekannt ist, schreibst du rein:
Chakka = [CP_1, 150, 10] spawn { if (isServer) then { waituntil { sleep 3; !isNil DOF_FNC_FILLMULTIHOUSE}; [(_this select 0), (_this select 1), (_this select 2)] call DOF_FNC_FILLMULTIHOUSE } }

Mit dieser Variante erstellst du zufällig 10 Einheiten die im Radius von 150 m eine Hausposition besetzen.
Das Script hat keine Sicherheitsabfrage, gehe also sich, dass dich Häuser in der Nähe befinden.

Ich darf an dieser Stelle einen User zitieren:
Nicht die Anzahl der Einheiten ist enscheidend, sondern die Anzahl der Gruppen :schlau:

Und wie du erkennst, ist jede Einheit eine eigene Gruppe. Also sorgsam umgehen

Drunken Officer
05.11.2016, 10:09
Zu deinem Unitspawn.
Du mußt nicht jeder Einheit diese Attribute Behaviour und CombatMode mitgeben. Du verpackst sie doch in eine Gruppe.
Schau dir die Befehle im Wiki an.
Diese Attribute können für ein Objekt und eine Gruppe verwendet werden.

Wenn die in einer Gruppe sind, na dann helfe es der Gruppe über! Siehe mein Script inkl. Kommentar.
Nimm diesen MPKilled EH-Handler raus. Der triggert auf jeder Maschine. Völlig sinnlos in diesem Fall.

Du hast im Editor die Möglichkeit anzugeben, wie lange tote Einheiten zu sehen sein sollen. Wenn du es über einen EH realisiert, dann nimm Killed. Reicht völlig aus. Das Löschen einer Einheit wird automatisch public, und die Einheit ist weg.

Drunken Officer
05.11.2016, 10:23
Und zum Schluss, die Heligeschichte. Mal ganz schnell gemacht. Bei mir fliegt er.
Das Autowrack (CP_1) ist ja noch auf der Karte.
Kannst auch als Script machen oder als Variable. Einfach mal rumprobieren. Versuch und Irrtum!

chakkahe= [CP_1, 1000, 3300] spawn
{
if (!isServer) exitWith {};
private ["_spawnpos","_vehiclearray", "_chopper", "_einheiten"];
if (isMultiplayer) then {_einheiten = playableUnits} else {_einheiten = switchableUnits };

_spawnpos = _this select 0;
_rad = _this select 1;
_trigger = _this select 2;

_anz = 4;


switch (typeName _spawnpos) do
{
case "ARRAY" : {_spawnpos = _spawnpos};
case "STRING": {_spawnpos = getMarkerPos _spawnpos};
case "OBJECT": {_spawnpos= getpos _spawnpos};
};

waituntil {sleep 1; {_x distance _spawnpos < _trigger} count _einheiten > 0 };
_vehiclearray = [_spawnpos, 0, ["I_Heli_light_03_F","I_Heli_Transport_02_F"] call bis_fnc_selectRandom, RESISTANCE] call bis_fnc_spawnvehicle;
_chopper = _vehiclearray select 0;
[group _chopper, _spawnpos,_rad] call bis_fnc_taskPatrol;
};

Papabär
05.11.2016, 11:26
Ich danke dir Drunken Officer,

gut erklärt, ich denke damit könnte ich etwas anfangen :)