[HELP] How to Normalize Player Stats on a Custom Map + Add Last Player Alive Reward System?

Kamus Dev

Pirate
Registered
LV
0
 
Joined
May 16, 2026
Messages
7
Reaction score
0
Points
3
Hi everyone, I'm new here and I have a question. I added a new map to my server, the Zoldyck map, but I want all players to have the same attack stats. For example, whoever enters will always have the same stat, 12k attack, you know? I'd like to know how I could do that, and how I could add a reward code so the last player alive gets something they can exchange later.
 
HI, paste this in function lua
JavaScript:
if Zoldyck == nil then
    Zoldyck                                             = {}
    Zoldyck.Conf                                         = {}
    Zoldyck.Conf.Balance                                = {}
    
end


-- Balance for classes in map (Gems and equipment will make no difference).
Zoldyck.Conf.Balance[8]     = {Max = {HP = 150000, SP = 3000}, Attack = {Min = 1700, Max = 2000, Speed = 1200},     Defense = 380, PhysicalResist = 40, HitRate = 300, Dodge = 300, Critical = 15, Recovery = {HP = 56, SP = 2},  MoveSpeed = 3050}
Zoldyck.Conf.Balance[9]     = {Max = {HP = 100000, SP = 3000}, Attack = {Min = 1900, Max = 2200, Speed = 1200},     Defense = 380, PhysicalResist = 40, HitRate = 300, Dodge = 300, Critical = 15, Recovery = {HP = 31, SP = 3},  MoveSpeed = 3050}
Zoldyck.Conf.Balance[10]     = {Max = {HP = 150000, SP = 3000}, Attack = {Min = 1700, Max = 2000, Speed = 1200},     Defense = 380, PhysicalResist = 40, HitRate = 300, Dodge = 300, Critical = 15, Recovery = {HP = 56, SP = 2},  MoveSpeed = 3050}
Zoldyck.Conf.Balance[12]    = {Max = {HP = 120000, SP = 3000}, Attack = {Min = 1700, Max = 1900, Speed = 700},     Defense = 380, PhysicalResist = 40, HitRate = 320, Dodge = 280, Critical = 15, Recovery = {HP = 34, SP = 1},  MoveSpeed = 3050}
Zoldyck.Conf.Balance[13]    = {Max = {HP = 60000, SP = 80000}, Attack = {Min = 1500, Max = 1700, Speed = 200},     Defense = 380, PhysicalResist = 40, HitRate = 300, Dodge = 300, Critical = 15, Recovery = {HP = 42, SP = 19}, MoveSpeed = 3050}
Zoldyck.Conf.Balance[14]    = {Max = {HP = 140000, SP = 50000}, Attack = {Min = 1500, Max = 1700, Speed = 200},     Defense = 380, PhysicalResist = 40, HitRate = 300, Dodge = 300, Critical = 15, Recovery = {HP = 42, SP = 19}, MoveSpeed = 3050}
Zoldyck.Conf.Balance[16]    = {Max = {HP = 120000, SP = 50000}, Attack = {Min = 1500, Max = 1700, Speed = 200},     Defense = 380, PhysicalResist = 40, HitRate = 300, Dodge = 300, Critical = 15, Recovery = {HP = 42, SP = 19}, MoveSpeed = 3050}



-- Calculating custom balance  map.
Zoldyck.MapBalance                                        = function(Player)
    local Modifier1                                 = {Max = {HP = 1, SP = 1}, Attack = {Min = 1, Max = 1, Speed = 1}, Defense = 1, PhysicalResist = 1, HitRate = 1, Dodge = 1, Critical = 1, Recovery = {HP = 1, SP = 1}, MoveSpeed = 1}
    if (GetChaMapName(Player) == "Your map name here") then
        local Job                                     = GetChaAttr(Player, ATTR_JOB)
        if Job ~= nil then
            Modifier1.Max.HP                        = Zoldyck.Conf.Balance[Job].Max.HP
            Modifier1.Max.SP                        = Zoldyck.Conf.Balance[Job].Max.SP
            Modifier1.Attack.Min                    = Zoldyck.Conf.Balance[Job].Attack.Min
            Modifier1.Attack.Max                    = Zoldyck.Conf.Balance[Job].Attack.Max
            Modifier1.Attack.Speed                    = Zoldyck.Conf.Balance[Job].Attack.Speed
            Modifier1.Defense                        = Zoldyck.Conf.Balance[Job].Defense
            Modifier1.PhysicalResist                = Zoldyck.Conf.Balance[Job].PhysicalResist
            Modifier1.HitRate                        = Zoldyck.Conf.Balance[Job].HitRate
            Modifier1.Dodge                            = Zoldyck.Conf.Balance[Job].Dodge
            Modifier1.Critical                        = Zoldyck.Conf.Balance[Job].Critical
            Modifier1.Recovery.HP                    = Zoldyck.Conf.Balance[Job].Recovery.HP
            Modifier1.Recovery.SP                    = Zoldyck.Conf.Balance[Job].Recovery.HP
            Modifier1.MoveSpeed                        = Zoldyck.Conf.Balance[Job].MoveSpeed
        end
        local MXHP                                    = Modifier1.Max.HP
        local MXSP                                    = Modifier1.Max.SP
        local MNATK                                    = Modifier1.Attack.Min
        local MXATK                                    = Modifier1.Attack.Max
        local DEF                                    = Modifier1.Defense       
        local PR                                    = Modifier1.PhysicalResist       
        local HIT                                    = Modifier1.HitRate       
        local DODGE                                    = Modifier1.Dodge       
        local MF                                    = Mf_final(Player)
        local CRIT                                    = Crt_final(Player)   
        local HPREC                                    = Hrec_final(Player)
        local SPREC                                    = Srec_final(Player)
        local ADIS                                    = Adis_final(Player)
        local MSPD                                    = Modifier1.MoveSpeed       
        local ASPD                                    = math.floor(100000/Modifier1.Attack.Speed)
    
        SetCharaAttr(MXHP, Player, ATTR_MXHP)
        SetCharaAttr(MXSP, Player, ATTR_MXSP)
        SetCharaAttr(MNATK, Player, ATTR_MNATK)
        SetCharaAttr(MXATK, Player, ATTR_MXATK)
        SetCharaAttr(DEF, Player, ATTR_DEF)       
        SetCharaAttr(PR, Player, ATTR_PDEF)       
        SetCharaAttr(HIT, Player, ATTR_HIT)       
        SetCharaAttr(DODGE, Player, ATTR_FLEE)       
        SetCharaAttr(MF, Player, ATTR_MF)       
        SetCharaAttr(CRIT, Player, ATTR_CRT)       
        SetCharaAttr(HPREC, Player, ATTR_HREC)       
        SetCharaAttr(SPREC, Player, ATTR_SREC)       
        SetCharaAttr(ADIS, Player, ATTR_ADIS)
        SetCharaAttr(MSPD, Player, ATTR_MSPD)       
        SetCharaAttr(ASPD, Player, ATTR_ASPD)
    end           
end

Look for this function "function ExAttrSet" in attrcalculate.lua and finally you paste this
JavaScript:
            if (IsPlayer(role) == 1) then
                Zoldyck.MapBalance(role)
            end
 
  • Like
Reactions: zLuke