Einzelnen Beitrag anzeigen
Alt 05.11.2016, 10:00   #7 (permalink)
Drunken Officer
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.109
Standard

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)

Code:
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


Und wie du erkennst, ist jede Einheit eine eigene Gruppe. Also sorgsam umgehen
__________________
Bewegende Momente bei ArmA 3

Geändert von Drunken Officer (05.11.2016 um 10:02 Uhr).
Drunken Officer ist offline