Available double xp notice message

Unpaid Requests, Public Plugins
Post Reply
czirimbolo
Veteran Member
Veteran Member
Poland
Posts: 598
Joined: 7 years ago
Contact:

double xp notice message

#1

Post by czirimbolo » 5 years ago

Raheem, can you add double xp and chat message about it to my level_system ? I dont wanna make a mess in other thread:

Code: Select all

#include <zombie_escape>
 
// Defines
#define MAX_LEVEL 50
#define MAX_XP 500000
#define TASK_SHOWHUD 2020
#define ID_SHOWHUD (taskid - TASK_SHOWHUD)
#define LEVELUP "levelup_ZE/ze_levelup.wav"
 
// Constants
new const g_szLevelsVault[] = "Levels"
new const g_szRanksVault[] = "Ranks"
 
// Messages
const Float:HUD_SPECT_X = -1.0
const Float:HUD_SPECT_Y = 0.70
const Float:HUD_STATS_X = -1.0
const Float:HUD_STATS_Y = 0.90
 
const HUD_STATS_ZOMBIE_R = 200
const HUD_STATS_ZOMBIE_G = 220
const HUD_STATS_ZOMBIE_B = 0
 
const HUD_STATS_HUMAN_R = 0
const HUD_STATS_HUMAN_G = 200
const HUD_STATS_HUMAN_B = 210
 
const HUD_STATS_SPEC_R = 100
const HUD_STATS_SPEC_G = 100
const HUD_STATS_SPEC_B = 100
 
// Variables
new g_iLevel[33],
    g_iXP[33],
    g_iMaxXP[33],
    Float:g_fDamage[33],
    g_MsgSync,
    g_iLevelsVaultHandle,
    g_iRanksVaultHandle,
    bool:g_bIsDoubleHours
 
// Cvars
new g_pCvarZombieInfect,
    g_pCvarEscapeSuccess,
    g_pCvarEnableDamage,
    g_pCvarRequiredDamage,
    g_pCvarDamageAward,
    g_pCvarStartXP,
    g_pCvarMaxLevelsIncrement,
    g_pCvarMaxXPFirstLevel,
    g_pCvarPercentageStyle,
    g_pCvarStartFromZero,
    g_pCvarAddCommas,
    g_pCvarLevelEffects,
    g_pCvarDoubleXP
 
public plugin_natives()
{
    register_native("ze_get_user_xp", "native_ze_get_user_xp", 1)
    register_native("ze_set_user_xp", "native_ze_set_user_xp", 1)
    register_native("ze_get_user_level", "native_ze_get_user_level", 1)
    register_native("ze_set_user_level", "native_ze_set_user_level", 1)
    register_native("ze_get_user_max_xp", "native_ze_get_user_max_xp", 1)
    register_native("ze_set_user_max_xp", "native_ze_set_user_max_xp", 1)
}
 
public plugin_precache()
{
    precache_sound(LEVELUP)
}
 
public plugin_init()
{
    register_plugin("[ZE] Level-XP System", "1.8", "Raheem/JaCk")
   
    // Hook Chains
    RegisterHookChain(RG_CBasePlayer_TakeDamage, "Fw_TakeDamage_Post", 1)
   
    // Cvars
    g_pCvarZombieInfect = register_cvar("ze_zombie_infect", "3")
    g_pCvarEscapeSuccess = register_cvar("ze_escape_success", "5")
    g_pCvarEnableDamage = register_cvar("ze_enable_dmg", "1")
    g_pCvarRequiredDamage = register_cvar("ze_required_dmg", "50.0")
    g_pCvarDamageAward = register_cvar("ze_dmg_award", "3")
    g_pCvarStartXP = register_cvar("ze_start_xp", "50")
    g_pCvarMaxLevelsIncrement = register_cvar("ze_maxlevels_increment", "2.0")
    g_pCvarMaxXPFirstLevel = register_cvar("ze_max_xp_first_level", "100")
    g_pCvarPercentageStyle = register_cvar("ze_enable_percentage_style", "1")
    g_pCvarStartFromZero = register_cvar("ze_new_level_zero_xp", "0")
    g_pCvarAddCommas = register_cvar("ze_add_commas_to_xp", "1")
    g_pCvarLevelEffects = register_cvar("ze_level_up_effects", "1")
    g_pCvarDoubleXP = register_cvar("ze_double_xp", "9-12")
   
    // Messages
    g_MsgSync = CreateHudSyncObj()
}
 
public client_putinserver(id)
{
    if(is_user_hltv(id) || is_user_bot(id))
        return
   
    // Just 1 second delay
    set_task(1.0, "DelayLoad", id)
 
    // Other tasks
    set_task(1.0, "Show_Hud", id+TASK_SHOWHUD, _, _, "b")
    set_task(0.1, "Check_MaxXP", id, _, _, "b")
}
 
public DelayLoad(id)
{
    // Load his data
    LoadData(id)
}
 
public client_disconnected(id)
{
    if(is_user_hltv(id) || is_user_bot(id))
        return
       
    remove_task(id+TASK_SHOWHUD)
    remove_task(id)
}
 
public Check_MaxXP(id)
{
    new iCurrentMaxXP = g_iMaxXP[id]
   
    new iMaxXP = get_pcvar_num(g_pCvarMaxXPFirstLevel)
   
    for (new i = 1; i <= g_iLevel[id]; i++)
    {
        iMaxXP = floatround(float(iMaxXP) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
    }
   
    if (iCurrentMaxXP != iMaxXP)
    {
        g_iMaxXP[id] = iMaxXP
    }
}
 
public Show_Hud(taskid)
{  
    new iPlayer = ID_SHOWHUD
   
    if (!is_user_alive(iPlayer))
    {
        iPlayer = pev(iPlayer, pev_iuser2)
       
        if (!is_user_alive(iPlayer))
            return
    }
   
    if (get_pcvar_num(g_pCvarPercentageStyle) != 0)
    {
        if(iPlayer != ID_SHOWHUD)
        {
            set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
            ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[iPlayer], (float(g_iXP[iPlayer])/float(g_iMaxXP[iPlayer])) * 100.0)
        }
        else if (ze_is_user_zombie(iPlayer))
        {
            set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
            ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
        }
        else
        {
            set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
            ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
        }
    }
    else
    {
        if(iPlayer != ID_SHOWHUD)
        {
            if (get_pcvar_num(g_pCvarAddCommas) == 1)
            {
                new szSpecXP[15], szSpecMaxXP[15]
               
                AddCommas(g_iXP[iPlayer], szSpecXP, charsmax(szSpecXP))
                AddCommas(g_iMaxXP[iPlayer], szSpecMaxXP, charsmax(szSpecMaxXP))
               
                set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
                ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[iPlayer], szSpecXP, szSpecMaxXP)
            }
            else
            {
                set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
                ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[iPlayer], g_iXP[iPlayer], g_iMaxXP[iPlayer])
            }  
        }
        else if (ze_is_user_zombie(iPlayer))
        {
            if (get_pcvar_num(g_pCvarAddCommas) == 1)
            {
                new szZombieXP[15], szZombieMaxXP[15]
               
                AddCommas(g_iXP[ID_SHOWHUD], szZombieXP, charsmax(szZombieXP))
                AddCommas(g_iMaxXP[ID_SHOWHUD], szZombieMaxXP, charsmax(szZombieMaxXP))
               
                set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
                ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[ID_SHOWHUD], szZombieXP, szZombieMaxXP)
            }
            else
            {
                set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
                ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD])
            }
        }
        else
        {
            if (get_pcvar_num(g_pCvarAddCommas) == 1)
            {
                new szHumanXP[15], szHumanMaxXP[15]
               
                AddCommas(g_iXP[ID_SHOWHUD], szHumanXP, charsmax(szHumanXP))
                AddCommas(g_iMaxXP[ID_SHOWHUD], szHumanMaxXP, charsmax(szHumanMaxXP))
               
                set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
                ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[ID_SHOWHUD], szHumanXP, szHumanMaxXP)
            }
            else
            {
                set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
                ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD])
            }
        }
    }
}
 
public ze_roundend(WinTeam)
{
    if (WinTeam == ZE_TEAM_HUMAN)
    {
        for(new id = 1; id <= get_member_game(m_nMaxPlayers); id++)
        {
            if (!is_user_alive(id) || get_member(id, m_iTeam) == TEAM_TERRORIST)
                continue
           
            g_iXP[id] += get_pcvar_num(g_pCvarEscapeSuccess)
            SaveData(id)
            Check_User_Level(id)
        }
    }
   
    remove_task(TASK_SHOWHUD)
}
 
public Check_User_Level(id)
{
    if(!is_user_connected(id))
        return
 
    if(g_iXP[id] >= g_iMaxXP[id])
    {
        if (get_pcvar_num(g_pCvarStartFromZero) == 1)
        {
            g_iXP[id] = 0
        }
       
        new szName[32]
        g_iLevel[id] ++
        g_iMaxXP[id] = floatround(float(g_iMaxXP[id]) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
        get_user_name(id, szName, charsmax(szName))
        ze_colored_print(0, "!g%s !tNow in Level %i!y!", szName, g_iLevel[id])
       
        SaveData(id)
       
        PlaySound(id, LEVELUP)
       
        if (get_pcvar_num(g_pCvarLevelEffects) != 0)
        {
            // Screen Fade
            message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
            write_short(4096*2)
            write_short(4096*5)
            write_short(0x0001)
            write_byte(random(256))
            write_byte(random(256))
            write_byte(random(256))
            write_byte(150)
            message_end()
           
            // Screen Shake
            message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, id)
            write_short(255<<14)
            write_short(10<<14)
            write_short(255<<14)
            message_end()
        }
    }
}
 
public ze_user_infected(iVictim, iInfector)
{
    if (iInfector == 0)
        return
   
    g_iXP[iInfector] += get_pcvar_num(g_pCvarZombieInfect)
    SaveData(iInfector)
    Check_User_Level(iInfector)
}
 
public Fw_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, bitsDamageType)
{
    // Player Damage Himself
    if (iVictim == iAttacker || !is_user_alive(iVictim) || !is_user_alive(iAttacker) || ze_is_user_zombie(iAttacker) || !get_pcvar_num(g_pCvarEnableDamage))
        return HC_CONTINUE
   
    // Same Team?
    if (get_member(iAttacker, m_iTeam) == get_member(iVictim, m_iTeam))
        return HC_CONTINUE
   
    // Store Damage For every Player
    g_fDamage[iAttacker] += fDamage
   
    // Damage Calculator Equal or Higher than needed damage
    if (g_fDamage[iAttacker] >= get_pcvar_float(g_pCvarRequiredDamage))
    {
        // Give Player The Coins
        g_iXP[iAttacker] += get_pcvar_num(g_pCvarDamageAward)
        SaveData(iAttacker)
        Check_User_Level(iAttacker)
       
        // Rest The Damage Calculator
        g_fDamage[iAttacker] = 0.0
    }
    return HC_CONTINUE
}
 
public SaveData(id)
{
    new szAuthID[35], szName[32]
    get_user_authid(id, szAuthID, charsmax(szAuthID))
    get_user_name(id, szName, charsmax(szName))
   
    // Set Him to max if he Higher than Max Value
    if(g_iLevel[id] > MAX_LEVEL)
    {
        g_iLevel[id] = MAX_LEVEL
    }
   
    if(g_iXP[id] > MAX_XP)
    {
        g_iXP[id] = MAX_XP
    }
   
    new szData[256]
    formatex(szData , charsmax(szData), "%i %i %i", g_iLevel[id], g_iXP[id], g_iMaxXP[id])
   
    // Open the Vaults
    g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
    g_iRanksVaultHandle = nvault_open(g_szRanksVault)
 
    // Saves His Data
    nvault_set(g_iLevelsVaultHandle, szAuthID, szData)
    nvault_set(g_iRanksVaultHandle, szAuthID, szName)
   
    // Close Vaults
    nvault_close(g_iLevelsVaultHandle)
    nvault_close(g_iRanksVaultHandle)
}
 
public LoadData(id)
{
    new szData[256], szAuthID[35], szName[32]
   
    get_user_authid(id, szAuthID, charsmax(szAuthID))
    get_user_name(id, szName, charsmax(szName))
   
    // Useless Variable
    new iTimestamp, iExists
   
    // Open the Vault
    g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
   
    iExists = nvault_lookup(g_iLevelsVaultHandle, szAuthID, szData, charsmax(szData), iTimestamp)
   
    // Close Vault
    nvault_close(g_iLevelsVaultHandle)
   
    if (!iExists)
    {
        g_iLevel[id] = 0
        g_iXP[id] = get_pcvar_num(g_pCvarStartXP)
        g_iMaxXP[id] = get_pcvar_num(g_pCvarMaxXPFirstLevel)
        SaveData(id)
    }
    else
    {
        new iLevel[32], iXP[32], iMaxLevel[32]
        parse(szData, iLevel, 31, iXP, 31, iMaxLevel, 31)
       
        g_iLevel[id] = str_to_num(iLevel)
        g_iXP[id] = str_to_num(iXP)
        g_iMaxXP[id] = str_to_num(iMaxLevel)
    }
}
 
public native_ze_get_user_xp(id)
{
    if(!is_user_connected(id))
    {
        log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
        return false;
    }
   
    return g_iXP[id]
}
 
public native_ze_set_user_xp(id, amount)
{
    if(!is_user_connected(id))
    {
        log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
        return false;
    }
   
    DoubleHours()
   
    new iAddedAmount = amount - g_iXP[id]
   
    if (g_bIsDoubleHours)
    {
        g_iXP[id] = g_iXP[id] + (iAddedAmount * 2)
    }
    else
    {
        g_iXP[id] = amount
    }
   
    Check_User_Level(id)
    SaveData(id)
    return true;
}
 
public native_ze_get_user_level(id)
{
    if(!is_user_connected(id))
    {
        log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
        return false;
    }
   
    return g_iLevel[id]
}
 
public native_ze_set_user_level(id, amount)
{
    if(!is_user_connected(id))
    {
        log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
        return false;
    }
   
    g_iLevel[id] = amount
   
    if (get_pcvar_num(g_pCvarStartFromZero) == 1)
    {
        g_iXP[id] = 0
    }
   
    SaveData(id)
   
    return true;
}
 
public native_ze_get_user_max_xp(id)
{
    if(!is_user_connected(id))
    {
        log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
        return false;
    }
   
    return g_iMaxXP[id]
}
 
public native_ze_set_user_max_xp(id, amount)
{
    if(!is_user_connected(id))
    {
        log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
        return false;
    }
   
    g_iMaxXP[id] = amount
   
    SaveData(id)
   
    return true;
}
 
stock DoubleHours()
{
    new szTime[3], szDoubleHours[32], szDoubleHours_Start[32], szDoubleHours_End[32]
    get_time("%H", szTime, charsmax(szTime))
   
    get_pcvar_string(g_pCvarDoubleXP, szDoubleHours, charsmax(szDoubleHours))
   
    for (new ch = 0; ch <= charsmax(szDoubleHours); ch++)
    {
        if (szDoubleHours[ch] == '-')
            szDoubleHours[ch] = ' '
    }
   
    parse(szDoubleHours, szDoubleHours_Start, charsmax(szDoubleHours_Start), szDoubleHours_End, charsmax(szDoubleHours_End))
   
    new iTime, iDoubleHourStart, iDoubleHourEnd
   
    iTime = str_to_num(szTime)
    iDoubleHourStart = str_to_num(szDoubleHours_Start)
    iDoubleHourEnd = str_to_num(szDoubleHours_End)
   
    if(iDoubleHourEnd > iTime >= iDoubleHourStart)
    {
        g_bIsDoubleHours = true
    }
    else
    {
        g_bIsDoubleHours = false
    }
}
Image

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#2

Post by Raheem » 5 years ago

Something like:
    1. #include <zombie_escape>
    2.  
    3. // Defines
    4. #define MAX_LEVEL 50
    5. #define MAX_XP 500000
    6. #define TASK_SHOWHUD 2020
    7. #define TASK_DOUBLE 1133
    8. #define REPEAT_TIME 60.0
    9. #define ID_SHOWHUD (taskid - TASK_SHOWHUD)
    10. #define LEVELUP "levelup_ZE/ze_levelup.wav"
    11.  
    12. // Constants
    13. new const g_szLevelsVault[] = "Levels"
    14. new const g_szRanksVault[] = "Ranks"
    15.  
    16. // Messages
    17. const Float:HUD_SPECT_X = -1.0
    18. const Float:HUD_SPECT_Y = 0.70
    19. const Float:HUD_STATS_X = -1.0
    20. const Float:HUD_STATS_Y = 0.90
    21.  
    22. const HUD_STATS_ZOMBIE_R = 200
    23. const HUD_STATS_ZOMBIE_G = 220
    24. const HUD_STATS_ZOMBIE_B = 0
    25.  
    26. const HUD_STATS_HUMAN_R = 0
    27. const HUD_STATS_HUMAN_G = 200
    28. const HUD_STATS_HUMAN_B = 210
    29.  
    30. const HUD_STATS_SPEC_R = 100
    31. const HUD_STATS_SPEC_G = 100
    32. const HUD_STATS_SPEC_B = 100
    33.  
    34. // Variables
    35. new g_iLevel[33],
    36.     g_iXP[33],
    37.     g_iMaxXP[33],
    38.     Float:g_fDamage[33],
    39.     g_MsgSync,
    40.     g_iLevelsVaultHandle,
    41.     g_iRanksVaultHandle,
    42.     bool:g_bIsDoubleHours
    43.  
    44. // Cvars
    45. new g_pCvarZombieInfect,
    46.     g_pCvarEscapeSuccess,
    47.     g_pCvarEnableDamage,
    48.     g_pCvarRequiredDamage,
    49.     g_pCvarDamageAward,
    50.     g_pCvarStartXP,
    51.     g_pCvarMaxLevelsIncrement,
    52.     g_pCvarMaxXPFirstLevel,
    53.     g_pCvarPercentageStyle,
    54.     g_pCvarStartFromZero,
    55.     g_pCvarAddCommas,
    56.     g_pCvarLevelEffects,
    57.     g_pCvarDoubleXP
    58.  
    59. public plugin_natives()
    60. {
    61.     register_native("ze_get_user_xp", "native_ze_get_user_xp", 1)
    62.     register_native("ze_set_user_xp", "native_ze_set_user_xp", 1)
    63.     register_native("ze_get_user_level", "native_ze_get_user_level", 1)
    64.     register_native("ze_set_user_level", "native_ze_set_user_level", 1)
    65.     register_native("ze_get_user_max_xp", "native_ze_get_user_max_xp", 1)
    66.     register_native("ze_set_user_max_xp", "native_ze_set_user_max_xp", 1)
    67. }
    68.  
    69. public plugin_precache()
    70. {
    71.     precache_sound(LEVELUP)
    72. }
    73.  
    74. public plugin_init()
    75. {
    76.     register_plugin("[ZE] Level-XP System", "1.8", "Raheem/JaCk")
    77.    
    78.     // Hook Chains
    79.     RegisterHookChain(RG_CBasePlayer_TakeDamage, "Fw_TakeDamage_Post", 1)
    80.    
    81.     // Cvars
    82.     g_pCvarZombieInfect = register_cvar("ze_zombie_infect", "3")
    83.     g_pCvarEscapeSuccess = register_cvar("ze_escape_success", "5")
    84.     g_pCvarEnableDamage = register_cvar("ze_enable_dmg", "1")
    85.     g_pCvarRequiredDamage = register_cvar("ze_required_dmg", "50.0")
    86.     g_pCvarDamageAward = register_cvar("ze_dmg_award", "3")
    87.     g_pCvarStartXP = register_cvar("ze_start_xp", "50")
    88.     g_pCvarMaxLevelsIncrement = register_cvar("ze_maxlevels_increment", "2.0")
    89.     g_pCvarMaxXPFirstLevel = register_cvar("ze_max_xp_first_level", "100")
    90.     g_pCvarPercentageStyle = register_cvar("ze_enable_percentage_style", "1")
    91.     g_pCvarStartFromZero = register_cvar("ze_new_level_zero_xp", "0")
    92.     g_pCvarAddCommas = register_cvar("ze_add_commas_to_xp", "1")
    93.     g_pCvarLevelEffects = register_cvar("ze_level_up_effects", "1")
    94.     g_pCvarDoubleXP = register_cvar("ze_double_xp", "9-12")
    95.    
    96.     // Messages
    97.     g_MsgSync = CreateHudSyncObj()
    98. }
    99.  
    100. public client_putinserver(id)
    101. {
    102.     if(is_user_hltv(id) || is_user_bot(id))
    103.         return
    104.    
    105.     // Just 1 second delay
    106.     set_task(1.0, "DelayLoad", id)
    107.  
    108.     // Other tasks
    109.     set_task(1.0, "Show_Hud", id+TASK_SHOWHUD, _, _, "b")
    110.     set_task(0.1, "Check_MaxXP", id, _, _, "b")
    111.    
    112.     // Message task
    113.     DoubleHours()
    114.    
    115.     if (g_bIsDoubleHours)
    116.     {
    117.         set_task(REPEAT_TIME, "HappyHours", id+TASK_DOUBLE, _, _, "b")
    118.     }
    119. }
    120.  
    121. public HappyHours(taskid)
    122. {
    123.     new id = taskid - TASK_DOUBLE
    124.    
    125.     DoubleHours()
    126.    
    127.     if (!g_bIsDoubleHours)
    128.         remove_task(taskid)
    129.    
    130.     client_print_color(0, print_team_default, "^1[^4Double-XP^1] ^3Your XP you collecting now is doubled^1!")
    131. }
    132.  
    133. public DelayLoad(id)
    134. {
    135.     // Load his data
    136.     LoadData(id)
    137. }
    138.  
    139. public client_disconnected(id)
    140. {
    141.     if(is_user_hltv(id) || is_user_bot(id))
    142.         return
    143.        
    144.     remove_task(id+TASK_SHOWHUD)
    145.     remove_task(id)
    146. }
    147.  
    148. public Check_MaxXP(id)
    149. {
    150.     new iCurrentMaxXP = g_iMaxXP[id]
    151.    
    152.     new iMaxXP = get_pcvar_num(g_pCvarMaxXPFirstLevel)
    153.    
    154.     for (new i = 1; i <= g_iLevel[id]; i++)
    155.     {
    156.         iMaxXP = floatround(float(iMaxXP) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
    157.     }
    158.    
    159.     if (iCurrentMaxXP != iMaxXP)
    160.     {
    161.         g_iMaxXP[id] = iMaxXP
    162.     }
    163. }
    164.  
    165. public Show_Hud(taskid)
    166. {  
    167.     new iPlayer = ID_SHOWHUD
    168.    
    169.     if (!is_user_alive(iPlayer))
    170.     {
    171.         iPlayer = pev(iPlayer, pev_iuser2)
    172.        
    173.         if (!is_user_alive(iPlayer))
    174.             return
    175.     }
    176.    
    177.     if (get_pcvar_num(g_pCvarPercentageStyle) != 0)
    178.     {
    179.         if(iPlayer != ID_SHOWHUD)
    180.         {
    181.             set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
    182.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[iPlayer], (float(g_iXP[iPlayer])/float(g_iMaxXP[iPlayer])) * 100.0)
    183.         }
    184.         else if (ze_is_user_zombie(iPlayer))
    185.         {
    186.             set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
    187.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
    188.         }
    189.         else
    190.         {
    191.             set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
    192.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
    193.         }
    194.     }
    195.     else
    196.     {
    197.         if(iPlayer != ID_SHOWHUD)
    198.         {
    199.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
    200.             {
    201.                 new szSpecXP[15], szSpecMaxXP[15]
    202.                
    203.                 AddCommas(g_iXP[iPlayer], szSpecXP, charsmax(szSpecXP))
    204.                 AddCommas(g_iMaxXP[iPlayer], szSpecMaxXP, charsmax(szSpecMaxXP))
    205.                
    206.                 set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
    207.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[iPlayer], szSpecXP, szSpecMaxXP)
    208.             }
    209.             else
    210.             {
    211.                 set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
    212.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[iPlayer], g_iXP[iPlayer], g_iMaxXP[iPlayer])
    213.             }  
    214.         }
    215.         else if (ze_is_user_zombie(iPlayer))
    216.         {
    217.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
    218.             {
    219.                 new szZombieXP[15], szZombieMaxXP[15]
    220.                
    221.                 AddCommas(g_iXP[ID_SHOWHUD], szZombieXP, charsmax(szZombieXP))
    222.                 AddCommas(g_iMaxXP[ID_SHOWHUD], szZombieMaxXP, charsmax(szZombieMaxXP))
    223.                
    224.                 set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
    225.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[ID_SHOWHUD], szZombieXP, szZombieMaxXP)
    226.             }
    227.             else
    228.             {
    229.                 set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
    230.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD])
    231.             }
    232.         }
    233.         else
    234.         {
    235.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
    236.             {
    237.                 new szHumanXP[15], szHumanMaxXP[15]
    238.                
    239.                 AddCommas(g_iXP[ID_SHOWHUD], szHumanXP, charsmax(szHumanXP))
    240.                 AddCommas(g_iMaxXP[ID_SHOWHUD], szHumanMaxXP, charsmax(szHumanMaxXP))
    241.                
    242.                 set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
    243.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[ID_SHOWHUD], szHumanXP, szHumanMaxXP)
    244.             }
    245.             else
    246.             {
    247.                 set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
    248.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD])
    249.             }
    250.         }
    251.     }
    252. }
    253.  
    254. public ze_roundend(WinTeam)
    255. {
    256.     if (WinTeam == ZE_TEAM_HUMAN)
    257.     {
    258.         for(new id = 1; id <= get_member_game(m_nMaxPlayers); id++)
    259.         {
    260.             if (!is_user_alive(id) || get_member(id, m_iTeam) == TEAM_TERRORIST)
    261.                 continue
    262.            
    263.             g_iXP[id] += get_pcvar_num(g_pCvarEscapeSuccess)
    264.             SaveData(id)
    265.             Check_User_Level(id)
    266.         }
    267.     }
    268.    
    269.     remove_task(TASK_SHOWHUD)
    270. }
    271.  
    272. public Check_User_Level(id)
    273. {
    274.     if(!is_user_connected(id))
    275.         return
    276.  
    277.     if(g_iXP[id] >= g_iMaxXP[id])
    278.     {
    279.         if (get_pcvar_num(g_pCvarStartFromZero) == 1)
    280.         {
    281.             g_iXP[id] = 0
    282.         }
    283.        
    284.         new szName[32]
    285.         g_iLevel[id] ++
    286.         g_iMaxXP[id] = floatround(float(g_iMaxXP[id]) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
    287.         get_user_name(id, szName, charsmax(szName))
    288.         ze_colored_print(0, "!g%s !tNow in Level %i!y!", szName, g_iLevel[id])
    289.        
    290.         SaveData(id)
    291.        
    292.         PlaySound(id, LEVELUP)
    293.        
    294.         if (get_pcvar_num(g_pCvarLevelEffects) != 0)
    295.         {
    296.             // Screen Fade
    297.             message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
    298.             write_short(4096*2)
    299.             write_short(4096*5)
    300.             write_short(0x0001)
    301.             write_byte(random(256))
    302.             write_byte(random(256))
    303.             write_byte(random(256))
    304.             write_byte(150)
    305.             message_end()
    306.            
    307.             // Screen Shake
    308.             message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, id)
    309.             write_short(255<<14)
    310.             write_short(10<<14)
    311.             write_short(255<<14)
    312.             message_end()
    313.         }
    314.     }
    315. }
    316.  
    317. public ze_user_infected(iVictim, iInfector)
    318. {
    319.     if (iInfector == 0)
    320.         return
    321.    
    322.     g_iXP[iInfector] += get_pcvar_num(g_pCvarZombieInfect)
    323.     SaveData(iInfector)
    324.     Check_User_Level(iInfector)
    325. }
    326.  
    327. public Fw_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, bitsDamageType)
    328. {
    329.     // Player Damage Himself
    330.     if (iVictim == iAttacker || !is_user_alive(iVictim) || !is_user_alive(iAttacker) || ze_is_user_zombie(iAttacker) || !get_pcvar_num(g_pCvarEnableDamage))
    331.         return HC_CONTINUE
    332.    
    333.     // Same Team?
    334.     if (get_member(iAttacker, m_iTeam) == get_member(iVictim, m_iTeam))
    335.         return HC_CONTINUE
    336.    
    337.     // Store Damage For every Player
    338.     g_fDamage[iAttacker] += fDamage
    339.    
    340.     // Damage Calculator Equal or Higher than needed damage
    341.     if (g_fDamage[iAttacker] >= get_pcvar_float(g_pCvarRequiredDamage))
    342.     {
    343.         // Give Player The Coins
    344.         g_iXP[iAttacker] += get_pcvar_num(g_pCvarDamageAward)
    345.         SaveData(iAttacker)
    346.         Check_User_Level(iAttacker)
    347.        
    348.         // Rest The Damage Calculator
    349.         g_fDamage[iAttacker] = 0.0
    350.     }
    351.     return HC_CONTINUE
    352. }
    353.  
    354. public SaveData(id)
    355. {
    356.     new szAuthID[35], szName[32]
    357.     get_user_authid(id, szAuthID, charsmax(szAuthID))
    358.     get_user_name(id, szName, charsmax(szName))
    359.    
    360.     // Set Him to max if he Higher than Max Value
    361.     if(g_iLevel[id] > MAX_LEVEL)
    362.     {
    363.         g_iLevel[id] = MAX_LEVEL
    364.     }
    365.    
    366.     if(g_iXP[id] > MAX_XP)
    367.     {
    368.         g_iXP[id] = MAX_XP
    369.     }
    370.    
    371.     new szData[256]
    372.     formatex(szData , charsmax(szData), "%i %i %i", g_iLevel[id], g_iXP[id], g_iMaxXP[id])
    373.    
    374.     // Open the Vaults
    375.     g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
    376.     g_iRanksVaultHandle = nvault_open(g_szRanksVault)
    377.  
    378.     // Saves His Data
    379.     nvault_set(g_iLevelsVaultHandle, szAuthID, szData)
    380.     nvault_set(g_iRanksVaultHandle, szAuthID, szName)
    381.    
    382.     // Close Vaults
    383.     nvault_close(g_iLevelsVaultHandle)
    384.     nvault_close(g_iRanksVaultHandle)
    385. }
    386.  
    387. public LoadData(id)
    388. {
    389.     new szData[256], szAuthID[35], szName[32]
    390.    
    391.     get_user_authid(id, szAuthID, charsmax(szAuthID))
    392.     get_user_name(id, szName, charsmax(szName))
    393.    
    394.     // Useless Variable
    395.     new iTimestamp, iExists
    396.    
    397.     // Open the Vault
    398.     g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
    399.    
    400.     iExists = nvault_lookup(g_iLevelsVaultHandle, szAuthID, szData, charsmax(szData), iTimestamp)
    401.    
    402.     // Close Vault
    403.     nvault_close(g_iLevelsVaultHandle)
    404.    
    405.     if (!iExists)
    406.     {
    407.         g_iLevel[id] = 0
    408.         g_iXP[id] = get_pcvar_num(g_pCvarStartXP)
    409.         g_iMaxXP[id] = get_pcvar_num(g_pCvarMaxXPFirstLevel)
    410.         SaveData(id)
    411.     }
    412.     else
    413.     {
    414.         new iLevel[32], iXP[32], iMaxLevel[32]
    415.         parse(szData, iLevel, 31, iXP, 31, iMaxLevel, 31)
    416.        
    417.         g_iLevel[id] = str_to_num(iLevel)
    418.         g_iXP[id] = str_to_num(iXP)
    419.         g_iMaxXP[id] = str_to_num(iMaxLevel)
    420.     }
    421. }
    422.  
    423. public native_ze_get_user_xp(id)
    424. {
    425.     if(!is_user_connected(id))
    426.     {
    427.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
    428.         return false;
    429.     }
    430.    
    431.     return g_iXP[id]
    432. }
    433.  
    434. public native_ze_set_user_xp(id, amount)
    435. {
    436.     if(!is_user_connected(id))
    437.     {
    438.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
    439.         return false;
    440.     }
    441.    
    442.     DoubleHours()
    443.    
    444.     new iAddedAmount = amount - g_iXP[id]
    445.    
    446.     if (g_bIsDoubleHours)
    447.     {
    448.         g_iXP[id] = g_iXP[id] + (iAddedAmount * 2)
    449.     }
    450.     else
    451.     {
    452.         g_iXP[id] = amount
    453.     }
    454.    
    455.     Check_User_Level(id)
    456.     SaveData(id)
    457.     return true;
    458. }
    459.  
    460. public native_ze_get_user_level(id)
    461. {
    462.     if(!is_user_connected(id))
    463.     {
    464.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
    465.         return false;
    466.     }
    467.    
    468.     return g_iLevel[id]
    469. }
    470.  
    471. public native_ze_set_user_level(id, amount)
    472. {
    473.     if(!is_user_connected(id))
    474.     {
    475.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
    476.         return false;
    477.     }
    478.    
    479.     g_iLevel[id] = amount
    480.    
    481.     if (get_pcvar_num(g_pCvarStartFromZero) == 1)
    482.     {
    483.         g_iXP[id] = 0
    484.     }
    485.    
    486.     SaveData(id)
    487.    
    488.     return true;
    489. }
    490.  
    491. public native_ze_get_user_max_xp(id)
    492. {
    493.     if(!is_user_connected(id))
    494.     {
    495.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
    496.         return false;
    497.     }
    498.    
    499.     return g_iMaxXP[id]
    500. }
    501.  
    502. public native_ze_set_user_max_xp(id, amount)
    503. {
    504.     if(!is_user_connected(id))
    505.     {
    506.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
    507.         return false;
    508.     }
    509.    
    510.     g_iMaxXP[id] = amount
    511.    
    512.     SaveData(id)
    513.    
    514.     return true;
    515. }
    516.  
    517. stock DoubleHours()
    518. {
    519.     new szTime[3], szDoubleHours[32], szDoubleHours_Start[32], szDoubleHours_End[32]
    520.     get_time("%H", szTime, charsmax(szTime))
    521.    
    522.     get_pcvar_string(g_pCvarDoubleXP, szDoubleHours, charsmax(szDoubleHours))
    523.    
    524.     for (new ch = 0; ch <= charsmax(szDoubleHours); ch++)
    525.     {
    526.         if (szDoubleHours[ch] == '-')
    527.             szDoubleHours[ch] = ' '
    528.     }
    529.    
    530.     parse(szDoubleHours, szDoubleHours_Start, charsmax(szDoubleHours_Start), szDoubleHours_End, charsmax(szDoubleHours_End))
    531.    
    532.     new iTime, iDoubleHourStart, iDoubleHourEnd
    533.    
    534.     iTime = str_to_num(szTime)
    535.     iDoubleHourStart = str_to_num(szDoubleHours_Start)
    536.     iDoubleHourEnd = str_to_num(szDoubleHours_End)
    537.    
    538.     if(iDoubleHourEnd > iTime >= iDoubleHourStart)
    539.     {
    540.         g_bIsDoubleHours = true
    541.     }
    542.     else
    543.     {
    544.         g_bIsDoubleHours = false
    545.     }
    546. }
He who fails to plan is planning to fail

czirimbolo
Veteran Member
Veteran Member
Poland
Posts: 598
Joined: 7 years ago
Contact:

#3

Post by czirimbolo » 5 years ago

It seems to work, but Best defender still gets default value of xp, not double. Can you change it?
Image

Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

#4

Post by Rain1153 » 5 years ago

We want hud msg!
LOL

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#5

Post by Raheem » 5 years ago

Here:

  1. #include <zombie_escape>
  2.  
  3. // Defines
  4. #define MAX_LEVEL 50
  5. #define MAX_XP 500000
  6. #define TASK_SHOWHUD 2020
  7. #define TASK_DOUBLE 1133
  8. #define REPEAT_TIME 60.0
  9. #define ID_SHOWHUD (taskid - TASK_SHOWHUD)
  10. #define LEVELUP "levelup_ZE/ze_levelup.wav"
  11.  
  12. // Constants
  13. new const g_szLevelsVault[] = "Levels"
  14. new const g_szRanksVault[] = "Ranks"
  15.  
  16. // Messages
  17. const Float:HUD_SPECT_X = -1.0
  18. const Float:HUD_SPECT_Y = 0.70
  19. const Float:HUD_STATS_X = -1.0
  20. const Float:HUD_STATS_Y = 0.90
  21.  
  22. const HUD_STATS_ZOMBIE_R = 200
  23. const HUD_STATS_ZOMBIE_G = 220
  24. const HUD_STATS_ZOMBIE_B = 0
  25.  
  26. const HUD_STATS_HUMAN_R = 0
  27. const HUD_STATS_HUMAN_G = 200
  28. const HUD_STATS_HUMAN_B = 210
  29.  
  30. const HUD_STATS_SPEC_R = 100
  31. const HUD_STATS_SPEC_G = 100
  32. const HUD_STATS_SPEC_B = 100
  33.  
  34. // Variables
  35. new g_iLevel[33],
  36.     g_iXP[33],
  37.     g_iMaxXP[33],
  38.     Float:g_fDamage[33],
  39.     g_MsgSync,
  40.     g_iLevelsVaultHandle,
  41.     g_iRanksVaultHandle,
  42.     bool:g_bIsDoubleHours
  43.  
  44. // Cvars
  45. new g_pCvarZombieInfect,
  46.     g_pCvarEscapeSuccess,
  47.     g_pCvarEnableDamage,
  48.     g_pCvarRequiredDamage,
  49.     g_pCvarDamageAward,
  50.     g_pCvarStartXP,
  51.     g_pCvarMaxLevelsIncrement,
  52.     g_pCvarMaxXPFirstLevel,
  53.     g_pCvarPercentageStyle,
  54.     g_pCvarStartFromZero,
  55.     g_pCvarAddCommas,
  56.     g_pCvarLevelEffects,
  57.     g_pCvarDoubleXP
  58.  
  59. public plugin_natives()
  60. {
  61.     register_native("ze_get_user_xp", "native_ze_get_user_xp", 1)
  62.     register_native("ze_set_user_xp", "native_ze_set_user_xp", 1)
  63.     register_native("ze_get_user_level", "native_ze_get_user_level", 1)
  64.     register_native("ze_set_user_level", "native_ze_set_user_level", 1)
  65.     register_native("ze_get_user_max_xp", "native_ze_get_user_max_xp", 1)
  66.     register_native("ze_set_user_max_xp", "native_ze_set_user_max_xp", 1)
  67. }
  68.  
  69. public plugin_precache()
  70. {
  71.     precache_sound(LEVELUP)
  72. }
  73.  
  74. public plugin_init()
  75. {
  76.     register_plugin("[ZE] Level-XP System", "1.8", "Raheem/JaCk")
  77.    
  78.     // Hook Chains
  79.     RegisterHookChain(RG_CBasePlayer_TakeDamage, "Fw_TakeDamage_Post", 1)
  80.    
  81.     // Cvars
  82.     g_pCvarZombieInfect = register_cvar("ze_zombie_infect", "3")
  83.     g_pCvarEscapeSuccess = register_cvar("ze_escape_success", "5")
  84.     g_pCvarEnableDamage = register_cvar("ze_enable_dmg", "1")
  85.     g_pCvarRequiredDamage = register_cvar("ze_required_dmg", "50.0")
  86.     g_pCvarDamageAward = register_cvar("ze_dmg_award", "3")
  87.     g_pCvarStartXP = register_cvar("ze_start_xp", "50")
  88.     g_pCvarMaxLevelsIncrement = register_cvar("ze_maxlevels_increment", "2.0")
  89.     g_pCvarMaxXPFirstLevel = register_cvar("ze_max_xp_first_level", "100")
  90.     g_pCvarPercentageStyle = register_cvar("ze_enable_percentage_style", "1")
  91.     g_pCvarStartFromZero = register_cvar("ze_new_level_zero_xp", "0")
  92.     g_pCvarAddCommas = register_cvar("ze_add_commas_to_xp", "1")
  93.     g_pCvarLevelEffects = register_cvar("ze_level_up_effects", "1")
  94.     g_pCvarDoubleXP = register_cvar("ze_double_xp", "9-12")
  95.    
  96.     // Messages
  97.     g_MsgSync = CreateHudSyncObj()
  98. }
  99.  
  100. public client_putinserver(id)
  101. {
  102.     if(is_user_hltv(id) || is_user_bot(id))
  103.         return
  104.    
  105.     // Just 1 second delay
  106.     set_task(1.0, "DelayLoad", id)
  107.  
  108.     // Other tasks
  109.     set_task(1.0, "Show_Hud", id+TASK_SHOWHUD, _, _, "b")
  110.     set_task(0.1, "Check_MaxXP", id, _, _, "b")
  111.    
  112.     // Message task
  113.     DoubleHours()
  114.    
  115.     if (g_bIsDoubleHours)
  116.     {
  117.         set_task(REPEAT_TIME, "HappyHours", id+TASK_DOUBLE, _, _, "b")
  118.     }
  119. }
  120.  
  121. public HappyHours(taskid)
  122. {
  123.     new id = taskid - TASK_DOUBLE
  124.    
  125.     DoubleHours()
  126.    
  127.     if (!g_bIsDoubleHours)
  128.         remove_task(taskid)
  129.    
  130.     new szDoubleHours[32]
  131.    
  132.     get_pcvar_string(g_pCvarDoubleXP, szDoubleHours, charsmax(szDoubleHours))
  133.    
  134.     set_dhudmessage(0, 255, 0, -1.0, -1.0, 0, 0.0, 10.0)
  135.     show_dhudmessage(id, "DOUBLE XP: %s", szDoubleHours)
  136. }
  137.  
  138. public DelayLoad(id)
  139. {
  140.     // Load his data
  141.     LoadData(id)
  142. }
  143.  
  144. public client_disconnected(id)
  145. {
  146.     if(is_user_hltv(id) || is_user_bot(id))
  147.         return
  148.        
  149.     remove_task(id+TASK_SHOWHUD)
  150.     remove_task(id)
  151. }
  152.  
  153. public Check_MaxXP(id)
  154. {
  155.     new iCurrentMaxXP = g_iMaxXP[id]
  156.    
  157.     new iMaxXP = get_pcvar_num(g_pCvarMaxXPFirstLevel)
  158.    
  159.     for (new i = 1; i <= g_iLevel[id]; i++)
  160.     {
  161.         iMaxXP = floatround(float(iMaxXP) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
  162.     }
  163.    
  164.     if (iCurrentMaxXP != iMaxXP)
  165.     {
  166.         g_iMaxXP[id] = iMaxXP
  167.     }
  168. }
  169.  
  170. public Show_Hud(taskid)
  171. {  
  172.     new iPlayer = ID_SHOWHUD
  173.    
  174.     if (!is_user_alive(iPlayer))
  175.     {
  176.         iPlayer = pev(iPlayer, pev_iuser2)
  177.        
  178.         if (!is_user_alive(iPlayer))
  179.             return
  180.     }
  181.    
  182.     if (get_pcvar_num(g_pCvarPercentageStyle) != 0)
  183.     {
  184.         if(iPlayer != ID_SHOWHUD)
  185.         {
  186.             set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  187.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[iPlayer], (float(g_iXP[iPlayer])/float(g_iMaxXP[iPlayer])) * 100.0)
  188.         }
  189.         else if (ze_is_user_zombie(iPlayer))
  190.         {
  191.             set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  192.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
  193.         }
  194.         else
  195.         {
  196.             set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  197.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
  198.         }
  199.     }
  200.     else
  201.     {
  202.         if(iPlayer != ID_SHOWHUD)
  203.         {
  204.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  205.             {
  206.                 new szSpecXP[15], szSpecMaxXP[15]
  207.                
  208.                 AddCommas(g_iXP[iPlayer], szSpecXP, charsmax(szSpecXP))
  209.                 AddCommas(g_iMaxXP[iPlayer], szSpecMaxXP, charsmax(szSpecMaxXP))
  210.                
  211.                 set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  212.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[iPlayer], szSpecXP, szSpecMaxXP)
  213.             }
  214.             else
  215.             {
  216.                 set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  217.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[iPlayer], g_iXP[iPlayer], g_iMaxXP[iPlayer])
  218.             }  
  219.         }
  220.         else if (ze_is_user_zombie(iPlayer))
  221.         {
  222.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  223.             {
  224.                 new szZombieXP[15], szZombieMaxXP[15]
  225.                
  226.                 AddCommas(g_iXP[ID_SHOWHUD], szZombieXP, charsmax(szZombieXP))
  227.                 AddCommas(g_iMaxXP[ID_SHOWHUD], szZombieMaxXP, charsmax(szZombieMaxXP))
  228.                
  229.                 set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  230.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[ID_SHOWHUD], szZombieXP, szZombieMaxXP)
  231.             }
  232.             else
  233.             {
  234.                 set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  235.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD])
  236.             }
  237.         }
  238.         else
  239.         {
  240.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  241.             {
  242.                 new szHumanXP[15], szHumanMaxXP[15]
  243.                
  244.                 AddCommas(g_iXP[ID_SHOWHUD], szHumanXP, charsmax(szHumanXP))
  245.                 AddCommas(g_iMaxXP[ID_SHOWHUD], szHumanMaxXP, charsmax(szHumanMaxXP))
  246.                
  247.                 set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  248.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[ID_SHOWHUD], szHumanXP, szHumanMaxXP)
  249.             }
  250.             else
  251.             {
  252.                 set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  253.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD])
  254.             }
  255.         }
  256.     }
  257. }
  258.  
  259. public ze_roundend(WinTeam)
  260. {
  261.     if (WinTeam == ZE_TEAM_HUMAN)
  262.     {
  263.         for(new id = 1; id <= get_member_game(m_nMaxPlayers); id++)
  264.         {
  265.             if (!is_user_alive(id) || get_member(id, m_iTeam) == TEAM_TERRORIST)
  266.                 continue
  267.            
  268.             g_iXP[id] += get_pcvar_num(g_pCvarEscapeSuccess)
  269.             SaveData(id)
  270.             Check_User_Level(id)
  271.         }
  272.     }
  273.    
  274.     remove_task(TASK_SHOWHUD)
  275. }
  276.  
  277. public Check_User_Level(id)
  278. {
  279.     if(!is_user_connected(id))
  280.         return
  281.  
  282.     if(g_iXP[id] >= g_iMaxXP[id])
  283.     {
  284.         if (get_pcvar_num(g_pCvarStartFromZero) == 1)
  285.         {
  286.             g_iXP[id] = 0
  287.         }
  288.        
  289.         new szName[32]
  290.         g_iLevel[id] ++
  291.         g_iMaxXP[id] = floatround(float(g_iMaxXP[id]) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
  292.         get_user_name(id, szName, charsmax(szName))
  293.         ze_colored_print(0, "!g%s !tNow in Level %i!y!", szName, g_iLevel[id])
  294.        
  295.         SaveData(id)
  296.        
  297.         PlaySound(id, LEVELUP)
  298.        
  299.         if (get_pcvar_num(g_pCvarLevelEffects) != 0)
  300.         {
  301.             // Screen Fade
  302.             message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
  303.             write_short(4096*2)
  304.             write_short(4096*5)
  305.             write_short(0x0001)
  306.             write_byte(random(256))
  307.             write_byte(random(256))
  308.             write_byte(random(256))
  309.             write_byte(150)
  310.             message_end()
  311.            
  312.             // Screen Shake
  313.             message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, id)
  314.             write_short(255<<14)
  315.             write_short(10<<14)
  316.             write_short(255<<14)
  317.             message_end()
  318.         }
  319.     }
  320. }
  321.  
  322. public ze_user_infected(iVictim, iInfector)
  323. {
  324.     if (iInfector == 0)
  325.         return
  326.    
  327.     g_iXP[iInfector] += get_pcvar_num(g_pCvarZombieInfect)
  328.     SaveData(iInfector)
  329.     Check_User_Level(iInfector)
  330. }
  331.  
  332. public Fw_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, bitsDamageType)
  333. {
  334.     // Player Damage Himself
  335.     if (iVictim == iAttacker || !is_user_alive(iVictim) || !is_user_alive(iAttacker) || ze_is_user_zombie(iAttacker) || !get_pcvar_num(g_pCvarEnableDamage))
  336.         return HC_CONTINUE
  337.    
  338.     // Same Team?
  339.     if (get_member(iAttacker, m_iTeam) == get_member(iVictim, m_iTeam))
  340.         return HC_CONTINUE
  341.    
  342.     // Store Damage For every Player
  343.     g_fDamage[iAttacker] += fDamage
  344.    
  345.     // Damage Calculator Equal or Higher than needed damage
  346.     if (g_fDamage[iAttacker] >= get_pcvar_float(g_pCvarRequiredDamage))
  347.     {
  348.         // Give Player The Coins
  349.         g_iXP[iAttacker] += get_pcvar_num(g_pCvarDamageAward)
  350.         SaveData(iAttacker)
  351.         Check_User_Level(iAttacker)
  352.        
  353.         // Rest The Damage Calculator
  354.         g_fDamage[iAttacker] = 0.0
  355.     }
  356.     return HC_CONTINUE
  357. }
  358.  
  359. public SaveData(id)
  360. {
  361.     new szAuthID[35], szName[32]
  362.     get_user_authid(id, szAuthID, charsmax(szAuthID))
  363.     get_user_name(id, szName, charsmax(szName))
  364.    
  365.     // Set Him to max if he Higher than Max Value
  366.     if(g_iLevel[id] > MAX_LEVEL)
  367.     {
  368.         g_iLevel[id] = MAX_LEVEL
  369.     }
  370.    
  371.     if(g_iXP[id] > MAX_XP)
  372.     {
  373.         g_iXP[id] = MAX_XP
  374.     }
  375.    
  376.     new szData[256]
  377.     formatex(szData , charsmax(szData), "%i %i %i", g_iLevel[id], g_iXP[id], g_iMaxXP[id])
  378.    
  379.     // Open the Vaults
  380.     g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
  381.     g_iRanksVaultHandle = nvault_open(g_szRanksVault)
  382.  
  383.     // Saves His Data
  384.     nvault_set(g_iLevelsVaultHandle, szAuthID, szData)
  385.     nvault_set(g_iRanksVaultHandle, szAuthID, szName)
  386.    
  387.     // Close Vaults
  388.     nvault_close(g_iLevelsVaultHandle)
  389.     nvault_close(g_iRanksVaultHandle)
  390. }
  391.  
  392. public LoadData(id)
  393. {
  394.     new szData[256], szAuthID[35], szName[32]
  395.    
  396.     get_user_authid(id, szAuthID, charsmax(szAuthID))
  397.     get_user_name(id, szName, charsmax(szName))
  398.    
  399.     // Useless Variable
  400.     new iTimestamp, iExists
  401.    
  402.     // Open the Vault
  403.     g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
  404.    
  405.     iExists = nvault_lookup(g_iLevelsVaultHandle, szAuthID, szData, charsmax(szData), iTimestamp)
  406.    
  407.     // Close Vault
  408.     nvault_close(g_iLevelsVaultHandle)
  409.    
  410.     if (!iExists)
  411.     {
  412.         g_iLevel[id] = 0
  413.         g_iXP[id] = get_pcvar_num(g_pCvarStartXP)
  414.         g_iMaxXP[id] = get_pcvar_num(g_pCvarMaxXPFirstLevel)
  415.         SaveData(id)
  416.     }
  417.     else
  418.     {
  419.         new iLevel[32], iXP[32], iMaxLevel[32]
  420.         parse(szData, iLevel, 31, iXP, 31, iMaxLevel, 31)
  421.        
  422.         g_iLevel[id] = str_to_num(iLevel)
  423.         g_iXP[id] = str_to_num(iXP)
  424.         g_iMaxXP[id] = str_to_num(iMaxLevel)
  425.     }
  426. }
  427.  
  428. public native_ze_get_user_xp(id)
  429. {
  430.     if(!is_user_connected(id))
  431.     {
  432.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  433.         return false;
  434.     }
  435.    
  436.     return g_iXP[id]
  437. }
  438.  
  439. public native_ze_set_user_xp(id, amount)
  440. {
  441.     if(!is_user_connected(id))
  442.     {
  443.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  444.         return false;
  445.     }
  446.    
  447.     DoubleHours()
  448.    
  449.     new iAddedAmount = amount - g_iXP[id]
  450.    
  451.     if (g_bIsDoubleHours)
  452.     {
  453.         g_iXP[id] = g_iXP[id] + (iAddedAmount * 2)
  454.     }
  455.     else
  456.     {
  457.         g_iXP[id] = amount
  458.     }
  459.    
  460.     Check_User_Level(id)
  461.     SaveData(id)
  462.     return true;
  463. }
  464.  
  465. public native_ze_get_user_level(id)
  466. {
  467.     if(!is_user_connected(id))
  468.     {
  469.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  470.         return false;
  471.     }
  472.    
  473.     return g_iLevel[id]
  474. }
  475.  
  476. public native_ze_set_user_level(id, amount)
  477. {
  478.     if(!is_user_connected(id))
  479.     {
  480.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  481.         return false;
  482.     }
  483.    
  484.     g_iLevel[id] = amount
  485.    
  486.     if (get_pcvar_num(g_pCvarStartFromZero) == 1)
  487.     {
  488.         g_iXP[id] = 0
  489.     }
  490.    
  491.     SaveData(id)
  492.    
  493.     return true;
  494. }
  495.  
  496. public native_ze_get_user_max_xp(id)
  497. {
  498.     if(!is_user_connected(id))
  499.     {
  500.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  501.         return false;
  502.     }
  503.    
  504.     return g_iMaxXP[id]
  505. }
  506.  
  507. public native_ze_set_user_max_xp(id, amount)
  508. {
  509.     if(!is_user_connected(id))
  510.     {
  511.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  512.         return false;
  513.     }
  514.    
  515.     g_iMaxXP[id] = amount
  516.    
  517.     SaveData(id)
  518.    
  519.     return true;
  520. }
  521.  
  522. stock DoubleHours()
  523. {
  524.     new szTime[3], szDoubleHours[32], szDoubleHours_Start[32], szDoubleHours_End[32]
  525.     get_time("%H", szTime, charsmax(szTime))
  526.    
  527.     get_pcvar_string(g_pCvarDoubleXP, szDoubleHours, charsmax(szDoubleHours))
  528.    
  529.     for (new ch = 0; ch <= charsmax(szDoubleHours); ch++)
  530.     {
  531.         if (szDoubleHours[ch] == '-')
  532.             szDoubleHours[ch] = ' '
  533.     }
  534.    
  535.     parse(szDoubleHours, szDoubleHours_Start, charsmax(szDoubleHours_Start), szDoubleHours_End, charsmax(szDoubleHours_End))
  536.    
  537.     new iTime, iDoubleHourStart, iDoubleHourEnd
  538.    
  539.     iTime = str_to_num(szTime)
  540.     iDoubleHourStart = str_to_num(szDoubleHours_Start)
  541.     iDoubleHourEnd = str_to_num(szDoubleHours_End)
  542.    
  543.     if(iDoubleHourEnd > iTime >= iDoubleHourStart)
  544.     {
  545.         g_bIsDoubleHours = true
  546.     }
  547.     else
  548.     {
  549.         g_bIsDoubleHours = false
  550.     }
  551. }
He who fails to plan is planning to fail

User avatar
sPe3doN
Senior Member
Senior Member
Algeria
Posts: 258
Joined: 7 years ago
Contact:

#6

Post by sPe3doN » 5 years ago

Raheem wrote: 5 years ago Here:

  1. #include <zombie_escape>
  2.  
  3. // Defines
  4. #define MAX_LEVEL 50
  5. #define MAX_XP 500000
  6. #define TASK_SHOWHUD 2020
  7. #define TASK_DOUBLE 1133
  8. #define REPEAT_TIME 60.0
  9. #define ID_SHOWHUD (taskid - TASK_SHOWHUD)
  10. #define LEVELUP "levelup_ZE/ze_levelup.wav"
  11.  
  12. // Constants
  13. new const g_szLevelsVault[] = "Levels"
  14. new const g_szRanksVault[] = "Ranks"
  15.  
  16. // Messages
  17. const Float:HUD_SPECT_X = -1.0
  18. const Float:HUD_SPECT_Y = 0.70
  19. const Float:HUD_STATS_X = -1.0
  20. const Float:HUD_STATS_Y = 0.90
  21.  
  22. const HUD_STATS_ZOMBIE_R = 200
  23. const HUD_STATS_ZOMBIE_G = 220
  24. const HUD_STATS_ZOMBIE_B = 0
  25.  
  26. const HUD_STATS_HUMAN_R = 0
  27. const HUD_STATS_HUMAN_G = 200
  28. const HUD_STATS_HUMAN_B = 210
  29.  
  30. const HUD_STATS_SPEC_R = 100
  31. const HUD_STATS_SPEC_G = 100
  32. const HUD_STATS_SPEC_B = 100
  33.  
  34. // Variables
  35. new g_iLevel[33],
  36.     g_iXP[33],
  37.     g_iMaxXP[33],
  38.     Float:g_fDamage[33],
  39.     g_MsgSync,
  40.     g_iLevelsVaultHandle,
  41.     g_iRanksVaultHandle,
  42.     bool:g_bIsDoubleHours
  43.  
  44. // Cvars
  45. new g_pCvarZombieInfect,
  46.     g_pCvarEscapeSuccess,
  47.     g_pCvarEnableDamage,
  48.     g_pCvarRequiredDamage,
  49.     g_pCvarDamageAward,
  50.     g_pCvarStartXP,
  51.     g_pCvarMaxLevelsIncrement,
  52.     g_pCvarMaxXPFirstLevel,
  53.     g_pCvarPercentageStyle,
  54.     g_pCvarStartFromZero,
  55.     g_pCvarAddCommas,
  56.     g_pCvarLevelEffects,
  57.     g_pCvarDoubleXP
  58.  
  59. public plugin_natives()
  60. {
  61.     register_native("ze_get_user_xp", "native_ze_get_user_xp", 1)
  62.     register_native("ze_set_user_xp", "native_ze_set_user_xp", 1)
  63.     register_native("ze_get_user_level", "native_ze_get_user_level", 1)
  64.     register_native("ze_set_user_level", "native_ze_set_user_level", 1)
  65.     register_native("ze_get_user_max_xp", "native_ze_get_user_max_xp", 1)
  66.     register_native("ze_set_user_max_xp", "native_ze_set_user_max_xp", 1)
  67. }
  68.  
  69. public plugin_precache()
  70. {
  71.     precache_sound(LEVELUP)
  72. }
  73.  
  74. public plugin_init()
  75. {
  76.     register_plugin("[ZE] Level-XP System", "1.8", "Raheem/JaCk")
  77.    
  78.     // Hook Chains
  79.     RegisterHookChain(RG_CBasePlayer_TakeDamage, "Fw_TakeDamage_Post", 1)
  80.    
  81.     // Cvars
  82.     g_pCvarZombieInfect = register_cvar("ze_zombie_infect", "3")
  83.     g_pCvarEscapeSuccess = register_cvar("ze_escape_success", "5")
  84.     g_pCvarEnableDamage = register_cvar("ze_enable_dmg", "1")
  85.     g_pCvarRequiredDamage = register_cvar("ze_required_dmg", "50.0")
  86.     g_pCvarDamageAward = register_cvar("ze_dmg_award", "3")
  87.     g_pCvarStartXP = register_cvar("ze_start_xp", "50")
  88.     g_pCvarMaxLevelsIncrement = register_cvar("ze_maxlevels_increment", "2.0")
  89.     g_pCvarMaxXPFirstLevel = register_cvar("ze_max_xp_first_level", "100")
  90.     g_pCvarPercentageStyle = register_cvar("ze_enable_percentage_style", "1")
  91.     g_pCvarStartFromZero = register_cvar("ze_new_level_zero_xp", "0")
  92.     g_pCvarAddCommas = register_cvar("ze_add_commas_to_xp", "1")
  93.     g_pCvarLevelEffects = register_cvar("ze_level_up_effects", "1")
  94.     g_pCvarDoubleXP = register_cvar("ze_double_xp", "9-12")
  95.    
  96.     // Messages
  97.     g_MsgSync = CreateHudSyncObj()
  98. }
  99.  
  100. public client_putinserver(id)
  101. {
  102.     if(is_user_hltv(id) || is_user_bot(id))
  103.         return
  104.    
  105.     // Just 1 second delay
  106.     set_task(1.0, "DelayLoad", id)
  107.  
  108.     // Other tasks
  109.     set_task(1.0, "Show_Hud", id+TASK_SHOWHUD, _, _, "b")
  110.     set_task(0.1, "Check_MaxXP", id, _, _, "b")
  111.    
  112.     // Message task
  113.     DoubleHours()
  114.    
  115.     if (g_bIsDoubleHours)
  116.     {
  117.         set_task(REPEAT_TIME, "HappyHours", id+TASK_DOUBLE, _, _, "b")
  118.     }
  119. }
  120.  
  121. public HappyHours(taskid)
  122. {
  123.     new id = taskid - TASK_DOUBLE
  124.    
  125.     DoubleHours()
  126.    
  127.     if (!g_bIsDoubleHours)
  128.         remove_task(taskid)
  129.    
  130.     new szDoubleHours[32]
  131.    
  132.     get_pcvar_string(g_pCvarDoubleXP, szDoubleHours, charsmax(szDoubleHours))
  133.    
  134.     set_dhudmessage(0, 255, 0, -1.0, -1.0, 0, 0.0, 10.0)
  135.     show_dhudmessage(id, "DOUBLE XP: %s", szDoubleHours)
  136. }
  137.  
  138. public DelayLoad(id)
  139. {
  140.     // Load his data
  141.     LoadData(id)
  142. }
  143.  
  144. public client_disconnected(id)
  145. {
  146.     if(is_user_hltv(id) || is_user_bot(id))
  147.         return
  148.        
  149.     remove_task(id+TASK_SHOWHUD)
  150.     remove_task(id)
  151. }
  152.  
  153. public Check_MaxXP(id)
  154. {
  155.     new iCurrentMaxXP = g_iMaxXP[id]
  156.    
  157.     new iMaxXP = get_pcvar_num(g_pCvarMaxXPFirstLevel)
  158.    
  159.     for (new i = 1; i <= g_iLevel[id]; i++)
  160.     {
  161.         iMaxXP = floatround(float(iMaxXP) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
  162.     }
  163.    
  164.     if (iCurrentMaxXP != iMaxXP)
  165.     {
  166.         g_iMaxXP[id] = iMaxXP
  167.     }
  168. }
  169.  
  170. public Show_Hud(taskid)
  171. {  
  172.     new iPlayer = ID_SHOWHUD
  173.    
  174.     if (!is_user_alive(iPlayer))
  175.     {
  176.         iPlayer = pev(iPlayer, pev_iuser2)
  177.        
  178.         if (!is_user_alive(iPlayer))
  179.             return
  180.     }
  181.    
  182.     if (get_pcvar_num(g_pCvarPercentageStyle) != 0)
  183.     {
  184.         if(iPlayer != ID_SHOWHUD)
  185.         {
  186.             set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  187.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[iPlayer], (float(g_iXP[iPlayer])/float(g_iMaxXP[iPlayer])) * 100.0)
  188.         }
  189.         else if (ze_is_user_zombie(iPlayer))
  190.         {
  191.             set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  192.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
  193.         }
  194.         else
  195.         {
  196.             set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  197.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
  198.         }
  199.     }
  200.     else
  201.     {
  202.         if(iPlayer != ID_SHOWHUD)
  203.         {
  204.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  205.             {
  206.                 new szSpecXP[15], szSpecMaxXP[15]
  207.                
  208.                 AddCommas(g_iXP[iPlayer], szSpecXP, charsmax(szSpecXP))
  209.                 AddCommas(g_iMaxXP[iPlayer], szSpecMaxXP, charsmax(szSpecMaxXP))
  210.                
  211.                 set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  212.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[iPlayer], szSpecXP, szSpecMaxXP)
  213.             }
  214.             else
  215.             {
  216.                 set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  217.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[iPlayer], g_iXP[iPlayer], g_iMaxXP[iPlayer])
  218.             }  
  219.         }
  220.         else if (ze_is_user_zombie(iPlayer))
  221.         {
  222.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  223.             {
  224.                 new szZombieXP[15], szZombieMaxXP[15]
  225.                
  226.                 AddCommas(g_iXP[ID_SHOWHUD], szZombieXP, charsmax(szZombieXP))
  227.                 AddCommas(g_iMaxXP[ID_SHOWHUD], szZombieMaxXP, charsmax(szZombieMaxXP))
  228.                
  229.                 set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  230.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[ID_SHOWHUD], szZombieXP, szZombieMaxXP)
  231.             }
  232.             else
  233.             {
  234.                 set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  235.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD])
  236.             }
  237.         }
  238.         else
  239.         {
  240.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  241.             {
  242.                 new szHumanXP[15], szHumanMaxXP[15]
  243.                
  244.                 AddCommas(g_iXP[ID_SHOWHUD], szHumanXP, charsmax(szHumanXP))
  245.                 AddCommas(g_iMaxXP[ID_SHOWHUD], szHumanMaxXP, charsmax(szHumanMaxXP))
  246.                
  247.                 set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  248.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[ID_SHOWHUD], szHumanXP, szHumanMaxXP)
  249.             }
  250.             else
  251.             {
  252.                 set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  253.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD])
  254.             }
  255.         }
  256.     }
  257. }
  258.  
  259. public ze_roundend(WinTeam)
  260. {
  261.     if (WinTeam == ZE_TEAM_HUMAN)
  262.     {
  263.         for(new id = 1; id <= get_member_game(m_nMaxPlayers); id++)
  264.         {
  265.             if (!is_user_alive(id) || get_member(id, m_iTeam) == TEAM_TERRORIST)
  266.                 continue
  267.            
  268.             g_iXP[id] += get_pcvar_num(g_pCvarEscapeSuccess)
  269.             SaveData(id)
  270.             Check_User_Level(id)
  271.         }
  272.     }
  273.    
  274.     remove_task(TASK_SHOWHUD)
  275. }
  276.  
  277. public Check_User_Level(id)
  278. {
  279.     if(!is_user_connected(id))
  280.         return
  281.  
  282.     if(g_iXP[id] >= g_iMaxXP[id])
  283.     {
  284.         if (get_pcvar_num(g_pCvarStartFromZero) == 1)
  285.         {
  286.             g_iXP[id] = 0
  287.         }
  288.        
  289.         new szName[32]
  290.         g_iLevel[id] ++
  291.         g_iMaxXP[id] = floatround(float(g_iMaxXP[id]) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
  292.         get_user_name(id, szName, charsmax(szName))
  293.         ze_colored_print(0, "!g%s !tNow in Level %i!y!", szName, g_iLevel[id])
  294.        
  295.         SaveData(id)
  296.        
  297.         PlaySound(id, LEVELUP)
  298.        
  299.         if (get_pcvar_num(g_pCvarLevelEffects) != 0)
  300.         {
  301.             // Screen Fade
  302.             message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
  303.             write_short(4096*2)
  304.             write_short(4096*5)
  305.             write_short(0x0001)
  306.             write_byte(random(256))
  307.             write_byte(random(256))
  308.             write_byte(random(256))
  309.             write_byte(150)
  310.             message_end()
  311.            
  312.             // Screen Shake
  313.             message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, id)
  314.             write_short(255<<14)
  315.             write_short(10<<14)
  316.             write_short(255<<14)
  317.             message_end()
  318.         }
  319.     }
  320. }
  321.  
  322. public ze_user_infected(iVictim, iInfector)
  323. {
  324.     if (iInfector == 0)
  325.         return
  326.    
  327.     g_iXP[iInfector] += get_pcvar_num(g_pCvarZombieInfect)
  328.     SaveData(iInfector)
  329.     Check_User_Level(iInfector)
  330. }
  331.  
  332. public Fw_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, bitsDamageType)
  333. {
  334.     // Player Damage Himself
  335.     if (iVictim == iAttacker || !is_user_alive(iVictim) || !is_user_alive(iAttacker) || ze_is_user_zombie(iAttacker) || !get_pcvar_num(g_pCvarEnableDamage))
  336.         return HC_CONTINUE
  337.    
  338.     // Same Team?
  339.     if (get_member(iAttacker, m_iTeam) == get_member(iVictim, m_iTeam))
  340.         return HC_CONTINUE
  341.    
  342.     // Store Damage For every Player
  343.     g_fDamage[iAttacker] += fDamage
  344.    
  345.     // Damage Calculator Equal or Higher than needed damage
  346.     if (g_fDamage[iAttacker] >= get_pcvar_float(g_pCvarRequiredDamage))
  347.     {
  348.         // Give Player The Coins
  349.         g_iXP[iAttacker] += get_pcvar_num(g_pCvarDamageAward)
  350.         SaveData(iAttacker)
  351.         Check_User_Level(iAttacker)
  352.        
  353.         // Rest The Damage Calculator
  354.         g_fDamage[iAttacker] = 0.0
  355.     }
  356.     return HC_CONTINUE
  357. }
  358.  
  359. public SaveData(id)
  360. {
  361.     new szAuthID[35], szName[32]
  362.     get_user_authid(id, szAuthID, charsmax(szAuthID))
  363.     get_user_name(id, szName, charsmax(szName))
  364.    
  365.     // Set Him to max if he Higher than Max Value
  366.     if(g_iLevel[id] > MAX_LEVEL)
  367.     {
  368.         g_iLevel[id] = MAX_LEVEL
  369.     }
  370.    
  371.     if(g_iXP[id] > MAX_XP)
  372.     {
  373.         g_iXP[id] = MAX_XP
  374.     }
  375.    
  376.     new szData[256]
  377.     formatex(szData , charsmax(szData), "%i %i %i", g_iLevel[id], g_iXP[id], g_iMaxXP[id])
  378.    
  379.     // Open the Vaults
  380.     g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
  381.     g_iRanksVaultHandle = nvault_open(g_szRanksVault)
  382.  
  383.     // Saves His Data
  384.     nvault_set(g_iLevelsVaultHandle, szAuthID, szData)
  385.     nvault_set(g_iRanksVaultHandle, szAuthID, szName)
  386.    
  387.     // Close Vaults
  388.     nvault_close(g_iLevelsVaultHandle)
  389.     nvault_close(g_iRanksVaultHandle)
  390. }
  391.  
  392. public LoadData(id)
  393. {
  394.     new szData[256], szAuthID[35], szName[32]
  395.    
  396.     get_user_authid(id, szAuthID, charsmax(szAuthID))
  397.     get_user_name(id, szName, charsmax(szName))
  398.    
  399.     // Useless Variable
  400.     new iTimestamp, iExists
  401.    
  402.     // Open the Vault
  403.     g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
  404.    
  405.     iExists = nvault_lookup(g_iLevelsVaultHandle, szAuthID, szData, charsmax(szData), iTimestamp)
  406.    
  407.     // Close Vault
  408.     nvault_close(g_iLevelsVaultHandle)
  409.    
  410.     if (!iExists)
  411.     {
  412.         g_iLevel[id] = 0
  413.         g_iXP[id] = get_pcvar_num(g_pCvarStartXP)
  414.         g_iMaxXP[id] = get_pcvar_num(g_pCvarMaxXPFirstLevel)
  415.         SaveData(id)
  416.     }
  417.     else
  418.     {
  419.         new iLevel[32], iXP[32], iMaxLevel[32]
  420.         parse(szData, iLevel, 31, iXP, 31, iMaxLevel, 31)
  421.        
  422.         g_iLevel[id] = str_to_num(iLevel)
  423.         g_iXP[id] = str_to_num(iXP)
  424.         g_iMaxXP[id] = str_to_num(iMaxLevel)
  425.     }
  426. }
  427.  
  428. public native_ze_get_user_xp(id)
  429. {
  430.     if(!is_user_connected(id))
  431.     {
  432.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  433.         return false;
  434.     }
  435.    
  436.     return g_iXP[id]
  437. }
  438.  
  439. public native_ze_set_user_xp(id, amount)
  440. {
  441.     if(!is_user_connected(id))
  442.     {
  443.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  444.         return false;
  445.     }
  446.    
  447.     DoubleHours()
  448.    
  449.     new iAddedAmount = amount - g_iXP[id]
  450.    
  451.     if (g_bIsDoubleHours)
  452.     {
  453.         g_iXP[id] = g_iXP[id] + (iAddedAmount * 2)
  454.     }
  455.     else
  456.     {
  457.         g_iXP[id] = amount
  458.     }
  459.    
  460.     Check_User_Level(id)
  461.     SaveData(id)
  462.     return true;
  463. }
  464.  
  465. public native_ze_get_user_level(id)
  466. {
  467.     if(!is_user_connected(id))
  468.     {
  469.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  470.         return false;
  471.     }
  472.    
  473.     return g_iLevel[id]
  474. }
  475.  
  476. public native_ze_set_user_level(id, amount)
  477. {
  478.     if(!is_user_connected(id))
  479.     {
  480.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  481.         return false;
  482.     }
  483.    
  484.     g_iLevel[id] = amount
  485.    
  486.     if (get_pcvar_num(g_pCvarStartFromZero) == 1)
  487.     {
  488.         g_iXP[id] = 0
  489.     }
  490.    
  491.     SaveData(id)
  492.    
  493.     return true;
  494. }
  495.  
  496. public native_ze_get_user_max_xp(id)
  497. {
  498.     if(!is_user_connected(id))
  499.     {
  500.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  501.         return false;
  502.     }
  503.    
  504.     return g_iMaxXP[id]
  505. }
  506.  
  507. public native_ze_set_user_max_xp(id, amount)
  508. {
  509.     if(!is_user_connected(id))
  510.     {
  511.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  512.         return false;
  513.     }
  514.    
  515.     g_iMaxXP[id] = amount
  516.    
  517.     SaveData(id)
  518.    
  519.     return true;
  520. }
  521.  
  522. stock DoubleHours()
  523. {
  524.     new szTime[3], szDoubleHours[32], szDoubleHours_Start[32], szDoubleHours_End[32]
  525.     get_time("%H", szTime, charsmax(szTime))
  526.    
  527.     get_pcvar_string(g_pCvarDoubleXP, szDoubleHours, charsmax(szDoubleHours))
  528.    
  529.     for (new ch = 0; ch <= charsmax(szDoubleHours); ch++)
  530.     {
  531.         if (szDoubleHours[ch] == '-')
  532.             szDoubleHours[ch] = ' '
  533.     }
  534.    
  535.     parse(szDoubleHours, szDoubleHours_Start, charsmax(szDoubleHours_Start), szDoubleHours_End, charsmax(szDoubleHours_End))
  536.    
  537.     new iTime, iDoubleHourStart, iDoubleHourEnd
  538.    
  539.     iTime = str_to_num(szTime)
  540.     iDoubleHourStart = str_to_num(szDoubleHours_Start)
  541.     iDoubleHourEnd = str_to_num(szDoubleHours_End)
  542.    
  543.     if(iDoubleHourEnd > iTime >= iDoubleHourStart)
  544.     {
  545.         g_bIsDoubleHours = true
  546.     }
  547.     else
  548.     {
  549.         g_bIsDoubleHours = false
  550.     }
  551. }
nice raheem :D raheem i can set it like this ? ze_double_xp 23-10
Image

User avatar
Spir0x
Veteran Member
Veteran Member
Tunisia
Posts: 641
Joined: 7 years ago
Location: Tunisia
Contact:

#7

Post by Spir0x » 5 years ago

Then where you set the hud message ?

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#8

Post by Raheem » 5 years ago

Here:

  1. public client_putinserver(id)
  2. {
  3.     if(is_user_hltv(id) || is_user_bot(id))
  4.         return
  5.    
  6.     // Just 1 second delay
  7.     set_task(1.0, "DelayLoad", id)
  8.  
  9.     // Other tasks
  10.     set_task(1.0, "Show_Hud", id+TASK_SHOWHUD, _, _, "b")
  11.     set_task(0.1, "Check_MaxXP", id, _, _, "b")
  12.    
  13.     // Message task
  14.     DoubleHours()
  15.    
  16.     if (g_bIsDoubleHours)
  17.     {
  18.         set_task(REPEAT_TIME, "HappyHours", id+TASK_DOUBLE, _, _, "b")
  19.     }
  20. }
  21.  
  22. public HappyHours(taskid)
  23. {
  24.     new id = taskid - TASK_DOUBLE
  25.    
  26.     DoubleHours()
  27.    
  28.     if (!g_bIsDoubleHours)
  29.         remove_task(taskid)
  30.    
  31.     new szDoubleHours[32]
  32.    
  33.     get_pcvar_string(g_pCvarDoubleXP, szDoubleHours, charsmax(szDoubleHours))
  34.    
  35.     set_dhudmessage(0, 255, 0, -1.0, -1.0, 0, 0.0, 10.0)
  36.     show_dhudmessage(id, "DOUBLE XP: %s", szDoubleHours)
  37. }
sPe3doN wrote: 5 years ago nice raheem :D raheem i can set it like this ? ze_double_xp 23-10
Should be from 0 to 24 but not reversed. Should be in one day.
He who fails to plan is planning to fail

Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

#9

Post by Rain1153 » 5 years ago

how can we change thetime in a server?
LOL

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#10

Post by Raheem » 5 years ago

thetime will display your VPS/Machine time. To change it you will need to change the VPS/Machine time or timezone, like that.
He who fails to plan is planning to fail

Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

#11

Post by Rain1153 » 5 years ago

bro u should make the time reversible like if we want it at 23 to 9
LOL

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#12

Post by Raheem » 5 years ago

This will require a day check, will require new idea to the code like:

if it's starting at 23 our max is 24 then at 24 i should make starting 0 to 9 somehow will be strange for me in coding.
He who fails to plan is planning to fail

Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

#13

Post by Rain1153 » 5 years ago

ok
LOL

czirimbolo
Veteran Member
Veteran Member
Poland
Posts: 598
Joined: 7 years ago
Contact:

#14

Post by czirimbolo » 5 years ago

How to make this message a little big higer? I dont want to have it on the center
Image

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#15

Post by Raheem » 5 years ago

set_dhudmessage(0, 255, 0, -1.0, -1.0, 0, 0.0, 10.0)
Change the Y so something like:
set_dhudmessage(0, 255, 0, -1.0, 0.5, 0, 0.0, 10.0)
He who fails to plan is planning to fail

User avatar
Mark
VIP
VIP
United States of America
Posts: 283
Joined: 5 years ago
Location: Des Moines/USA
Contact:

#16

Post by Mark » 5 years ago

Raheem wrote: 5 years ago Here:

  1. #include <zombie_escape>
  2.  
  3. // Defines
  4. #define MAX_LEVEL 50
  5. #define MAX_XP 500000
  6. #define TASK_SHOWHUD 2020
  7. #define TASK_DOUBLE 1133
  8. #define REPEAT_TIME 60.0
  9. #define ID_SHOWHUD (taskid - TASK_SHOWHUD)
  10. #define LEVELUP "levelup_ZE/ze_levelup.wav"
  11.  
  12. // Constants
  13. new const g_szLevelsVault[] = "Levels"
  14. new const g_szRanksVault[] = "Ranks"
  15.  
  16. // Messages
  17. const Float:HUD_SPECT_X = -1.0
  18. const Float:HUD_SPECT_Y = 0.70
  19. const Float:HUD_STATS_X = -1.0
  20. const Float:HUD_STATS_Y = 0.90
  21.  
  22. const HUD_STATS_ZOMBIE_R = 200
  23. const HUD_STATS_ZOMBIE_G = 220
  24. const HUD_STATS_ZOMBIE_B = 0
  25.  
  26. const HUD_STATS_HUMAN_R = 0
  27. const HUD_STATS_HUMAN_G = 200
  28. const HUD_STATS_HUMAN_B = 210
  29.  
  30. const HUD_STATS_SPEC_R = 100
  31. const HUD_STATS_SPEC_G = 100
  32. const HUD_STATS_SPEC_B = 100
  33.  
  34. // Variables
  35. new g_iLevel[33],
  36.     g_iXP[33],
  37.     g_iMaxXP[33],
  38.     Float:g_fDamage[33],
  39.     g_MsgSync,
  40.     g_iLevelsVaultHandle,
  41.     g_iRanksVaultHandle,
  42.     bool:g_bIsDoubleHours
  43.  
  44. // Cvars
  45. new g_pCvarZombieInfect,
  46.     g_pCvarEscapeSuccess,
  47.     g_pCvarEnableDamage,
  48.     g_pCvarRequiredDamage,
  49.     g_pCvarDamageAward,
  50.     g_pCvarStartXP,
  51.     g_pCvarMaxLevelsIncrement,
  52.     g_pCvarMaxXPFirstLevel,
  53.     g_pCvarPercentageStyle,
  54.     g_pCvarStartFromZero,
  55.     g_pCvarAddCommas,
  56.     g_pCvarLevelEffects,
  57.     g_pCvarDoubleXP
  58.  
  59. public plugin_natives()
  60. {
  61.     register_native("ze_get_user_xp", "native_ze_get_user_xp", 1)
  62.     register_native("ze_set_user_xp", "native_ze_set_user_xp", 1)
  63.     register_native("ze_get_user_level", "native_ze_get_user_level", 1)
  64.     register_native("ze_set_user_level", "native_ze_set_user_level", 1)
  65.     register_native("ze_get_user_max_xp", "native_ze_get_user_max_xp", 1)
  66.     register_native("ze_set_user_max_xp", "native_ze_set_user_max_xp", 1)
  67. }
  68.  
  69. public plugin_precache()
  70. {
  71.     precache_sound(LEVELUP)
  72. }
  73.  
  74. public plugin_init()
  75. {
  76.     register_plugin("[ZE] Level-XP System", "1.8", "Raheem/JaCk")
  77.    
  78.     // Hook Chains
  79.     RegisterHookChain(RG_CBasePlayer_TakeDamage, "Fw_TakeDamage_Post", 1)
  80.    
  81.     // Cvars
  82.     g_pCvarZombieInfect = register_cvar("ze_zombie_infect", "3")
  83.     g_pCvarEscapeSuccess = register_cvar("ze_escape_success", "5")
  84.     g_pCvarEnableDamage = register_cvar("ze_enable_dmg", "1")
  85.     g_pCvarRequiredDamage = register_cvar("ze_required_dmg", "50.0")
  86.     g_pCvarDamageAward = register_cvar("ze_dmg_award", "3")
  87.     g_pCvarStartXP = register_cvar("ze_start_xp", "50")
  88.     g_pCvarMaxLevelsIncrement = register_cvar("ze_maxlevels_increment", "2.0")
  89.     g_pCvarMaxXPFirstLevel = register_cvar("ze_max_xp_first_level", "100")
  90.     g_pCvarPercentageStyle = register_cvar("ze_enable_percentage_style", "1")
  91.     g_pCvarStartFromZero = register_cvar("ze_new_level_zero_xp", "0")
  92.     g_pCvarAddCommas = register_cvar("ze_add_commas_to_xp", "1")
  93.     g_pCvarLevelEffects = register_cvar("ze_level_up_effects", "1")
  94.     g_pCvarDoubleXP = register_cvar("ze_double_xp", "9-12")
  95.    
  96.     // Messages
  97.     g_MsgSync = CreateHudSyncObj()
  98. }
  99.  
  100. public client_putinserver(id)
  101. {
  102.     if(is_user_hltv(id) || is_user_bot(id))
  103.         return
  104.    
  105.     // Just 1 second delay
  106.     set_task(1.0, "DelayLoad", id)
  107.  
  108.     // Other tasks
  109.     set_task(1.0, "Show_Hud", id+TASK_SHOWHUD, _, _, "b")
  110.     set_task(0.1, "Check_MaxXP", id, _, _, "b")
  111.    
  112.     // Message task
  113.     DoubleHours()
  114.    
  115.     if (g_bIsDoubleHours)
  116.     {
  117.         set_task(REPEAT_TIME, "HappyHours", id+TASK_DOUBLE, _, _, "b")
  118.     }
  119. }
  120.  
  121. public HappyHours(taskid)
  122. {
  123.     new id = taskid - TASK_DOUBLE
  124.    
  125.     DoubleHours()
  126.    
  127.     if (!g_bIsDoubleHours)
  128.         remove_task(taskid)
  129.    
  130.     new szDoubleHours[32]
  131.    
  132.     get_pcvar_string(g_pCvarDoubleXP, szDoubleHours, charsmax(szDoubleHours))
  133.    
  134.     set_dhudmessage(0, 255, 0, -1.0, -1.0, 0, 0.0, 10.0)
  135.     show_dhudmessage(id, "DOUBLE XP: %s", szDoubleHours)
  136. }
  137.  
  138. public DelayLoad(id)
  139. {
  140.     // Load his data
  141.     LoadData(id)
  142. }
  143.  
  144. public client_disconnected(id)
  145. {
  146.     if(is_user_hltv(id) || is_user_bot(id))
  147.         return
  148.        
  149.     remove_task(id+TASK_SHOWHUD)
  150.     remove_task(id)
  151. }
  152.  
  153. public Check_MaxXP(id)
  154. {
  155.     new iCurrentMaxXP = g_iMaxXP[id]
  156.    
  157.     new iMaxXP = get_pcvar_num(g_pCvarMaxXPFirstLevel)
  158.    
  159.     for (new i = 1; i <= g_iLevel[id]; i++)
  160.     {
  161.         iMaxXP = floatround(float(iMaxXP) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
  162.     }
  163.    
  164.     if (iCurrentMaxXP != iMaxXP)
  165.     {
  166.         g_iMaxXP[id] = iMaxXP
  167.     }
  168. }
  169.  
  170. public Show_Hud(taskid)
  171. {  
  172.     new iPlayer = ID_SHOWHUD
  173.    
  174.     if (!is_user_alive(iPlayer))
  175.     {
  176.         iPlayer = pev(iPlayer, pev_iuser2)
  177.        
  178.         if (!is_user_alive(iPlayer))
  179.             return
  180.     }
  181.    
  182.     if (get_pcvar_num(g_pCvarPercentageStyle) != 0)
  183.     {
  184.         if(iPlayer != ID_SHOWHUD)
  185.         {
  186.             set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  187.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[iPlayer], (float(g_iXP[iPlayer])/float(g_iMaxXP[iPlayer])) * 100.0)
  188.         }
  189.         else if (ze_is_user_zombie(iPlayer))
  190.         {
  191.             set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  192.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
  193.         }
  194.         else
  195.         {
  196.             set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  197.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
  198.         }
  199.     }
  200.     else
  201.     {
  202.         if(iPlayer != ID_SHOWHUD)
  203.         {
  204.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  205.             {
  206.                 new szSpecXP[15], szSpecMaxXP[15]
  207.                
  208.                 AddCommas(g_iXP[iPlayer], szSpecXP, charsmax(szSpecXP))
  209.                 AddCommas(g_iMaxXP[iPlayer], szSpecMaxXP, charsmax(szSpecMaxXP))
  210.                
  211.                 set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  212.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[iPlayer], szSpecXP, szSpecMaxXP)
  213.             }
  214.             else
  215.             {
  216.                 set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  217.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[iPlayer], g_iXP[iPlayer], g_iMaxXP[iPlayer])
  218.             }  
  219.         }
  220.         else if (ze_is_user_zombie(iPlayer))
  221.         {
  222.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  223.             {
  224.                 new szZombieXP[15], szZombieMaxXP[15]
  225.                
  226.                 AddCommas(g_iXP[ID_SHOWHUD], szZombieXP, charsmax(szZombieXP))
  227.                 AddCommas(g_iMaxXP[ID_SHOWHUD], szZombieMaxXP, charsmax(szZombieMaxXP))
  228.                
  229.                 set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  230.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[ID_SHOWHUD], szZombieXP, szZombieMaxXP)
  231.             }
  232.             else
  233.             {
  234.                 set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  235.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD])
  236.             }
  237.         }
  238.         else
  239.         {
  240.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  241.             {
  242.                 new szHumanXP[15], szHumanMaxXP[15]
  243.                
  244.                 AddCommas(g_iXP[ID_SHOWHUD], szHumanXP, charsmax(szHumanXP))
  245.                 AddCommas(g_iMaxXP[ID_SHOWHUD], szHumanMaxXP, charsmax(szHumanMaxXP))
  246.                
  247.                 set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  248.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[ID_SHOWHUD], szHumanXP, szHumanMaxXP)
  249.             }
  250.             else
  251.             {
  252.                 set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  253.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD])
  254.             }
  255.         }
  256.     }
  257. }
  258.  
  259. public ze_roundend(WinTeam)
  260. {
  261.     if (WinTeam == ZE_TEAM_HUMAN)
  262.     {
  263.         for(new id = 1; id <= get_member_game(m_nMaxPlayers); id++)
  264.         {
  265.             if (!is_user_alive(id) || get_member(id, m_iTeam) == TEAM_TERRORIST)
  266.                 continue
  267.            
  268.             g_iXP[id] += get_pcvar_num(g_pCvarEscapeSuccess)
  269.             SaveData(id)
  270.             Check_User_Level(id)
  271.         }
  272.     }
  273.    
  274.     remove_task(TASK_SHOWHUD)
  275. }
  276.  
  277. public Check_User_Level(id)
  278. {
  279.     if(!is_user_connected(id))
  280.         return
  281.  
  282.     if(g_iXP[id] >= g_iMaxXP[id])
  283.     {
  284.         if (get_pcvar_num(g_pCvarStartFromZero) == 1)
  285.         {
  286.             g_iXP[id] = 0
  287.         }
  288.        
  289.         new szName[32]
  290.         g_iLevel[id] ++
  291.         g_iMaxXP[id] = floatround(float(g_iMaxXP[id]) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
  292.         get_user_name(id, szName, charsmax(szName))
  293.         ze_colored_print(0, "!g%s !tNow in Level %i!y!", szName, g_iLevel[id])
  294.        
  295.         SaveData(id)
  296.        
  297.         PlaySound(id, LEVELUP)
  298.        
  299.         if (get_pcvar_num(g_pCvarLevelEffects) != 0)
  300.         {
  301.             // Screen Fade
  302.             message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
  303.             write_short(4096*2)
  304.             write_short(4096*5)
  305.             write_short(0x0001)
  306.             write_byte(random(256))
  307.             write_byte(random(256))
  308.             write_byte(random(256))
  309.             write_byte(150)
  310.             message_end()
  311.            
  312.             // Screen Shake
  313.             message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, id)
  314.             write_short(255<<14)
  315.             write_short(10<<14)
  316.             write_short(255<<14)
  317.             message_end()
  318.         }
  319.     }
  320. }
  321.  
  322. public ze_user_infected(iVictim, iInfector)
  323. {
  324.     if (iInfector == 0)
  325.         return
  326.    
  327.     g_iXP[iInfector] += get_pcvar_num(g_pCvarZombieInfect)
  328.     SaveData(iInfector)
  329.     Check_User_Level(iInfector)
  330. }
  331.  
  332. public Fw_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, bitsDamageType)
  333. {
  334.     // Player Damage Himself
  335.     if (iVictim == iAttacker || !is_user_alive(iVictim) || !is_user_alive(iAttacker) || ze_is_user_zombie(iAttacker) || !get_pcvar_num(g_pCvarEnableDamage))
  336.         return HC_CONTINUE
  337.    
  338.     // Same Team?
  339.     if (get_member(iAttacker, m_iTeam) == get_member(iVictim, m_iTeam))
  340.         return HC_CONTINUE
  341.    
  342.     // Store Damage For every Player
  343.     g_fDamage[iAttacker] += fDamage
  344.    
  345.     // Damage Calculator Equal or Higher than needed damage
  346.     if (g_fDamage[iAttacker] >= get_pcvar_float(g_pCvarRequiredDamage))
  347.     {
  348.         // Give Player The Coins
  349.         g_iXP[iAttacker] += get_pcvar_num(g_pCvarDamageAward)
  350.         SaveData(iAttacker)
  351.         Check_User_Level(iAttacker)
  352.        
  353.         // Rest The Damage Calculator
  354.         g_fDamage[iAttacker] = 0.0
  355.     }
  356.     return HC_CONTINUE
  357. }
  358.  
  359. public SaveData(id)
  360. {
  361.     new szAuthID[35], szName[32]
  362.     get_user_authid(id, szAuthID, charsmax(szAuthID))
  363.     get_user_name(id, szName, charsmax(szName))
  364.    
  365.     // Set Him to max if he Higher than Max Value
  366.     if(g_iLevel[id] > MAX_LEVEL)
  367.     {
  368.         g_iLevel[id] = MAX_LEVEL
  369.     }
  370.    
  371.     if(g_iXP[id] > MAX_XP)
  372.     {
  373.         g_iXP[id] = MAX_XP
  374.     }
  375.    
  376.     new szData[256]
  377.     formatex(szData , charsmax(szData), "%i %i %i", g_iLevel[id], g_iXP[id], g_iMaxXP[id])
  378.    
  379.     // Open the Vaults
  380.     g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
  381.     g_iRanksVaultHandle = nvault_open(g_szRanksVault)
  382.  
  383.     // Saves His Data
  384.     nvault_set(g_iLevelsVaultHandle, szAuthID, szData)
  385.     nvault_set(g_iRanksVaultHandle, szAuthID, szName)
  386.    
  387.     // Close Vaults
  388.     nvault_close(g_iLevelsVaultHandle)
  389.     nvault_close(g_iRanksVaultHandle)
  390. }
  391.  
  392. public LoadData(id)
  393. {
  394.     new szData[256], szAuthID[35], szName[32]
  395.    
  396.     get_user_authid(id, szAuthID, charsmax(szAuthID))
  397.     get_user_name(id, szName, charsmax(szName))
  398.    
  399.     // Useless Variable
  400.     new iTimestamp, iExists
  401.    
  402.     // Open the Vault
  403.     g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
  404.    
  405.     iExists = nvault_lookup(g_iLevelsVaultHandle, szAuthID, szData, charsmax(szData), iTimestamp)
  406.    
  407.     // Close Vault
  408.     nvault_close(g_iLevelsVaultHandle)
  409.    
  410.     if (!iExists)
  411.     {
  412.         g_iLevel[id] = 0
  413.         g_iXP[id] = get_pcvar_num(g_pCvarStartXP)
  414.         g_iMaxXP[id] = get_pcvar_num(g_pCvarMaxXPFirstLevel)
  415.         SaveData(id)
  416.     }
  417.     else
  418.     {
  419.         new iLevel[32], iXP[32], iMaxLevel[32]
  420.         parse(szData, iLevel, 31, iXP, 31, iMaxLevel, 31)
  421.        
  422.         g_iLevel[id] = str_to_num(iLevel)
  423.         g_iXP[id] = str_to_num(iXP)
  424.         g_iMaxXP[id] = str_to_num(iMaxLevel)
  425.     }
  426. }
  427.  
  428. public native_ze_get_user_xp(id)
  429. {
  430.     if(!is_user_connected(id))
  431.     {
  432.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  433.         return false;
  434.     }
  435.    
  436.     return g_iXP[id]
  437. }
  438.  
  439. public native_ze_set_user_xp(id, amount)
  440. {
  441.     if(!is_user_connected(id))
  442.     {
  443.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  444.         return false;
  445.     }
  446.    
  447.     DoubleHours()
  448.    
  449.     new iAddedAmount = amount - g_iXP[id]
  450.    
  451.     if (g_bIsDoubleHours)
  452.     {
  453.         g_iXP[id] = g_iXP[id] + (iAddedAmount * 2)
  454.     }
  455.     else
  456.     {
  457.         g_iXP[id] = amount
  458.     }
  459.    
  460.     Check_User_Level(id)
  461.     SaveData(id)
  462.     return true;
  463. }
  464.  
  465. public native_ze_get_user_level(id)
  466. {
  467.     if(!is_user_connected(id))
  468.     {
  469.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  470.         return false;
  471.     }
  472.    
  473.     return g_iLevel[id]
  474. }
  475.  
  476. public native_ze_set_user_level(id, amount)
  477. {
  478.     if(!is_user_connected(id))
  479.     {
  480.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  481.         return false;
  482.     }
  483.    
  484.     g_iLevel[id] = amount
  485.    
  486.     if (get_pcvar_num(g_pCvarStartFromZero) == 1)
  487.     {
  488.         g_iXP[id] = 0
  489.     }
  490.    
  491.     SaveData(id)
  492.    
  493.     return true;
  494. }
  495.  
  496. public native_ze_get_user_max_xp(id)
  497. {
  498.     if(!is_user_connected(id))
  499.     {
  500.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  501.         return false;
  502.     }
  503.    
  504.     return g_iMaxXP[id]
  505. }
  506.  
  507. public native_ze_set_user_max_xp(id, amount)
  508. {
  509.     if(!is_user_connected(id))
  510.     {
  511.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  512.         return false;
  513.     }
  514.    
  515.     g_iMaxXP[id] = amount
  516.    
  517.     SaveData(id)
  518.    
  519.     return true;
  520. }
  521.  
  522. stock DoubleHours()
  523. {
  524.     new szTime[3], szDoubleHours[32], szDoubleHours_Start[32], szDoubleHours_End[32]
  525.     get_time("%H", szTime, charsmax(szTime))
  526.    
  527.     get_pcvar_string(g_pCvarDoubleXP, szDoubleHours, charsmax(szDoubleHours))
  528.    
  529.     for (new ch = 0; ch <= charsmax(szDoubleHours); ch++)
  530.     {
  531.         if (szDoubleHours[ch] == '-')
  532.             szDoubleHours[ch] = ' '
  533.     }
  534.    
  535.     parse(szDoubleHours, szDoubleHours_Start, charsmax(szDoubleHours_Start), szDoubleHours_End, charsmax(szDoubleHours_End))
  536.    
  537.     new iTime, iDoubleHourStart, iDoubleHourEnd
  538.    
  539.     iTime = str_to_num(szTime)
  540.     iDoubleHourStart = str_to_num(szDoubleHours_Start)
  541.     iDoubleHourEnd = str_to_num(szDoubleHours_End)
  542.    
  543.     if(iDoubleHourEnd > iTime >= iDoubleHourStart)
  544.     {
  545.         g_bIsDoubleHours = true
  546.     }
  547.     else
  548.     {
  549.         g_bIsDoubleHours = false
  550.     }
  551. }
Umm cant seem to get this to work? Raheem did you test this on your server?

Heres my code but nothing displays on the screen
  1. #include <zombie_escape>
  2.  
  3. // Defines
  4. #define MAX_LEVEL 50
  5. #define MAX_XP 500000
  6. #define TASK_SHOWHUD 2020
  7. #define TASK_DOUBLE 1133
  8. #define REPEAT_TIME 60.0
  9. #define ID_SHOWHUD (taskid - TASK_SHOWHUD)
  10. #define LEVELUP "levelup_ZE/ze_levelup.wav"
  11.  
  12. // Constants
  13. new const g_szLevelsVault[] = "Levels"
  14. new const g_szRanksVault[] = "Ranks"
  15.  
  16. // Messages
  17. const Float:HUD_SPECT_X = -1.0
  18. const Float:HUD_SPECT_Y = 0.70
  19. const Float:HUD_STATS_X = -1.0
  20. const Float:HUD_STATS_Y = 0.90
  21.  
  22. const HUD_STATS_ZOMBIE_R = 200
  23. const HUD_STATS_ZOMBIE_G = 220
  24. const HUD_STATS_ZOMBIE_B = 0
  25.  
  26. const HUD_STATS_HUMAN_R = 0
  27. const HUD_STATS_HUMAN_G = 200
  28. const HUD_STATS_HUMAN_B = 210
  29.  
  30. const HUD_STATS_SPEC_R = 100
  31. const HUD_STATS_SPEC_G = 100
  32. const HUD_STATS_SPEC_B = 100
  33.  
  34. // Variables
  35. new g_iLevel[33],
  36.     g_iXP[33],
  37.     g_iMaxXP[33],
  38.     Float:g_fDamage[33],
  39.     g_MsgSync,
  40.     g_iLevelsVaultHandle,
  41.     g_iRanksVaultHandle,
  42.     bool:g_bIsDoubleHours
  43.  
  44. // Cvars
  45. new g_pCvarZombieInfect,
  46.     g_pCvarEscapeSuccess,
  47.     g_pCvarEnableDamage,
  48.     g_pCvarRequiredDamage,
  49.     g_pCvarDamageAward,
  50.     g_pCvarStartXP,
  51.     g_pCvarMaxLevelsIncrement,
  52.     g_pCvarMaxXPFirstLevel,
  53.     g_pCvarPercentageStyle,
  54.     g_pCvarStartFromZero,
  55.     g_pCvarAddCommas,
  56.     g_pCvarLevelEffects,
  57.     g_pCvarDoubleXP
  58.  
  59. public plugin_natives()
  60. {
  61.     register_native("ze_get_user_xp", "native_ze_get_user_xp", 1)
  62.     register_native("ze_set_user_xp", "native_ze_set_user_xp", 1)
  63.     register_native("ze_get_user_level", "native_ze_get_user_level", 1)
  64.     register_native("ze_set_user_level", "native_ze_set_user_level", 1)
  65.     register_native("ze_get_user_max_xp", "native_ze_get_user_max_xp", 1)
  66.     register_native("ze_set_user_max_xp", "native_ze_set_user_max_xp", 1)
  67. }
  68.  
  69. public plugin_precache()
  70. {
  71.     precache_sound(LEVELUP)
  72. }
  73.  
  74. public plugin_init()
  75. {
  76.     register_plugin("[ZE] Level-XP System", "1.8", "Raheem/JaCk")
  77.    
  78.     // Hook Chains
  79.     RegisterHookChain(RG_CBasePlayer_TakeDamage, "Fw_TakeDamage_Post", 1)
  80.    
  81.     // Cvars
  82.     g_pCvarZombieInfect = register_cvar("ze_zombie_infect", "3")
  83.     g_pCvarEscapeSuccess = register_cvar("ze_escape_success", "5")
  84.     g_pCvarEnableDamage = register_cvar("ze_enable_dmg", "1")
  85.     g_pCvarRequiredDamage = register_cvar("ze_required_dmg", "50.0")
  86.     g_pCvarDamageAward = register_cvar("ze_dmg_award", "3")
  87.     g_pCvarStartXP = register_cvar("ze_start_xp", "50")
  88.     g_pCvarMaxLevelsIncrement = register_cvar("ze_maxlevels_increment", "2.0")
  89.     g_pCvarMaxXPFirstLevel = register_cvar("ze_max_xp_first_level", "100")
  90.     g_pCvarPercentageStyle = register_cvar("ze_enable_percentage_style", "1")
  91.     g_pCvarStartFromZero = register_cvar("ze_new_level_zero_xp", "0")
  92.     g_pCvarAddCommas = register_cvar("ze_add_commas_to_xp", "1")
  93.     g_pCvarLevelEffects = register_cvar("ze_level_up_effects", "1")
  94.     g_pCvarDoubleXP = register_cvar("ze_double_xp", "9-12")
  95.    
  96.     // Messages
  97.     g_MsgSync = CreateHudSyncObj()
  98. }
  99.  
  100. public client_putinserver(id)
  101. {
  102.     if(is_user_hltv(id) || is_user_bot(id))
  103.         return
  104.    
  105.     // Just 1 second delay
  106.     set_task(1.0, "DelayLoad", id)
  107.  
  108.     // Other tasks
  109.     set_task(1.0, "Show_Hud", id+TASK_SHOWHUD, _, _, "b")
  110.     set_task(0.1, "Check_MaxXP", id, _, _, "b")
  111.    
  112.     // Message task
  113.     DoubleHours()
  114.    
  115.     if (g_bIsDoubleHours)
  116.     {
  117.         set_task(REPEAT_TIME, "HappyHours", id+TASK_DOUBLE, _, _, "b")
  118.     }
  119. }
  120.  
  121. public HappyHours(taskid)
  122. {
  123.     new id = taskid - TASK_DOUBLE
  124.    
  125.     DoubleHours()
  126.    
  127.     if (!g_bIsDoubleHours)
  128.         remove_task(taskid)
  129.    
  130.     new szDoubleHours[32]
  131.    
  132.     get_pcvar_string(g_pCvarDoubleXP, szDoubleHours, charsmax(szDoubleHours))
  133.    
  134.     set_dhudmessage(0, 255, 0, -1.0, -1.0, 0, 0.0, 10.0)
  135.     show_dhudmessage(id, "DOUBLE XP: %s", szDoubleHours)
  136. }
  137.  
  138. public DelayLoad(id)
  139. {
  140.     // Load his data
  141.     LoadData(id)
  142. }
  143.  
  144. public client_disconnected(id)
  145. {
  146.     if(is_user_hltv(id) || is_user_bot(id))
  147.         return
  148.        
  149.     remove_task(id+TASK_SHOWHUD)
  150.     remove_task(id)
  151. }
  152.  
  153. public Check_MaxXP(id)
  154. {
  155.     new iCurrentMaxXP = g_iMaxXP[id]
  156.    
  157.     new iMaxXP = get_pcvar_num(g_pCvarMaxXPFirstLevel)
  158.    
  159.     for (new i = 1; i <= g_iLevel[id]; i++)
  160.     {
  161.         iMaxXP = floatround(float(iMaxXP) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
  162.     }
  163.    
  164.     if (iCurrentMaxXP != iMaxXP)
  165.     {
  166.         g_iMaxXP[id] = iMaxXP
  167.     }
  168. }
  169.  
  170. public Show_Hud(taskid)
  171. {  
  172.     new iPlayer = ID_SHOWHUD
  173.    
  174.     if (!is_user_alive(iPlayer))
  175.     {
  176.         iPlayer = pev(iPlayer, pev_iuser2)
  177.        
  178.         if (!is_user_alive(iPlayer))
  179.             return
  180.     }
  181.    
  182.     if (get_pcvar_num(g_pCvarPercentageStyle) != 0)
  183.     {
  184.         if(iPlayer != ID_SHOWHUD)
  185.         {
  186.             set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  187.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[iPlayer], (float(g_iXP[iPlayer])/float(g_iMaxXP[iPlayer])) * 100.0)
  188.         }
  189.         else if (ze_is_user_zombie(iPlayer))
  190.         {
  191.             set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  192.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
  193.         }
  194.         else
  195.         {
  196.             set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  197.             ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %0.2f %", g_iLevel[ID_SHOWHUD], (float(g_iXP[ID_SHOWHUD])/float(g_iMaxXP[ID_SHOWHUD])) * 100.0)
  198.         }
  199.     }
  200.     else
  201.     {
  202.         if(iPlayer != ID_SHOWHUD)
  203.         {
  204.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  205.             {
  206.                 new szSpecXP[15], szSpecMaxXP[15]
  207.                
  208.                 AddCommas(g_iXP[iPlayer], szSpecXP, charsmax(szSpecXP))
  209.                 AddCommas(g_iMaxXP[iPlayer], szSpecMaxXP, charsmax(szSpecMaxXP))
  210.                
  211.                 set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  212.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[iPlayer], szSpecXP, szSpecMaxXP)
  213.             }
  214.             else
  215.             {
  216.                 set_hudmessage(HUD_STATS_SPEC_R, HUD_STATS_SPEC_G, HUD_STATS_SPEC_B, HUD_SPECT_X, HUD_SPECT_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  217.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[iPlayer], g_iXP[iPlayer], g_iMaxXP[iPlayer])
  218.             }  
  219.         }
  220.         else if (ze_is_user_zombie(iPlayer))
  221.         {
  222.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  223.             {
  224.                 new szZombieXP[15], szZombieMaxXP[15]
  225.                
  226.                 AddCommas(g_iXP[ID_SHOWHUD], szZombieXP, charsmax(szZombieXP))
  227.                 AddCommas(g_iMaxXP[ID_SHOWHUD], szZombieMaxXP, charsmax(szZombieMaxXP))
  228.                
  229.                 set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  230.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[ID_SHOWHUD], szZombieXP, szZombieMaxXP)
  231.             }
  232.             else
  233.             {
  234.                 set_hudmessage(HUD_STATS_ZOMBIE_R, HUD_STATS_ZOMBIE_G, HUD_STATS_ZOMBIE_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  235.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD])
  236.             }
  237.         }
  238.         else
  239.         {
  240.             if (get_pcvar_num(g_pCvarAddCommas) == 1)
  241.             {
  242.                 new szHumanXP[15], szHumanMaxXP[15]
  243.                
  244.                 AddCommas(g_iXP[ID_SHOWHUD], szHumanXP, charsmax(szHumanXP))
  245.                 AddCommas(g_iMaxXP[ID_SHOWHUD], szHumanMaxXP, charsmax(szHumanMaxXP))
  246.                
  247.                 set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  248.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %s/%s", g_iLevel[ID_SHOWHUD], szHumanXP, szHumanMaxXP)
  249.             }
  250.             else
  251.             {
  252.                 set_hudmessage(HUD_STATS_HUMAN_R, HUD_STATS_HUMAN_G, HUD_STATS_HUMAN_B, HUD_STATS_X, HUD_STATS_Y, 0, 6.0, 1.1, 0.0, 0.0, -1)
  253.                 ShowSyncHudMsg(ID_SHOWHUD, g_MsgSync, "Level: %d | XP: %d/%d", g_iLevel[ID_SHOWHUD], g_iXP[ID_SHOWHUD], g_iMaxXP[ID_SHOWHUD])
  254.             }
  255.         }
  256.     }
  257. }
  258.  
  259. public ze_roundend(WinTeam)
  260. {
  261.     if (WinTeam == ZE_TEAM_HUMAN)
  262.     {
  263.         for(new id = 1; id <= get_member_game(m_nMaxPlayers); id++)
  264.         {
  265.             if (!is_user_alive(id) || get_member(id, m_iTeam) == TEAM_TERRORIST)
  266.                 continue
  267.            
  268.             g_iXP[id] += get_pcvar_num(g_pCvarEscapeSuccess)
  269.             SaveData(id)
  270.             Check_User_Level(id)
  271.         }
  272.     }
  273.    
  274.     remove_task(TASK_SHOWHUD)
  275. }
  276.  
  277. public Check_User_Level(id)
  278. {
  279.     if(!is_user_connected(id))
  280.         return
  281.  
  282.     if(g_iXP[id] >= g_iMaxXP[id])
  283.     {
  284.         if (get_pcvar_num(g_pCvarStartFromZero) == 1)
  285.         {
  286.             g_iXP[id] = 0
  287.         }
  288.        
  289.         new szName[32]
  290.         g_iLevel[id] ++
  291.         g_iMaxXP[id] = floatround(float(g_iMaxXP[id]) * get_pcvar_float(g_pCvarMaxLevelsIncrement))
  292.         get_user_name(id, szName, charsmax(szName))
  293.         ze_colored_print(0, "!g%s !tNow in Level %i!y!", szName, g_iLevel[id])
  294.        
  295.         SaveData(id)
  296.        
  297.         PlaySound(id, LEVELUP)
  298.        
  299.         if (get_pcvar_num(g_pCvarLevelEffects) != 0)
  300.         {
  301.             // Screen Fade
  302.             message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
  303.             write_short(4096*2)
  304.             write_short(4096*5)
  305.             write_short(0x0001)
  306.             write_byte(random(256))
  307.             write_byte(random(256))
  308.             write_byte(random(256))
  309.             write_byte(150)
  310.             message_end()
  311.            
  312.             // Screen Shake
  313.             message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, id)
  314.             write_short(255<<14)
  315.             write_short(10<<14)
  316.             write_short(255<<14)
  317.             message_end()
  318.         }
  319.     }
  320. }
  321.  
  322. public ze_user_infected(iVictim, iInfector)
  323. {
  324.     if (iInfector == 0)
  325.         return
  326.    
  327.     g_iXP[iInfector] += get_pcvar_num(g_pCvarZombieInfect)
  328.     SaveData(iInfector)
  329.     Check_User_Level(iInfector)
  330. }
  331.  
  332. public Fw_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, bitsDamageType)
  333. {
  334.     // Player Damage Himself
  335.     if (iVictim == iAttacker || !is_user_alive(iVictim) || !is_user_alive(iAttacker) || ze_is_user_zombie(iAttacker) || !get_pcvar_num(g_pCvarEnableDamage))
  336.         return HC_CONTINUE
  337.    
  338.     // Same Team?
  339.     if (get_member(iAttacker, m_iTeam) == get_member(iVictim, m_iTeam))
  340.         return HC_CONTINUE
  341.    
  342.     // Store Damage For every Player
  343.     g_fDamage[iAttacker] += fDamage
  344.    
  345.     // Damage Calculator Equal or Higher than needed damage
  346.     if (g_fDamage[iAttacker] >= get_pcvar_float(g_pCvarRequiredDamage))
  347.     {
  348.         // Give Player The Coins
  349.         g_iXP[iAttacker] += get_pcvar_num(g_pCvarDamageAward)
  350.         SaveData(iAttacker)
  351.         Check_User_Level(iAttacker)
  352.        
  353.         // Rest The Damage Calculator
  354.         g_fDamage[iAttacker] = 0.0
  355.     }
  356.     return HC_CONTINUE
  357. }
  358.  
  359. public SaveData(id)
  360. {
  361.     new szAuthID[35], szName[32]
  362.     get_user_authid(id, szAuthID, charsmax(szAuthID))
  363.     get_user_name(id, szName, charsmax(szName))
  364.    
  365.     // Set Him to max if he Higher than Max Value
  366.     if(g_iLevel[id] > MAX_LEVEL)
  367.     {
  368.         g_iLevel[id] = MAX_LEVEL
  369.     }
  370.    
  371.     if(g_iXP[id] > MAX_XP)
  372.     {
  373.         g_iXP[id] = MAX_XP
  374.     }
  375.    
  376.     new szData[256]
  377.     formatex(szData , charsmax(szData), "%i %i %i", g_iLevel[id], g_iXP[id], g_iMaxXP[id])
  378.    
  379.     // Open the Vaults
  380.     g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
  381.     g_iRanksVaultHandle = nvault_open(g_szRanksVault)
  382.  
  383.     // Saves His Data
  384.     nvault_set(g_iLevelsVaultHandle, szAuthID, szData)
  385.     nvault_set(g_iRanksVaultHandle, szAuthID, szName)
  386.    
  387.     // Close Vaults
  388.     nvault_close(g_iLevelsVaultHandle)
  389.     nvault_close(g_iRanksVaultHandle)
  390. }
  391.  
  392. public LoadData(id)
  393. {
  394.     new szData[256], szAuthID[35], szName[32]
  395.    
  396.     get_user_authid(id, szAuthID, charsmax(szAuthID))
  397.     get_user_name(id, szName, charsmax(szName))
  398.    
  399.     // Useless Variable
  400.     new iTimestamp, iExists
  401.    
  402.     // Open the Vault
  403.     g_iLevelsVaultHandle = nvault_open(g_szLevelsVault)
  404.    
  405.     iExists = nvault_lookup(g_iLevelsVaultHandle, szAuthID, szData, charsmax(szData), iTimestamp)
  406.    
  407.     // Close Vault
  408.     nvault_close(g_iLevelsVaultHandle)
  409.    
  410.     if (!iExists)
  411.     {
  412.         g_iLevel[id] = 0
  413.         g_iXP[id] = get_pcvar_num(g_pCvarStartXP)
  414.         g_iMaxXP[id] = get_pcvar_num(g_pCvarMaxXPFirstLevel)
  415.         SaveData(id)
  416.     }
  417.     else
  418.     {
  419.         new iLevel[32], iXP[32], iMaxLevel[32]
  420.         parse(szData, iLevel, 31, iXP, 31, iMaxLevel, 31)
  421.        
  422.         g_iLevel[id] = str_to_num(iLevel)
  423.         g_iXP[id] = str_to_num(iXP)
  424.         g_iMaxXP[id] = str_to_num(iMaxLevel)
  425.     }
  426. }
  427.  
  428. public native_ze_get_user_xp(id)
  429. {
  430.     if(!is_user_connected(id))
  431.     {
  432.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  433.         return false;
  434.     }
  435.    
  436.     return g_iXP[id]
  437. }
  438.  
  439. public native_ze_set_user_xp(id, amount)
  440. {
  441.     if(!is_user_connected(id))
  442.     {
  443.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  444.         return false;
  445.     }
  446.    
  447.     DoubleHours()
  448.    
  449.     new iAddedAmount = amount - g_iXP[id]
  450.    
  451.     if (g_bIsDoubleHours)
  452.     {
  453.         g_iXP[id] = g_iXP[id] + (iAddedAmount * 2)
  454.     }
  455.     else
  456.     {
  457.         g_iXP[id] = amount
  458.     }
  459.    
  460.     Check_User_Level(id)
  461.     SaveData(id)
  462.     return true;
  463. }
  464.  
  465. public native_ze_get_user_level(id)
  466. {
  467.     if(!is_user_connected(id))
  468.     {
  469.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  470.         return false;
  471.     }
  472.    
  473.     return g_iLevel[id]
  474. }
  475.  
  476. public native_ze_set_user_level(id, amount)
  477. {
  478.     if(!is_user_connected(id))
  479.     {
  480.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  481.         return false;
  482.     }
  483.    
  484.     g_iLevel[id] = amount
  485.    
  486.     if (get_pcvar_num(g_pCvarStartFromZero) == 1)
  487.     {
  488.         g_iXP[id] = 0
  489.     }
  490.    
  491.     SaveData(id)
  492.    
  493.     return true;
  494. }
  495.  
  496. public native_ze_get_user_max_xp(id)
  497. {
  498.     if(!is_user_connected(id))
  499.     {
  500.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  501.         return false;
  502.     }
  503.    
  504.     return g_iMaxXP[id]
  505. }
  506.  
  507. public native_ze_set_user_max_xp(id, amount)
  508. {
  509.     if(!is_user_connected(id))
  510.     {
  511.         log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
  512.         return false;
  513.     }
  514.    
  515.     g_iMaxXP[id] = amount
  516.    
  517.     SaveData(id)
  518.    
  519.     return true;
  520. }
  521.  
  522. stock DoubleHours()
  523. {
  524.     new szTime[3], szDoubleHours[32], szDoubleHours_Start[32], szDoubleHours_End[32]
  525.     get_time("%H", szTime, charsmax(szTime))
  526.    
  527.     get_pcvar_string(g_pCvarDoubleXP, szDoubleHours, charsmax(szDoubleHours))
  528.    
  529.     for (new ch = 0; ch <= charsmax(szDoubleHours); ch++)
  530.     {
  531.         if (szDoubleHours[ch] == '-')
  532.             szDoubleHours[ch] = ' '
  533.     }
  534.    
  535.     parse(szDoubleHours, szDoubleHours_Start, charsmax(szDoubleHours_Start), szDoubleHours_End, charsmax(szDoubleHours_End))
  536.    
  537.     new iTime, iDoubleHourStart, iDoubleHourEnd
  538.    
  539.     iTime = str_to_num(szTime)
  540.     iDoubleHourStart = str_to_num(szDoubleHours_Start)
  541.     iDoubleHourEnd = str_to_num(szDoubleHours_End)
  542.    
  543.     if(iDoubleHourEnd > iTime >= iDoubleHourStart)
  544.     {
  545.         g_bIsDoubleHours = true
  546.     }
  547.     else
  548.     {
  549.         g_bIsDoubleHours = false
  550.     }
  551. }

User avatar
Mark
VIP
VIP
United States of America
Posts: 283
Joined: 5 years ago
Location: Des Moines/USA
Contact:

#17

Post by Mark » 5 years ago

Bump***

Post Reply

Create an account or sign in to join the discussion

You need to be a member in order to post a reply

Create an account

Not a member? register to join our community
Members can start their own topics & subscribe to topics
It’s free and only takes a minute

Register

Sign in

Who is online

Users browsing this forum: No registered users and 2 guests