Hello everybody. Can anyone help me fix an issue, I have a abilty that let’s you teleport to the closest player, but if a new player has joined in the lobby, nobody can teleport to him, and the teleport will send you to the bottom of the map.
If anyone knows a fix, please let me know, Thank you
PS: It let’s me post only 1 photo, I have put the rest of the code below:
using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Verse.org/Simulation }
using { /Verse.org/Random }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
TP_to_player_device := class(creative_device):
var PlayersMap:[agent]CustomPlayer = map{}
var GlobalUserUniqueID:int = 1
@editable
P1Spawner:player_spawner_device = player_spawner_device{}
@editable
P2Spawner:player_spawner_device = player_spawner_device{}
@editable
SignalRemoteManager:signal_remote_manager_device = signal_remote_manager_device{}
@editable
Teleporter:teleporter_device = teleporter_device{}
OnBegin<override>()<suspends>:void=
P1Spawner.SpawnedEvent.Subscribe(OnPlayerSpawned)
GetPlayspace().PlayerRemovedEvent().Subscribe(OnPlayerRemoved)
SignalRemoteManager.PrimarySignalEvent.Subscribe(OnRemoteClicked)
OnRemoteClicked(Agent:agent):void=
FindClosestPlayer(Agent)
FindClosestPlayer(Agent:agent):void=
AllPlayers:[]player = GetPlayspace().GetPlayers()
var ClosestPlayer:?agent = false
var DistanceToMe:float = 100000000.0
var FoundPlayer:logic = false
for(Player:AllPlayers):
if(Player <> Agent):
if(MyFC:fort_character = Agent.GetFortCharacter[]):
if(OtherFC:fort_character = Player.GetFortCharacter[]):
MyPos:vector3 = MyFC.GetTransform().Translation
OtherPos:vector3 = OtherFC.GetTransform().Translation
TotalDistance:float = Distance(MyPos, OtherPos) / 100.0
if(TotalDistance < DistanceToMe):
set FoundPlayer = true
set DistanceToMe = TotalDistance
set ClosestPlayer = option{Player}
if(FoundPlayer = true):
if(PlayerAgent:agent = agent[ClosestPlayer?]):
if(FC:fort_character = PlayerAgent.GetFortCharacter[]):
Pos:transform = FC.GetTransform()
if(Teleporter.TeleportTo[Pos.Translation + vector3{Z:=0.0}, Pos.Rotation]):
Teleporter.Teleport(Agent)
OnPlayerSpawned(Agent:agent):void=
if(CP:CustomPlayer = PlayersMap[Agent]):
else:
NewPlayer:CustomPlayer = CustomPlayer{MyAgentObj:=Agent}
if(set PlayersMap[Agent] = NewPlayer):
NewPlayer.InitializePlayer(GlobalUserUniqueID)
set GlobalUserUniqueID += 1
OnPlayerRemoved(Player:player):void=
if(Agent:agent = agent[Player]):
if(OldCustomPlayer:CustomPlayer = PlayersMap[Agent]):
var TempAllPlayersMap:[agent]CustomPlayer = map{}
for (Key -> Value : PlayersMap, Key <> Player):
set TempAllPlayersMap = ConcatenateMaps(TempAllPlayersMap, map{Key => Value})
set PlayersMap = TempAllPlayersMap