Trying to create simple map with spawning AI squads, it's working but what is seriously annoying is when returning from playtest editor always crashed - also it would be nice to have feature that when u press Play in editor, it will automatically save everything - before launch so in case of crash loss is prevented.
Description
Description
Details
Details
- Severity
- None
- Resolution
- Open
- Reproducibility
- N/A
- Operating System
- Windows 10 x64
- Category
- General
Steps To Reproduce
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; } };
Event Timeline
Comment Actions
Hello cute_matt.
We have tested the script provided and it doesn't crash workbench on our side.
We will need the callstack you are getting to possibly investigate further.
Thank you!