double xp
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
Hello,
It will be simpler if we added it in the plugin itself. I mean in the set xp native in specific time we will multiply values by factor.
Please post your levels plugin source.
It will be simpler if we added it in the plugin itself. I mean in the set xp native in specific time we will multiply values by factor.
Please post your levels plugin source.
He who fails to plan is planning to fail
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
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
// 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
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")
// 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;
}
g_iXP[id] = amount
Check_User_Level(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
}
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
return true;
}
Try:
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() if (g_bIsDoubleHours) { g_iXP[id] = amount * 2 } else { g_iXP[id] = amount } Check_User_Level(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 } 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 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 } }
Last edited by Raheem 5 years ago, edited 1 time in total.
Reason: Forget declaring g_bIsDoubleHours variable, fixed now
Reason: Forget declaring g_bIsDoubleHours variable, fixed now
He who fails to plan is planning to fail
raheem is theat possibel to add this msg when double xp time start ?Raheem wrote: ↑5 years ago Try:
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_bIsHappyHour // 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() if (g_bIsDoubleHours) { g_iXP[id] = amount * 2 } else { g_iXP[id] = amount } Check_User_Level(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 } 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 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 } }
Yes possible, just first confirm that the code i posted works then we will see other things.
He who fails to plan is planning to fail
Raheem bro can you add this feature to my own levels system ?
And nice idea sp3don amazing hud message !
Code:
And nice idea sp3don amazing hud message !
Code:
Code: Select all
#include <zombie_escape>
// Defines
#define MAX_LEVEL 100
#define MAX_XP 10000
#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
// 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
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")
// 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/100 || 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/100 || 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/100 || 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/100 || 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/100 || 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/100 || 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/100 || 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/100 | 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/100 | 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;
}
g_iXP[id] = amount
Check_User_Level(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
}
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
return true;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1036\\ f0\\ fs16 \n\\ par }
*/
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
Yes I have the same :
//// ze_level_system.sma
//
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\ze_level_system.sma(422) : error 017: undefined symbol "g_bIsDoubleHours"
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\ze_level_system.sma(510) : error 017: undefined symbol "g_bIsDoubleHours"
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\ze_level_system.sma(510 -- 511) : warning 215: expression has no effect
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\ze_level_system.sma(514) : error 017: undefined symbol "g_bIsDoubleHours"
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\ze_level_system.sma(514 -- 515) : warning 215: expression has no effect
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\ze_level_system.sma(43) : warning 203: symbol is never used: "g_bIsHappyHour"
//
// 3 Errors.
// Could not locate output file compiled\ze_level_system.amx (compile failed).
//
// Compilation Time: 1,36 sec
//// ze_level_system.sma
//
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\ze_level_system.sma(422) : error 017: undefined symbol "g_bIsDoubleHours"
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\ze_level_system.sma(510) : error 017: undefined symbol "g_bIsDoubleHours"
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\ze_level_system.sma(510 -- 511) : warning 215: expression has no effect
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\ze_level_system.sma(514) : error 017: undefined symbol "g_bIsDoubleHours"
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\ze_level_system.sma(514 -- 515) : warning 215: expression has no effect
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\ze_level_system.sma(43) : warning 203: symbol is never used: "g_bIsHappyHour"
//
// 3 Errors.
// Could not locate output file compiled\ze_level_system.amx (compile failed).
//
// Compilation Time: 1,36 sec
1. Dont give for humans when they win
2. Give to best defender Exp x 9
lol
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
Try:
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) 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 } 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 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 } }
He who fails to plan is planning to fail
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
here is my new code Raheem with giving XP, please can you also add hud message like sp3don requested?
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
}
}
it's best if you make a plugin based on the double xp without touching the main level system
LOL
I noticed that i never used native i make double xp via it in the plugin, that's why it's not working. In native it will work in external plugins.
I mean you can set XP by native without checking it's happy hours or not, if it's happy hours the plugin now will auto detect and multiply by 2.
Code:
- #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
- DoubleHours()
- if (g_bIsDoubleHours)
- {
- g_iXP[id] = g_iXP[id] + (get_pcvar_num(g_pCvarEscapeSuccess) * 2)
- }
- else
- {
- 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
- DoubleHours()
- if (g_bIsDoubleHours)
- {
- g_iXP[iInfector] = g_iXP[iInfector] + (get_pcvar_num(g_pCvarZombieInfect) * 2)
- }
- else
- {
- 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
- DoubleHours()
- if (g_bIsDoubleHours)
- {
- g_iXP[iAttacker] = g_iXP[iAttacker] + (get_pcvar_num(g_pCvarDamageAward) * 2)
- }
- else
- {
- 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
- }
- }
He who fails to plan is planning to fail
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
I think its not working, Best deffender gets normal XP, no double. Also I dont see getting more XP in defined hours. Can someone confirm this?
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
Raheem, lets make it clear. Your last post with code is wrong, also I lost my ability to add or remove XP with that. Here is my code with ability to add XP. Please make it "double xp" and message on the hud. If not, maybe better to make other plugin to double xp.
Thanks
Thanks
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
}
}
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
Sign in
Who is online
Users browsing this forum: No registered users and 1 guest