Raised This Month: $32 Target: $400
 8% 

[ZP] Ultimate LvL System v2.0


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Kegla
Member
Join Date: Mar 2014
Location: Serbia
Old 11-11-2014 , 14:10   [ZP] Ultimate LvL System v2.0
Reply With Quote #1

[ZP] Ultimate LvL Systemv2.0
by Kegla

[IMG]http://img237.**************/img237/8720/descriptionz.png[/IMG]
This leveling system is created for ZombiePlague 4.3. You can get XP with killing or making damage. When you reach new level, you get some bonuses. Those bonuses are:

1. Human Health
2. Zombie Health
3. Human Armor
4. Human Damage
5. Zombie Damage

Players get all those bonuses if this cvar is setted to "1"
Code:
zp_lvl_stats_mode 1
That combination of bonuses (all of them) is default, but maybe someone will not like that. Because of that, that cvar exist. Rest values of that cvar are:

2 - Human Health, Zombie Health, Human Armor;
3 - Human Damage, Zombie Damage;

This leveling system have shop. But that shop is empty by default. WHY? Because shop items are made in separate plugin. Depending on item, items are payed with money($) or with ammo packs. To buy some item you need to be at requered level to buy it(if you are not, item is locked).

When you reach new level, you get ammo packs bonus. Players that are at the maximum level can have slot reservation and one more thing. That thing is that they have 1:8 chanses to get infection bomb when they respawn as zombies(not able in survivor round). Both that bonuses will work if next two cvars are setted to "1"
Code:
zp_lvl_give_inf_bomb 1
zp_lvl_give_slot 1
Plugin also have chat prefix, HUD info (name and level) and easy-to-use admin menu.


Amount to give/remove is amount of levels that you are going to give/remove to player which name you click in menu. With player name, in brackets, is number of levels that player curently have. When you click Set Levels function it will show you messagemode. In that messagemode you need to put amount of levels that you are going to set to some player, after that it will show you menu, you need to click some player name, and levels will be setted to him. When you use reset function, you only need to click player name, and his levels will be setted back to 1.

Client commands:
* /lvlshop - open shop menu
* /lvlstats - show your stats in chat
* /lvladmin - show admin menu


[IMG]http://img691.**************/img691/5334/creditsk.png[/IMG]

Code:
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)
[IMG]http://img694.**************/img694/1227/change.png[/IMG]

Code:
* 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
Any suggestions for optimizing or ideas for improving are welcomed.
If you find some bugs please notice me here.


This plugin use custon include #include <colorchat>
link for download: http://amxxblog.gb7.ru/wp-content/up.../colorchat.rar
Attached Files
File Type: sma Get Plugin or Get Source (zp_uls_v2.0.sma - 3164 views - 34.5 KB)
File Type: zip zp_uls_v2.0_resourses.zip (98.0 KB, 1492 views)
File Type: inc zp_uls.inc (1.4 KB, 1461 views)

Last edited by Kegla; 11-12-2014 at 09:41.
Kegla is offline
Kegla
Member
Join Date: Mar 2014
Location: Serbia
Old 11-11-2014 , 14:12   Re: [ZP] Ultimate LvL System v2.0
Reply With Quote #2

I will post some shop items tomorow, but i would like from some users to create there own shop items (Include file is uploaded).
Kegla is offline
New.ZM.Life
Veteran Member
Join Date: Sep 2014
Location: Iran
Old 11-11-2014 , 14:26   Re: [ZP] Ultimate LvL System v2.0
Reply With Quote #3

Why using this shop when we can use ZP buy extra items?!

I suggest you to add /Rank and /top10 for players to see their xp

It can also included number of killed zombies,humans,Nemesis,survivors and also infected humans in top10 and rank


By the way...good job,can we use it in zp50?
__________________
PLUGINS

Zombie Plague 5.0 + New Modes

Added NightCrawler Mode to ZP






Last edited by New.ZM.Life; 11-11-2014 at 14:26.
New.ZM.Life is offline
Kegla
Member
Join Date: Mar 2014
Location: Serbia
Old 11-11-2014 , 15:02   Re: [ZP] Ultimate LvL System v2.0
Reply With Quote #4

Quote:
Why using this shop when we can use ZP buy extra items?!
Because it will requered a sertan amount of levels to buy it.

Quote:
By the way...good job,can we use it in zp50?
I think it can be used, because of zp50_zp43_compatibility plugin.
Kegla is offline
zmd94
Veteran Member
Join Date: Nov 2013
Location: Malaysia (9w2zow).
Old 11-11-2014 , 19:58   Re: [ZP] Ultimate LvL System v2.0
Reply With Quote #5

Just want to remind you that you should say that this system is using custom include #include <colorchat>.

It is better if you can provided the link to download the include.
zmd94 is offline
Kegla
Member
Join Date: Mar 2014
Location: Serbia
Old 11-12-2014 , 07:29   Re: [ZP] Ultimate LvL System v2.0
Reply With Quote #6

Quote:
Originally Posted by zmd94 View Post
Just want to remind you that you should say that this system is using custom include #include <colorchat>.

It is better if you can provided the link to download the include.
Tnx for noticing me, link is added.

I would like to see your appinion.
Kegla is offline
Drissdev1
Senior Member
Join Date: Jun 2014
Old 11-15-2014 , 15:41   Re: [ZP] Ultimate LvL System v2.0
Reply With Quote #7

Add Toplevel IS good (y) and nice plug
__________________
Drissdev1 is offline
amir saiaoud
Senior Member
Join Date: May 2015
Location: essaouira , maroc
Old 10-19-2015 , 16:31   Re: [ZP] Ultimate LvL System v2.0
Reply With Quote #8

nice but if you add toplevel than will be better
__________________

Last edited by amir saiaoud; 10-19-2015 at 16:32.
amir saiaoud is offline
Send a message via Skype™ to amir saiaoud
Krtola
Veteran Member
Join Date: Oct 2013
Location: Serbia
Old 10-20-2015 , 09:40   Re: [ZP] Ultimate LvL System v2.0
Reply With Quote #9

Server crash-restart= level are reset(back on zero)
Krtola is offline
Send a message via Skype™ to Krtola
ExceLo
Junior Member
Join Date: Feb 2018
Location: Morocco
Old 03-10-2018 , 12:33   Re: [ZP] Ultimate LvL System v2.0
Reply With Quote #10

i have update this plugin with some help from Z.Louly , we've added top level and save every 2 second .
here's the code
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <zombieplague>
#include <nvault>
#include <fun>
#include <colorchat>
#include <hamsandwich>
#include <cstrike>
#include <engine>
#include <fvault>


#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_RCON

new const file_dir[] = "addons/amxmodx/data/file_vault"
new key[64], name[65], data_[328];
new 
path[128], data[256], top_level[33], top_exp[33], top_exp2[33], top_name[33][33];

#define TOP 15

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(PLUGINVERSIONAUTHOR)
    
    
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")
    
set_task(2.0"save_data"___"b")
    
    
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_clcmd("say /toplevel""show_top")
    
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""2"// 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""10")
    
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""5")
    
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""3"// 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_CONTINUEFP_CELLFP_CELL)
    
ITEMS ArrayCreate(ITEM_INFO16)
    
    
g_maxplayers get_maxplayers()
    
read_top();
    if(!
dir_exists(file_dir)) mkdir(file_dir);
}
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)
    
register_native("zp_level_adminmenu""native_get_adminmenu"1)
    
register_native("zp_shop_level_menu""native_get_shopmenu"1)
    
register_native("zp_top_level""native_get_toplevel"1)    
}
public 
plugin_cfg()
{
    new 
cfgdir[33]
    
get_configsdir(cfgdircharsmax(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(idszNamecharsmax(szName))
        
read_args(szArgscharsmax(szArgs))
        
remove_quotes(szArgs)
        if(!
is_user_alive(id))
        {
            
ColorChat(0GREEN"^1*DEAD*^4 [ LVL: %i ]^3 %s^1 : %s"PlayerLevel[id], szNameszArgs)
        }
        if(
is_user_alive(id))
        {
            
ColorChat(0GREEN"[ LVL: %i ]^3 %s^1 : %s"PlayerLevel[id], szNameszArgs)
        }
        return 
PLUGIN_HANDLED
        
}
        return 
PLUGIN_CONTINUE
}
public 
hide_status(id)
{
        
set_hudmessage(0000.00.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(00255, -1.00.6010.017.00.010.014)
            
show_hudmessage(id,"[%L: %s]^n[%L: %i]"id"ML_NAME"player_nameid"ML_LEVEL"PlayerLevel[pid])
        }
        if (
zp_get_user_zombie(pid) && zp_get_user_zombie(id))
        {
            
set_hudmessage(25500, -1.00.6010.017.00.010.014)
            
show_hudmessage(id,"[%L: %s]^n[%L: %i]"id"ML_NAME"player_nameid"ML_LEVEL"PlayerLevel[pid])
        }
        return 
PLUGIN_CONTINUE
    
}
    return 
PLUGIN_HANDLED
}
public 
Stats(id)
{
    switch(
get_pcvar_num(cvar_statsmode))
    {
        case 
1ColorChat(idGREEN"[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 
2ColorChat(idGREEN"[LVL]^3 [^1ZM HP:^4+%i^3] [^1HM HP:^4+%i^3] [^1HM AP:^4+%i^3]"PlayerZmHP[id], PlayerHmHP[id], PlayerAP[id])
        case 
3ColorChat(idGREEN"[LVL]^3 [^1HM DMG:^4+%i^3] [^1ZM DMG:^4+%i^3]"PlayerHmDmg[id], PlayerZmDmg[id])
    }
}
public 
TakeDamage(victiminflictorattackerFloat:damagedamage_bits)
{
    if (
get_pcvar_num(cvar_statsmode) == || get_pcvar_num(cvar_statsmode) == 3)
    {
        if (!
zp_get_user_zombie(attacker)) 
        {
            if (
is_user_alive(attacker))
            {
                
SetHamParamFloat(4damage 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(4damage 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(idinfector)
{
    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] = 10*PlayerLevel[id]
    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(idzp_get_user_ammo_packs(id) + get_pcvar_num(cvar_lvlrevard))
            
ColorChat(idGREEN"%L"id"ML_REWARD1"'^1')
            
ColorChat(idGREEN"%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(idszAuthIDcharsmax(szAuthID))
            
get_user_ip(idszIPcharsmax(szIP))
            if(!
equal(szAuthID"VALVE_ID_LAN"))
            {
                
formatex(szDatacharsmax(szData), "^"%s^" ^"^" ^"b^" ^"ce^""szAuthID)
            }
            else
            {
                
formatex(szDatacharsmax(szData), "^"%s^" ^"^" ^"b^" ^"de^""szIP)
            }
            
write_file(g_users_initszData)
            
ColorChat(idGREEN"%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(idszPlayerNamecharsmax(szPlayerName))
        
ColorChat(0GREEN"%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(idinfector)
{
    if (!
is_user_alive(id)) return
    if (
get_pcvar_num(cvar_statsmode) == || get_pcvar_num(cvar_statsmode) == 2)
    {
        
set_user_health(idget_user_health(id) + (get_user_health(id)*(PlayerZmHP[id]/100)))
    }
    if (
PlayerLevel[id] == get_pcvar_num(cvar_maxlevel) && get_pcvar_num(cvar_giveinfbomb) == 1  && zp_get_user_zombie(id))
    {
        new 
random random_num(016)
        if ((
random == || random == 14) && !zp_is_survivor_round())
        {
            
give_item(id"weapon_hegrenade")
            
ColorChat(idGREEN"%L"id"ML_INFECTION_GRENADE1"'^1''^4''^1')
        }
        
ColorChat(idGREEN"%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
(playersnum)
    
    for(new 
id 1id numid++)
    {
        
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) == || get_pcvar_num(cvar_statsmode) == 2)
    {
        
set_user_armor(idget_user_armor(id) + PlayerAP[id])
        
set_user_health(idget_user_health(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(percentcharsmax(percent), "%")
        if(!
is_user_alive(id))  
        {  
            new 
target entity_get_int(idEV_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(idg_msg_sync"[ %L: %i ]"id"ML_LEVEL"PlayerLevel[target])
            }
            else
            {
                
ShowSyncHudMsg(idg_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(idg_msg_sync"[ %L: %i ]"id"ML_LEVEL"PlayerLevel[id])
            }
            else
            {
                
ShowSyncHudMsg(idg_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
    save_data
(id)
}

public 
client_putinserver(id)
{    
    
set_task(2.0 ,"check_save"id__"b");
}

public 
save_data(id)    
{    
    
get_user_name(idname34);   
    
    
format(key63"%s"name);     
    
format(data_327"^"%d^" ^"%d^" ^"%d^""PlayerLevel[id], PlayerXP[id], PlayerXpForLevel[id]);
    
fvault_set_data("top_level"keydata_);     
}    

///** ----------------------------------------- [ top level ] ------------------------------------------------- **///
public check_save(id)
{
    if(
get_user_team(id) == 3) return;
    
    
save_data(id); update_top(idPlayerLevel[id], PlayerXP[id], PlayerXpForLevel[id]);
}

public 
save_top()
{
    
formatex(path127"%s/top_top_v2.txt"file_dir);
    
    if(
file_exists(path))
        
delete_file(path);
    
    new 
fopen(path"at");
    
    for(new 
0TOPi++)
    {
        
formatex(data255"^"%s^" ^"%d^" ^"%d^" ^"%d^"^n"top_name[i], top_level[i], top_exp[i], top_exp2[i]);
        
fputs(fdata);
    }
    
fclose(f);
}

public 
read_top()
{
    
formatex(path127"%s/top_top_v2.txt"file_dir);
    
    new 
fopen(path"rt");
    new 
0;
    new 
level[25], exp[25], exp2[25]; 
    
    while(!
feof(f)  && TOP+1)
    {
        
fgets(fdata255);
        
parse(datatop_name[i], 31level25,  exp25exp225);
        
        
top_level[i] = str_to_num(level);
        
top_exp[i] = str_to_num(exp);
        
top_exp2[i] = str_to_num(exp2);
        
i++;
    }
    
fclose(f);    
}

public 
show_top(id
{    
    static 
buffer[2368], name[131], leni;
    
    
len format(buffer[len], 2367-len,"<style>body{background:black}th{background:#303B4A;color:#FFF;padding:1px;text-align:center;}");
    
len += format(buffer[len], 2367-len"td{border-bottom:1px #E7F0D0 solid;padding:1px;text-align:center;}"); 
    
len += format(buffer[len], 2367-len"table{background:#EFF1F3;font-size:15px;color:#222;border:1px solid #EFF1F3;text-align:center;}</style>"); 
    
    
len += format(buffer[len], 2367-len"<table width=100%% />");    
    
len += format(buffer[len], 2367-len"<tr><th width=5%>%s</th><th width=41%>%s</th><th width=27%>%s</th><th width=27%>%s</th></tr>","#","Name","Level","Exp");    
    
    for(
0TOPi++)
    {        
        
name top_name[i];
        
        if(
top_level[i]== 0
        {
            
len += format(buffer[len], 2367-len"<tr><td>%d.<td>%s<td>%s<td>%s/%s</tr>", (i+1), "-""-""-""-");
        }
        else
        {
            while(
containi(name"<") != -1replace(name129"<""&lt;");
            while(
containi(name">") != -1replace(name129">""&gt;");            
            
len += format(buffer[len], 2367-len"<tr><td>%d.<td>%s<td>%d<td>%d/%d</tr>", (i+1), nametop_level[i], top_exp[i], top_exp2[i]);
        }
    }
    
    static 
strin[20]; format(strin,33"Top 10 Levels");
    
show_motd(idbufferstrin);
    return 
PLUGIN_CONTINUE
}

public 
update_top(idlevelexpexp2
{    
    static 
name[32]; get_user_name(idnamecharsmax(name) - 1);
    
    for(new 
0TOPi++)
    {
        if(
level top_level[i] || level == top_level[i] && exp top_exp[i])
        {
            new 
pos i;    
            while(!
equal(top_name[pos], name) && pos TOP)
                
pos++;
            
            for(new 
posij--)
            {
                
formatex(top_name[j], 31top_name[j-1])
                
top_level[j] = top_level[j-1]
                
top_exp[j] = top_exp[j-1]
            }
            
            
formatex(top_name[i], charsmax(name) - 1name)
            
            
top_level[i] = level
            top_exp
[i] = exp
            top_exp2
[i] = exp2
            
            save_top
()
            break;
        }
        else if(
equal(top_name[i], name)) 
            break;    
    }
}  

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(idGREEN"%L"id"ML_ADVERT1"'^1''^3''^1''^3''^1')
    
ColorChat(idGREEN"%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(szDatacharsmax(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(idszSavecharsmax(szSave))
    
nvault_set(g_vaultszSaveszData)
}
public 
LoadInfo(id)
{
    new 
szData[256], szInfo[7][33], szLoad[32]
    
get_save_type(idszLoadcharsmax(szLoad))
    
nvault_get(g_vaultszLoadszDatacharsmax(szData))
    
parse(szDataszInfo[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[LvL] Extra items""ShopHandler")
    new 
szBuffer[64]
    new 
item_info[ITEM_INFO]
    for(new 
0ITEMS_NUMi++)
    {
        
ArrayGetArray(ITEMSiitem_info)
        if (
is_user_alive(id) && PlayerLevel[id] >= item_info[LEVEL] && item_info[PAY] == && cs_get_user_money(id) >= item_info[PRICE] && ((item_info[TEAM] == && !zp_get_user_zombie(id)) || (item_info[TEAM] == && zp_get_user_zombie(id)) || item_info[TEAM] == 3))
        {
            
formatex(szBuffercharsmax(szBuffer), "\w%s\y %i$"item_info[NAME], item_info[PRICE])
        }
        if (
is_user_alive(id) && PlayerLevel[id] >= item_info[LEVEL] && item_info[PAY] == && zp_get_user_ammo_packs(id) >= item_info[PRICE] && ((item_info[TEAM] == && !zp_get_user_zombie(id)) || (item_info[TEAM] == && zp_get_user_zombie(id)) || item_info[TEAM] == 3))
        {
            
formatex(szBuffercharsmax(szBuffer), "\w%s\y %i %L"item_info[NAME], item_info[PRICE], id"ML_AMMO_PACKS")
        }
        if(!
is_user_alive(id) || (item_info[PAY] == && cs_get_user_money(id) < item_info[PRICE]) || item_info[TEAM] == && zp_get_user_zombie(id) || item_info[TEAM] == && !zp_get_user_zombie(id))
        {
            
formatex(szBuffercharsmax(szBuffer), "\d%s\y %i$"item_info[NAME], item_info[PRICE])
        }
        if(!
is_user_alive(id) || (item_info[PAY] == && zp_get_user_ammo_packs(id) < item_info[PRICE]) || item_info[TEAM] == && zp_get_user_zombie(id) || item_info[TEAM] == && !zp_get_user_zombie(id))
        {
            
formatex(szBuffercharsmax(szBuffer), "\d%s\y %i %L"item_info[NAME], item_info[PRICE], id"ML_AMMO_PACKS")
        }
        if (
PlayerLevel[id] < item_info[LEVEL])
        {
            
formatex(szBuffercharsmax(szBuffer), "\d%s\d [\y%L level %i\d]"item_info[NAME], id"ML_UNLOCK"item_info[LEVEL])
        }
        
menu_additem(iMenuszBuffer)
    }
    
menu_display(idiMenu)
    return 
PLUGIN_CONTINUE
}
public 
ShopHandler(idiMenuiItem)
{
    if(
iItem == MENU_EXIT)
    {
        
menu_destroy(iMenu)
        return 
PLUGIN_HANDLED
    
}
    
    new 
item_info[ITEM_INFO]
    
ArrayGetArray(ITEMSiItemitem_info)
    
    if (!
is_user_alive(id))
    {
        
ColorChat(idGREEN"%L"id"ML_YOU_ARE_DEAD"'^1')
    }
    else if(
PlayerLevel[id] < item_info[LEVEL])
    {
        
ColorChat(idGREEN"%L"id"ML_NOT_REQUERED_LVL"'^1''^4'item_info[NAME], '^1')
    }
    else if (
zp_get_user_zombie(id) && item_info[TEAM] == 1)
    {
        
ColorChat(idGREEN"%L"id"ML_CANT_BUY_ZM"'^1')
    }
    else if (!
zp_get_user_zombie(id) && item_info[TEAM] == 2)
    {
        
ColorChat(idGREEN"%L"id"ML_CANT_BUY_HM"'^1')
    }
    else if(
cs_get_user_money(id) < item_info[PRICE] && item_info[PAY] == 1)
    {
        
ColorChat(idGREEN"%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(idGREEN"%L"id"ML_NOT_ENOUGH_AMMO_PACKS"'^1''^4'item_info[NAME], '^1')
    }
    else
    {
        new 
iReturn PLUGIN_CONTINUE
        ExecuteForward
(ITEM_BOUGHTiReturnidiItem)
        if(
iReturn == PLUGIN_HANDLED)
        {
            goto 
plugin_handled
        
}
        if (
item_info[PAY] == 1)
        {
            
cs_set_user_money(idcs_get_user_money(id) - item_info[PRICE])
            
ColorChat(idGREEN"%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(idzp_get_user_ammo_packs(id) - item_info[PRICE])
            
ColorChat(idGREEN"%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=0sizeof szItemsNamei++)
        {
            
formatex(szItemscharsmax(szItems), "%L"idszItemsName[i])
            
menu_additem(iMenuszItems)
        }
        
menu_display(idiMenu)
    }
    return 
PLUGIN_HANDLED
}
public 
AdminMenuHandler(idmenuitem)
{
    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 
numplayers[32], szIndexszIndex2[10], szPlayerName[32], szText[64], szText2[64]
    
get_players (playersnum)
    
formatex(szText2charsmax(szText2), "%L"id"ML_ADMIN_AMOUNT_TO_GIVE"g_amount)
    
menu_additem(iMenuszText2)
    for (new 
0numi++) 
    {
        
szIndex players[i]
        
get_user_name(szIndexszPlayerNamecharsmax(szPlayerName))
        
num_to_str(szIndexszIndex2charsmax(szIndex2))
        
formatex(szTextcharsmax(szText), "%s\r[\y%i\r]"szPlayerNamePlayerLevel[szIndex])
        
menu_additem(iMenuszTextszIndex20)
    }
    
menu_display(idiMenu)
    return 
PLUGIN_CONTINUE
}
public 
TakeLevels(id)
{
    new 
iMenu menu_create ("[LvL] Take Levels""TakeLevelsHandler")
    new 
numplayers[32], szIndexszIndex2[10], szPlayerName[32], szText[64], szText2[64]
    
get_players (playersnum)
    
formatex(szText2charsmax(szText2), "%L"id"ML_ADMIN_AMOUNT_TO_TAKE"g_amount)
    
menu_additem(iMenuszText2)
    for (new 
0numi++) 
    {
        
szIndex players[i]
        
get_user_name(szIndexszPlayerNamecharsmax(szPlayerName))
        
num_to_str(szIndexszIndex2charsmax(szIndex2))
        
formatex(szTextcharsmax(szText), "%s\r[\y%i\r]"szPlayerNamePlayerLevel[szIndex])
        
menu_additem(iMenuszTextszIndex20)
    }
    
menu_display(idiMenu)
}
public 
GiveLevelsHandler(idmenuitem)
{
    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], accesscallback
    menu_item_getinfo
(menuitemaccessszDatacharsmax(szData), szNamecharsmax(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(idmenuitem)
{
    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], accesscallback
    menu_item_getinfo
(menuitemaccessszDatacharsmax(szData), szNamecharsmax(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(1szArgvcharsmax(szArgv))
    
AMOUNT[id] = str_to_num(szArgv)
    if(
AMOUNT[id] <= 0)
    {
        
ColorChat(idGREEN"%L"id"ML_WRONG_DATA_INPUT"'^1')
    }
    else
    {
        new 
iMenu menu_create ("[LvL] Set Levels""SetLevelsHandler")
        new 
numplayers[32], szIndexszIndex2[10], szPlayerName[32], szText[64]
        
get_players (playersnum)
        for (new 
0numi++) 
        {
            
szIndex players[i]
            
get_user_name(szIndexszPlayerNamecharsmax(szPlayerName))
            
num_to_str(szIndexszIndex2charsmax(szIndex2))
            
formatex(szTextcharsmax(szText), "%s\r[\y%i\r]"szPlayerNamePlayerLevel[szIndex])
            
menu_additem(iMenuszTextszIndex20)
        }
        
menu_display(idiMenu)
    }
    return 
PLUGIN_CONTINUE
}
public 
SetLevelsHandler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
AdminMenu(id)
        return 
PLUGIN_HANDLED
    
}
    new 
szData[6], szName[64], accesscallback
    menu_item_getinfo
(menuitemaccessszDatacharsmax(szData), szNamecharsmax(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 
numplayers[32], szIndexszIndex2[10], szPlayerName[32], szText[64]
    
get_players (playersnum)
    for (new 
0numi++) 
    {
        
szIndex players[i]
        
get_user_name(szIndexszPlayerNamecharsmax(szPlayerName))
        
num_to_str(szIndexszIndex2charsmax(szIndex2))
        
formatex(szTextcharsmax(szText), "%s\r[\y%i\r]"szPlayerNamePlayerLevel[szIndex])
        
menu_additem(iMenuszTextszIndex20)
    }
    
menu_display(idiMenu)
}
public 
ResetLevelsHandler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
AdminMenu(id)
        return 
PLUGIN_HANDLED
    
}
    new 
szData[6], szName[64], accesscallback
    menu_item_getinfo
(menuitemaccessszDatacharsmax(szData), szNamecharsmax(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_UNRELIABLEg_msg_screenfade_index);
    
write_short((<< 12) * 1); 
    
write_short(floatround((<< 12) * 0.1));
    
write_short(0x0000);
    
write_byte(0);
    
write_byte(170);
    
write_byte(255); 
    
write_byte(150); 
    
message_end();
}
stock get_save_type(iddata[], len)
{
    switch(
get_pcvar_num(cvar_save_type)) 
    {
        case 
1get_user_authid(iddatalen)
        case 
2get_user_ip(iddatalen)
        case 
3get_user_name(iddatalen)
    }
}

/* zp_lvl_shop_register_item(const name[], price, level, team, pay) */
public native_register_item(iPluginiParams)
{
    new 
item_info[ITEM_INFO]
    
get_string(1item_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(ITEMSitem_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
}

public 
native_get_adminmenu(id)
{
    return 
AdminMenu(id)
}

public 
native_get_shopmenu(id)
{
    return 
ShopMenu(id)
}

public 
native_get_toplevel(id)
{
    return 
show_top(id)

ExceLo is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 07:45.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode