using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/UI }
using { /Verse.org/Colors }
using { /Fortnite.com/UI }
using { /UnrealEngine.com/Temporary/SpatialMath }
Helper function to convert string to message
StringToMessage(InString: string) : message = “{InString}”
vault_room_manager := class(creative_device):
@editable
VaultBarrier : barrier_device = barrier_device {}
@editable
OpenVaultTimer : timer_device = timer_device {}
@editable
CloseVaultTimer : timer_device = timer_device {}
var ActivePlayers : [player]logic = map{}
var OpenVaultTimerText : ?text_block = false
var CloseVaultTimerText : ?text_block = false
# Runs when the device is started in a running game
OnBegin<override>()<suspends>:void=
# TODO: Replace this with your code
OpenVaultTimer.SuccessEvent.Subscribe(ONOpenVaultTimerComplete)
CloseVaultTimer.SuccessEvent.Subscribe(ONCloseVaultTimerComplete)
GetPlayspace().PlayerAddedEvent().Subscribe(OnPlayerAdded)
for (Player : GetPlayspace().GetPlayers()):
if (PlayerUI := GetPlayerUI[Player]):
CreateOpenVaultTimerHUD(PlayerUI)
CreateCloseVaultTimerHUD(PlayerUI)
OnPlayerAdded(Player)
CreateOpenVaultTimerHUD(PlayerUI : player_ui) : void =
OpenVaultText := text_block{
DefaultText := StringToMessage("Open Vault Timer: 00:00"),
DefaultTextColor := NamedColors.White,
DefaultJustification := text_justification.Left
}
set OpenVaultTimerText = option{OpenVaultText}
OpenVaultSlot := player_ui_slot{
ZOrder := 0
}
PlayerUI.AddWidget(OpenVaultText, OpenVaultSlot)
CreateCloseVaultTimerHUD(PlayerUI : player_ui) : void =
CloseVaultText := text_block{
DefaultText := StringToMessage("Close Vault Timer: 00:00"),
DefaultTextColor := NamedColors.White,
DefaultJustification := text_justification.Left
}
set CloseVaultTimerText = option{CloseVaultText}
CloseVaultSlot := player_ui_slot{
ZOrder := 0
}
PlayerUI.AddWidget(CloseVaultText, CloseVaultSlot)
UpdateTimerText(TimerText : text_block, TimeRemaining : float) : void =
if (Minutes := Floor[TimeRemaining / 60.0]):
if (Seconds := Floor[TimeRemaining - (Minutes * 60.0)]):
TimerText.SetText(StringToMessage("{Minutes}:{Seconds}"))
OnPlayerAdded(Player : player) : void =
if (set ActivePlayers[Player] = true):
StartOpenVaultTimer(Player)
StartOpenVaultTimer(Player : player) : void =
if (ActivePlayers[Player]):
OpenVaultTimer.Start(Player)
StartCloseVaultTimer(Player : player) : void =
if (ActivePlayers[Player]):
CloseVaultTimer.Start(Player)
ONOpenVaultTimerComplete(Agent : ?agent) : void =
if (Player := player[Agent?]):
VaultBarrier.Disable()
StartCloseVaultTimer(Player)
if (Text := OpenVaultTimerText?):
Text.SetText(StringToMessage("Vault Opened!"))
ONCloseVaultTimerComplete(Agent : ?agent) : void =
if (Player := player[Agent?]):
VaultBarrier.Enable()
StartOpenVaultTimer(Player)
if (Text := CloseVaultTimerText?):
Text.SetText(StringToMessage("Vault Closed!"))
OnPlayerRemoved(Player : player) : void =
if (set ActivePlayers[Player] = false):
Print("Stopped tracking player")
I can’t figure out how to fix the StringToMessage errors. If anyone can help I would greatly appreciate it