Create basic map with necesery stuff and add this script to game mode -> OnGameStart:
class GameMode_Plain1_Class: SCR_BaseGameMode
{
override void OnGameStart()
{
//SpawnUSSRGroup(500);
//SpawnUSGroup(1000);
array<SCR_AIGroup> groupsUs = {};
array<SCR_AIGroup> groupsUssr = {};
GetGame().GetCallqueue().CallLater(CheckUsGroup, true, 10000, groupsUs);
GetGame().GetCallqueue().CallLater(CheckUssrGroup, true, 10100, groupsUssr);
}
protected void CheckUsGroup(array<SCR_AIGroup> groups){
for (int i = groups.Count() - 1; i >= 0; i--){
if (!groups[i] || groups[i].GetTotalAgentCount() == 0){
groups.Remove(i);
}
}
if(groups.Count() < 5){
SpawnUSGroup(groups);
}
}
protected void CheckUssrGroup(array<SCR_AIGroup> groups){
for (int i = groups.Count() - 1; i >= 0; i--){
if (!groups[i] || groups[i].GetTotalAgentCount() == 0){
groups.Remove(i);
}
}
if(groups.Count() < 5){
SpawnUSSRGroup(groups);
}
}
protected void SpawnUSGroup(array<SCR_AIGroup> groups){
string spawnGroup = "{DDF3799FA1387848}Prefabs/Groups/BLUFOR/Group_US_RifleSquad.et";
//string waypointType = "{750A8D1695BD6998}Prefabs/AI/Waypoints/AIWaypoint_Move.et";
string waypointType = "{B3E7B8DC2BAB8ACC}Prefabs/AI/Waypoints/AIWaypoint_SearchAndDestroy.et";
IEntity spawnPosition = GetGame().GetWorld().FindEntityByName("US_AI_SpawnPoint_1");
IEntity waypointPosition = GetGame().GetWorld().FindEntityByName("USSR_AI_SpawnPoint_1");
//GetGame().GetCallqueue().CallLater(AISpawner, delay, false, spawnGroup, spawnPosition.GetOrigin(), waypointType, waypointPosition.GetOrigin());
AISpawner(groups, spawnGroup, spawnPosition.GetOrigin(), waypointType, waypointPosition.GetOrigin());
}
protected void SpawnUSSRGroup(array<SCR_AIGroup> groups){
string spawnGroup = "{E552DABF3636C2AD}Prefabs/Groups/OPFOR/Group_USSR_RifleSquad.et";
//string waypointType = "{750A8D1695BD6998}Prefabs/AI/Waypoints/AIWaypoint_Move.et";
string waypointType = "{B3E7B8DC2BAB8ACC}Prefabs/AI/Waypoints/AIWaypoint_SearchAndDestroy.et";
IEntity spawnPosition = GetGame().GetWorld().FindEntityByName("USSR_AI_SpawnPoint_1");
IEntity waypointPosition = GetGame().GetWorld().FindEntityByName("US_AI_SpawnPoint_1");
//GetGame().GetCallqueue().CallLater(AISpawner, delay, false, spawnGroup, spawnPosition.GetOrigin(), waypointType, waypointPosition.GetOrigin());
AISpawner(groups, spawnGroup, spawnPosition.GetOrigin(), waypointType, waypointPosition.GetOrigin());
}
protected void AISpawner(array<SCR_AIGroup> groups, string spawnGroup, vector spawnPosition, string waypointType, vector waypointPosition){
Resource resource = GenerateAndValidateResource(spawnGroup);
SCR_AIGroup group = SCR_AIGroup.Cast(GetGame().SpawnEntityPrefab(resource, null, GenerateSpawnParameters(spawnPosition)));
if(!group){
return;
}
CreateWaypoint(group, waypointType, waypointPosition);
groups.Insert(group);
}
protected void CreateWaypoint(SCR_AIGroup group, string waypointType, vector waypointPosition){
Resource resource = GenerateAndValidateResource(waypointType);
AIWaypoint waypoint = AIWaypoint.Cast(GetGame().SpawnEntityPrefab(resource, null, GenerateSpawnParameters(waypointPosition)));
if(!waypoint){
return;
}
group.AddWaypoint(waypoint);
}
protected Resource GenerateAndValidateResource(string resourceToLoad){
Resource resource = Resource.Load(resourceToLoad);
return resource;
}
protected EntitySpawnParams GenerateSpawnParameters(vector position){
EntitySpawnParams params = EntitySpawnParams();
params.TransformMode = ETransformMode.WORLD;
params.Transform[3] = position;
return params;
}
};
```
class GameMode_Plain1_Class: SCR_BaseGameMode
{
override void OnGameStart()
{
//SpawnUSSRGroup(500);
//SpawnUSGroup(1000);
array<SCR_AIGroup> groupsUs = {};
array<SCR_AIGroup> groupsUssr = {};
GetGame().GetCallqueue().CallLater(CheckUsGroup, true, 10000, groupsUs);
GetGame().GetCallqueue().CallLater(CheckUssrGroup, true, 10100, groupsUssr);
}
protected void CheckUsGroup(array<SCR_AIGroup> groups){
for (int i = groups.Count() - 1; i >= 0; i--){
if (!groups[i] || groups[i].GetTotalAgentCount() == 0){
groups.Remove(i);
}
}
if(groups.Count() < 5){
SpawnUSGroup(groups);
}
}
protected void CheckUssrGroup(array<SCR_AIGroup> groups){
for (int i = groups.Count() - 1; i >= 0; i--){
if (!groups[i] || groups[i].GetTotalAgentCount() == 0){
groups.Remove(i);
}
}
if(groups.Count() < 5){
SpawnUSSRGroup(groups);
}
}
protected void SpawnUSGroup(array<SCR_AIGroup> groups){
string spawnGroup = "{DDF3799FA1387848}Prefabs/Groups/BLUFOR/Group_US_RifleSquad.et";
//string waypointType = "{750A8D1695BD6998}Prefabs/AI/Waypoints/AIWaypoint_Move.et";
string waypointType = "{B3E7B8DC2BAB8ACC}Prefabs/AI/Waypoints/AIWaypoint_SearchAndDestroy.et";
IEntity spawnPosition = GetGame().GetWorld().FindEntityByName("US_AI_SpawnPoint_1");
IEntity waypointPosition = GetGame().GetWorld().FindEntityByName("USSR_AI_SpawnPoint_1");
//GetGame().GetCallqueue().CallLater(AISpawner, delay, false, spawnGroup, spawnPosition.GetOrigin(), waypointType, waypointPosition.GetOrigin());
AISpawner(groups, spawnGroup, spawnPosition.GetOrigin(), waypointType, waypointPosition.GetOrigin());
}
protected void SpawnUSSRGroup(array<SCR_AIGroup> groups){
string spawnGroup = "{E552DABF3636C2AD}Prefabs/Groups/OPFOR/Group_USSR_RifleSquad.et";
//string waypointType = "{750A8D1695BD6998}Prefabs/AI/Waypoints/AIWaypoint_Move.et";
string waypointType = "{B3E7B8DC2BAB8ACC}Prefabs/AI/Waypoints/AIWaypoint_SearchAndDestroy.et";
IEntity spawnPosition = GetGame().GetWorld().FindEntityByName("USSR_AI_SpawnPoint_1");
IEntity waypointPosition = GetGame().GetWorld().FindEntityByName("US_AI_SpawnPoint_1");
//GetGame().GetCallqueue().CallLater(AISpawner, delay, false, spawnGroup, spawnPosition.GetOrigin(), waypointType, waypointPosition.GetOrigin());
AISpawner(groups, spawnGroup, spawnPosition.GetOrigin(), waypointType, waypointPosition.GetOrigin());
}
protected void AISpawner(array<SCR_AIGroup> groups, string spawnGroup, vector spawnPosition, string waypointType, vector waypointPosition){
Resource resource = GenerateAndValidateResource(spawnGroup);
SCR_AIGroup group = SCR_AIGroup.Cast(GetGame().SpawnEntityPrefab(resource, null, GenerateSpawnParameters(spawnPosition)));
if(!group){
return;
}
CreateWaypoint(group, waypointType, waypointPosition);
groups.Insert(group);
}
protected void CreateWaypoint(SCR_AIGroup group, string waypointType, vector waypointPosition){
Resource resource = GenerateAndValidateResource(waypointType);
AIWaypoint waypoint = AIWaypoint.Cast(GetGame().SpawnEntityPrefab(resource, null, GenerateSpawnParameters(waypointPosition)));
if(!waypoint){
return;
}
group.AddWaypoint(waypoint);
}
protected Resource GenerateAndValidateResource(string resourceToLoad){
Resource resource = Resource.Load(resourceToLoad);
return resource;
}
protected EntitySpawnParams GenerateSpawnParameters(vector position){
EntitySpawnParams params = EntitySpawnParams();
params.TransformMode = ETransformMode.WORLD;
params.Transform[3] = position;
return params;
}
};
```