Removing UI Widget(Pls Help)

Can someone Tellme how i can Remove The Widget from the PlayerUi because evertime i try to do it it doesnt go away:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Verse.org/Random }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Game }
using { /UnrealEngine.com/Temporary/UI }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Fortnite.com/UI }
using { /Verse.org/Colors/NamedColors }

ToMessage(Text: string):message=“{Text}”

See Create Your Own Device Using Verse in Unreal Editor for Fortnite | Unreal Editor for Fortnite Documentation | Epic Developer Community for how to create a verse device.

MakePlayerStatsTableQuest(OldTable:CustomPlayer) := CustomPlayer:
PlayerKills := OldTable.PlayerKills
PlayerDeaths :=OldTable.PlayerDeaths
PlayerPoints :=OldTable.PlayerPoints
PlayerRank :=OldTable.PlayerRank
DailyKills:=OldTable.DailyKills
Quest:=OldTable.Quest

A Verse-authored creative device that can be placed in a level

DailyQuest := class(creative_device):
@editable Spawner : player_spawner_device= array{}
@editable Button : button_device = button_device{}
var QuestBackground: texture_block = texture_block{DefaultImage:= Quest_UI.Quest_Complete_Graphic}
var Text : text_block = text_block{DefaultTextColor:= White}
var QuestCanvas : canvas = canvas{}
var ResourceTextBlockPerAgent : [player]?text_block = map{}

var MaybeMyUIPerPlayer : [player]?canvas = map{}
# Runs when the device is started in a running game
OnBegin<override>()<suspends>:void=
    Button.InteractedWithEvent.Subscribe(PrintStats)
    for(S : Spawner):
        S.SpawnedEvent.Subscribe(OnPlayerSpawn)
    

OnPlayerSpawn(Agent:agent):void=
    if(Player:=player[Agent]):
        RollNewQuest(Player)
        if(FC:=Player.GetFortCharacter[]):
            spawn:
                AwaitElimi(FC)
        spawn:
            PlayTimeProgression(Player)
Elimination(Agent:agent):void=
    if(FC:=Agent.GetFortCharacter[]):
        spawn:
            AwaitElimi(FC)

RollNewQuest(Player:player):void=
    if(Stats:=PlayerStatsMap[Player]):
        CheckQuest:= Stats.Quest
        if(CheckQuest=0):
            Quest:= GetRandomInt(5,7)
            if:
                PlayerStats:=PlayerStatsMap[Player]
                CurrentQuest:=PlayerStats.Quest
                set PlayerStatsMap[Player] = CustomPlayer:
                    MakePlayerStatsTableQuest<constructor>(PlayerStats)
                    Quest := Quest
            then:
                InitUI(Player)
                Print("Initilized UI")

        else:
            Print("Player already has Quest NR: {Stats.Quest}")
            InitUI(Player)
            Print("Initilizing UI RN")
PrintStats(Agent:agent):void=
    if(Player:=player[Agent]):
        if(Stats:= PlayerStatsMap[Player]):
            Print("Player has gotten Quest NR{Stats.Quest}")
            Print("Player has {Stats.DailyKills} Daily Kills!")
            Print(" Players Daily PlayTime is {Stats.DailyPlayTime}")
            
            

QuestProgression(Player:player):void=
    Print("Quest Progression Started")
    if(Stats:= PlayerStatsMap[Player]):
        CurrentQuest:= Stats.Quest
        OldKills:= Stats.DailyKills
        Print("CurrentQuest: {CurrentQuest}")
        Print("CurrentKills: {OldKills}")
        if(CurrentQuest=1):
            Print("first One Succes full!")
            if(OldKills<=13):
                Print("Second One Succes full!")
                if:
                    PlayerStats:=PlayerStatsMap[Player]
                    DailyKills:=PlayerStats.DailyKills +1
                    set PlayerStatsMap[Player] = CustomPlayer:
                        MakePlayerStatsTableQuest<constructor>(PlayerStats)
                        DailyKills := DailyKills 
                    Print("EichelKaswEichelKaswEichelKaswEichelKaswEichelKaswEichelKaswEichelKaswEichelKasw")
                then:
                    InitUI(Player)
            else if(OldKills= 14):
                ResetQuestProgression(Player)

        else if(CurrentQuest=2):
            if(OldKills<=8):
                if:
                    PlayerStats:=PlayerStatsMap[Player]
                    CurrentKills:=PlayerStats.DailyKills
                    set PlayerStatsMap[Player] = CustomPlayer:
                        MakePlayerStatsTableQuest<constructor>(PlayerStats)
                        DailyKills := CurrentKills +1
                then:
                    InitUI(Player)
            else if(OldKills=9):
                ResetQuestProgression(Player)

        else if(CurrentQuest=3):
            if(OldKills<=3):
                if:
                    PlayerStats:=PlayerStatsMap[Player]
                    CurrentKills:=PlayerStats.DailyKills
                    set PlayerStatsMap[Player] = CustomPlayer:
                        MakePlayerStatsTableQuest<constructor>(PlayerStats)
                        DailyKills := CurrentKills +1
                then:
                    InitUI(Player)
            else if(OldKills=4):
                ResetQuestProgression(Player)

        else if(CurrentQuest=4):
            if(OldKills<=18):
                if:
                    PlayerStats:=PlayerStatsMap[Player]
                        CurrentKills:=PlayerStats.DailyKills
                        set PlayerStatsMap[Player] = CustomPlayer:
                            MakePlayerStatsTableQuest<constructor>(PlayerStats)
                            DailyKills := CurrentKills +1 
                then:
                    InitUI(Player)  
            else if(OldKills=19):
                ResetQuestProgression(Player)                 
ResetQuestProgression(Player:player):void=
    if:
        PlayerStats:=PlayerStatsMap[Player]
        CurrentKills:=PlayerStats.DailyKills
        Quest:= PlayerStats.Quest
        DailyPlayTime:= PlayerStats.DailyPlayTime
        set PlayerStatsMap[Player] = CustomPlayer:
            MakePlayerStatsTableQuest<constructor>(PlayerStats)
            DailyKills := CurrentKills - CurrentKills
            Quest:= Quest - Quest
            DailyPlayTime:= DailyPlayTime - DailyPlayTime
    then:
        Print("Quest finished!")
        Print("Kills Reseted Current Quest Kills : {PlayerStats.DailyKills}")
        Print("Quest Reseted Current Quest : {PlayerStats.Quest}")
            Print("Removed Widget while Resetting!!")
            RollNewQuest(Player)

AwaitElimi(FortCharacter : fort_character)<suspends>: void=
    Print("Awaiting Kill")
    Result := FortCharacter.EliminatedEvent().Await()
    OnEliminaion(Result)   
    
OnEliminaion(ElimResult : elimination_result):void=
    Print("Kill received")
    EliminatedCharacter := ElimResult.EliminatedCharacter
    MaybeEliminatingCharacter := ElimResult.EliminatingCharacter
    

    if:
        EliminatingCharacter := MaybeEliminatingCharacter?
        EliminatingCharacter <> EliminatedCharacter
        Agent := EliminatingCharacter.GetAgent[]
        Player := player[Agent]    
    then:
        Print("Ready for Quest Progression")
        QuestProgression(Player)

PlayTimeProgression(Player:player)<suspends>:void=
    loop:
        Sleep(5.0)
        if(Stats:= PlayerStatsMap[Player]):
            OldPlayTime:= Stats.DailyPlayTime
            Quest:= Stats.Quest
            if(Quest= 5):
                if(OldPlayTime<=3):
                    if:
                        PlayerStats:=PlayerStatsMap[Player]
                            CurrentPlayTime:=PlayerStats.DailyPlayTime
                            set PlayerStatsMap[Player] = CustomPlayer:
                                MakePlayerStatsTableQuest<constructor>(PlayerStats)
                                DailyPlayTime := CurrentPlayTime +1   
                    then:
                        
                else if(OldPlayTime=4):
                    ResetQuestProgression(Player)
            else if(Quest= 6):
                if(OldPlayTime<=8):
                    if:
                        PlayerStats:=PlayerStatsMap[Player]
                            CurrentPlayTime:=PlayerStats.DailyPlayTime
                            set PlayerStatsMap[Player] = CustomPlayer:
                                MakePlayerStatsTableQuest<constructor>(PlayerStats)
                                DailyPlayTime := CurrentPlayTime +1
                    then:
                           
                else if(OldPlayTime=9):
                    ResetQuestProgression(Player)
            else if(Quest= 7):
                if(OldPlayTime<=13):
                    if:
                        PlayerStats:=PlayerStatsMap[Player]
                            CurrentPlayTime:=PlayerStats.DailyPlayTime
                            set PlayerStatsMap[Player] = CustomPlayer:
                                MakePlayerStatsTableQuest<constructor>(PlayerStats)
                                DailyPlayTime := CurrentPlayTime +1
                    then:
                          
                else if(OldPlayTime=14):
                    ResetQuestProgression(Player)

CreateUI(Player:player,Goal:int): canvas=
    Stats:= GetStats(Player)
    Quest:= Stats.Quest
    PlayTime:= Stats.DailyPlayTime
    Kills:= Stats.DailyKills
    var Amount : int=0
    var Task : string = ""
    if(Quest<=4):
        set Amount = Kills
    else:
        set Amount = PlayTime
    if(Quest<=4):
        set Task = "Get {Goal} Kills"
    else :
        set Task = "Play for {Goal} minutes"
    
        
    NewUi:= canvas:
        Slots:= array:
            canvas_slot:
                Anchors:= anchors{Minimum:= vector2{X:=0.5, Y:= 0.5}, Maximum:=vector2{X:=0.5, Y:= 0.5}}
                Offsets:= margin{Left:=-960.960938, Top:=-508.540527, Right:= 516.416443, Bottom:=134.094086}
                Alignment:= vector2{X:=0.0, Y:=0.0}
                ZOrder:= 0
                SizeToContent:= false
                Widget:= QuestBackground
            canvas_slot:
                Anchors:= anchors{Minimum:= vector2{X:=0.5, Y:= 0.5}, Maximum:=vector2{X:=0.5, Y:= 0.5}}
                Offsets:= margin{Left:=-960.960938, Top:=-508.540527, Right:= 516.416443, Bottom:=134.094086}
                Alignment:= vector2{X:=0.0, Y:=0.0}
                ZOrder:= 0
                SizeToContent:= false
                Widget:= text_block:
                    DefaultTextColor:= White
                    DefaultText:= ToMessage("{Task}: {Amount}/{Goal}")
    return NewUi
            
        
Cheese(Player:player,Goal:int):void=
    
    var NewUi :DailyQuest=DailyQuest{}
    NewUi.UpdateUI(Player,Goal)


UpdateUI(Player:player,Goal:int): void=
    
    if(PlayerUI := GetPlayerUI[Player]):
        NewUI:= CreateUI(Player,Goal)
        PlayerUI.RemoveWidget(QuestCanvas)
        set QuestCanvas = CreateUI(Player,Goal)
        PlayerUI.AddWidget(QuestCanvas)   
GetStats(Player:player):CustomPlayer = 
    PlayerStatsMap[Player] or CustomPlayer{}

InitUI(Player:player):void=
    if(Stats:= PlayerStatsMap[Player]):
        Quest:= Stats.Quest
        if(PlayerUI:= GetPlayerUI[Player]):
            PlayerUI.RemoveWidget(QuestBackground)
            
            Print("Removed Widget!!")
            if(Quest=1):
                Cheese(Player,15)
            else if(Quest =2):
                Cheese(Player,10)
            else if(Quest =3):
                Cheese(Player,5)
            else if(Quest =4):
                Cheese(Player,20)
            else if(Quest =5):
                Cheese(Player,5)
            else if(Quest =6):
                Cheese(Player,10)
            else if(Quest =7):
                Cheese(Player,15)

i think this is difficult

1 Like

You’re doing PlayerUI.AddWidget(QuestCanvas) so you need to retrieve the player added QuestCanvas and remove it and not QuestBackground