I have the following script, , but when I run the game, I get this error, but the script does get compiled with any errors
Script Error
Error in method 'ActivateTheGunner(CreateTriggerArgs)' in map script. See the exception for more details:
--- Exception ---
Object reference not set to an instance of an object.
System.NullReferenceException: Object reference not set to an instance of an object.
at SFDScript.GameScript.ActivateTheGunner(TriggerArgs args)
Code: Select all
public void ActivateTheGunner(TriggerArgs args)
{
IObject Gunner_ID = Game.GetSingleObjectByCustomID("The_Gunner")
IPlayer TheGunner = Game.GetPlayer(Gunner_ID.UniqueId)
IPlayer[] Enemies = new IPlayer[] { }
int i = 0; // used for enemy array
foreach(IPlayer plyr in Game.GetPlayers())
{
PlayerTeam Plyr_team = plyr.GetTeam()
if (Plyr_team != TheGunner.GetTeam())
{
Enemies[i] = plyr
i++
}
}
Vector2 Gunner_Position = TheGunner.GetWorldPosition()
Enemy2Attack(Enemies, Gunner_Position)
}
public void Enemy2Attack(IPlayer[] Enemies, Vector2 Gunner_Position)
{
Vector2[] Enemy_Position = new Vector2[] { }
int i = 0 // used for enemy postiion array
IPlayer enemy2Attack = Enemies[i]
Vector2[] distances = new Vector2[] { }
foreach(IPlayer plyr in Enemies)
{
Enemy_Position[i] = plyr.GetWorldPosition()
distances[i] = new Vector2(Vector2.Distance(Enemy_Position[i], Gunner_Position))
i++
}
Vector2 A, B, C
int D = 0
A = distances[0]
for (int p = 0; p < distances.Length - 1; p++)
{
A = distances[0]
B = distances[p]
if (Vector2.Min(A,B) == A)
{
enemy2Attack = Enemies[0]
D = 0
}
else
{
A = distances[p]
enemy2Attack = Enemies[p]
D = p
}
}
Attack_Enemy(enemy2Attack, Enemy_Position[D])
}
public void Attack_Enemy(IPlayer Enemy2Attack, Vector2 Enemy_Position)
{
PlayerCommandType Run = PlayerCommandType.Run
PlayerCommand run2Enemy = new PlayerCommand(Run, Enemy_Position)
}
here is a picture of my map editor if it might help
Picture in map editor