Jump to content

razzored

Member
  • Content Count

    124
  • Joined

  • Last visited

  • Medals

Posts posted by razzored


  1. Hi, 

    I realized i used to have 70+fps on arma when i first installed this rig, i've recently followed a popular performance increase vid and done literally everything.
    I've gotten no change, before 31-41fps, now 31-41fps.
    I've got a 4090RTX

    128gb ram 

    Game running on a M2 4.0 SSD

    13th gen Intel core.

    Meanwhile, my girlfriend just installed the game (same mods, same server, same everything) on a much less impressive pc (only difference is that its newly installed and doesnt have any antivirus, not even windows defender).

    She runs at a STAGGERING 200fps, even in multiplayer matches with many people, ai and scripts ect.

    I am mind boggled, jealous and outraged that my pc has over time become magically hardlocked at 40fps. (I have tried doing the shift + NUmbad -, and it's said to unlimited fps).

     

    Question is, would factory resetting my pc or removing my Bitdefender boost arma?

    If YES, Why?
    how could my antivirus have such a major effect or
    What on earth have i done to my system that has killed my arma fps and performance over a couple years.


  2. Ah ofc, sorry.
    Calling it through mission Init file 

    Spoiler
    
    [] execVM "SCCLoot\lootInit.sqf";

     

    Which calls a file in a sub folder that just runs the spawn script i posted and a cleanup script, why they are in 2 seperate scripts is beyond me, though i do see some of the applications in doing so.
    Heres the Lootinit
     

    Spoiler
    
    scclootCurrentBuildingsWithLoot = [];
    scclootCurrentContainersWithLoot = [];
    
    while {true} do {
    	
    	if (scclootDebugMessages) then {
    	
    		systemChat "[SCCLoot] Running loot spawner...";
    	
    	};
    	
    	_lootSpawnScript = [] execVM "SCCLoot\System\lootSpawn.sqf";
    	_lootSpawnCleanup = [] execVM "SCCLoot\System\lootCleanup.sqf";
    	sleep scclootWaitTime;
    	
    };

     

     


  3. Hey so i've been working with a script that handles "random" item spawning fairly well. Initially it seemed like it would work rather well in multiplayer (from first glans) While that may still be true (in hosted) the script has been incapable of functioning on dedicated server and will not take player positions into account very well.
    Instead of spawning items around players in each their respective area.. atm it will  X AMOUNT OF PLAYERS double the amount of loot around EVERY player and suddenly make a new loot respawn timer for each player, so after 10 people are on, loot will constantly respawn and where ever someone goes, mountains of loot will gradually build up and tear away every last fps.

    Im having some problems identifying where these issues are coming from.

    CREDIT to Samscodeco for originally designing this 2 years ago, i just wish he would have been a little more precise about the workings/ limits of it.

     

    Spoiler
    
    // Gets item with the lowest chance of spawning from list
    _getLowestChance = {
    	
    	_itemList = _this select 0;
    	
    	_currentLowestChance = 101;
    	_currentWithLowestChance = [];
    	
    	{
    		
    		_entryToCheck = _x;
    		_classToCheck = _x select 0;
    		_chanceToCheck = _x select 1;
    		
    		if (_chanceToCheck < _currentLowestChance) then {
    			
    			_currentLowestChance = _chanceToCheck;
    			_currentWithLowestChance = [];
    			_currentWithLowestChance pushBack _entryToCheck;
    			
    		} else {
    			
    			if (_chanceToCheck == _currentLowestChance) then {
    				
    				_currentWithLowestChance pushBack _entryToCheck;
    				
    			};
    			
    		};
    		
    		
    	} forEach _itemList;
    	
    	_currentWithLowestChance;
    	
    };
    
    // Gets the correct array depending on loot type
    _getLootTable = {
    	
    	_lootType = _this select 0;
    	
    	// Loot Categories
    	// Get correct array to spawn items from
    	_lootArray = [];
    	
    	switch (_lootType) do {
    		
    		case 1: {
    			_lootArray = scclootCivil;
    		};
    		
    		case 2: {
    			_lootArray = scclootIndustrial;
    		};
    		
    		case 3: {
    			_lootArray = scclootMilitary;
    		};
    		
    		case 4: {
    			_lootArray = scclootMedical;
    		};
    		
    		case 5: {
    			_lootArray = scclootSupermarket;
    		};
    		
    		default {
    			_lootArray = scclootDefault;
    		};
    		
    	};
    	
    	_lootArray;
    	
    };
    
    while {scclootEnableSpawn} do {
    
    	scclootSpawnerActive = true;
    	waitUntil {!scclootCleanupActive};
    	
    	// Vars for debug messages
    	_lootContainerCount = 0;
    	_lootSpawnedThisPass = 0;
    	_buildingsWithoutLootThisPass = 0;
    	_buildingsBlacklistedThisPass = 0;
    
    	{
    		
    		_currentPlayer = _x;
    		
    		// Only try to spawn loot if the player is alive
    		if (alive _currentPlayer) then {
    		
    			// Get array of all buildings within range of the player
    			_buildings = nearestObjects [getPos _currentPlayer,["building"],scclootSpawnRange];
    
    			// For every building within range of the player
    			{
    				_buildingObject = _x;
    				_buildingAlreadyHasLoot = false;
    				_buildingIsOnBlacklist = false;
    				_currentBuildingClass = typeOf _buildingObject;
    				
    				// Check if building is blacklisted from spawning loot
    				if (count scclootBlacklistBuildings > 0) then {
    				
    					{
    						
    						_currentBlacklistBuilding = _x;
    						
    						if ((toLowerANSI _currentBuildingClass) == _currentBlacklistBuilding) then {
    							
    							_buildingIsOnBlacklist = true;
    							_buildingsBlacklistedThisPass = _buildingsBlacklistedThisPass + 1;
    							
    						};
    						
    					} forEach scclootBlacklistBuildings;
    				
    				};
    				
    				if (!_buildingIsOnBlacklist) then {
    					
    					// Check if building has custom positions
    					_isBuildingCustom = false;
    					
    					if ((toLowerANSI _currentBuildingClass) in scclootCustomPosClassnames) then {
    						
    						_isBuildingCustom = true;
    						
    					};
    					
    					// Only try to spawn if the building has positions
    					_numBuildingPositions = count ([_buildingObject] call BIS_fnc_buildingPositions);
    					if (_numBuildingPositions > 0 || _isBuildingCustom) then {
    						
    						if (count scclootCurrentBuildingsWithLoot > 0) then {
    						
    							// Check if building already has loot spawned
    							{
    								
    								if (_x select 0 == _buildingObject) then {
    								
    									_buildingAlreadyHasLoot = true;
    									
    								};
    								
    							} forEach scclootCurrentBuildingsWithLoot;
    							
    						};
    						
    						// If building does not have any loot spawned
    						if (!_buildingAlreadyHasLoot) then {
    							
    							_currentBuildingLootSpots = [];
    							
    							// Convert the object to a building classname
    							_currentBuildingType = 0;
    
    							// Search for current building in the loot config to get its loot spawn type
    							{
    								
    								if ((toLowerANSI _currentBuildingClass) == (toLowerANSI (_x select 0))) then {
    								
    									_currentBuildingType = _x select 1;
    									
    								};
    								
    							} forEach scclootListBuildings;
    							
    							_currentBuildingLootArray = [_currentBuildingType] call _getLootTable;
    							
    							// Get array of all building positions
    							_buildingPositions = [];
    							
    							if (_isBuildingCustom) then {
    								
    								_customPositionsRelative = [];
    								
    								{
    									
    									_entryName = _x select 0;
    									_entryPos = _x select 1;
    									
    									if (_entryName == (toLowerANSI _currentBuildingClass)) then {
    										
    										_customPositionsRelative = _entryPos;
    										
    									};
    									
    								} forEach scclootCustomPosBuildings;
    								
    								{
    									
    									_buildingPositions pushBack (_buildingObject modelToWorld _x);
    									
    								} forEach _customPositionsRelative;
    								
    							} else {
    							
    								_buildingPositions = [_x] call BIS_fnc_buildingPositions;
    								
    							};
    							
    							// Iterate through usable building positions
    							{
    								
    								// Select which items can spawn at the current position
    								_randomNumber = [1,100] call BIS_fnc_randomInt;
    								_possibleItemsToSpawn = [];
    								{
    								
    									if (_x select 1 >= _randomNumber) then {
    									
    										_possibleItemsToSpawn pushBack _x;
    										
    									};
    									
    								} forEach _currentBuildingLootArray;
    								
    								// Only try to spawn items if there are items to spawn
    								if ((count _possibleItemsToSpawn) > 0) then {
    									
    									// Give rarest loot that can spawn priority		
    									_itemsToSpawnFinal = [_possibleItemsToSpawn] call _getLowestChance;
    									
    									_itemToSpawn = selectRandom _itemsToSpawnFinal;
    									
    									// Spawn the item
    									_itemToSpawnClass = _itemToSpawn select 0;
    									_itemBox = createVehicle ["WeaponHolderSimulated", [0,0,0], [], 0, "CAN_COLLIDE"];
    									
    									if (_itemToSpawnClass isKindOf "bag_base") then {
    										
    										_itemBox addBackpackCargoGlobal [_itemToSpawnClass,1];
    										
    									} else {
    										
    										_itemBox addItemCargoGlobal [_itemToSpawnClass,1];
    										
    									};
    									
    									// Get magazines from config
    									_itemToSpawnIsWeapon = 0;
    									_itemMags = getArray (configFile >> "CfgWeapons" >> _itemToSpawnClass >> "magazines");
    									
    									// If item has associated magazines, spawn some
    									if (count _itemMags > 0) then {
    									
    										_mag = _itemMags select (floor (random (count _itemMags)));
    										_numberOfMagsToSpawn = [scclootMinMagazinesToSpawn,scclootMaxMagazinesToSpawn] call BIS_fnc_randomInt;
    										_itemBox addMagazineCargoGlobal [_mag,_numberOfMagsToSpawn];
    										
    									};
    									
    									_posToSpawnLoot = _x;
    									
    									// Try to move loot using setVehiclePosition to avoid floor clipping. If this is not possible, use setPos with a Y offset instead.
    									if (!(_itemBox setVehiclePosition [_posToSpawnLoot, [], 0, "CAN_COLLIDE"])) then {
    									
    										_lootSpawnPositionOffset = 1;
    										_posToSpawnLoot set [2,(_posToSpawnLoot select 2) + _lootSpawnPositionOffset];
    										_itemBox setPos _posToSpawnLoot;
    										
    									};
    									
    									// Add the item box to the list of item boxes for the current building
    									_currentBuildingLootSpots pushBack _itemBox;
    									
    									_lootSpawnedThisPass = _lootSpawnedThisPass + 1;
    									
    								}
    								
    							} forEach _buildingPositions;
    							
    							// Add building and all associated item boxes to array
    							_arrayEntry = [_buildingObject, _currentBuildingLootSpots];
    							scclootCurrentBuildingsWithLoot pushBack _arrayEntry;
    							
    							_buildingsWithoutLootThisPass = _buildingsWithoutLootThisPass + 1;
    							
    						};
    					
    					};
    					
    				};
    				
    			} forEach _buildings;
    			
    			// Get nearby containers
    			if (count scclootContainers > 0) then {
    				
    				// Iterate through containers
    				{
    					_containerName = _x select 0;
    					_containerType = _x select 1;
    					_containerObj = missionNamespace getVariable [_containerName, objNull];
    					_containerLootArray = [_containerType] call _getLootTable;
    					
    					// If player is within range
    					if (_currentPlayer distance _containerObj < scclootSpawnRange) then {
    						
    						if (!(_containerObj in scclootCurrentContainersWithLoot)) then {
    						
    							// Select which items can spawn at the current position
    							_randomNumber = [1,100] call BIS_fnc_randomInt;
    							_possibleItemsToSpawn = [];
    							{
    							
    								if (_x select 1 >= _randomNumber) then {
    								
    									_possibleItemsToSpawn pushBack _x;
    									
    								};
    								
    							} forEach _containerLootArray;
    							
    							_itemToSpawnClass = "";
    							
    							// Only try to spawn items if there are items to spawn
    							if ((count _possibleItemsToSpawn) > 0) then {
    								
    								// Give rarest loot that can spawn priority		
    								_itemsToSpawnFinal = [_possibleItemsToSpawn] call _getLowestChance;
    								
    								_itemToSpawn = selectRandom _itemsToSpawnFinal;
    								
    								// Spawn the item
    								_itemToSpawnClass = _itemToSpawn select 0;
    								
    								if (_itemToSpawnClass isKindOf "bag_base") then {
    								
    									_itemBox addBackpackCargoGlobal [_itemToSpawnClass,1];
    								
    								} else {
    									
    									_itemBox addItemCargoGlobal [_itemToSpawnClass,1];
    									
    								};
    								
    							};
    							
    							// Get magazines from config
    							_itemToSpawnIsWeapon = 0;
    							_itemMags = getArray (configFile >> "CfgWeapons" >> _itemToSpawnClass >> "magazines");
    							
    							// If item has associated magazines, spawn some
    							if (count _itemMags > 0) then {
    							
    								_mag = _itemMags select (floor (random (count _itemMags)));
    								_numberOfMagsToSpawn = [scclootMinMagazinesToSpawn,scclootMaxMagazinesToSpawn] call BIS_fnc_randomInt;
    								_containerObj addMagazineCargoGlobal [_mag,_numberOfMagsToSpawn];
    								
    							};
    							
    							scclootCurrentContainersWithLoot pushBack _containerObj;
    							
    							
    							
    						};
    						
    						_lootContainerCount = _lootContainerCount + 1;
    						
    					};
    					
    				} forEach scclootContainers;
    				
    			};
    			
    		};
    		
    	} forEach allPlayers;
    
    
    
    	// Write debug output
    	if (scclootDebugMessages) then {
    		
    		_debugMsg = "";
    		
    		if (_lootSpawnedThisPass > 0) then {
    		
    			_debugMsg = format ["[SCCLoot] Successfully created %1 items in %2 buildings (%3 blacklisted, %4 containers)", _lootSpawnedThisPass, _buildingsWithoutLootThisPass, _buildingsBlacklistedThisPass, _lootContainerCount];
    			
    		} else {
    			
    			_debugMsg = format ["[SCCLoot] No more loot was spawned this pass (%1 buildings blacklisted)", _buildingsBlacklistedThisPass];
    			
    		};
    		
    		systemChat _debugMsg;
    		
    	};
    	
    	scclootSpawnerActive = false;
    	
    	sleep scclootSpawnWaitTime;
    	
    };

     

    Now there are some other sqf's in the overall package, but i am 99% certain that this is the one that is causing the issues (or rather, not working on dedicated and thus responsible for the undesired side effects).
    Hope there's some keen eyes out there who's down to help me out.


  4. 1 hour ago, pierremgi said:

    this && player in (thisList - [unit_1,unit_2,unit_3])

     

    so these units are skipped (blacklisted).

     


    It's difficult to understand!

    Player removeAction .... you should write your code, and your final aim here.

    Usually this command is placed inside the addAction itself, applied on _caller (or whatever the local param for caller can be). If you don't want to get an addAction on a player:

    - first, think about condition for this command if (something true) then { player addAction [...] };
    - second, think about condition as the 8th parameter of  the addAction command;  example: "vehicle _target == _this"

     

    exclude the 3 first units....

    of what? a group? entering the trigger?  what link with the removeAction ?

    Incorrect, clearly your mad scientist brain managed to solve my problem with flying colors without having any context or understanding 😛

    But incase you want to know, its regarding one of the features in the new DLC which adds a module that by itself is not that multiplayer compatible, and everyone will get access to it by default.
    Barely any of the coded in checks works, since i tried using all of them, so i setup something else using a trigger that will ensure that those who aren't TACP don't get the menu.

    player removeAction (player getVariable ["vn_artillery_module_action_id", -1]);

     


  5. I need a trigger to run code on every player/playable unit that enters  it, EXCEPT Unit_1, Unit_2 and les say Unit_3.
    Most efficient way to achieve this?

    Side note, script that is activated uses "Player removeaction" using something like Unit_4 in thisList && unit_5 so on and so on, wont work here.
    So far script works with "this && player in thisList", but that leaves me with how im going to exclude the 3 first units.


  6. This is more modding related, but i cant seem to find a place on the forums for QUESTIONS and help regarding modding.
    I was signing a mod with utilities. After signing, i put the mod on a server, i put the bikey in server key folder, made sure all of the pbo's were indeed signed by bisign and that my client had the same version of mod.
    YET, it all attempts i've made, reinstalling and resigning many times, it always kicks me for "Files are not signed by a key accepted by this server". I cannot for the life of me figure out why.
    It is a fairly large mod, 10gb.. but it gives the error for all files which kind of rules out file corruption.
    Furthermore i have signed other mods, that work perfectly fine.
    Any help, ideas or suggestions are welcome.


  7. So any CFG sharks in here who can tell me what in the world keeps being wrong with this?
    I've rewritten and reformated countless times, no matter what.. just wont work.
    (It's supposed to be used  with the spawnAI module).

    Problem is with the motorized/mechanized or armor sections of the groups.

     

    Spoiler
    
    class CfgGroups {
    
        class west {
    
            class myCustomWestFaction { //Name for your custom faction
    
                class Infantry {    //SpawnAI module looks for this class
    
                	class myCustomWestInfGroup_1units {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_B_USMC_Soldier_TL_des";     //Class name of unit/vehicle
                            side = 1;                    //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";            //rank name from CfgRanks
                            position[] = { 0, 0, 0 };    //offset position unit spawns from spawn point
                        };
                    };
    				
                	class myCustomWestInfGroup_1SNIPER {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_B_USMC_Sniper_M40A3_des";     //Class name of unit/vehicle
                            side = 1;                    //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";            //rank name from CfgRanks
                            position[] = { 0, 0, 0 };    //offset position unit spawns from spawn point
                        };
                    };				
    
                    class myCustomWestInfGroup_3units {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_B_USMC_Soldier_TL_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";           //rank name from CfgRanks
                            position[] = { 0, 0, 0 };   //offset position unit spawns from spawn point
                        };
    
                        class unit1 {
                            vehicle = "CUP_B_USMC_Soldier_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 5, -5, 0 };  //offset position unit spawns from spawn point
                        };
    
                        class unit2 {
                            vehicle = "CUP_B_USMC_Soldier_MG_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -5, -5, 0 }; //offset position unit spawns from spawn point
                        };
    
                    };
    
                    class myCustomWestInfGroup_6units {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_B_USMC_Soldier_TL_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";           //rank name from CfgRanks
                            position[] = { 0, 0, 0 };   //offset position unit spawns from spawn point
                        };
    
                        class unit1 {
                            vehicle = "CUP_B_USMC_Soldier_MG_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 5, -5, 0 };  //offset position unit spawns from spawn point
                        };
    
                        class unit2 {
                            vehicle = "CUP_B_USMC_Soldier_LAT_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -5, -5, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit3 {
                            vehicle = "CUP_B_USMC_Soldier_GL_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 10, -10, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit4 {
                            vehicle = "CUP_B_USMC_Soldier_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -10, -10, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit5 {
                            vehicle = "CUP_B_USMC_Soldier_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 15, -15, 0 }; //offset position unit spawns from spawn point
                        };
    
                    };
    				
                    class myCustomWestInfGroup_3unitsmixed {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_B_USMC_Soldier_TL_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";           //rank name from CfgRanks
                            position[] = { 0, 0, 0 };   //offset position unit spawns from spawn point
                        };
    
                        class unit1 {
                            vehicle = "CUP_B_USMC_Soldier_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 5, -5, 0 };  //offset position unit spawns from spawn point
                        };
    
                        class unit2 {
                            vehicle = "CUP_B_USMC_Medic_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -5, -5, 0 }; //offset position unit spawns from spawn point
                        };
    
                    };
    
                    class myCustomWestInfGroup_6unitsmixed {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_B_USMC_Soldier_TL_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";           //rank name from CfgRanks
                            position[] = { 0, 0, 0 };   //offset position unit spawns from spawn point
                        };
    
                        class unit1 {
                            vehicle = "CUP_B_USMC_Soldier_MG_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 5, -5, 0 };  //offset position unit spawns from spawn point
                        };
    
                        class unit2 {
                            vehicle = "CUP_B_USMC_Soldier_LAT_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -5, -5, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit3 {
                            vehicle = "CUP_B_USMC_Soldier_GL_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 10, -10, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit4 {
                            vehicle = "CUP_B_USMC_Medic_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -10, -10, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit5 {
                            vehicle = "CUP_B_USMC_Soldier_des";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 15, -15, 0 }; //offset position unit spawns from spawn point
                        };
    					
                    };				
                };
    
                class Motorized {    //SpawnAI module looks for this class
    
                    class WESTMotorized_1units {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_B_HMMWV_SOV_M2_USA";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";           //rank name from CfgRanks
                            position[] = { 0, 0, 0 };   //offset position unit spawns from spawn point
                        };
    
                    };
                };
    			
                class Mechanized {    //SpawnAI module looks for this class
    
                    class WESTMechanized_1units {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_B_LAV25M240_desert_USMC";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";           //rank name from CfgRanks
                            position[] = { 0, 0, 0 };   //offset position unit spawns from spawn point
                        };
    
                    };
                };
    			
                class Armored {			//SpawnAI module looks for this class
    
                    class myCustomWestTanks_1 {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_B_M60A3_USMC";     //Class name of unit/vehicle
                            side = 1;                    //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";            //rank name from CfgRanks
                            position[] = { 0, 0, 0 };    //offset position unit spawns from spawn point
                        };
    					
                    };				
                };
    			
        class east {
    
            class myCustomEastFaction { //Name for your custom faction
    
                class Infantry {    //SpawnAI module looks for this class
    
                	class myCustomEastInfGroup_1units {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_O_TK_SpecOps";     //Class name of unit/vehicle
                            side = 0;                    //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";            //rank name from CfgRanks
                            position[] = { 0, 0, 0 };    //offset position unit spawns from spawn point
                        };
                    };
    				
                	class myCustomEastInfGroup_1SNIPER {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_O_TK_Sniper";     //Class name of unit/vehicle
                            side = 0;                    //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";            //rank name from CfgRanks
                            position[] = { 0, 0, 0 };    //offset position unit spawns from spawn point
                        };
                    };			
    
                	class myCustomEastInfGroup_1Bomber {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_O_TK_INS_Bomber";     //Class name of unit/vehicle
                            side = 0;                    //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";            //rank name from CfgRanks
                            position[] = { 0, 0, 0 };    //offset position unit spawns from spawn point
                        };
                    };					
    
                    class myCustomEastInfGroup_3units {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_O_TK_SpecOps_TL";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";           //rank name from CfgRanks
                            position[] = { 0, 0, 0 };   //offset position unit spawns from spawn point
                        };
    
                        class unit1 {
                            vehicle = "CUP_O_TK_SpecOps_MG";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 5, -5, 0 };  //offset position unit spawns from spawn point
                        };
    
                        class unit2 {
                            vehicle = "CUP_O_TK_INS_Soldier_AT";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -5, -5, 0 }; //offset position unit spawns from spawn point
                        };
    
                    };
    
                    class myCustomEastInfGroup_6units {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_O_TK_SpecOps_TL";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";           //rank name from CfgRanks
                            position[] = { 0, 0, 0 };   //offset position unit spawns from spawn point
                        };
    
                        class unit1 {
                            vehicle = "CUP_O_TK_INS_Soldier_AT";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 5, -5, 0 };  //offset position unit spawns from spawn point
                        };
    
                        class unit2 {
                            vehicle = "CUP_O_TK_SpecOps_MG";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -5, -5, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit3 {
                            vehicle = "CUP_O_TK_SpecOps_MG";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 10, -10, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit4 {
                            vehicle = "CUP_O_TK_SpecOps";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -10, -10, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit5 {
                            vehicle = "CUP_O_TK_SpecOps";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 15, -15, 0 }; //offset position unit spawns from spawn point
                        };
    
                    };
    				
                    class myCustomEastInfGroup_3unitsMixed {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_O_TK_SpecOps_TL";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";           //rank name from CfgRanks
                            position[] = { 0, 0, 0 };   //offset position unit spawns from spawn point
                        };
    
                        class unit1 {
                            vehicle = "CUP_O_TK_Medic";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 5, -5, 0 };  //offset position unit spawns from spawn point
                        };
    
                        class unit2 {
                            vehicle = "CUP_O_TK_INS_Soldier_AT";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -5, -5, 0 }; //offset position unit spawns from spawn point
                        };
    
                    };
    
                    class myCustomEastInfGroup_6unitsMixed {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_O_TK_SpecOps_TL";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";           //rank name from CfgRanks
                            position[] = { 0, 0, 0 };   //offset position unit spawns from spawn point
                        };
    
                        class unit1 {
                            vehicle = "CUP_O_TK_INS_Soldier_AT";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 5, -5, 0 };  //offset position unit spawns from spawn point
                        };
    
                        class unit2 {
                            vehicle = "CUP_O_TK_SpecOps_MG";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -5, -5, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit3 {
                            vehicle = "CUP_O_TK_INS__Soldier_GL";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 10, -10, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit4 {
                            vehicle = "CUP_O_TK_Medic";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -10, -10, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit5 {
                            vehicle = "CUP_O_TK_INS_Bomber";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 15, -15, 0 }; //offset position unit spawns from spawn point
                        };
    
                    };				
                };
    
                class Motorized {    //SpawnAI module looks for this class
    
                    class EASTMotorized_1units {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_O_LR_MG_TKA";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";           //rank name from CfgRanks
                            position[] = { 0, 0, 0 };   //offset position unit spawns from spawn point
                        };
    
                    };
                };
    			
                class Mechanized {    //SpawnAI module looks for this class
    
                    class EASTMechanized_1units {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_O_BTR80_TK";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";           //rank name from CfgRanks
                            position[] = { 0, 0, 0 };   //offset position unit spawns from spawn point
                        };
    
                    };
                };
    			
    
                class Armored {		//SpawnAI module looks for this class
    			
    				class CUPVDVArmor_4units {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "CUP_O_T72_TK";    //Class name of unit/vehicle
                            side = 0;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";           //rank name from CfgRanks
                            position[] = { 0, 0, 0 };   //offset position unit spawns from spawn point
                        };
    
    				};
    			};  
            };
        };
    };	

     

     


  8. Hello there!
    Im working on a large mission which requires many units in play, sadly arma 3 only has 4 effective factions (i know theres like another 10 tsemi useless factions for my purpose.)
    The players HAVE to be blufor and the police units are all blufor.
    I want a script that automatically changes their faction to Independent or attack blufor players?
    I've tried using EOS to spawn them using the "side" feature, but then they just kill eachother when they spawn, full selfinflicted squad masscass.

    What im looking for?
    EITHER
    Script that makes Blufor AI Attack and kill Blufor players (theres a script that changes us between civ and blufor depending on what we are doing, blufor = bad).
    Script that looks for and changes all AI Blufor or all AI from a certain classname array into Independent, every X second or something.


  9. Also im posting the other method i hinted at, its a simple script and may not be the most efficient one, but gets the job done.

     

    Spoiler
    
    
    
    private ["_min_groups", "_max_groups", "min_group_size", "_max_group_size", "_number_groups", "_man_type"];
    
    private ["_this_speed","_speed","_this_formation","_formation","_formation_count","_this_group","_this_man_odds","skill_odds","_skill_index"];
    
    
    
    
    _group0 = Creategroup EAST;
    _group1 = Creategroup EAST;
    _group2 = Creategroup EAST;
    _group3 = Creategroup EAST;
    _group4 = Creategroup EAST;
    _group5 = Creategroup EAST;
    _group6 = Creategroup EAST;
    _group7 = Creategroup EAST;
    
    // ******************************************************************************************************************************************************************************
    
    // MAIN CONFIG ( THIS IS WHERE YOU CHANGE SETTINGS)
    
    _min_groups = 2;		// The mimimum number of groups that will be created
    _max_groups = 5;		// The maximum number of groups that will be created. This number CANNOT exceed 8
    
    _min_group_size = 3;	// The minimum number of people a group can contain
    _max_group_size = 8;	// The maximum number of people a group can contain.
    
    _start_distance = 200;		// This is the minimum spawn distance for a group from the trigger point
    _max_distance = 800;	// This is the maximum spawn distance for a group from the trigger point
    
    _max_enemy_distance = 200;	// This is the maximum distance a group can be from the player as the group follows the player around
    
    
    // ******************************************************************************************************************************************************************************
    //
    // This array contains the type of enemy soldiers that a group can contain. 
    
    _man_type=["isc_is_squad_leader_o","isc_is_grenadier_o","isc_is_rifleman_o","isc_is_autorifleman_o","isc_is_machinegunner_o","isc_is_sniper_o","isc_is_at_o","isc_is_medic_o","isc_is_irregular_o","isc_is_militaman_o","isc_is_sapper_o"];
    
    // The man odds give the chances of what type of soldiers the enemy group will contain. 100 is 100%
    //
    // For example, if _man_odds_group1=[100,70,60,10,5]; it means that the chances of O_Soldier_F being created are 100 - 70, which is 30%, for 
    // O_officer_F, the chances are 70 - 60 which is 10% chance. And so on. Each group can have different odds.
    
    _man_odds_group0=[100,90,60,20,10];
    _man_odds_group1=[100,70,60,10,5];
    _man_odds_group2=[100,50,40,10,5];
    _man_odds_group3=[100,95,40,30,25];
    _man_odds_group4=[100,80,20,15,5];
    _man_odds_group5=[100,50,40,10,5];
    _man_odds_group6=[100,50,40,10,5];
    _man_odds_group7=[100,50,40,10,5];
    
    
    // ******************************************************************************************************************************************************************************
    //
    // These numbers represent the time BEFORE each group will be spawned in. Times are in seconds.
    //
    //  _group_spawn_delay_min=[30,45,30,60,60,30];
    //  _group_spawn_delay_max=[40,60,60,80,65,40];
    //
    // The initial delay before any groups are spawned will be 30 seconds + random time of (40 - 30), so 30 seconds + random of 10 seconds.
    // The next group will spawn at 45 seconds + random time of (60 - 45), so 45 seconds + random of 15 seconds, and so on.
    
    _group_spawn_delay_min=[60,60,60,60,60,120,120,120,120]; 
    _group_spawn_delay_max=[80,120,120,80,240,240,240,240,240]; 
    _sleep_delay = 20;						// This MUST be at least two times less than any of the _group_spawn_delay numbers
    
    // ******************************************************************************************************************************************************************************
    //
    // The _speed_type array contains the various types of speed the group can operate at.
    
    _speed_type=["LIMITED","NORMAL","FULL"];
    
    // The _speed_odds array uses the same chance principles as the man odds. 
    // For example, _speed_odds = [100,60,30]; will give 100 - 60, which is 40% chance that the group will have LIMITED speed, and so on.
    
    _speed_odds = [100,60,30];
    
    // The _formation_type array contains all the types of formations that each group can move to a waypoint with.
    
    _formation_type=["NO CHANGE","COLUMN","STAG COLUMN","WEDGE","ECH LEFT","ECH RIGHT","VEE","LINE","FILE","DIAMOND"];
    
    // The _formation_odds array uses the same chance principles as the man odds.
    
    _formation_odds = [100,90,80,70,60,50,40,30,20,10];
    
    
    
    // ******************************************************************************************************************************************************************************
    
    _group_skill=[0.2, 0.3, 0.4 ,0.5, 0.6, 0.7, 0.8, 0.9];
    _group_skill_level=["Novice","Rookie","Rookie","Recruit","Recruit","Veteran","Veteran","Expert"];
    
    _skill_odds=[100, 95, 85, 70, 50, 30, 15, 5];		// Must contain the same number of entries as _group_skill
    
    // ******************************************************************************************************************************************************************************
    
    _all_groups = [_group0, _group1, _group2, _group3, _group4, _group5, _group6, _group7];
    _all_man_odds = [_man_odds_group0, _man_odds_group1, _man_odds_group2, _man_odds_group3, _man_odds_group4, _man_odds_group5];
    
    
    _number_groups = floor(random (_max_groups - _min_groups)) + _min_groups;
    
    //hint format ["Groups %1", _number_groups];
    
    
    
    _man_number = count _man_type;
    
    
    
    _formation_count = count _formation_type;
    
    
    
    private ["_i", "_j", "_k",  "_odds", "_table_odds", "_this_man", "_skill_level"];
    
    //hint format ["Position %1, %2",_spawn_position, _number_groups];
    
    _skill_count = (count _group_skill) - 1;
    
    
    
    // ******************************************************************************************************************************************************************************
    
    
    
    	_group_counter = 0;
    
    	_wait_time = 0;
    
    	_delay_min = _group_spawn_delay_min select _group_counter;
    	_delay_max = _group_spawn_delay_max select _group_counter;
    
    	_delay_time =  (random (_delay_max - _delay_min)) + _delay_min;
    
    	_wait_time = _wait_time + _delay_time;
    
    	_skill_index = 0;
    
    //	hint format ["Initial Delay: %1", _delay_time];
    
    	while {alive player} do
    	{
    	
    
    		if ( time > _wait_time) then
    		{
    
    
    			if ( _group_counter < _number_groups) then
    			{
    
    				_this_group = _all_groups select _group_counter;
    				_this_man_odds = _all_man_odds select _group_counter;
    
    				_group_size = floor(random (_max_group_size - _min_group_size)) + _min_group_size;
    
    				_spawn_position = position player;
    
    				_xpos = _spawn_position select 0;
    				_ypos = _spawn_position select 1;
    				_zpos = _spawn_position select 2;
    
    				_distance = _start_distance + random (_max_distance - _start_distance);
    				_angle = random 360;
    
    				_xxpos = (_distance * cos _angle);
    				_yypos = (_distance * sin _angle);
    
    				_xpos = _xpos + _xxpos;
    				_ypos = _ypos + _yypos;
    
    				_spawn_position set [0, _xpos];
    				_spawn_position set [1, _ypos];
    				_spawn_position set [2, _zpos];
    
    				_odds = random (100);
    				
    				for "_i" from 0 to _skill_count do
    				{
    
    					_table_odds = _skill_odds select _i;
    
    					if (_odds < _table_odds) then
    					{
    						_skill_index = _i;
    					
    					};
    
    
    				};
    
    
    //				hint format ["_skill_index %1, _skill_count %2", _skill_index, _skill_count];
    
    
    
    				_skill_level = _group_skill select _skill_index;
    				_skill_level_name = _group_skill_level select _skill_index;
    
    				for "_i" from 0 to (_group_size - 1) do
    				{
    
    					_odds = random (100);
    
    					for "_j" from 0 to (_man_number - 1) do
    					{
    
    						_table_odds = _this_man_odds select _j;
    
    
    						if (_odds < _table_odds) then
    						{
    
    							_this_man = _j;
    						};
    
    					};
    
    					_man = _man_type select _this_man;
    					_man createUnit [_spawn_position, _this_group,"this allowFleeing 0", _skill_level, "Private"];
    
    
    				};
    
    
    //				hint format ["ENEMY SPAWNED: Group size %1, Skill: %2", _group_size,_skill_level_name];
    
    
    
    
    				_formation = _formation_type select floor random count _formation_type;
    
    				_wp1 = _this_group addWaypoint [position player, _max_enemy_distance];
    				_wp2 = _this_group addWaypoint [position player, _max_enemy_distance];
    				_wp3 = _this_group addWaypoint [position player, _max_enemy_distance]; 
    
    				_wp1 setWaypointBehaviour "AWARE"; 
    				_wp1 setwaypointtype "MOVE"; 
    				_wp1 setWaypointFormation _formation;
    				_wp1 setWaypointSpeed "Normal";
    				_wp1 setwaypointstatements ["True", ""];
    
    
    				_wp2 setwaypointtype "MOVE"; 
    
    				_wp3 setWaypointType "Cycle";
    
    				_group_counter = _group_counter + 1;
    
    				_delay_min = _group_spawn_delay_min select _group_counter;
    				_delay_max = _group_spawn_delay_max select _group_counter;
    
    				_delay_time =  (random (_delay_max - _delay_min)) + _delay_min;
    
    				_wait_time = _wait_time + _delay_time;
    
    //				hint format ["Initial Delay: %1", _delay_time];
    
    			};
    
    
    		};
    
    
    
    
    
    		for "_i" from 0 to (_group_counter - 1) do
    		{
    
    			_this_group = _all_groups select _i;
    
    			_odds = random (100);
    
    			for "_j" from 0 to ((count _speed_odds) - 1) do
    			{
    
    				_table_odds = _speed_odds select _j;
    
    				if (_odds < _table_odds) then
    				{
    					_this_speed = _j;
    				};
    
    			};
    
    			_odds = random (100);
    
    			for [ {_j=0}, { _j <  _formation_count}, { _j =_j+1 } ] do
    			{
    
    				_table_odds = _formation_odds select _j;
    
    				if (_odds < _table_odds) then
    				{
    					_this_formation = _j;
    				};
    
    			};
    
    			_speed = _speed_type select _this_speed;
    			_formation = _formation_type select _this_formation;
    
    //			hint format ["Speed: %1, Formation: %2", _speed, _formation];
    
    
    			[_this_group, 1] setWaypointSpeed _speed;
    			[_this_group, 1] setWaypointFormation _formation;
    
    
    			[_this_group, 1] setWaypointPosition [ getPosATL player, random (_max_enemy_distance) ];
    			[_this_group, 2] setWaypointPosition [ getPosATL player, random (_max_enemy_distance) ];
    
    
    		};
    
    
    	sleep _sleep_delay;
    
    
    	};
    

     


     

    Add trigger

    Any player
    Present
    (Server only reccomended, unsure if it still work with that ticked though).

    Condition
    this && (player in thisList)
    or
    ({_x In thisList} count AllPlayers > 0)          //unsure if this one will give good results

     

    OnAct

    Nul = execVM "DynamicAISpawnISS.sqf";


  10. Hello,
    It will take me some more time to make the changes and send back to you (lots of work, before chrismas vacation).
    However, to answer your question about factions, you need to define the classes in your "description.ext".
    Here's an example of custom WEST faction.
     

    Spoiler
    
    class CfgGroups {
    
        class west {
    
            class myCustomWestFaction { //Name for your custom faction
    
                class Infantry {    //SpawnAI module looks for this class
    
                	class myCustomWestInfGroup_1units {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "B_Soldier_F";     //Class name of unit/vehicle
                            side = 1;                    //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";            //rank name from CfgRanks
                            position[] = { 0, 0, 0 };    //offset position unit spawns from spawn point
                        };
                    };
    
                    class myCustomWestInfGroup_3units {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";           //rank name from CfgRanks
                            position[] = { 0, 0, 0 };   //offset position unit spawns from spawn point
                        };
    
                        class unit1 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 5, -5, 0 };  //offset position unit spawns from spawn point
                        };
    
                        class unit2 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -5, -5, 0 }; //offset position unit spawns from spawn point
                        };
    
                    };
    
                    class myCustomWestInfGroup_6units {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";           //rank name from CfgRanks
                            position[] = { 0, 0, 0 };   //offset position unit spawns from spawn point
                        };
    
                        class unit1 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 5, -5, 0 };  //offset position unit spawns from spawn point
                        };
    
                        class unit2 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -5, -5, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit3 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 10, -10, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit4 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -10, -10, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit5 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 15, -15, 0 }; //offset position unit spawns from spawn point
                        };
    
                    };
                };
    
                class Motorized {};     //SpawnAI module looks for this class for
                class Mechanized {};    //SpawnAI module looks for this class
                class Armored {};       //SpawnAI module looks for this class
            };
        };

     

     


  11. Hello!
    Do note, that when using spawnAI modules, you are either limited to vanilla units or you have to define mod groups in your description.EXT
    In my post history, you will find lots related to CFGclasses and AI module..
    Here's an example.
    Credit to Larrow.

    Spoiler
    
    class CfgGroups {
    
        class west {
    
            class myCustomWestFaction { //Name for your custom faction
    
                class Infantry {    //SpawnAI module looks for this class
    
                	class myCustomWestInfGroup_1units {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "B_Soldier_F";     //Class name of unit/vehicle
                            side = 1;                    //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";            //rank name from CfgRanks
                            position[] = { 0, 0, 0 };    //offset position unit spawns from spawn point
                        };
                    };
    
                    class myCustomWestInfGroup_3units {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";           //rank name from CfgRanks
                            position[] = { 0, 0, 0 };   //offset position unit spawns from spawn point
                        };
    
                        class unit1 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 5, -5, 0 };  //offset position unit spawns from spawn point
                        };
    
                        class unit2 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -5, -5, 0 }; //offset position unit spawns from spawn point
                        };
    
                    };
    
                    class myCustomWestInfGroup_6units {    //Can be called anything, name used for blacklisting
    
                        class unit0 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "SERGANT";           //rank name from CfgRanks
                            position[] = { 0, 0, 0 };   //offset position unit spawns from spawn point
                        };
    
                        class unit1 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 5, -5, 0 };  //offset position unit spawns from spawn point
                        };
    
                        class unit2 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -5, -5, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit3 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 10, -10, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit4 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { -10, -10, 0 }; //offset position unit spawns from spawn point
                        };
    
                        class unit5 {
                            vehicle = "B_Soldier_F";    //Class name of unit/vehicle
                            side = 1;                   //index of unit side being [ east, west, independent, civilian ]
                            rank = "PRIVATE";           //rank name from CfgRanks
                            position[] = { 15, -15, 0 }; //offset position unit spawns from spawn point
                        };
    
                    };
                };
    
                class Motorized {};     //SpawnAI module looks for this class for
                class Mechanized {};    //SpawnAI module looks for this class
                class Armored {};       //SpawnAI module looks for this class
            };
        };

     

    Alternatively, you can also.
    Setup trigger with whatever conditions and activation.
    Set to "server only".
    Put this in  OnAct:
     

    _grp1 = [getMarkerPos "spawn1", east, ["O_Soldier_SL_F", "O_Soldier_F","O_Soldier_F","O_Soldier_F","O_Soldier_F","O_Soldier_AR_F"],0] call BIS_fnc_spawnGroup; 
     
    _wpt1 = _grp1 addWaypoint [getMarkerPos "move1",5]; 
    _wpt1 setWaypointType "MOVE";

    Place those invisible pink markers (forgot their names) and name it example; spawn1.   //EDIT - They are called "system" markers.
    You can also remove the 2 bottom lines if you don't want them to have waypoints or add more.

     

    Cheers.

     

    PS. I also have a script that once trigger activated, spawns "random sized groups" from within a predefined array, around the players that will instantly start hunting players down. If that is more your alley.

    • Like 1

  12. Well here's a suggestion that would also benefit me (and anyone else who might need something like this)

    A mission script/sqf that when called, starts an objective like (go to a random place, choose 1 from array of predefined system markers ect)
    and kill a target or hack a computer or whatever.
    The script would not only have to create an objective but also ect spawn in units at or near target and spawn a trigger with trigger conditions, example "if pchacked then call mission1_success" not to mention spawn a pc with an addiction to set pcahacked true;
    Or if a mission to kill someone, it would need to spawn the target with a name, so the trigger can look if the target is alive or not.

    TLDR;
    Essentially a mission template framework.

    • Like 1
×