Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 04.11.2016, 02:08   #1 (permalink)
50 Beiträge100 Beiträge
 
Benutzerbild von Papabär
 
Registriert seit: 27.03.2013
Ort: Ausm Wald oder aus der Luft
Beiträge: 145
Standard Random KI, Problem bei Auslösung

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.
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.)

Code:
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;
Code:
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.
Angehängte Dateien
Dateityp: rar Dynamic_Mission_Cloud_v05.Tanoa.rar (555,2 KB, 11x aufgerufen)
__________________
-

Geändert von Papabär (04.11.2016 um 02:12 Uhr).
Papabär ist offline   Mit Zitat antworten
Alt 04.11.2016, 08:49   #2 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.107
Standard

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
__________________
Bewegende Momente bei ArmA 3

Geändert von Drunken Officer (04.11.2016 um 09:14 Uhr).
Drunken Officer ist offline   Mit Zitat antworten
Alt 04.11.2016, 09:45   #3 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.107
Standard

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";

Code:
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;
__________________
Bewegende Momente bei ArmA 3

Geändert von Drunken Officer (04.11.2016 um 09:48 Uhr).
Drunken Officer ist offline   Mit Zitat antworten
Alt 04.11.2016, 11:21   #4 (permalink)
50 Beiträge100 Beiträge
 
Benutzerbild von Papabär
 
Registriert seit: 27.03.2013
Ort: Ausm Wald oder aus der Luft
Beiträge: 145
Standard

Zitat von Drunken Officer Beitrag anzeigen

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

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

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

Geändert von Papabär (04.11.2016 um 11:30 Uhr).
Papabär ist offline   Mit Zitat antworten
Alt 04.11.2016, 16:00   #5 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.107
Standard

Ich schaue mir die Varianten mal in Ruhe an. Heute schraube ich mal an meiner Missi weiter, morgen bekommst du zu mindest eine Teilantwort
__________________
Bewegende Momente bei ArmA 3
Drunken Officer ist offline   Mit Zitat antworten
Alt 04.11.2016, 16:59   #6 (permalink)
50 Beiträge100 Beiträge
 
Benutzerbild von Papabär
 
Registriert seit: 27.03.2013
Ort: Ausm Wald oder aus der Luft
Beiträge: 145
Standard

Das wäre super von dir. Im Prinzip bräuchte ich das ganze auch nur für housepos und unitspawn
__________________
-

Geändert von Papabär (04.11.2016 um 19:37 Uhr).
Papabär ist offline   Mit Zitat antworten
Alt 05.11.2016, 11:00   #7 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.107
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 11:02 Uhr).
Drunken Officer ist offline   Mit Zitat antworten
Alt 05.11.2016, 11:09   #8 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.107
Standard

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.
__________________
Bewegende Momente bei ArmA 3
Drunken Officer ist offline   Mit Zitat antworten
Alt 05.11.2016, 11:23   #9 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.107
Standard

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!
Code:
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; 
};
__________________
Bewegende Momente bei ArmA 3
Drunken Officer ist offline   Mit Zitat antworten
Alt 05.11.2016, 12:26   #10 (permalink)
50 Beiträge100 Beiträge
 
Benutzerbild von Papabär
 
Registriert seit: 27.03.2013
Ort: Ausm Wald oder aus der Luft
Beiträge: 145
Standard

Ich danke dir Drunken Officer,

gut erklärt, ich denke damit könnte ich etwas anfangen
__________________
-
Papabär ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Random ausgabe Sajiki Editing & Scripting 12 20.03.2014 18:55
Problem mit Ari-Script Drunken Officer Editing & Scripting 7 10.02.2013 16:59
Installations Problem Arma X Verus Technische Fragen & Probleme 20 29.07.2012 22:47
Fenstermodus und Taskleisten Problem MaSch0815 Technische Fragen & Probleme 9 28.12.2010 10:44
Arti eine gewisse Zeitlang in ein Gebiet schießen lassen Bruklin Editing & Scripting 10 25.08.2010 17:44


Kontakt - HX3.de - Archiv - Nach oben

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