Function not incrementing a variable, but Printing like it should.

            set AmpPlayerLevel = AmpPlayerLevel + 1
            Print("Level + 1")
type or paste code here

you would need to post more of the code to see what’s going on with it

1 Like
var AmpPlayerLevel<private> : int = 1

    var XPPlayers : [player]experience_manager = map{}

    OnBegin<override>()<suspends>:void=
        Sleep(1.0)
            if(AmpPlayerLevel = 1):
                PowerUp1()
            if(AmpPlayerLevel = 2):
                PowerUp2()
            if(AmpPlayerLevel = 3):
                PowerUp3()
            if(AmpPlayerLevel = 4):
                PowerUp4()
            if(AmpPlayerLevel = 5):
                PowerUp5()
            if(AmpPlayerLevel = 6):
                PowerUp6()
            loop:
                Sleep(1.0)
                    Print("Level={AmpPlayerLevel}")

    LevelReciever():void=
            set AmpPlayerLevel = AmpPlayerLevel + 1
            Print("Level + 1")
    LevelUp() : void =
        set CurrentXp = 0.0
        set PlayerLevel = PlayerLevel + 1
        Init(100.0 * PlayerLevel * 1.1)
        LevelTransfer()

    LevelTransfer() : void =
        GameManagerDevice := game_manager_device{}
        GameManagerDevice.LevelReciever(PlayerLevel)
        DamageAmpDevice.LevelReciever()

Sometimes it increases the value by one and fires the level 2 event, but that is rare, once every 10 plays. BUT it only increases the value by +1 so level 2, then get’s stuck again?

It’s still really hard to follow what’s going on with this code, I don’t see how much of it connects with each other.

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/UI }
using { /Fortnite.com/UI }
using { /UnrealEngine.com/Temporary/SpatialMath}
using { /Verse.org/Colors }
using { /Verse.org/Colors/NamedColors }

experience_manager := class():
    Player:player
    
    DamageAmpDevice : damage_amp_device = damage_amp_device{}
    var TotalXp<private> : float = 1000.0
    var CurrentXp<private> : float = 0.0
    var PlayerLevel<public> : int = 1
    var LevelWidget:text_block = text_block{DefaultTextColor := color{R:= 255.0, G:= 255.0, B:=255.0}}
    var XpBarColorTop<private> : color_block = color_block{}
    var Overlay<private> : overlay = overlay{}

    XpBarColorBase<private> : color_block = color_block{
        DefaultColor := MakeColorFromHex("3D3D3D")
        DefaultDesiredSize := vector2{X:= 640.0, Y := 36.0}}

    XpBarTitleTextBlock<private>:text_block=text_block{DefaultTextColor:=MakeColorFromHex("FFFFFF")}

    XpTitleText<private><localizes>(XpText : string) : message = "{XpText}"

    Init(LevelTotalXp: float) : void=
        set TotalXp = LevelTotalXp
        set CurrentXp = 0.0
        XpBarTitleTextBlock.SetText(XpTitleText("Experience: {CurrentXp}/{TotalXp}"))

    GainXp(XpAmount : float) : void =
        set CurrentXp += XpAmount
        if (CurrentXp >= TotalXp):
            LevelUp() 
        XpPercentage := CurrentXp / TotalXp
        BarSize := XpBarColorBase.GetDesiredSize()
        NewXpBarWidth := BarSize.X * XpPercentage
        if (Current := Int[CurrentXp], Total := Int[TotalXp]):
            XpBarTitleTextBlock.SetText(XpTitleText("Experience: {Current}/{Total}"))
        UpdateXpBar(NewXpBarWidth)

    LevelUp() : void =
        set CurrentXp = 0.0
        set PlayerLevel = PlayerLevel + 1
        Init(100.0 * PlayerLevel * 1.1)
        LevelTransfer()

    LevelTransfer() : void =
        GameManagerDevice := game_manager_device{}
        GameManagerDevice.LevelReciever(PlayerLevel)
        DamageAmpDevice.LevelReciever()
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Verse.org/Colors }
using { /Verse.org/Verse }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Fortnite.com/UI }
using { /Fortnite.com/Characters }
using { /UnrealEngine.com/Temporary/UI }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org/Simulation }
using { /Verse.org/Simulation/Tags }

damage_amp_device := class(creative_device):

    @editable DamageAmpDev1 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev2 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev3 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev4 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev5 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev6 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev7 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev8 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev9 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev10 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev11 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev12 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev13 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev14 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev15 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev16 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev17 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev18 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev19 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}

    @editable DamageAmpDev20 : damage_amplifier_powerup_device = damage_amplifier_powerup_device {}
    
    var AmpPlayerLevel<private> : int = 1

    var XPPlayers : [player]experience_manager = map{}

    OnBegin<override>()<suspends>:void=
        Sleep(1.0)
            if(AmpPlayerLevel = 1):
                PowerUp1()
            if(AmpPlayerLevel = 2):
                PowerUp2()
            if(AmpPlayerLevel = 3):
                PowerUp3()
            if(AmpPlayerLevel = 4):
                PowerUp4()
            if(AmpPlayerLevel = 5):
                PowerUp5()
            if(AmpPlayerLevel = 6):
                PowerUp6()
            loop:
                Sleep(1.0)
                    Print("Level={AmpPlayerLevel}")

Where would AmpPlayerLevel get incremented in this?

First code block

var AmpPlayerLevel<private> : int = 1 <- INCREMENT HERE

    var XPPlayers : [player]experience_manager = map{}

    OnBegin<override>()<suspends>:void=
        Sleep(1.0)
            if(AmpPlayerLevel = 1):
                PowerUp1()
            if(AmpPlayerLevel = 2):
                PowerUp2()
            if(AmpPlayerLevel = 3):
                PowerUp3()
            if(AmpPlayerLevel = 4):
                PowerUp4()
            if(AmpPlayerLevel = 5):
                PowerUp5()
            if(AmpPlayerLevel = 6):
                PowerUp6()

But that’s just where the variable is stored, where does the variable get changed?

Expanded view.

    var AmpPlayerLevel<private> : int = 1

    var XPPlayers : [player]experience_manager = map{}

    OnBegin<override>()<suspends>:void=
        Sleep(1.0)
            if(AmpPlayerLevel = 1):
                PowerUp1()
            if(AmpPlayerLevel = 2):
                PowerUp2()
            if(AmpPlayerLevel = 3):
                PowerUp3()
            if(AmpPlayerLevel = 4):
                PowerUp4()
            if(AmpPlayerLevel = 5):
                PowerUp5()
            if(AmpPlayerLevel = 6):
                PowerUp6()
            loop:
                Sleep(1.0)
                    Print("Level={AmpPlayerLevel}")

    LevelReciever():void=
            set AmpPlayerLevel = AmpPlayerLevel + 1 <- HERE
            Print("Level + 1")

Try set AmpPlayerLevel += 1. It’s the same goal, but written the standard cleaner way. Technically your method should work but I have never tried.

1 Like

Replicate your issue in an isolated example. In doing that you will probably figure out what you’ve messed up, and if you don’t, you’ll have something you can put in a bug report instead.

1 Like

I have change around the code a little bit, now instead calling the function to apply the damage modifier from the experience_manager. I get it to print all of the different Damage Amp Levels, but I can’t for the life of me get it to pick up the effect.
But it picks up on the OnBegin call. :thinking:

    LevelUp() : void =
        set CurrentXp = 0.0
        set PlayerLevel = PlayerLevel + 1
        Init(100.0 * PlayerLevel * 1.1)
        LevelTransfer()
    

    LevelTransfer() : void =
        if(PlayerLevel = 2):
            DamageAmpDevice.PowerUp2()
        if(PlayerLevel = 3):
            DamageAmpDevice.PowerUp3()
        if(PlayerLevel = 4):
            DamageAmpDevice.PowerUp4()  
 OnBegin<override>()<suspends>:void=
        DamageAmpDev1.Pickup()

    PowerUp2(): void =
        DamageAmpDev2.Pickup()
        Print("Damage Amp 2 Picked up!")
    
    PowerUp3(): void =
        DamageAmpDev3.Pickup()
        Print("Damage Amp 3 Picked up!")

    PowerUp4(): void =
        DamageAmpDev4.Pickup()
        Print("Damage Amp 4 Picked up!")

I also use this at the top of the experience_manager

experience_manager := class(): 
    Player:player

Solved with tags.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.