19/04/2021, 11:45 PM
Buenas alguien tan amable de unir estos plugins, uno es de un sistema de niveles para zp y el otro es un top10 de niveles
top10:
zp niveles:
top10:
Código PHP:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <csx>
#include <nvault>
#include <fakemeta>
#define PLUGIN "Top10 + Levels"
#define AUTHOR "Frnc + Bugsy"
#define VERSION "1.0"
#define VAULT_MAGIC 0x6E564C54 //nVLT
#define VAULT_VERSION 0x0200 //second version
new const LEVELS[10000] =
{
8, // 1
11, // 2
14, // 3
17, // 4
20, // 5
23, // 6
26, // 7
29, // 8
32, // 9
35, // 10
38, // 11
41, // 12
44, // 13
47, // 14
50, // 15
53 // 16
}
new PFRAGS[33]
new PLEVEL[33]
new PDEADS[33]
new Array:TopName
new Array:TopData
const MaxKeyLen = 255; //Max 255
const MaxValLen = 512; //Max 65535
const DataBuffer = 128; //Make this the greater of (MaxKeyLen / 4) or (MaxValLen / 4)
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("DeathMsg", "EventDeathMsg", "a")
register_clcmd("say /level", "printLevel")
register_clcmd("say /top10", "show_top")
TopName = ArrayCreate(1024)
TopData = ArrayCreate(1024)
}
public plugin_cfg()
ReadVault("mro")
public plugin_end()
{
ArrayDestroy(TopName)
ArrayDestroy(TopData)
}
public ReadVault(const szVault[])
{
new szFile[64], iFile
new iVaultMagic, iVaultVersion, iVaultEntries
new iKeyLen, iValLen, iTimeStamp
new szKey[MaxKeyLen+1], szVal[MaxValLen+1], RawData[DataBuffer]
formatex(szFile[get_datadir(szFile, charsmax(szFile))], charsmax(szFile), "/vault/%s.vault", szVault)
iFile = fopen(szFile, "rb")
if(!iFile)
return 0;
// Vault Magic
fread_raw(iFile, RawData, 1, BLOCK_INT)
iVaultMagic = RawData[0]
if(iVaultMagic != VAULT_MAGIC)
set_fail_state("Error reading nVault: Vault Magic")
// Vault Version
fread_raw(iFile, RawData, 1, BLOCK_SHORT)
iVaultVersion = RawData[0] & 0xFFFF
if(iVaultVersion != VAULT_VERSION)
set_fail_state("Error reading nVault: Vault Version")
// Vault Entries
fread_raw(iFile, RawData, 1, BLOCK_INT)
iVaultEntries = RawData[0]
server_print("nVault | Magic=%d Version=%d Entries=%d", iVaultMagic, iVaultVersion, iVaultEntries)
server_print(" ")
for(new iEntry = 0; iEntry < iVaultEntries; iEntry++)
{
// TimeStamp
fread_raw(iFile, RawData, 1, BLOCK_INT)
iTimeStamp = RawData[0]
// Key Length
fread_raw(iFile, RawData, 1, BLOCK_BYTE)
iKeyLen = RawData[0] & 0xFF
// Val Length
fread_raw(iFile, RawData, 1, BLOCK_SHORT)
iValLen = RawData[0] & 0xFFFF
// Key Data
fread_raw(iFile, RawData, iKeyLen, BLOCK_CHAR)
ReadString(szKey, iKeyLen, charsmax(szKey), RawData)
// Val Data
fread_raw(iFile, RawData, iValLen, BLOCK_CHAR)
ReadString(szVal, iValLen, charsmax(szVal), RawData)
/*server_print("Entry=%d KeyLen=%d ValLen=%d TimeStamp=%d", iEntry, iKeyLen, iValLen, iTimeStamp)
server_print("Key=^"%s^"", szKey)
server_print("Val=^"%s^"", szVal)
server_print(" ")*/
ArrayPushString(TopName, szKey)
ArrayPushString(TopData, szVal)
if(iEntry > 1022)
{
set_fail_state("Aumenta los numeros de la linea 133 y 134 en el codigo")
}
}
fclose(iFile)
return iVaultEntries
}
ReadString(szDestString[], iLen, iMaxLen, SourceData[])
{
new iStrPos = -1
new iRawPos = 0
while((++iStrPos < iLen) && (iStrPos < iMaxLen) && (iRawPos < DataBuffer))
{
szDestString[iStrPos] = (SourceData[iRawPos] >> ((iStrPos % 4) * 8)) & 0xFF
if(iStrPos &&((iStrPos % 4) == 3))
iRawPos++
}
szDestString[iStrPos] = EOS
}
public client_putinserver(id)
{
PDEADS[id] = 0
PLEVEL[id] = 0
PFRAGS[id] = 0
Load(id)
}
public client_disconnect(id)
{
Save(id)
PDEADS[id] = 0
PLEVEL[id] = 0
PFRAGS[id] = 0
}
public EventDeathMsg()
{
new killer = read_data(1)
new victim = read_data(2)
if(victim == killer)
{
return PLUGIN_CONTINUE
}
if(victim)
PDEADS[victim]++
if(killer)
PFRAGS[killer]++
check_level(killer)
return PLUGIN_CONTINUE
}
public check_level(id)
{
if(PFRAGS[id] >= LEVELS[PLEVEL[id]])
{
PLEVEL[id]++
print_color(id, "!gSubiste A Nivel: !t%d", PLEVEL[id])
}
}
public printLevel(id)
{
new newlevel = LEVELS[PLEVEL[id]]-PFRAGS[id]
print_color(id, "!gTu Nivel Es !t%d !gY Te Faltan !t%d !gFrags Para Subir", PLEVEL[id], newlevel)
}
public Load(id)
{
new timestamp
new g_vault = nvault_open("mro")
new name[32], key[40], data[200], szfrags[15], szLevel[15], szMuertes[15]
get_user_name(id, name, charsmax(name))
formatex(key, charsmax(key), "^"%s^"", name)
if(nvault_lookup(g_vault, key, data, charsmax(data), timestamp))
{
parse(data, szfrags, 14, szLevel, 14, szMuertes, 14)
PFRAGS[id] = str_to_num(szfrags)
PLEVEL[id] = str_to_num(szLevel)
PDEADS[id] = str_to_num(szMuertes)
}
nvault_close(g_vault)
}
public Save(id)
{
new g_vault = nvault_open("mro")
new name[32], key[40], szValue[64]
get_user_name(id,name,charsmax(name))
formatex(key, charsmax(key), "^"%s^"", name)
formatex(szValue, charsmax(szValue), "%d %d %d", PFRAGS[id], PLEVEL[id], PDEADS[id])
nvault_set(g_vault, key, szValue)
nvault_close(g_vault)
}
public show_top(id)
{
if(ArraySize(TopName) > 511)
{
print_color(id, "AUMENTAMEEEE Sort[512 <- QUIERO MAAS][4]")
return PLUGIN_HANDLED
}
new ff[9], ll[9], mm[9], temp[9*3], count
static Sort[512][4] // Pendiente aca
for(new i; i < ArraySize(TopName); i++)
{
ArrayGetString(TopData, i, temp, charsmax(temp))
parse(temp, ff, charsmax(ff), ll, charsmax(ll), mm, charsmax(mm))
Sort[count][0] = i
Sort[count][1] = str_to_num(ll)
Sort[count][2] = str_to_num(ff)
Sort[count][3] = str_to_num(mm)
count++
}
SortCustom2D(Sort, count, "compare_xp")
new motd[1501], iLen
iLen = format(motd, sizeof motd - 1, "<body bgcolor=#000000 text=#98f5ff><pre>")
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"%s %-22.22s %3s %6s %6s^n", "#", "Name", "Nivel", "Asesinatos", "Muertes")
new y = clamp(count, 0, 10)
new name[32]
for(new x = 0; x < y; x++)
{
ArrayGetString(TopName, Sort[x][0], name, charsmax(name))
iLen += format(motd[iLen], (sizeof motd - 1) - iLen, "%d %-22.22s %6d %6d %6d^n", x + 1, name, Sort[x][1],Sort[x][2],Sort[x][3])
}
iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"</body></pre>")
show_motd(id,motd, "Top 10")
return PLUGIN_CONTINUE
}
public compare_xp(elem1[], elem2[])
{
if(elem1[1] > elem2[1])
return -1
else if(elem1[1] < elem2[1])
return 1
return 0
}
stock print_color(id, const msg[], any:...)
{
static buffer[512], msg_SayText = 0
if(!msg_SayText)
msg_SayText = get_user_msgid("SayText")
vformat(buffer, charsmax(buffer), msg, 3)
replace_all( buffer, charsmax( buffer ), "!n", "^1" ); // Default Color
replace_all( buffer, charsmax( buffer ), "!g", "^4" ); // Green Color
replace_all( buffer, charsmax( buffer ), "!t", "^3" ); // Team Color
message_begin(MSG_ONE_UNRELIABLE, msg_SayText, _, id)
write_byte(id)
write_string(buffer)
message_end()
}
zp niveles:
Código PHP:
/*================================================================================
***********************************************************
************ [ [ZP] Ultimate LvL System 2.0 ] *************
***********************************************************
**************** [ PLUGIN STATUS: PUBLIC ] ****************
***********************************************************
-------------------
-*- Description -*-
-------------------
This is leveling system created for Zombie Plague 4.3.
By default: 1Kill=2XP, 750DMG=1XP and XP need for new level is:
XpForLevel = 5 * Level + 3
When you are at higher level, you are more powerful.
--------------------
-*- Requirements -*-
--------------------
* Mods: Zombie Plague 4.3
* AMXX: Version 1.8.0 or later
* Module: amxmodx, amxmisc, zombieplague, nvault, fun, colorchat,
hamsandwich, cstrike, engine
----------------
-*- Commands -*-
----------------
* /lvlshop - open shop menu
* /lvlstats - show your stats in chat
* /lvladmin - show admin menu
-------------------------------
-*- CVARS and Customization -*-
-------------------------------
For a complete and in-depth cvar list, look at the zp_lvl_system.cfg file
located in the amxmodx\configs directory.
-----------------
-*- Changelog -*-
-----------------
* v1.0 - Basic function created
* v1.1 - Shop added to plugin
* v1.2 - Bug fixes at shop
* v1.3 - Configuration file added
* v1.4 - Added showing info while you cross over player with mouse
* v1.5 - Added Cvar for setting X and Y position of HUD
- Removed function for buying levels (cause its sucks)
- Code optimized
* v1.6 - Added Multy-Lingual System (LANG)
* v1.7 - Added Natives for registering items in shop. (Payed with Money($))
* v1.8 - Now items can be payed via Money($) or via Ammo Packs(depending on item)
* v1.9 - Added lot of CVARs.
- Added Level UP sound
- Added prefix [ LVL: %i ]
* v2.0 - Now you can get XP while making damage or killing.
- Added admin menu
- Added system for calculating needed xp for new level
---------------
-*- Credits -*-
---------------
* KliPPy - For theaching me to do job with natives.
* dEfuse[R]s^|-BS - I used some code from his level plugin
(Levels 1.0)
* Re.Act!ve - I used some code from his level plugin
([ZP] Server Addon: LevelUp System XP 3.2b)
=================================================================================*/
#include <amxmodx>
#include <amxmisc>
#include <zombieplague>
#include <nvault>
#include <fun>
#include <colorchat>
#include <hamsandwich>
#include <cstrike>
#include <engine>
#define PLUGIN "[ZP] Ultimate LvL System"
#define VERSION "2.0"
#define AUTHOR "Kegla"
#define is_user_valid(%1) (1 <= %1 <= g_maxplayers)
#define FLAG ADMIN_BAN
new PlayerXP[33] // Player experience
new PlayerLevel[33] // Player level
new PlayerXpForLevel[33] // Needed XP for reaching next level
new PlayerAP[33] // Player bonus armor
new PlayerZmHP[33] // Player bonus zombie health
new PlayerHmHP[33] // Player bonus human health
new PlayerHmDmg[33] // Player bonus human damage
new PlayerZmDmg[33] // Player bonus zombie damage
new g_msg_screenfade // Screenfade while becoming new level
new g_vault // Nvault file
new g_maxplayers // Maximum amount of players on server
new g_msg_sync // Main HUD
new g_damagedealt[33] // Damage done to players
new AMOUNT[33] // Amount of levels (admin cmd: Set Levels)
new g_amount = 1
new g_users_init[] = "addons/amxmodx/configs/users.ini" // Needed for giving slot
enum _:ITEM_INFO
{
NAME[32],
PRICE,
LEVEL,
TEAM,
PAY
}
new Array:ITEMS
new ITEMS_NUM = 0
new ITEM_BOUGHT
// CVARS
new cvar_PlayerAP
new cvar_PlayerZmHP
new cvar_PlayerHmHP
new cvar_PlayerHmDmg
new cvar_PlayerZmDmg
new cvar_maxlevel
new cvar_statsmode
new cvar_allow_lvlreward
new cvar_lvlrevard
new cvar_giveinfbomb
new cvar_give_slot
new cvar_cross_over_allow
new cvar_hud_allow
new cvar_hud_x_pos
new cvar_hud_y_pos
new cvar_hud_red
new cvar_hud_green
new cvar_hud_blue
new cvar_hud_spec_x_pos
new cvar_hud_spec_y_pos
new cvar_hud_spec_red
new cvar_hud_spec_green
new cvar_hud_spec_blue
new cvar_save_type
new cvar_allow_lvl_up_sound
new cvar_allow_lvl_up_screenfade
new cvar_allow_prefix
new cvar_xp_for_kill
new cvar_xp_for_dmg
new cvar_dmg_for_xp
new bool:can_advertise[33]
new cvar_advert_spam_allow
new cvar_advert_delay
new Float:PlayerDonePercent[33]
public plugin_precache()
{
precache_sound("misc/zp_uls_lvl_up.wav")
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("zp_uls_by_kegla", "1", (FCVAR_SERVER|FCVAR_SPONLY))
g_vault = nvault_open("[ZP] LVL SYSTEM BY KEGLA")
register_dictionary("zp_lvl_system.txt")
register_event("DeathMsg", "DeathMsg", "a")
register_event("HLTV", "RoundStart", "a", "1=0", "2=0")
register_event("StatusValue","show_status","be","1=2","2!0")
register_event("StatusValue","hide_status","be","1=1","2=0")
RegisterHam(Ham_TakeDamage, "player", "TakeDamage")
register_clcmd("say /lvlstats", "Stats")
register_clcmd("say_team /lvlstats", "Stats")
register_clcmd("say /lvlshop", "ShopMenu")
register_clcmd("say_team /lvlshop", "ShopMenu")
register_clcmd("say /lvladmin", "AdminMenu")
register_clcmd("say_team /lvladmin", "AdminMenu")
register_concmd("SET_LEVELS","SetLevels")
register_clcmd("say", "HookSay")
g_msg_screenfade = get_user_msgid("ScreenFade")
g_msg_sync = CreateHudSyncObj()
cvar_maxlevel = register_cvar("zp_lvl_max_levels", "100")
cvar_statsmode = register_cvar("zp_lvl_stats_mode", "1") // 1-All; 2-HP,AP; 3-DMG
cvar_xp_for_kill = register_cvar("zp_lvl_xp_for_kill", "2")
cvar_allow_lvlreward = register_cvar("zp_lvl_allow_lvlreward", "1")
cvar_lvlrevard = register_cvar("zp_lvl_ammo_packs_reward", "50")
cvar_giveinfbomb = register_cvar("zp_lvl_give_inf_bomb", "1")
cvar_PlayerAP = register_cvar("zp_lvl_stats_armor", "1")
cvar_PlayerZmHP = register_cvar("zp_lvl_stats_zmhp", "50")
cvar_PlayerHmHP = register_cvar("zp_lvl_stats_hmhp", "5")
cvar_PlayerHmDmg = register_cvar("zp_lvl_stats_hmdmg", "1")
cvar_PlayerZmDmg = register_cvar("zp_lvl_stats_zmdmg", "1")
cvar_give_slot = register_cvar("zp_lvl_give_slot", "1")
cvar_cross_over_allow = register_cvar("zp_lvl_allow_cross_over_info", "1")
cvar_hud_allow = register_cvar("zp_lvl_hud_allow", "1")
cvar_hud_x_pos = register_cvar("zp_lvl_hud_x_pos", "0.02")
cvar_hud_y_pos = register_cvar("zp_lvl_hud_y_pos", "0.3236")
cvar_hud_red = register_cvar("zp_lvl_hud_red", "0")
cvar_hud_green = register_cvar("zp_lvl_hud_green", "255")
cvar_hud_blue = register_cvar("zp_lvl_hud_blue", "0")
cvar_hud_spec_x_pos = register_cvar("zp_lvl_hud_spec_x_pos", "0.02")
cvar_hud_spec_y_pos = register_cvar("zp_lvl_hud_spec_y_pos", "0.3236")
cvar_hud_spec_red = register_cvar("zp_lvl_hud_spec_red", "155")
cvar_hud_spec_green = register_cvar("zp_lvl_hud_spec_green", "155")
cvar_hud_spec_blue = register_cvar("zp_lvl_hud_spec_blue", "155")
cvar_save_type = register_cvar("zp_lvl_save_type", "1") // 1-SteamID 2-IP 3-Nick
cvar_allow_lvl_up_sound = register_cvar("zp_lvl_allow_lvl_up_sound", "1")
cvar_allow_lvl_up_screenfade = register_cvar("zp_lvl_allow_lvl_up_screenfade", "1")
cvar_allow_prefix = register_cvar("zp_lvl_allow_chat_prefix", "1")
cvar_xp_for_dmg = register_cvar("zp_lvl_xp_for_n_dmg", "1")
cvar_dmg_for_xp = register_cvar("zp_lvl_dmg_for_n_xp", "750")
cvar_advert_spam_allow = register_cvar("zp_lvl_allow_advert_repeat", "1")
cvar_advert_delay = register_cvar("zp_lvl_advert_delay", "30.0")
ITEM_BOUGHT = CreateMultiForward("zp_lvl_shop_item_selected", ET_CONTINUE, FP_CELL, FP_CELL)
ITEMS = ArrayCreate(ITEM_INFO, 16)
g_maxplayers = get_maxplayers()
}
public plugin_natives()
{
register_native("zp_lvl_shop_register_item", "native_register_item", 0)
register_native("zp_lvl_get_user_lvl", "native_get_user_lvl", 1)
register_native("zp_lvl_get_user_xp", "native_get_user_xp", 1)
register_native("zp_lvl_get_xp_for_lvl", "native_get_user_xp_for_lvl", 1)
register_native("zp_lvl_get_max_lvl", "native_get_max_lvl", 1)
}
public plugin_cfg()
{
new cfgdir[33]
get_configsdir(cfgdir, charsmax(cfgdir))
server_cmd("exec %s/zp_lvl_system.cfg", cfgdir)
}
public HookSay(id)
{
if(get_pcvar_num(cvar_allow_prefix) == 1)
{
new szName[33], szArgs[256]
get_user_name(id, szName, charsmax(szName))
read_args(szArgs, charsmax(szArgs))
remove_quotes(szArgs)
if(!is_user_alive(id))
{
ColorChat(0, GREEN, "^1*DEAD*^4 [ LVL: %i ]^3 %s^1 : %s", PlayerLevel[id], szName, szArgs)
}
if(is_user_alive(id))
{
ColorChat(0, GREEN, "[ LVL: %i ]^3 %s^1 : %s", PlayerLevel[id], szName, szArgs)
}
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public hide_status(id)
{
set_hudmessage(0, 0, 0, 0.0, 0.0)
show_hudmessage(id,"")
}
public show_status(id)
{
if (get_pcvar_num(cvar_cross_over_allow) == 1)
{
new player_name[32], pid = read_data(2)
get_user_name(pid,player_name,charsmax(player_name))
if (!zp_get_user_zombie(pid) && !zp_get_user_zombie(id))
{
set_hudmessage(0, 0, 255, -1.0, 0.60, 1, 0.01, 7.0, 0.01, 0.01, 4)
show_hudmessage(id,"[%L: %s]^n[%L: %i]", id, "ML_NAME", player_name, id, "ML_LEVEL", PlayerLevel[pid])
}
if (zp_get_user_zombie(pid) && zp_get_user_zombie(id))
{
set_hudmessage(255, 0, 0, -1.0, 0.60, 1, 0.01, 7.0, 0.01, 0.01, 4)
show_hudmessage(id,"[%L: %s]^n[%L: %i]", id, "ML_NAME", player_name, id, "ML_LEVEL", PlayerLevel[pid])
}
return PLUGIN_CONTINUE
}
return PLUGIN_HANDLED
}
public Stats(id)
{
switch(get_pcvar_num(cvar_statsmode))
{
case 1: ColorChat(id, GREEN, "[LVL]^3 [^1ZM HP:^4+%i^3] [^1HM HP:^4+%i^3] [^1HM AP:^4+%i^3] [^1HM DMG:^4+%i^3] [^1ZM DMG:^4+%i^3]", PlayerZmHP[id], PlayerHmHP[id], PlayerAP[id], PlayerHmDmg[id], PlayerZmDmg[id])
case 2: ColorChat(id, GREEN, "[LVL]^3 [^1ZM HP:^4+%i^3] [^1HM HP:^4+%i^3] [^1HM AP:^4+%i^3]", PlayerZmHP[id], PlayerHmHP[id], PlayerAP[id])
case 3: ColorChat(id, GREEN, "[LVL]^3 [^1HM DMG:^4+%i^3] [^1ZM DMG:^4+%i^3]", PlayerHmDmg[id], PlayerZmDmg[id])
}
}
public TakeDamage(victim, inflictor, attacker, Float:damage, damage_bits)
{
if (get_pcvar_num(cvar_statsmode) == 1 || get_pcvar_num(cvar_statsmode) == 3)
{
if (!zp_get_user_zombie(attacker))
{
if (is_user_alive(attacker))
{
SetHamParamFloat(4, damage + PlayerHmDmg[attacker])
}
g_damagedealt[attacker] += floatround(damage)
while (g_damagedealt[attacker] > get_pcvar_num(cvar_dmg_for_xp))
{
PlayerXP[attacker] += get_pcvar_num(cvar_xp_for_dmg)
g_damagedealt[attacker] -= get_pcvar_num(cvar_dmg_for_xp)
}
}
if (zp_get_user_zombie(attacker) && is_user_alive(attacker))
{
SetHamParamFloat(4, damage + PlayerZmDmg[attacker])
}
CheckLevel(attacker)
return PLUGIN_CONTINUE
}
return PLUGIN_HANDLED
}
public DeathMsg()
{
new attacker = read_data(1)
new victim = read_data(2)
if (is_user_connected(attacker))
{
if (attacker == victim) return
if (PlayerLevel[attacker] == get_pcvar_num(cvar_maxlevel)) return
PlayerXP[attacker] += get_pcvar_num(cvar_xp_for_kill)
CheckLevel(attacker)
}
}
public zp_user_infected_pre(id, infector)
{
if (is_user_connected(infector))
{
if (id == infector) return
if (PlayerLevel[infector] == get_pcvar_num(cvar_maxlevel)) return
PlayerXP[infector] += get_pcvar_num(cvar_xp_for_kill)
CheckLevel(infector)
}
}
public Check(id)
{
PlayerXpForLevel[id] = 5*PlayerLevel[id]+3
new Float:g_one = float(PlayerXpForLevel[id])
new Float:g_two = float(PlayerXP[id])
PlayerDonePercent[id] = 100.00/Float:g_one*Float:g_two
}
public CheckLevel(id)
{
if (PlayerXP[id] >= PlayerXpForLevel[id])
{
PlayerLevel[id]++
PlayerXP[id] = 0
if (get_pcvar_num(cvar_allow_lvlreward) == 1)
{
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + get_pcvar_num(cvar_lvlrevard))
ColorChat(id, GREEN, "%L", id, "ML_REWARD1", '^1')
ColorChat(id, GREEN, "%L", id, "ML_REWARD2", '^1', '^3', get_pcvar_num(cvar_lvlrevard), '^1')
}
if (PlayerLevel[id] == get_pcvar_num(cvar_maxlevel) && get_pcvar_num(cvar_give_slot) == 1)
{
new szAuthID[33], szIP[33], szData[256]
get_user_authid(id, szAuthID, charsmax(szAuthID))
get_user_ip(id, szIP, charsmax(szIP))
if(!equal(szAuthID, "VALVE_ID_LAN"))
{
formatex(szData, charsmax(szData), "^"%s^" ^"^" ^"b^" ^"ce^"", szAuthID)
}
else
{
formatex(szData, charsmax(szData), "^"%s^" ^"^" ^"b^" ^"de^"", szIP)
}
write_file(g_users_init, szData)
ColorChat(id, GREEN, "%L", id, "ML_SLOT", '^1')
}
switch(get_pcvar_num(cvar_statsmode))
{
case 1:
{
PlayerAP[id] += get_pcvar_num(cvar_PlayerAP)
PlayerZmHP[id] += get_pcvar_num(cvar_PlayerZmHP)
PlayerHmHP[id] += get_pcvar_num(cvar_PlayerHmHP)
PlayerHmDmg[id] += get_pcvar_num(cvar_PlayerHmDmg)
PlayerZmDmg[id] += get_pcvar_num(cvar_PlayerZmDmg)
}
case 2:
{
PlayerAP[id] += get_pcvar_num(cvar_PlayerAP)
PlayerZmHP[id] += get_pcvar_num(cvar_PlayerZmHP)
PlayerHmHP[id] += get_pcvar_num(cvar_PlayerHmHP)
}
case 3:
{
PlayerHmDmg[id] += get_pcvar_num(cvar_PlayerHmDmg)
PlayerZmDmg[id] += get_pcvar_num(cvar_PlayerZmDmg)
}
}
new szPlayerName[33]
get_user_name(id, szPlayerName, charsmax(szPlayerName))
ColorChat(0, GREEN, "%L", 0, "ML_CHAT", '^1', '^3', szPlayerName, '^1', '^3', PlayerLevel[id], '^1')
if (get_pcvar_num(cvar_allow_lvl_up_sound) == 1)
{
client_cmd(id, "spk misc/zp_uls_lvl_up.wav")
}
if (get_pcvar_num(cvar_allow_lvl_up_screenfade) == 1)
{
set_user_fade(id)
}
}
}
public zp_user_infected_post(id, infector)
{
if (!is_user_alive(id)) return
if (get_pcvar_num(cvar_statsmode) == 1 || get_pcvar_num(cvar_statsmode) == 2)
{
set_user_health(id, get_user_health(id) + PlayerZmHP[id])
}
if (PlayerLevel[id] == get_pcvar_num(cvar_maxlevel) && get_pcvar_num(cvar_giveinfbomb) == 1 && zp_get_user_zombie(id))
{
new random = random_num(0, 16)
if ((random == 5 || random == 14) && !zp_is_survivor_round())
{
give_item(id, "weapon_hegrenade")
ColorChat(id, GREEN, "%L", id, "ML_INFECTION_GRENADE1", '^1', '^4', '^1')
}
ColorChat(id, GREEN, "%L", id, "ML_INFECTION_GRENADE2", '^1', '^4', '^1')
}
}
public zp_user_humanized_post(id)
{
set_task(1.0, "GiveBonus", id)
}
public RoundStart()
{
new players[32] , num
get_players(players, num)
for(new id = 1; id < num; id++)
{
set_task(1.0, "GiveBonus", id)
}
}
public GiveBonus(id)
{
if (!is_user_alive(id) || zp_get_user_zombie(id)) return
if (get_pcvar_num(cvar_statsmode) == 1 || get_pcvar_num(cvar_statsmode) == 2)
{
set_user_armor(id, get_user_health(id) + PlayerAP[id])
set_user_health(id, get_user_armor(id) + PlayerHmHP[id])
}
}
public client_connect(id)
{
set_task(1.0, "LvlUp", id)
set_task(22.0, "Advert", id)
set_task(1.0, "MainHUD", id, _, _, "b")
set_task(1.0, "Check", id, _, _, "b")
LoadInfo(id)
g_damagedealt[id] = 0
if(get_pcvar_num(cvar_advert_spam_allow) == 1)
{
can_advertise[id] = true
}
else
{
can_advertise[id] = false
}
}
public MainHUD(id)
{
if (get_pcvar_num(cvar_hud_allow) == 1)
{
new percent[33]
formatex(percent, charsmax(percent), "%")
if(!is_user_alive(id))
{
new target = entity_get_int(id, EV_INT_iuser2)
if(target == 0) return PLUGIN_HANDLED
set_hudmessage(get_pcvar_num(cvar_hud_spec_red), get_pcvar_num(cvar_hud_spec_green), get_pcvar_num(cvar_hud_spec_blue), get_pcvar_float(cvar_hud_spec_x_pos), get_pcvar_float(cvar_hud_spec_y_pos))
if (PlayerLevel[target] == get_pcvar_num(cvar_maxlevel))
{
ShowSyncHudMsg(id, g_msg_sync, "[ %L: %i ]", id, "ML_LEVEL", PlayerLevel[target])
}
else
{
ShowSyncHudMsg(id, g_msg_sync, "[ %L: %i ]^n[ %i %L / %i %L ]^n[ %.2f%s ]", id, "ML_LEVEL", PlayerLevel[target], PlayerXP[target], id, "ML_XP", PlayerXpForLevel[target], id, "ML_XP", Float:PlayerDonePercent[target], percent)
}
}
else
{
set_hudmessage(get_pcvar_num(cvar_hud_red), get_pcvar_num(cvar_hud_green), get_pcvar_num(cvar_hud_blue), get_pcvar_float(cvar_hud_x_pos), get_pcvar_float(cvar_hud_y_pos))
if (PlayerLevel[id] == get_pcvar_num(cvar_maxlevel))
{
ShowSyncHudMsg(id, g_msg_sync, "[ %L: %i ]", id, "ML_LEVEL", PlayerLevel[id])
}
else
{
ShowSyncHudMsg(id, g_msg_sync, "[ %L: %i ]^n[ %i %L / %i %L ]^n[ %.2f%s ]", id, "ML_LEVEL", PlayerLevel[id], PlayerXP[id], id, "ML_XP", PlayerXpForLevel[id], id, "ML_XP", Float:PlayerDonePercent[id], percent)
}
}
return PLUGIN_CONTINUE
}
return PLUGIN_HANDLED
}
public client_disconnect(id)
{
SaveInfo(id)
can_advertise[id] = false
}
public LvlUp(id)
{
if(PlayerLevel[id] == 0)
{
PlayerLevel[id] = 1
switch(get_pcvar_num(cvar_statsmode))
{
case 1:
{
PlayerAP[id] = get_pcvar_num(cvar_PlayerAP)
PlayerZmHP[id] = get_pcvar_num(cvar_PlayerZmHP)
PlayerHmHP[id] = get_pcvar_num(cvar_PlayerHmHP)
PlayerHmDmg[id] = get_pcvar_num(cvar_PlayerHmDmg)
PlayerZmDmg[id] = get_pcvar_num(cvar_PlayerZmDmg)
}
case 2:
{
PlayerAP[id] = get_pcvar_num(cvar_PlayerAP)
PlayerZmHP[id] = get_pcvar_num(cvar_PlayerZmHP)
PlayerHmHP[id] = get_pcvar_num(cvar_PlayerHmHP)
}
case 3:
{
PlayerHmDmg[id] = get_pcvar_num(cvar_PlayerHmDmg)
PlayerZmDmg[id] = get_pcvar_num(cvar_PlayerZmDmg)
}
}
}
return PLUGIN_HANDLED
}
public Advert(id)
{
ColorChat(id, GREEN, "%L", id, "ML_ADVERT1", '^1', '^3', '^1', '^3', '^1')
ColorChat(id, GREEN, "%L", id, "ML_ADVERT2", '^1', '^3', '^1', '^3', '^1')
if (can_advertise[id] == true)
{
set_task(get_pcvar_float(cvar_advert_delay), "Advert", id)
}
}
public SaveInfo(id)
{
new szData[256], szSave[32]
formatex(szData, charsmax(szData), "%i %i %i %i %i %i %i", PlayerLevel[id], PlayerXP[id], PlayerHmHP[id], PlayerZmHP[id], PlayerAP[id], PlayerHmDmg[id], PlayerZmDmg[id])
get_save_type(id, szSave, charsmax(szSave))
nvault_set(g_vault, szSave, szData)
}
public LoadInfo(id)
{
new szData[256], szInfo[7][33], szLoad[32]
get_save_type(id, szLoad, charsmax(szLoad))
nvault_get(g_vault, szLoad, szData, charsmax(szData))
parse(szData, szInfo[0], charsmax(szInfo[]), szInfo[1], charsmax(szInfo[]), szInfo[2], charsmax(szInfo[]), szInfo[3], charsmax(szInfo[]), szInfo[4], charsmax(szInfo[]), szInfo[5], charsmax(szInfo[]), szInfo[6], charsmax(szInfo[]))
PlayerLevel[id] = str_to_num(szInfo[0])
PlayerXP[id] = str_to_num(szInfo[1])
PlayerHmHP[id] = str_to_num(szInfo[2])
PlayerZmHP[id] = str_to_num(szInfo[3])
PlayerAP[id] = str_to_num(szInfo[4])
PlayerHmDmg[id] = str_to_num(szInfo[5])
PlayerZmDmg[id] = str_to_num(szInfo[6])
}
public ShopMenu(id)
{
new iMenu = menu_create("\y[ZP] LvL Shop", "ShopHandler")
new szBuffer[64]
new item_info[ITEM_INFO]
for(new i = 0; i < ITEMS_NUM; i++)
{
ArrayGetArray(ITEMS, i, item_info)
if (is_user_alive(id) && PlayerLevel[id] >= item_info[LEVEL] && item_info[PAY] == 1 && cs_get_user_money(id) >= item_info[PRICE] && ((item_info[TEAM] == 1 && !zp_get_user_zombie(id)) || (item_info[TEAM] == 2 && zp_get_user_zombie(id)) || item_info[TEAM] == 3))
{
formatex(szBuffer, charsmax(szBuffer), "\w%s -\y %i$", item_info[NAME], item_info[PRICE])
}
if (is_user_alive(id) && PlayerLevel[id] >= item_info[LEVEL] && item_info[PAY] == 2 && zp_get_user_ammo_packs(id) >= item_info[PRICE] && ((item_info[TEAM] == 1 && !zp_get_user_zombie(id)) || (item_info[TEAM] == 2 && zp_get_user_zombie(id)) || item_info[TEAM] == 3))
{
formatex(szBuffer, charsmax(szBuffer), "\w%s -\y %i %L", item_info[NAME], item_info[PRICE], id, "ML_AMMO_PACKS")
}
if (PlayerLevel[id] < item_info[LEVEL])
{
formatex(szBuffer, charsmax(szBuffer), "\r%s - %L %iLvL", item_info[NAME], id, "ML_UNLOCK", item_info[LEVEL])
}
if(!is_user_alive(id) || (item_info[PAY] == 1 && cs_get_user_money(id) < item_info[PRICE]) || item_info[TEAM] == 1 && zp_get_user_zombie(id) || item_info[TEAM] == 2 && !zp_get_user_zombie(id))
{
formatex(szBuffer, charsmax(szBuffer), "\d%s - %i$", item_info[NAME], item_info[PRICE])
}
if(!is_user_alive(id) || (item_info[PAY] == 2 && zp_get_user_ammo_packs(id) < item_info[PRICE]) || item_info[TEAM] == 1 && zp_get_user_zombie(id) || item_info[TEAM] == 2 && !zp_get_user_zombie(id))
{
formatex(szBuffer, charsmax(szBuffer), "\d%s - %i %L", item_info[NAME], item_info[PRICE], id, "ML_AMMO_PACKS")
}
menu_additem(iMenu, szBuffer)
}
menu_display(id, iMenu)
}
public ShopHandler(id, iMenu, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
new item_info[ITEM_INFO]
ArrayGetArray(ITEMS, iItem, item_info)
if (!is_user_alive(id))
{
ColorChat(id, GREEN, "%L", id, "ML_YOU_ARE_DEAD", '^1')
}
else if(PlayerLevel[id] < item_info[LEVEL])
{
ColorChat(id, GREEN, "%L", id, "ML_NOT_REQUERED_LVL", '^1', '^4', item_info[NAME], '^1')
}
else if (zp_get_user_zombie(id) && item_info[TEAM] == 1)
{
ColorChat(id, GREEN, "%L", id, "ML_CANT_BUY_ZM", '^1')
}
else if (!zp_get_user_zombie(id) && item_info[TEAM] == 2)
{
ColorChat(id, GREEN, "%L", id, "ML_CANT_BUY_HM", '^1')
}
else if(cs_get_user_money(id) < item_info[PRICE] && item_info[PAY] == 1)
{
ColorChat(id, GREEN, "%L", id, "ML_NOT_ENOUGH_MONEY", '^1', '^4', item_info[NAME], '^1')
}
else if(zp_get_user_ammo_packs(id) < item_info[PRICE] && item_info[PAY] == 2)
{
ColorChat(id, GREEN, "%L", id, "ML_NOT_ENOUGH_AMMO_PACKS", '^1', '^4', item_info[NAME], '^1')
}
else
{
new iReturn = PLUGIN_CONTINUE
ExecuteForward(ITEM_BOUGHT, iReturn, id, iItem)
if(iReturn == PLUGIN_HANDLED)
{
goto plugin_handled
}
if (item_info[PAY] == 1)
{
cs_set_user_money(id, cs_get_user_money(id) - item_info[PRICE])
ColorChat(id, GREEN, "%L", id, "ML_BOUGHT_MONEY", '^1', '^4', item_info[NAME], '^1', '^4', item_info[PRICE], '^1')
}
if (item_info[PAY] == 2)
{
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - item_info[PRICE])
ColorChat(id, GREEN, "%L", id, "ML_BOUGHT_AMMO_PACKS", '^1', '^4', item_info[NAME], '^1', '^4', item_info[PRICE], '^1')
}
}
plugin_handled:
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
public AdminMenu(id)
{
if (get_user_flags(id) & FLAG)
{
new iMenu = menu_create("\y[LvL] Admin Menu", "AdminMenuHandler")
new const szItemsName[][] = { "ML_ADMIN_GIVE_LEVELS", "ML_ADMIN_TAKE_LEVELS", "ML_ADMIN_SET_LEVEL", "ML_ADMIN_RESET_LEVEL" }
new szItems[64]
for (new i=0; i < sizeof szItemsName; i++)
{
formatex(szItems, charsmax(szItems), "%L", id, szItemsName[i])
menu_additem(iMenu, szItems)
}
menu_display(id, iMenu)
}
}
public AdminMenuHandler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_CONTINUE
}
switch(item)
{
case 0:
{
GiveLevels(id)
}
case 1:
{
TakeLevels(id)
}
case 2:
{
client_cmd(id,"messagemode SET_LEVELS")
}
case 3:
{
ResetLevels(id)
}
}
return PLUGIN_CONTINUE
}
public GiveLevels(id)
{
new iMenu = menu_create ("[LvL] Give Levels", "GiveLevelsHandler")
new num, players[32], szIndex, szIndex2[10], szPlayerName[32], szText[64], szText2[64]
get_players (players, num)
formatex(szText2, charsmax(szText2), "%L", id, "ML_ADMIN_AMOUNT_TO_GIVE", g_amount)
menu_additem(iMenu, szText2)
for (new i = 0; i < num; i++)
{
szIndex = players[i]
get_user_name(szIndex, szPlayerName, charsmax(szPlayerName))
num_to_str(szIndex, szIndex2, charsmax(szIndex2))
formatex(szText, charsmax(szText), "%s\r[\y%i\r]", szPlayerName, PlayerLevel[szIndex])
menu_additem(iMenu, szText, szIndex2, 0)
}
menu_display(id, iMenu)
return PLUGIN_CONTINUE
}
public TakeLevels(id)
{
new iMenu = menu_create ("[LvL] Take Levels", "TakeLevelsHandler")
new num, players[32], szIndex, szIndex2[10], szPlayerName[32], szText[64], szText2[64]
get_players (players, num)
formatex(szText2, charsmax(szText2), "%L", id, "ML_ADMIN_AMOUNT_TO_TAKE", g_amount)
menu_additem(iMenu, szText2)
for (new i = 0; i < num; i++)
{
szIndex = players[i]
get_user_name(szIndex, szPlayerName, charsmax(szPlayerName))
num_to_str(szIndex, szIndex2, charsmax(szIndex2))
formatex(szText, charsmax(szText), "%s\r[\y%i\r]", szPlayerName, PlayerLevel[szIndex])
menu_additem(iMenu, szText, szIndex2, 0)
}
menu_display(id, iMenu)
}
public GiveLevelsHandler(id, menu, item)
{
if(item == MENU_EXIT)
{
AdminMenu(id)
return PLUGIN_HANDLED
}
switch(item)
{
case 0:
{
if(g_amount == 10)
{
g_amount = 1
GiveLevels(id)
}
else
{
g_amount++
GiveLevels(id)
}
}
}
new szData[6], szName[64], access, callback
menu_item_getinfo(menu, item, access, szData, charsmax(szData), szName, charsmax(szName), callback)
new szIndex = str_to_num(szData)
new lvl_plus_amount = PlayerLevel[szIndex]+g_amount
if (lvl_plus_amount >= get_pcvar_num(cvar_maxlevel))
{
PlayerLevel[szIndex] = get_pcvar_num(cvar_maxlevel)
if (get_pcvar_num(cvar_statsmode) == 1)
{
PlayerAP[szIndex] = get_pcvar_num(cvar_maxlevel)*get_pcvar_num(cvar_PlayerAP)
PlayerZmHP[szIndex] = get_pcvar_num(cvar_maxlevel)*get_pcvar_num(cvar_PlayerZmHP)
PlayerHmHP[szIndex] = get_pcvar_num(cvar_maxlevel)*get_pcvar_num(cvar_PlayerHmHP)
PlayerHmDmg[szIndex] = get_pcvar_num(cvar_maxlevel)*get_pcvar_num(cvar_PlayerHmDmg)
PlayerZmDmg[szIndex] = get_pcvar_num(cvar_maxlevel)*get_pcvar_num(cvar_PlayerZmDmg)
}
if (get_pcvar_num(cvar_statsmode) == 2)
{
PlayerAP[szIndex] = get_pcvar_num(cvar_maxlevel)*get_pcvar_num(cvar_PlayerAP)
PlayerZmHP[szIndex] = get_pcvar_num(cvar_maxlevel)*get_pcvar_num(cvar_PlayerZmHP)
PlayerHmHP[szIndex] = get_pcvar_num(cvar_maxlevel)*get_pcvar_num(cvar_PlayerHmHP)
}
if (get_pcvar_num(cvar_statsmode) == 3)
{
PlayerHmDmg[szIndex] = get_pcvar_num(cvar_maxlevel)*get_pcvar_num(cvar_PlayerHmDmg)
PlayerZmDmg[szIndex] = get_pcvar_num(cvar_maxlevel)*get_pcvar_num(cvar_PlayerZmDmg)
}
GiveLevels(id)
return PLUGIN_HANDLED
}
else
{
PlayerLevel[szIndex] += g_amount
if (get_pcvar_num(cvar_statsmode) == 1)
{
PlayerAP[szIndex] += g_amount*get_pcvar_num(cvar_PlayerAP)
PlayerZmHP[szIndex] += g_amount*get_pcvar_num(cvar_PlayerZmHP)
PlayerHmHP[szIndex] += g_amount*get_pcvar_num(cvar_PlayerHmHP)
PlayerHmDmg[szIndex] += g_amount*get_pcvar_num(cvar_PlayerHmDmg)
PlayerZmDmg[szIndex] += g_amount*get_pcvar_num(cvar_PlayerZmDmg)
}
if (get_pcvar_num(cvar_statsmode) == 2)
{
PlayerAP[szIndex] += g_amount*get_pcvar_num(cvar_PlayerAP)
PlayerZmHP[szIndex] += g_amount*get_pcvar_num(cvar_PlayerZmHP)
PlayerHmHP[szIndex] += g_amount*get_pcvar_num(cvar_PlayerHmHP)
}
if (get_pcvar_num(cvar_statsmode) == 3)
{
PlayerHmDmg[szIndex] += g_amount*get_pcvar_num(cvar_PlayerHmDmg)
PlayerZmDmg[szIndex] += g_amount*get_pcvar_num(cvar_PlayerZmDmg)
}
GiveLevels(id)
}
return PLUGIN_CONTINUE
}
public TakeLevelsHandler(id, menu, item)
{
if(item == MENU_EXIT)
{
AdminMenu(id)
return PLUGIN_HANDLED
}
switch(item)
{
case 0:
{
if(g_amount == 10)
{
g_amount = 1
TakeLevels(id)
}
else
{
g_amount++
TakeLevels(id)
}
}
}
new szData[6], szName[64], access, callback
menu_item_getinfo(menu, item, access, szData, charsmax(szData), szName, charsmax(szName), callback)
new szIndex = str_to_num(szData)
new lvl_minus_amount = PlayerLevel[szIndex]-g_amount
if (lvl_minus_amount <= 0)
{
PlayerLevel[szIndex] = 1
if (get_pcvar_num(cvar_statsmode) == 1)
{
PlayerAP[szIndex] = get_pcvar_num(cvar_PlayerAP)
PlayerZmHP[szIndex] = get_pcvar_num(cvar_PlayerZmHP)
PlayerHmHP[szIndex] = get_pcvar_num(cvar_PlayerHmHP)
PlayerHmDmg[szIndex] = get_pcvar_num(cvar_PlayerHmDmg)
PlayerZmDmg[szIndex] = get_pcvar_num(cvar_PlayerZmDmg)
}
if (get_pcvar_num(cvar_statsmode) == 2)
{
PlayerAP[szIndex] = get_pcvar_num(cvar_PlayerAP)
PlayerZmHP[szIndex] = get_pcvar_num(cvar_PlayerZmHP)
PlayerHmHP[szIndex] = get_pcvar_num(cvar_PlayerHmHP)
}
if (get_pcvar_num(cvar_statsmode) == 3)
{
PlayerHmDmg[szIndex] = get_pcvar_num(cvar_PlayerHmDmg)
PlayerZmDmg[szIndex] = get_pcvar_num(cvar_PlayerZmDmg)
}
TakeLevels(id)
return PLUGIN_HANDLED
}
else
{
PlayerLevel[szIndex] -= g_amount
if (get_pcvar_num(cvar_statsmode) == 1)
{
PlayerAP[szIndex] -= g_amount*get_pcvar_num(cvar_PlayerAP)
PlayerZmHP[szIndex] -= g_amount*get_pcvar_num(cvar_PlayerZmHP)
PlayerHmHP[szIndex] -= g_amount*get_pcvar_num(cvar_PlayerHmHP)
PlayerHmDmg[szIndex] -= g_amount*get_pcvar_num(cvar_PlayerHmDmg)
PlayerZmDmg[szIndex] -= g_amount*get_pcvar_num(cvar_PlayerZmDmg)
}
if (get_pcvar_num(cvar_statsmode) == 2)
{
PlayerAP[szIndex] -= g_amount*get_pcvar_num(cvar_PlayerAP)
PlayerZmHP[szIndex] -= g_amount*get_pcvar_num(cvar_PlayerZmHP)
PlayerHmHP[szIndex] -= g_amount*get_pcvar_num(cvar_PlayerHmHP)
}
if (get_pcvar_num(cvar_statsmode) == 3)
{
PlayerHmDmg[szIndex] -= g_amount*get_pcvar_num(cvar_PlayerHmDmg)
PlayerZmDmg[szIndex] -= g_amount*get_pcvar_num(cvar_PlayerZmDmg)
}
TakeLevels(id)
}
return PLUGIN_HANDLED
}
public SetLevels(id)
{
new szArgv[33]
read_argv(1, szArgv, charsmax(szArgv))
AMOUNT[id] = str_to_num(szArgv)
if(AMOUNT[id] <= 0)
{
ColorChat(id, GREEN, "%L", id, "ML_WRONG_DATA_INPUT", '^1')
}
else
{
new iMenu = menu_create ("[LvL] Set Levels", "SetLevelsHandler")
new num, players[32], szIndex, szIndex2[10], szPlayerName[32], szText[64]
get_players (players, num)
for (new i = 0; i < num; i++)
{
szIndex = players[i]
get_user_name(szIndex, szPlayerName, charsmax(szPlayerName))
num_to_str(szIndex, szIndex2, charsmax(szIndex2))
formatex(szText, charsmax(szText), "%s\r[\y%i\r]", szPlayerName, PlayerLevel[szIndex])
menu_additem(iMenu, szText, szIndex2, 0)
}
menu_display(id, iMenu)
}
return PLUGIN_CONTINUE
}
public SetLevelsHandler(id, menu, item)
{
if(item == MENU_EXIT)
{
AdminMenu(id)
return PLUGIN_HANDLED
}
new szData[6], szName[64], access, callback
menu_item_getinfo(menu, item, access, szData, charsmax(szData), szName, charsmax(szName), callback)
new szIndex = str_to_num(szData)
PlayerLevel[szIndex] = AMOUNT[id]
if (get_pcvar_num(cvar_statsmode) == 1)
{
PlayerAP[szIndex] = AMOUNT[id]*get_pcvar_num(cvar_PlayerAP)
PlayerZmHP[szIndex] = AMOUNT[id]*get_pcvar_num(cvar_PlayerZmHP)
PlayerHmHP[szIndex] = AMOUNT[id]*get_pcvar_num(cvar_PlayerHmHP)
PlayerHmDmg[szIndex] = AMOUNT[id]*get_pcvar_num(cvar_PlayerHmDmg)
PlayerZmDmg[szIndex] = AMOUNT[id]*get_pcvar_num(cvar_PlayerZmDmg)
}
if (get_pcvar_num(cvar_statsmode) == 2)
{
PlayerAP[szIndex] = AMOUNT[id]*get_pcvar_num(cvar_PlayerAP)
PlayerZmHP[szIndex] = AMOUNT[id]*get_pcvar_num(cvar_PlayerZmHP)
PlayerHmHP[szIndex] = AMOUNT[id]*get_pcvar_num(cvar_PlayerHmHP)
}
if (get_pcvar_num(cvar_statsmode) == 3)
{
PlayerHmDmg[szIndex] = AMOUNT[id]*get_pcvar_num(cvar_PlayerHmDmg)
PlayerZmDmg[szIndex] = AMOUNT[id]*get_pcvar_num(cvar_PlayerZmDmg)
}
return PLUGIN_HANDLED
}
public ResetLevels(id)
{
new iMenu = menu_create ("[LvL] Reset Levels", "ResetLevelsHandler")
new num, players[32], szIndex, szIndex2[10], szPlayerName[32], szText[64]
get_players (players, num)
for (new i = 0; i < num; i++)
{
szIndex = players[i]
get_user_name(szIndex, szPlayerName, charsmax(szPlayerName))
num_to_str(szIndex, szIndex2, charsmax(szIndex2))
formatex(szText, charsmax(szText), "%s\r[\y%i\r]", szPlayerName, PlayerLevel[szIndex])
menu_additem(iMenu, szText, szIndex2, 0)
}
menu_display(id, iMenu)
}
public ResetLevelsHandler(id, menu, item)
{
if(item == MENU_EXIT)
{
AdminMenu(id)
return PLUGIN_HANDLED
}
new szData[6], szName[64], access, callback
menu_item_getinfo(menu, item, access, szData, charsmax(szData), szName, charsmax(szName), callback)
new szIndex = str_to_num(szData)
PlayerLevel[szIndex] = 1
if (get_pcvar_num(cvar_statsmode) == 1)
{
PlayerAP[szIndex] = get_pcvar_num(cvar_PlayerAP)
PlayerZmHP[szIndex] = get_pcvar_num(cvar_PlayerZmHP)
PlayerHmHP[szIndex] = get_pcvar_num(cvar_PlayerHmHP)
PlayerHmDmg[szIndex] = get_pcvar_num(cvar_PlayerHmDmg)
PlayerZmDmg[szIndex] = get_pcvar_num(cvar_PlayerZmDmg)
}
if (get_pcvar_num(cvar_statsmode) == 2)
{
PlayerAP[szIndex] = get_pcvar_num(cvar_PlayerAP)
PlayerZmHP[szIndex] = get_pcvar_num(cvar_PlayerZmHP)
PlayerHmHP[szIndex] = get_pcvar_num(cvar_PlayerHmHP)
}
if (get_pcvar_num(cvar_statsmode) == 3)
{
PlayerHmDmg[szIndex] = get_pcvar_num(cvar_PlayerHmDmg)
PlayerZmDmg[szIndex] = get_pcvar_num(cvar_PlayerZmDmg)
}
ResetLevels(id)
return PLUGIN_HANDLED
}
stock set_user_fade(index)
{
message_begin(MSG_ONE_UNRELIABLE, g_msg_screenfade, _, index);
write_short((1 << 12) * 1);
write_short(floatround((1 << 12) * 0.1));
write_short(0x0000);
write_byte(0);
write_byte(170);
write_byte(255);
write_byte(150);
message_end();
}
stock get_save_type(id, data[], len)
{
switch(get_pcvar_num(cvar_save_type))
{
case 1: get_user_authid(id, data, len)
case 2: get_user_ip(id, data, len)
case 3: get_user_name(id, data, len)
}
}
/* zp_lvl_shop_register_item(const name[], price, level, team, pay) */
public native_register_item(iPlugin, iParams)
{
new item_info[ITEM_INFO]
get_string(1, item_info[NAME], charsmax(item_info[NAME]))
item_info[PRICE] = get_param(2)
item_info[LEVEL] = get_param(3)
item_info[TEAM] = get_param(4)
item_info[PAY] = get_param(5)
ArrayPushArray(ITEMS, item_info)
ITEMS_NUM++
return ITEMS_NUM - 1
}
/* zp_lvl_get_user_lvl(id) */
public native_get_user_lvl(id)
{
if (!is_user_valid(id))
{
log_error(AMX_ERR_NATIVE, "[ZP] Invalid Player (%d)", id)
return -1
}
return PlayerLevel[id]
}
/* zp_lvl_get_user_xp(id) */
public native_get_user_xp(id)
{
if (!is_user_valid(id))
{
log_error(AMX_ERR_NATIVE, "[ZP] Invalid Player (%d)", id)
return -1
}
return PlayerXP[id]
}
/* zp_lvl_get_xp_for_lvl(id) */
public native_get_user_xp_for_lvl(id)
{
if (!is_user_valid(id))
{
log_error(AMX_ERR_NATIVE, "[ZP] Invalid Player (%d)", id)
return -1
}
return PlayerXpForLevel[id]
}
/* zp_lvl_get_max_lvl() */
public native_get_max_lvl()
{
new max_level = get_pcvar_num(cvar_maxlevel)
return max_level
}