Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

tomciok10 - zdjęcie

tomciok10

Rejestracja: 01.02.2012
Aktualnie: Nieaktywny
Poza forum Ostatnio: 10.05.2017 16:33
-----

Moje tematy

Podnoszenie broni Gun Xp Mod 2.0 PL

01.05.2017 11:42

Witam, chcę się spytać czy da się zmienić żeby każdy mógł podnosić każdą broń czyli np jeżeli gracz z lv 1 zabije gracza z 17 lv który ma ak47 to też gracz co ma 1 lv będzie mógł podnieść po nim broń? Proszę o jakieś informację jak to zrobić albo jak by ktoś by mi sam przerobił kod byłbym wdzięczny :D. Z góry dziękuje i pozdrawiam  :D 

 

 

 

link do paczki:

https://amxx.pl/topi...-zapis-na-nick/

 

gunxpmod.sma

[spoiler]

#include "gunxpmod.cfg"

#if defined ZOMBIE_BIOHAZARD
  #include <biohazard>
#endif
#if defined ZOMBIE_PLAGUE
  #include <zombieplague>
#endif

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <nvault>
#include <sqlx>
#include <hamsandwich>

#define PLUGIN	"Gun Xp Mod"
#define AUTHOR	"xbatista"
#define VERSION	"2.0"


#define OFFSET_PRIMARYWEAPON 116
#define TASK_SHOW_LEVEL 10113
#define fm_cs_set_user_nobuy(%1) set_pdata_int(%1, 235, get_pdata_int(%1, 235) & ~(1<<0) ) //no weapon buy

new PlayerXp[33];
new PlayerLevel[33];

new g_Vault;
new g_remember_selection[33], g_kills[33], g_remember_selection_pistol[33];
new g_maxplayers, g_msgHudSync1, SayTxT, enable_grenades;
new levelspr, levelspr2, show_level_text, show_rank;
new savexp, save_type, xp_kill, xp_triple, enable_triple, triple_kills, xp_ultra, ultra_kills, enable_ultra, p_Enabled, level_style;
new enable_admin_xp, admin_xp;

/*================================================================================
						[MySQLx Vars, other]
=================================================================================*/
new Handle:g_hTuple;
new g_szAuthID[33][35];
new g_szAuthIP[33][35];
new mysqlx_host, mysqlx_user, mysqlx_db, mysqlx_pass;

new const szTables[][] = 
{
	"CREATE TABLE IF NOT EXISTS `mytable` ( `player_id` varchar(32) NOT NULL,`player_level` int(8) default NULL,`player_xp` int(16) default NULL,PRIMARY KEY (`player_id`) ) TYPE=MyISAM;"
}

new const WEAPONCONST[MAXLEVEL][] = { "weapon_glock18", "weapon_usp", "weapon_p228", "weapon_fiveseven", "weapon_deagle", "weapon_elite", "weapon_tmp", 
"weapon_mac10", "weapon_ump45", "weapon_mp5navy", "weapon_p90", "weapon_scout", "weapon_awp", "weapon_famas", "weapon_galil", "weapon_m3", "weapon_xm1014", 
"weapon_ak47", "weapon_m4a1", "weapon_aug", "weapon_sg552", "weapon_sg550", "weapon_g3sg1", "weapon_m249" 
}; // Give Weapons

new const WEAPONMDL[MAXLEVEL][] = { "models/w_glock18.mdl", "models/w_usp.mdl", "models/w_p228.mdl", "models/w_fiveseven.mdl", "models/w_deagle.mdl", "models/w_elite.mdl", "models/w_tmp.mdl", 
"models/w_mac10.mdl", "models/w_ump45.mdl", "models/w_mp5.mdl", "models/w_p90.mdl", "models/w_scout.mdl", "models/w_awp.mdl", "models/w_famas.mdl", "models/w_galil.mdl", "models/w_m3.mdl", "models/w_xm1014.mdl", 
"models/w_ak47.mdl", "models/w_m4a1.mdl", "models/w_aug.mdl", "models/w_sg552.mdl", "models/w_sg550.mdl", "models/w_g3sg1.mdl", "models/w_m249.mdl" 
}; // Blocks pick up weapon, don't change!

new const AMMOCONST[MAXLEVEL] = { 17, 16, 1, 11, 26, 10, 23, 7, 12, 19, 30, 3, 18, 
15, 14, 21, 5, 28, 22, 8, 27, 13, 24, 20 
}; // Weapons ID(CSW) don't change!

/*================================================================================
						[Plugin natives,precache,init]
=================================================================================*/
public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	register_cvar("gxm_version", VERSION, FCVAR_SPONLY|FCVAR_SERVER)
	set_cvar_string("gxm_version", VERSION)
	
	register_concmd("set_level", "cmd_give_level", ADMIN_RCON, "set_level <name> <amount>" );
	register_clcmd("say level", "showlevel");
	register_clcmd("say /level", "showlevel");
	register_clcmd("say /top20","showtop20");
	register_clcmd("say /menu","show_main_menu_info");
	register_clcmd("say menu","show_main_menu_info");
	
	p_Enabled = register_cvar( "gxm_enable", "1" ); // Plugin enabled? 1 = Yes, 0 = No.
	save_type = register_cvar("gxm_savetype","1"); // Save Xp to : 1 = MySQL, 0 = NVault.
	savexp = register_cvar("gxm_save","0"); // Save Xp by : 1 = SteamID, 0 = IP.
	xp_kill = register_cvar("gxm_xp","10"); // How much xp gain if you killed someone?
	show_level_text = register_cvar("gxm_level_text","0"); // Show your level by : 1 = HUD message, 0 = Simple colored text message.
	show_rank = register_cvar("gxm_show_rank","1"); // Show rank in /top20? 1 = Yes, 0 = No.
	level_style = register_cvar("gxm_level_style","0"); // You will gain each level new gun : 1 = Yes, 0 = No,select your gun by menu.
	enable_grenades = register_cvar("gxm_grenades","1"); // Give to player grenades? 1 = Yes, 0 = No.
	
	enable_triple = register_cvar("gxm_triple","1"); // Enable Triple Kill bonus xp? 1 = Yes, 0 = No.
	xp_triple = register_cvar("gxm_triple_xp","3"); // How much bonus xp give for Triple Kill?
	triple_kills = register_cvar("gxm_triple_kills","3"); // How much kills needed to give bonus xp?
	enable_ultra = register_cvar("gxm_ultra","1"); // Enable Ultra Kill bonus xp? 1 = Yes, 0 = No.
	xp_ultra = register_cvar("gxm_ultra_xp","5"); // How much bonus xp give for Ultra Kill?
	ultra_kills = register_cvar("gxm_ultra_kills","6"); // How much kills needed to give bonus xp?
	
	enable_admin_xp = register_cvar("gxm_admin_xp","1"); // Enable Extra xp for killing? 1 = Yes, 0 = No.
	admin_xp = register_cvar("gxm_extra_xp","10"); // How much extra xp give to admins?
	
					// SQLx cvars
	mysqlx_host = register_cvar ("gxm_host", ""); // The host from the db
	mysqlx_user = register_cvar ("gxm_user", ""); // The username from the db login
	mysqlx_pass = register_cvar ("gxm_pass", ""); // The password from the db login
	mysqlx_db = register_cvar ("gxm_dbname", ""); // The database name 
	
					// Events //
	register_event("DeathMsg", "event_deathmsg", "a");
	register_event("StatusValue", "Event_StatusValue", "bd", "1=2")
	
					// Forwards //
	RegisterHam(Ham_Spawn, "player", "fwd_PlayerSpawn", 1);
	
	register_forward(FM_Touch, "fwd_Touch");
	
					// Messages //
	#if defined NORMAL_MOD || defined ZOMBIE_SWARM
	register_message(get_user_msgid("StatusIcon"),	"Message_StatusIcon")
	#endif
	
					// Other //	
	register_menucmd(register_menuid("Main Menu"), 1023, "main_menu_info")
	
	register_dictionary("gunxpmod.txt");
	MySQLx_Init()
					
	SayTxT = get_user_msgid("SayText");
	
	g_msgHudSync1 = CreateHudSyncObj()
	g_maxplayers = get_maxplayers();
}
public plugin_natives()
{
					// Player natives //
	register_native("get_user_xp", "native_get_user_xp", 1);
	register_native("set_user_xp", "native_set_user_xp", 1);
	register_native("get_user_level", "native_get_user_level", 1);
	register_native("set_user_level", "native_set_user_level", 1);
	register_native("get_user_max_level", "native_get_user_max_level", 1);
}
public plugin_precache()
{
	levelspr = engfunc(EngFunc_PrecacheModel, "sprites/xfire.spr");
	levelspr2 = engfunc(EngFunc_PrecacheModel, "sprites/xfire2.spr");
	
	engfunc(EngFunc_PrecacheSound, LevelUp);
}
public plugin_cfg()
{
	new ConfDir[32], File[192];
	
	get_configsdir( ConfDir, charsmax( ConfDir ) );
	formatex( File, charsmax( File ), "%s/gunxpmod.cfg", ConfDir );
	
	if( !file_exists( File ) )
	{
		server_print( "File %s doesn't exist!", File );
		write_file( File, " ", -1 );
	}
	else
	{	
		server_print( "%s successfully loaded.", File );
		server_cmd( "exec %s", File );
	}
	
    //Open our vault and have g_Vault store the handle.
	g_Vault = nvault_open( "gunxpmod" );

	//Make the plugin error if vault did not successfully open
	if ( g_Vault == INVALID_HANDLE )
		set_fail_state( "Error opening GunXpMod nVault, file does not exist!" );
}
public plugin_end()
{
	//Close the vault when the plugin ends (map change\server shutdown\restart)
	nvault_close( g_Vault );
}
public client_connect(id)
{
	g_remember_selection[id] = MAX_PISTOLS_MENU;
	g_remember_selection_pistol[id] = 0;
	
	get_user_authid( id , g_szAuthID[id] , 34 );
	get_user_ip(id, g_szAuthIP[id] , 34, 1);
	
	LoadLevel(id)
}
public client_disconnect(id)
{
	SaveLevel(id)
}
public Message_StatusIcon(iMsgId, MSG_DEST, id) 
{ 
	if( !get_pcvar_num(p_Enabled) )
		return PLUGIN_HANDLED;
		
	static szIcon[5] 
	get_msg_arg_string(2, szIcon, 4) 
	if( szIcon[0] == 'b' && szIcon[2] == 'y' && szIcon[3] == 'z' ) 
	{ 
		if( get_msg_arg_int(1)) 
		{ 
			fm_cs_set_user_nobuy(id) 
			return PLUGIN_HANDLED;
		} 
	}  
	
	return PLUGIN_CONTINUE;
}
public fwd_Touch(ent, id)
{
	if (!is_user_alive(id) || !pev_valid( ent ) )
		return FMRES_IGNORED;
 
	static szEntModel[32]; 
	pev( ent , pev_model , szEntModel , 31 ); 
     
	for (new level_equip_id = PlayerLevel[id] + 1; level_equip_id < MAXLEVEL; level_equip_id++) 
	{ 
		if ( equali( szEntModel , WEAPONMDL[level_equip_id] ) ) 
		{ 
			return FMRES_SUPERCEDE; 
		}  
	} 

	return FMRES_IGNORED;
}
public fwd_PlayerSpawn(id)
{
	if( !get_pcvar_num(p_Enabled) || !is_user_alive(id) )
		return;
	
	g_kills[id] = 0
		
	#if defined ZOMBIE_SWARM
	if ( !get_pcvar_num(level_style) && cs_get_user_team(id) == CS_TEAM_CT )
	{
		StripPlayerWeapons(id);
			
		set_task(2.0, "show_main_menu_level", id)
	}
	#endif
		
	#if defined NORMAL_MOD || defined ZOMBIE_INFECTION
	if ( !get_pcvar_num(level_style))
	{
		StripPlayerWeapons(id);
			
		set_task(2.0, "show_main_menu_level", id)
	}
	#endif
		
	if(!task_exists(TASK_SHOW_LEVEL + id) && get_pcvar_num(show_level_text))
	{
		set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id)
	}
	
	#if defined ZOMBIE_SWARM	
	if ( get_pcvar_num(level_style) && cs_get_user_team(id) == CS_TEAM_CT )
	{
		set_task(0.3, "give_weapon", id);
	}
	#endif

	#if defined NORMAL_MOD || defined ZOMBIE_INFECTION
	if ( get_pcvar_num(level_style) )
	{
		set_task(0.3, "give_weapon", id);
	}
	#endif

}

#if defined ZOMBIE_BIOHAZARD
public event_infect(g_victim, g_attacker)
{
	if( !get_pcvar_num(p_Enabled) )
		return;
	
	new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple) + get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0
	new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra) + get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0
	
	if((1 <= g_attacker <= g_maxplayers))
	{
		if(g_victim != g_attacker)
		{
			g_kills[g_attacker]++;
			if(PlayerLevel[g_attacker] < MAXLEVEL-1) 
			{
				if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA)
				{
					PlayerXp[g_attacker] += get_pcvar_num(admin_xp)
				}
					
				if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) )
				{
					PlayerXp[g_attacker] += counted_triple
						
					set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
				}
				else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) )
				{
					PlayerXp[g_attacker] += counted_ultra
						
					set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
				}
				else
				{
					PlayerXp[g_attacker] += get_pcvar_num(xp_kill)
					
					set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) )
				}
				
				check_level(g_attacker)
			}
		}
	}
}
#endif

#if defined ZOMBIE_PLAGUE
public zp_user_infected_post(g_victim, g_attacker)
{
	if( !get_pcvar_num(p_Enabled) )
		return;
	
	new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple)
	new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra)
	
	if((1 <= g_attacker <= g_maxplayers))
	{
		if(g_victim != g_attacker)
		{
			g_kills[g_attacker]++;
			if(PlayerLevel[g_attacker] < MAXLEVEL-1) 
			{
				if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA)
				{
					PlayerXp[g_attacker] += get_pcvar_num(admin_xp)
				}
					
				if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) )
				{
					PlayerXp[g_attacker] += counted_triple
						
					set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
				}
				else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) )
				{
					PlayerXp[g_attacker] += counted_ultra
						
					set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
				}
				else
				{
					PlayerXp[g_attacker] += get_pcvar_num(xp_kill)
					
					set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) )
				}
				
				check_level(g_attacker)
			}
		}
	}
}
#endif

public event_deathmsg()
{	
	if( !get_pcvar_num(p_Enabled) )
		return;
	
	new g_attacker = read_data(1);
	new g_victim = read_data(2);
	
	new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple)
	new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra)
	
	if((1 <= g_attacker <= g_maxplayers))
	{
		if(g_victim != g_attacker)
		{
			g_kills[g_attacker]++;
			if(PlayerLevel[g_attacker] < MAXLEVEL-1) 
			{
				if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA)
				{
					PlayerXp[g_attacker] += get_pcvar_num(admin_xp)
				}
					
				if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) )
				{
					PlayerXp[g_attacker] += counted_triple
						
					set_hudmessage(0, 40, 255, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
				}
				else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) )
				{
					PlayerXp[g_attacker] += counted_ultra
						
					set_hudmessage(255, 30, 0, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
				}
				else
				{
					PlayerXp[g_attacker] += get_pcvar_num(xp_kill)
					
					set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) )
				}
				
				check_level(g_attacker)
			}
		}
	}
}
public Event_StatusValue(id)
{
	new target = read_data(2)
  	if(target != id && target != 0 && get_pcvar_num(p_Enabled))
  	{
		static sName[32];
		get_user_name(target, sName, 31)

		set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 6.0, 0.0, 0.0, 2)
		ShowSyncHudMsg(id, g_msgHudSync1, "%L", LANG_SERVER, "LEVEL_TEXT", sName, PlayerLevel[target], RANKLEVELS[PlayerLevel[target]])
	}
}
public task_show_level(task)
{
	new id = task - TASK_SHOW_LEVEL
	
	if(!is_user_alive(id) || !get_pcvar_num(show_level_text) || !get_pcvar_num(p_Enabled) )
		return;
	
	set_hudmessage(255, 0, 0, 0.02, 0.33, 0, 0.0, 0.3, 0.0, 0.0)
	ShowSyncHudMsg(id, g_msgHudSync1 , "%L", LANG_SERVER, "LEVEL_HUD_TEXT", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]], RANK[PlayerLevel[id]], RANKLEVELS[PlayerLevel[id]])
	
	set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id)		
}
public showlevel(id)
{
	if ( !get_pcvar_num(p_Enabled) || get_pcvar_num(show_level_text) )
		return PLUGIN_HANDLED;
	
	client_printcolor(id, "%L", LANG_SERVER, "LEVEL_TEXT2", PlayerLevel[id] , PlayerXp[id], LEVELS[PlayerLevel[id]]);
	client_printcolor(id, "%L", LANG_SERVER, "LEVEL_TEXT3", RANK[PlayerLevel[id]], RANKLEVELS[PlayerLevel[id]]);
	
	return PLUGIN_HANDLED;
}
public descriptionx(id)
{
	new szMotd[2048], szTitle[64], iPos = 0
	format(szTitle, 63, "Info")
	iPos += format(szMotd[iPos], 2047-iPos, "<html><head><style type=^"text/css^">pre{color:#FFB000;}body{background:#000000;margin-left:8px;margin-top:0px;}</style></head><pre><body>")
	iPos += format(szMotd[iPos], 2047-iPos, "^n^n<b>%s</b>^n^n", szTitle)
	iPos += format(szMotd[iPos], 2047-iPos, "%L^n", LANG_SERVER, "DESCRIPTION")
	
	iPos += format(szMotd[iPos], 2047-iPos, "%L", LANG_SERVER, "DESCRIPTION2")
		
	show_motd(id, szMotd, szTitle)
	return PLUGIN_HANDLED;
}
public check_level(id)
{
	if(PlayerLevel[id] < MAXLEVEL-1 && get_pcvar_num(p_Enabled))
	{
		while(PlayerXp[id] >= LEVELS[PlayerLevel[id]])
		{
			PlayerLevel[id]++;
				
			if(is_user_alive(id))
			{	
				if ( get_pcvar_num(level_style) )
				{
					give_weapon(id);
				}
				
				new p_origin[3];
				get_user_origin(id, p_origin, 0);
				
				set_sprite(p_origin, levelspr, 30)
				set_sprite(p_origin, levelspr2, 30)
			}
			emit_sound(id, CHAN_ITEM, LevelUp, 1.0, ATTN_NORM, 0, PITCH_NORM);
			
			static name[32] ; get_user_name(id, name, charsmax(name));
			client_printcolor(0, "%L", LANG_SERVER, "LEVEL_UP", name, PlayerLevel[id]);
		}
	} 
}
// Main Menu Info
public show_main_menu_info(id)
{
	if ( !get_pcvar_num(p_Enabled) )
		return;
	
	static menu[510], len;
	len = 0;
    
	new xKeys3 = MENU_KEY_0|MENU_KEY_1;

    // Title
	len += formatex(menu[len], sizeof menu - 1 - len, "%L", LANG_SERVER, "TITLE_MENU_INFO")
	
	len += formatex(menu[len], sizeof menu - 1 - len, "\r1. \w%L", id, "INFO")
	if ( get_pcvar_num(show_rank) )
	{
		xKeys3 |= (MENU_KEY_2)
		
		len += formatex(menu[len], sizeof menu - 1 - len, "^n\r2. \wTop 20^n")
	}
	else
	{
		len += formatex(menu[len], sizeof menu - 1 - len, "^n\d2. Top 20^n")
	}
	
	if(find_plugin_byfile("gunxpmod_shop.amxx") != INVALID_PLUGIN_ID)
	{
		xKeys3 |= (MENU_KEY_3)
		
		len += formatex(menu[len], sizeof menu - 1 - len, "\r3. \w%L^n", id, "ITEM_LIST")
		if ( is_user_alive(id) )
		{
			xKeys3 |= (MENU_KEY_4)
			
			len += formatex(menu[len], sizeof menu - 1 - len, "\r4. \w%L^n", id, "UNLOCKS_SHOP_TEXT")
		}
	}
	
	len += formatex(menu[len], sizeof menu - 1 - len, "^n^n\r0.\w %L", id, "EXIT_MENU")

	show_menu(id, xKeys3, menu, -1, "Main Menu")
} 
public main_menu_info(id, key)
{
	switch (key)
	{
		case 0:
		{
			show_main_menu_info(id)
			
			descriptionx(id)
		}
		case 1:
		{
			showtop20(id)
			
			show_main_menu_info(id)
		}
		case 2:
		{
			show_main_menu_info(id)
			
			if(callfunc_begin( "display_items","gunxpmod_shop.amxx") == 1)
			{
				callfunc_push_int( id ); 
				callfunc_end();
			}
		}
		case 3:
		{
			if(callfunc_begin("item_upgrades","gunxpmod_shop.amxx") == 1)
			{
				callfunc_push_int( id ); 
				callfunc_end();
			}
		}
		case 9:
		{
			return PLUGIN_HANDLED;
		}
	}

	return PLUGIN_HANDLED;
}
// Main Menu Level Style
public show_main_menu_level(id)
{
	if ( !is_user_alive(id) )
		return;
	
	new szInfo[60], szChooseT[40], szLastG[40];
	formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] );
	
	new menu = menu_create(szInfo , "main_menu_level");
	
	formatex(szChooseT, charsmax(szChooseT), "%L", LANG_SERVER, "CHOOSE_TEXT");
	menu_additem(menu, szChooseT, "1", 0);
	
	formatex(szLastG, charsmax(szLastG), "%L", LANG_SERVER, "LAST_GUNS");
	menu_additem(menu, szLastG, "2", 0);
	
	new szExit[15];
	formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU");
	
	menu_setprop(menu, MPROP_EXITNAME, szExit);
	
	menu_display(id , menu , 0);
} 
public main_menu_level(id , menu , item) 
{ 
	if ( !is_user_alive(id) )
	{
		return PLUGIN_HANDLED;
	}
	
	#if defined ZOMBIE_PLAGUE
	if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T )
		return PLUGIN_HANDLED;
	#endif
	
	if(item == MENU_EXIT) 
	{ 
		menu_destroy(menu); 
		return PLUGIN_HANDLED;
	} 
	new data[6], iName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);

	new item_id = str_to_num(data);
	
	switch (item_id)
	{
		case 1: // show pistols
		{
			show_menu_level_pistol(id);
		}
		case 2: // last weapons
		{
			if ( PlayerLevel[id] > MAX_PISTOLS_MENU - 1 )
			{
				give_weapon_menu(id, g_remember_selection[id], 1, 1);
				give_weapon_menu(id, g_remember_selection_pistol[id], 0, 0);
			}
			else if ( PlayerLevel[id] < MAX_PISTOLS_MENU )
			{
				give_weapon_menu(id, g_remember_selection_pistol[id], 1, 1);
			}
		}
	}

	menu_destroy(menu); 
	return PLUGIN_HANDLED;
}
// Menu Level Style Pistols
public show_menu_level_pistol(id)
{
	if ( !is_user_alive(id) )
		return;
	
	new szInfo[60];
	formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] );
	
	new menu = menu_create(szInfo , "pistol_menu");
	
	for (new item_id = 0; item_id < MAX_PISTOLS_MENU; item_id++)
	{
		new szItems[60], szTempid[32];
			
		if ( PlayerLevel[id] >= GUN_LEVELS[item_id] )
		{
			formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "ACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )

			num_to_str(item_id, szTempid, charsmax(szTempid) );

			menu_additem(menu, szItems, szTempid, 0);
		}
			
		else
		{
			formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "INACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )
			menu_additem(menu, szItems, "999", 0, menu_makecallback("CallbackMenu"));
		}
	}
	
	new szNext[15], szBack[15], szExit[15];
	formatex(szBack, charsmax(szBack), "%L", LANG_SERVER, "BACK_MENU");
	formatex(szNext, charsmax(szNext), "%L", LANG_SERVER, "NEXT_MENU");
	formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU");
	
	menu_setprop(menu, MPROP_BACKNAME, szBack) 
	menu_setprop(menu, MPROP_NEXTNAME, szNext) 
	menu_setprop(menu, MPROP_EXITNAME, szExit) 
	
	menu_display(id , menu , 0); 
}
public pistol_menu(id , menu , item) 
{ 
	if ( !is_user_alive(id) )
	{
		return PLUGIN_HANDLED;
	}
	
	#if defined ZOMBIE_PLAGUE
	if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T )
		return PLUGIN_HANDLED;
	#endif
	
	if(item == MENU_EXIT) 
	{ 
		menu_destroy(menu); 
		return PLUGIN_HANDLED;
	} 
	new data[6], iName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);

	new item_id = str_to_num(data);

	g_remember_selection_pistol[id] = item_id;
	
	give_weapon_menu(id, item_id, 1, 1);
	
	if ( PlayerLevel[id] > MAX_PISTOLS_MENU - 1 )
	{
		show_menu_level(id);
	}

	menu_destroy(menu); 
	return PLUGIN_HANDLED;
}
// Menu Level Style Primary
public show_menu_level(id)
{
	if ( !is_user_alive(id) || PlayerLevel[id] < MAX_PISTOLS_MENU )
		return;
	
	new szInfo[100];
	formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] );
	
	new menu = menu_create(szInfo , "level_menu");
	
	for (new item_id = MAX_PISTOLS_MENU; item_id < MAXLEVEL; item_id++)
	{
		new szItems[512], szTempid[32];
			
		if ( PlayerLevel[id] >= GUN_LEVELS[item_id] )
		{
			formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "ACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )

			num_to_str(item_id, szTempid, charsmax(szTempid) );

			menu_additem(menu, szItems, szTempid, 0);
		}
		else
		{
			formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "INACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )
			menu_additem(menu, szItems, "999", 0, menu_makecallback("CallbackMenu"));
		}
	}
	
	new szNext[15], szBack[15], szExit[15];
	formatex(szBack, charsmax(szBack), "%L", LANG_SERVER, "BACK_MENU");
	formatex(szNext, charsmax(szNext), "%L", LANG_SERVER, "NEXT_MENU");
	formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU");
	
	menu_setprop(menu, MPROP_BACKNAME, szBack) 
	menu_setprop(menu, MPROP_NEXTNAME, szNext) 
	menu_setprop(menu, MPROP_EXITNAME, szExit) 
	
	menu_display(id , menu , 0); 
}
public level_menu(id , menu , item) 
{ 
	if ( !is_user_alive(id) || PlayerLevel[id] < MAX_PISTOLS_MENU )
	{
		return PLUGIN_HANDLED;
	}
	
	#if defined ZOMBIE_PLAGUE
	if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T )
		return PLUGIN_HANDLED;
	#endif
	
	if(item == MENU_EXIT) 
	{ 
		menu_destroy(menu); 
		return PLUGIN_HANDLED;
	} 
	new data[6], iName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);

	new item_id = str_to_num(data);

	g_remember_selection[id] = item_id;
	
	give_weapon_menu(id, item_id, 0, 0);
	
	menu_destroy(menu); 
	return PLUGIN_HANDLED;
}
public CallbackMenu(id, menu, item) 
{ 
    return ITEM_DISABLED; 
}

// Selected by menu or remember selection and give item
public give_weapon_menu(id, selection, strip, givegren)
{
	#if defined ZOMBIE_SWARM
    if( is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && get_pcvar_num(p_Enabled) ) 
    {
		if ( strip )
		{
			StripPlayerWeapons(id);
		}
		
		if ( get_pcvar_num(enable_grenades) && givegren )
		{
			give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
			give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
			give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
			give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
		}
		
		give_item(id, WEAPONCONST[selection]);

		cs_set_user_bpammo(id, AMMOCONST[selection], AMMO2CONST[selection])
    }
	#endif
	
	#if defined ZOMBIE_INFECTION || defined NORMAL_MOD
    if(is_user_alive(id) && get_pcvar_num(p_Enabled)) 
    {
		if ( strip )
		{
			StripPlayerWeapons(id);
		}
		
		if ( get_pcvar_num(enable_grenades) && givegren )
		{
			give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
			give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
			give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
			give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
		}
		
		give_item(id, WEAPONCONST[selection]);

		cs_set_user_bpammo(id, AMMOCONST[selection], AMMO2CONST[selection])
    }
	#endif
}
public give_weapon(id)
{
	#if defined ZOMBIE_SWARM
	if( is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && get_pcvar_num(p_Enabled)) 
	{
		StripPlayerWeapons(id);
		
		if ( get_pcvar_num(enable_grenades) && get_pcvar_num(level_style) )
		{
			give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
			give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
			give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
			give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
		}
		
		give_item(id, WEAPONCONST[PlayerLevel[id]]);
			
		cs_set_user_bpammo(id, AMMOCONST[PlayerLevel[id]], AMMO2CONST[PlayerLevel[id]])
	}
	#endif
	
	#if defined ZOMBIE_INFECTION || defined NORMAL_MOD
	if(is_user_alive(id) && get_pcvar_num(p_Enabled)) 
	{
		StripPlayerWeapons(id);
		
		if ( get_pcvar_num(enable_grenades) && get_pcvar_num(level_style) )
		{
			give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
			give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
			give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
			give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
		}

		give_item(id, WEAPONCONST[PlayerLevel[id]]);

		cs_set_user_bpammo(id, AMMOCONST[PlayerLevel[id]], AMMO2CONST[PlayerLevel[id]])
	}
	#endif
}
public set_sprite(p_origin[3], sprite, radius)
{
	// Explosion
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY, p_origin)
	write_byte(TE_EXPLOSION)
	write_coord(p_origin[0])
	write_coord(p_origin[1])
	write_coord(p_origin[2])
	write_short(sprite)
	write_byte(radius)
	write_byte(15)
	write_byte(4)
	message_end()
}
//Shows Top 20
public showtop20(id)
{
	if( !get_pcvar_num(p_Enabled) && !get_pcvar_num(show_rank) )
		return;
	
	static Sort[33][2];
	new players[32],num,count,index;
	get_players(players,num);
    
	for(new i = 0; i < num; i++)
	{
		index = players[i];
		Sort[count][0] = index;
		Sort[count][1] = PlayerXp[index];
		count++;
	}
    
	SortCustom2D(Sort,count,"CompareXp");
	new motd[1501],iLen;
	iLen = formatex(motd, sizeof motd - 1,"<body bgcolor=#000000><font color=#98f5ff><pre>");
	iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"%s %-22.22s %3s^n", "#", "Name", "# Experience");
    
	new y = clamp(count,0,20);
	new name[32],kindex;
    
	for(new x = 0; x < y; x++)
	{
		kindex = Sort[x][0];
		get_user_name(kindex,name,sizeof name - 1);
		iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"%d %-22.22s %d^n", x + 1, name, Sort[x][1]);
	}
	iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"</body></font></pre>");
	show_motd(id,motd, "GunXpMod Top 20");
}
public CompareXp(elem1[], elem2[])
{
    if(elem1[1] > elem2[1])
        return -1;
    else if(elem1[1] < elem2[1])
        return 1;
    
    return 0;
} 
// Command to set player Level
public cmd_give_level(id, level, cid) 
{
	if( !cmd_access(id, level, cid, 3) || !get_pcvar_num(p_Enabled) )
	{
		return PLUGIN_HANDLED;
	}
	
	new Arg1[64], Target
	read_argv(1, Arg1, 63)
	Target = cmd_target(id, Arg1, 0)
	
	new iLevel[32], Value
	read_argv(2, iLevel, 31)
	Value = str_to_num(iLevel)
	
	if(iLevel[0] == '-') 
	{
		console_print(id, "You can't have a '-' in the value!")
		return PLUGIN_HANDLED;
	}
	
	if(!Target) 
	{
		console_print(id, "Target not found!")
		return PLUGIN_HANDLED;
	}
	
	if(Value > MAXLEVEL-1)
	{
		console_print(id, "You can't set a more than %d!", MAXLEVEL-1)
		return PLUGIN_HANDLED;
	}
	
	if(Value < 1)
	{
		console_print(id, "You can't set less than 1!")
		return PLUGIN_HANDLED;
	}
	
	new AdminName[32]
	get_user_name(id, AdminName, 31)
		
	new TargetName[32]
	get_user_name(Target, TargetName, 31)
	
	PlayerLevel[Target] = Value - 1
	PlayerXp[Target] = LEVELS[PlayerLevel[Target]]
	check_level(Target)
	
	client_printcolor(Target, "/gADMIN: /ctr%s /yhas set your level to /g%d", AdminName, Value)

	return PLUGIN_HANDLED;
}

// ============================================================//
//                          [~ Saving datas ~]			       //
// ============================================================//
public MySQLx_Init()
{
	if ( !get_pcvar_num(p_Enabled) || !get_pcvar_num(save_type) )
		return;
	
	new szHost[64], szUser[32], szPass[32], szDB[128];
	
	get_pcvar_string( mysqlx_host, szHost, charsmax( szHost ) );
	get_pcvar_string( mysqlx_user, szUser, charsmax( szUser ) );
	get_pcvar_string( mysqlx_pass, szPass, charsmax( szPass ) );
	get_pcvar_string( mysqlx_db, szDB, charsmax( szDB ) );
	
	g_hTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDB );
	
	for ( new i = 0; i < sizeof szTables; i++ )
	{
		SQL_ThreadQuery( g_hTuple, "QueryCreateTable", szTables[i])
	}
}
public QueryCreateTable( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) 
{ 
	if( iFailState == TQUERY_CONNECT_FAILED 
	|| iFailState == TQUERY_QUERY_FAILED ) 
	{ 
		log_amx( "%s", szError ); 
		
		return;
	} 
}

SaveLevel(id)
{ 
	if ( get_pcvar_num(savexp) )
	{
		if ( !get_pcvar_num(save_type) )
		{
			new szData[256];
			new szKey[64];
			
			formatex( szKey , 63 , "%s-ID" , g_szAuthID[id]);
			formatex( szData , 255 , "%i#%i#" , PlayerLevel[id], PlayerXp[id] );
		
			nvault_set( g_Vault , szKey , szData );
		}
		else
		{	
			static szQuery[ 128 ]; 

			formatex( szQuery, 127, "REPLACE INTO `mytable` (`player_id`, `player_level`, `player_xp`) VALUES ('%s', '%d', '%d');", g_szAuthID[id] , PlayerLevel[id], PlayerXp[id] );
		
			SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
		}
	}
	else
	{
		if ( !get_pcvar_num(save_type) )
		{
			new szData[256];
			new szKey[64];
			
			formatex( szKey , 63 , "%s-IP" , g_szAuthIP[id] );
			formatex( szData , 255 , "%i#%i#" , PlayerLevel[id], PlayerXp[id] );
		
			nvault_set( g_Vault , szKey , szData );
		}
		else
		{
			static szQuery[ 128 ]; 

			formatex( szQuery, 127, "REPLACE INTO `mytable` (`player_id`, `player_level`, `player_xp`) VALUES ('%s', '%d', '%d');", g_szAuthIP[id] , PlayerLevel[id], PlayerXp[id] );
		
			SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
		}
	}
}

LoadLevel(id)
{
	if ( get_pcvar_num(savexp) )
	{
		if ( !get_pcvar_num(save_type) )
		{
			new szData[256];
			new szKey[40];

			formatex( szKey , 39 , "%s-ID" , g_szAuthID[id] );

			formatex(szData , 255, "%i#%i#", PlayerLevel[id], PlayerXp[id]) 
			
			nvault_get(g_Vault, szKey, szData, 255) 

			replace_all(szData , 255, "#", " ")
			new xp[32], level[32] 
			parse(szData, level, 31, xp, 31) 
			PlayerLevel[id] = str_to_num(level)
			PlayerXp[id] = str_to_num(xp)  
		}
		else
		{
			static szQuery[ 128 ], iData[ 1 ]; 
			formatex( szQuery, 127, "SELECT `player_level`, `player_xp` FROM `mytable` WHERE ( `player_id` = '%s' );", g_szAuthID[id] ); 
     
			iData[ 0 ] = id;
			SQL_ThreadQuery( g_hTuple, "QuerySelectData", szQuery, iData, 1 );
		}
	}
	else
	{
		if ( !get_pcvar_num(save_type) )
		{
			new szData[256];
			new szKey[40];

			formatex( szKey , 39 , "%s-IP" , g_szAuthIP[id] );

			formatex(szData , 255, "%i#%i#", PlayerLevel[id], PlayerXp[id]) 
			
			nvault_get(g_Vault, szKey, szData, 255) 

			replace_all(szData , 255, "#", " ")
			new xp[32], level[32] 
			parse(szData, level, 31, xp, 31) 
			PlayerLevel[id] = str_to_num(level)
			PlayerXp[id] = str_to_num(xp) 
		}
		else
		{
			static szQuery[ 128 ], iData[ 1 ]; 
			formatex( szQuery, 127, "SELECT `player_level`, `player_xp` FROM `mytable` WHERE ( `player_id` = '%s' );", g_szAuthIP[id] ); 
     
			iData[ 0 ] = id;
			SQL_ThreadQuery( g_hTuple, "QuerySelectData", szQuery, iData, 1 );
		}
	}
}
public QuerySelectData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) 
{ 
	if( iFailState == TQUERY_CONNECT_FAILED 
	|| iFailState == TQUERY_QUERY_FAILED ) 
	{ 
		log_amx( "%s", szError );
		
		return;
	} 
	else 
	{ 
		new id = iData[ 0 ];
		
		new ColLevel = SQL_FieldNameToNum(hQuery, "player_level") 
		new ColXp = SQL_FieldNameToNum(hQuery, "player_xp")
		
		while (SQL_MoreResults(hQuery)) 
		{
			PlayerLevel[id] = SQL_ReadResult(hQuery, ColLevel);
			PlayerXp[id] = SQL_ReadResult(hQuery, ColXp);
					
			SQL_NextRow(hQuery)
		}
	} 
}
public QuerySetData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) 
{ 
	if( iFailState == TQUERY_CONNECT_FAILED 
	|| iFailState == TQUERY_QUERY_FAILED ) 
	{ 
		log_amx( "%s", szError ); 
		
		return;
	} 
} 
// ============================================================//
//                          [~ Natives ~]			       	   //
// ============================================================//
// Native: get_user_xp
public native_get_user_xp(id)
{
	return PlayerXp[id];
}
// Native: set_user_xp
public native_set_user_xp(id, amount)
{
	PlayerXp[id] = amount;
}
// Native: get_user_level
public native_get_user_level(id)
{
	return PlayerLevel[id];
}
// Native: set_user_xp
public native_set_user_level(id, amount)
{
	PlayerLevel[id] = amount;
}
// Native: Gets user level by Xp
public native_get_user_max_level(id)
{
	return LEVELS[PlayerLevel[id]];
}
// ============================================================//
//                          [~ Stocks ~]			       	   //
// ============================================================//
stock client_printcolor(const id, const input[], any:...)
{
	new count = 1, players[32];
	static msg[191];
	vformat(msg,190,input,3);
	replace_all(msg,190,"/g","^4");// green txt
	replace_all(msg,190,"/y","^1");// orange txt
	replace_all(msg,190,"/ctr","^3");// team txt
	replace_all(msg,190,"/w","^0");// team txt
	if (id) players[0] = id; else get_players(players,count,"ch");
	for (new i = 0; i < count; i++)
		if (is_user_connected(players[i]))
		{
			message_begin(MSG_ONE_UNRELIABLE, SayTxT, _, players[i]);
			write_byte(players[i]);
			write_string(msg);
			message_end();
		}
}	
public StripPlayerWeapons(id) 
{ 
	strip_user_weapons(id) 
	set_pdata_int(id, OFFSET_PRIMARYWEAPON, 0) 
	give_item(id, "weapon_knife");
} 

[/spoiler]

gunxpmod.cfg

 

[spoiler]

#define MAXLEVEL 24 // I suggest don't edit
#define MAX_PISTOLS_MENU 6 // I suggest don't edit

/*================================================================================
		       [!-->All those settings can be modified<--!]
=================================================================================*/
/*================================================================================
[Commenting/uncommenting MODS.]
=================================================================================*/
/*Normal mod,means simple cs style, without other mods.*/
#define NORMAL_MOD

/*Uncomment it if you are using Zombie Swarm and comment other.*/
//#define ZOMBIE_SWARM

/*Uncomment it if you are using Zombie Infection style mods and comment other.*/
//#define ZOMBIE_INFECTION

/*================================================================================
[Uncomment it if ZOMBIE_INFECTION and select zombie style MOD.]
=================================================================================*/
//#define ZOMBIE_BIOHAZARD
//#define ZOMBIE_PLAGUE
/*================================================================================
[End of MODS.]
=================================================================================*/

/*================================================================================
[Admin 'Flag' for giving extra Experience to admins each kill.]
=================================================================================*/
#define ADMIN_EXTRA ADMIN_LEVEL_H
/*================================================================================
[End of flags.]
=================================================================================*/

/*================================================================================
[Sounds, Level Up wave sound.]
=================================================================================*/
new const LevelUp[] = "umbrella/levelup.wav";
/*================================================================================
[End of sounds.]
=================================================================================*/

/*================================================================================
[XP Table, rank,gun level names.]
=================================================================================*/
new const LEVELS[MAXLEVEL] = { 
90, // Needed on level 1
180, // Needed on level 2
300, // Needed on level 3
450, // Needed on level 4
700, // Needed on level 5
1200, // Needed on level 6
1800, // Needed on level 7
2800, // Needed on level 8
4100, // Needed on level 9
5200, // Needed on level 10
6000, // Needed on level 11
6800, // Needed on level 12
8200, // Needed on level 13
10200, // Needed on level 14
12000, // Needed on level 15
15000, // Needed on level 16
17500, // Needed on level 17
20500, // Needed on level 18
25500, // Needed on level 19
29000, // Needed on level 20
35000, // Needed on level 21
46000, // Needed on level 22
58000, // Needed on level 23
150000 // Needed on level 24
}; // Needed Xp on each Levels

new const GUN_LEVELS[MAXLEVEL] = { 
0, // level 0, Glock.
1, // level 1, USP.
2, // level 2, P228.
3, // level 3, Fiveseven.
4, // level 4, Deagle.
5, // level 5, Elite. // End of Secondary Weapons.
6, // level 6, TMP. 
7, // level 7, MAC-10.
8, // level 8, UMP 45.
9, // level 9, MP5 Navy.
10, // level 10, P90.
11, // level 11, Scout.
12, // level 12, AWP.
13, // level 13, Famas.
14, // level 14, Galil.
15, // level 15, M3/Pump.
16, // level 16, XM1014/Auto-pump.
17, // level 17, Ak47.
18, // level 18, M4a1.
19, // level 19, AUG.
20, // level 20, SG552.
21, // level 21, SG550.
22, // level 22, G3SG1.
23, // level 23, M249/Machinegun. // End of Primary Weapons.
}; // Needed Level to choose gun from menu

new const RANKLEVELS[MAXLEVEL][] = { "Beginner", "Beginner", "Beginner", "Beginner", "Beginner", "Slayer", "Slayer", "Slayer",
"Hunter", "Hunter", "Hunter", "Hunter", "Assassin", "Assassin", "Hero", "Hero", "Hero", "War Lord", "War Lord", 
"Supernatural", "Supernatural", "Supernatural", "Umbrella Soldier", "Umbrella Soldier"
}; // Rank Level Names

new const RANK[MAXLEVEL][] = { "Glock 18C", "USP .45 ACP Tactical", "P228 Compact", "FiveseveN", "Desert Eagle .50 AE", "Dual Elite Berettas", 
"Schmidt TMP", "Ingram MAC-10", "UMP 45", "MP5 Navy", "ES P90", "Scout", "AWP Magnum Sniper", "Famas", "IMI Galil", "M3 Super 90", "XM1014 M4", 
"AK-47", "M4A1 Carbine", "Steyr AUG A1", "SG-552 Commando", "SG-550 Auto-Sniper", "G3SG1 Auto-Sniper", "M249 Para Machinegun" 
}; // Gun Level Rank Names
/*================================================================================
[End of XP Table.]
=================================================================================*/

/*================================================================================
[Grenades on each level settings.]
=================================================================================*/
new const FLASHBANG_LEVEL[MAXLEVEL][] = { "", // 0 level, nothing if you want,won't give grenade on level 0
"", "", "",
"", "", "", 
"", "", "", // 9 level
"", "weapon_flashbang", "weapon_flashbang", "weapon_flashbang", 
"weapon_flashbang", "weapon_flashbang", "weapon_flashbang", 
"weapon_flashbang", "weapon_flashbang", "weapon_flashbang",
"weapon_flashbang", "weapon_flashbang", "weapon_flashbang", "weapon_flashbang" 
}; // Give Flashbangs on current level

new const HEGRENADE_LEVEL[MAXLEVEL][] = { "weapon_hegrenade",
"weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade",
"weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade", 
"weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade", // 9 level
"weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade", 
"weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade", 
"weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade",
"weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade" 
}; // Give Hegrenade on current level

new const SMOKEGRENADE_LEVEL[MAXLEVEL][] = { "weapon_smokegrenade",
"weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade",
"weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade", 
"weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade", // 9 level
"weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade", 
"weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade", 
"weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade",
"weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade" 
}; // Give Smokegrenade on current level

/*================================================================================
[Weapon's backpack ammo on spawn/menu choose.]
=================================================================================*/
new const AMMO2CONST[MAXLEVEL] = { 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 90, // <--awp 
400, 400, 80, 80, 400, 400, 400, 400, 200, 200, 400
}; // Weapons Ammo

Podnoszenie broni Gun Xp Mod 2.0 PL

01.05.2017 11:41

Witam, chcę się spytać czy da się zmienić żeby każdy mógł podnosić każdą broń czyli np jeżeli gracz z lv 1 zabije gracza z 17 lv który ma ak47 to też gracz co ma 1 lv będzie mógł podnieść po nim broń? Proszę o jakieś informację jak to zrobić albo jak by ktoś by mi sam przerobił kod byłbym wdzięczny :D. Z góry dziękuje i pozdrawiam  :D 

 

 

 

link do paczki:

https://amxx.pl/topi...-zapis-na-nick/

 

gunxpmod.sma

[spoiler]

#include "gunxpmod.cfg"

#if defined ZOMBIE_BIOHAZARD
  #include <biohazard>
#endif
#if defined ZOMBIE_PLAGUE
  #include <zombieplague>
#endif

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <nvault>
#include <sqlx>
#include <hamsandwich>

#define PLUGIN	"Gun Xp Mod"
#define AUTHOR	"xbatista"
#define VERSION	"2.0"


#define OFFSET_PRIMARYWEAPON 116
#define TASK_SHOW_LEVEL 10113
#define fm_cs_set_user_nobuy(%1) set_pdata_int(%1, 235, get_pdata_int(%1, 235) & ~(1<<0) ) //no weapon buy

new PlayerXp[33];
new PlayerLevel[33];

new g_Vault;
new g_remember_selection[33], g_kills[33], g_remember_selection_pistol[33];
new g_maxplayers, g_msgHudSync1, SayTxT, enable_grenades;
new levelspr, levelspr2, show_level_text, show_rank;
new savexp, save_type, xp_kill, xp_triple, enable_triple, triple_kills, xp_ultra, ultra_kills, enable_ultra, p_Enabled, level_style;
new enable_admin_xp, admin_xp;

/*================================================================================
						[MySQLx Vars, other]
=================================================================================*/
new Handle:g_hTuple;
new g_szAuthID[33][35];
new g_szAuthIP[33][35];
new mysqlx_host, mysqlx_user, mysqlx_db, mysqlx_pass;

new const szTables[][] = 
{
	"CREATE TABLE IF NOT EXISTS `mytable` ( `player_id` varchar(32) NOT NULL,`player_level` int(8) default NULL,`player_xp` int(16) default NULL,PRIMARY KEY (`player_id`) ) TYPE=MyISAM;"
}

new const WEAPONCONST[MAXLEVEL][] = { "weapon_glock18", "weapon_usp", "weapon_p228", "weapon_fiveseven", "weapon_deagle", "weapon_elite", "weapon_tmp", 
"weapon_mac10", "weapon_ump45", "weapon_mp5navy", "weapon_p90", "weapon_scout", "weapon_awp", "weapon_famas", "weapon_galil", "weapon_m3", "weapon_xm1014", 
"weapon_ak47", "weapon_m4a1", "weapon_aug", "weapon_sg552", "weapon_sg550", "weapon_g3sg1", "weapon_m249" 
}; // Give Weapons

new const WEAPONMDL[MAXLEVEL][] = { "models/w_glock18.mdl", "models/w_usp.mdl", "models/w_p228.mdl", "models/w_fiveseven.mdl", "models/w_deagle.mdl", "models/w_elite.mdl", "models/w_tmp.mdl", 
"models/w_mac10.mdl", "models/w_ump45.mdl", "models/w_mp5.mdl", "models/w_p90.mdl", "models/w_scout.mdl", "models/w_awp.mdl", "models/w_famas.mdl", "models/w_galil.mdl", "models/w_m3.mdl", "models/w_xm1014.mdl", 
"models/w_ak47.mdl", "models/w_m4a1.mdl", "models/w_aug.mdl", "models/w_sg552.mdl", "models/w_sg550.mdl", "models/w_g3sg1.mdl", "models/w_m249.mdl" 
}; // Blocks pick up weapon, don't change!

new const AMMOCONST[MAXLEVEL] = { 17, 16, 1, 11, 26, 10, 23, 7, 12, 19, 30, 3, 18, 
15, 14, 21, 5, 28, 22, 8, 27, 13, 24, 20 
}; // Weapons ID(CSW) don't change!

/*================================================================================
						[Plugin natives,precache,init]
=================================================================================*/
public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	register_cvar("gxm_version", VERSION, FCVAR_SPONLY|FCVAR_SERVER)
	set_cvar_string("gxm_version", VERSION)
	
	register_concmd("set_level", "cmd_give_level", ADMIN_RCON, "set_level <name> <amount>" );
	register_clcmd("say level", "showlevel");
	register_clcmd("say /level", "showlevel");
	register_clcmd("say /top20","showtop20");
	register_clcmd("say /menu","show_main_menu_info");
	register_clcmd("say menu","show_main_menu_info");
	
	p_Enabled = register_cvar( "gxm_enable", "1" ); // Plugin enabled? 1 = Yes, 0 = No.
	save_type = register_cvar("gxm_savetype","1"); // Save Xp to : 1 = MySQL, 0 = NVault.
	savexp = register_cvar("gxm_save","0"); // Save Xp by : 1 = SteamID, 0 = IP.
	xp_kill = register_cvar("gxm_xp","10"); // How much xp gain if you killed someone?
	show_level_text = register_cvar("gxm_level_text","0"); // Show your level by : 1 = HUD message, 0 = Simple colored text message.
	show_rank = register_cvar("gxm_show_rank","1"); // Show rank in /top20? 1 = Yes, 0 = No.
	level_style = register_cvar("gxm_level_style","0"); // You will gain each level new gun : 1 = Yes, 0 = No,select your gun by menu.
	enable_grenades = register_cvar("gxm_grenades","1"); // Give to player grenades? 1 = Yes, 0 = No.
	
	enable_triple = register_cvar("gxm_triple","1"); // Enable Triple Kill bonus xp? 1 = Yes, 0 = No.
	xp_triple = register_cvar("gxm_triple_xp","3"); // How much bonus xp give for Triple Kill?
	triple_kills = register_cvar("gxm_triple_kills","3"); // How much kills needed to give bonus xp?
	enable_ultra = register_cvar("gxm_ultra","1"); // Enable Ultra Kill bonus xp? 1 = Yes, 0 = No.
	xp_ultra = register_cvar("gxm_ultra_xp","5"); // How much bonus xp give for Ultra Kill?
	ultra_kills = register_cvar("gxm_ultra_kills","6"); // How much kills needed to give bonus xp?
	
	enable_admin_xp = register_cvar("gxm_admin_xp","1"); // Enable Extra xp for killing? 1 = Yes, 0 = No.
	admin_xp = register_cvar("gxm_extra_xp","10"); // How much extra xp give to admins?
	
					// SQLx cvars
	mysqlx_host = register_cvar ("gxm_host", ""); // The host from the db
	mysqlx_user = register_cvar ("gxm_user", ""); // The username from the db login
	mysqlx_pass = register_cvar ("gxm_pass", ""); // The password from the db login
	mysqlx_db = register_cvar ("gxm_dbname", ""); // The database name 
	
					// Events //
	register_event("DeathMsg", "event_deathmsg", "a");
	register_event("StatusValue", "Event_StatusValue", "bd", "1=2")
	
					// Forwards //
	RegisterHam(Ham_Spawn, "player", "fwd_PlayerSpawn", 1);
	
	register_forward(FM_Touch, "fwd_Touch");
	
					// Messages //
	#if defined NORMAL_MOD || defined ZOMBIE_SWARM
	register_message(get_user_msgid("StatusIcon"),	"Message_StatusIcon")
	#endif
	
					// Other //	
	register_menucmd(register_menuid("Main Menu"), 1023, "main_menu_info")
	
	register_dictionary("gunxpmod.txt");
	MySQLx_Init()
					
	SayTxT = get_user_msgid("SayText");
	
	g_msgHudSync1 = CreateHudSyncObj()
	g_maxplayers = get_maxplayers();
}
public plugin_natives()
{
					// Player natives //
	register_native("get_user_xp", "native_get_user_xp", 1);
	register_native("set_user_xp", "native_set_user_xp", 1);
	register_native("get_user_level", "native_get_user_level", 1);
	register_native("set_user_level", "native_set_user_level", 1);
	register_native("get_user_max_level", "native_get_user_max_level", 1);
}
public plugin_precache()
{
	levelspr = engfunc(EngFunc_PrecacheModel, "sprites/xfire.spr");
	levelspr2 = engfunc(EngFunc_PrecacheModel, "sprites/xfire2.spr");
	
	engfunc(EngFunc_PrecacheSound, LevelUp);
}
public plugin_cfg()
{
	new ConfDir[32], File[192];
	
	get_configsdir( ConfDir, charsmax( ConfDir ) );
	formatex( File, charsmax( File ), "%s/gunxpmod.cfg", ConfDir );
	
	if( !file_exists( File ) )
	{
		server_print( "File %s doesn't exist!", File );
		write_file( File, " ", -1 );
	}
	else
	{	
		server_print( "%s successfully loaded.", File );
		server_cmd( "exec %s", File );
	}
	
    //Open our vault and have g_Vault store the handle.
	g_Vault = nvault_open( "gunxpmod" );

	//Make the plugin error if vault did not successfully open
	if ( g_Vault == INVALID_HANDLE )
		set_fail_state( "Error opening GunXpMod nVault, file does not exist!" );
}
public plugin_end()
{
	//Close the vault when the plugin ends (map change\server shutdown\restart)
	nvault_close( g_Vault );
}
public client_connect(id)
{
	g_remember_selection[id] = MAX_PISTOLS_MENU;
	g_remember_selection_pistol[id] = 0;
	
	get_user_authid( id , g_szAuthID[id] , 34 );
	get_user_ip(id, g_szAuthIP[id] , 34, 1);
	
	LoadLevel(id)
}
public client_disconnect(id)
{
	SaveLevel(id)
}
public Message_StatusIcon(iMsgId, MSG_DEST, id) 
{ 
	if( !get_pcvar_num(p_Enabled) )
		return PLUGIN_HANDLED;
		
	static szIcon[5] 
	get_msg_arg_string(2, szIcon, 4) 
	if( szIcon[0] == 'b' && szIcon[2] == 'y' && szIcon[3] == 'z' ) 
	{ 
		if( get_msg_arg_int(1)) 
		{ 
			fm_cs_set_user_nobuy(id) 
			return PLUGIN_HANDLED;
		} 
	}  
	
	return PLUGIN_CONTINUE;
}
public fwd_Touch(ent, id)
{
	if (!is_user_alive(id) || !pev_valid( ent ) )
		return FMRES_IGNORED;
 
	static szEntModel[32]; 
	pev( ent , pev_model , szEntModel , 31 ); 
     
	for (new level_equip_id = PlayerLevel[id] + 1; level_equip_id < MAXLEVEL; level_equip_id++) 
	{ 
		if ( equali( szEntModel , WEAPONMDL[level_equip_id] ) ) 
		{ 
			return FMRES_SUPERCEDE; 
		}  
	} 

	return FMRES_IGNORED;
}
public fwd_PlayerSpawn(id)
{
	if( !get_pcvar_num(p_Enabled) || !is_user_alive(id) )
		return;
	
	g_kills[id] = 0
		
	#if defined ZOMBIE_SWARM
	if ( !get_pcvar_num(level_style) && cs_get_user_team(id) == CS_TEAM_CT )
	{
		StripPlayerWeapons(id);
			
		set_task(2.0, "show_main_menu_level", id)
	}
	#endif
		
	#if defined NORMAL_MOD || defined ZOMBIE_INFECTION
	if ( !get_pcvar_num(level_style))
	{
		StripPlayerWeapons(id);
			
		set_task(2.0, "show_main_menu_level", id)
	}
	#endif
		
	if(!task_exists(TASK_SHOW_LEVEL + id) && get_pcvar_num(show_level_text))
	{
		set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id)
	}
	
	#if defined ZOMBIE_SWARM	
	if ( get_pcvar_num(level_style) && cs_get_user_team(id) == CS_TEAM_CT )
	{
		set_task(0.3, "give_weapon", id);
	}
	#endif

	#if defined NORMAL_MOD || defined ZOMBIE_INFECTION
	if ( get_pcvar_num(level_style) )
	{
		set_task(0.3, "give_weapon", id);
	}
	#endif

}

#if defined ZOMBIE_BIOHAZARD
public event_infect(g_victim, g_attacker)
{
	if( !get_pcvar_num(p_Enabled) )
		return;
	
	new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple) + get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0
	new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra) + get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0
	
	if((1 <= g_attacker <= g_maxplayers))
	{
		if(g_victim != g_attacker)
		{
			g_kills[g_attacker]++;
			if(PlayerLevel[g_attacker] < MAXLEVEL-1) 
			{
				if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA)
				{
					PlayerXp[g_attacker] += get_pcvar_num(admin_xp)
				}
					
				if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) )
				{
					PlayerXp[g_attacker] += counted_triple
						
					set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
				}
				else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) )
				{
					PlayerXp[g_attacker] += counted_ultra
						
					set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
				}
				else
				{
					PlayerXp[g_attacker] += get_pcvar_num(xp_kill)
					
					set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) )
				}
				
				check_level(g_attacker)
			}
		}
	}
}
#endif

#if defined ZOMBIE_PLAGUE
public zp_user_infected_post(g_victim, g_attacker)
{
	if( !get_pcvar_num(p_Enabled) )
		return;
	
	new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple)
	new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra)
	
	if((1 <= g_attacker <= g_maxplayers))
	{
		if(g_victim != g_attacker)
		{
			g_kills[g_attacker]++;
			if(PlayerLevel[g_attacker] < MAXLEVEL-1) 
			{
				if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA)
				{
					PlayerXp[g_attacker] += get_pcvar_num(admin_xp)
				}
					
				if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) )
				{
					PlayerXp[g_attacker] += counted_triple
						
					set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
				}
				else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) )
				{
					PlayerXp[g_attacker] += counted_ultra
						
					set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
				}
				else
				{
					PlayerXp[g_attacker] += get_pcvar_num(xp_kill)
					
					set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) )
				}
				
				check_level(g_attacker)
			}
		}
	}
}
#endif

public event_deathmsg()
{	
	if( !get_pcvar_num(p_Enabled) )
		return;
	
	new g_attacker = read_data(1);
	new g_victim = read_data(2);
	
	new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple)
	new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra)
	
	if((1 <= g_attacker <= g_maxplayers))
	{
		if(g_victim != g_attacker)
		{
			g_kills[g_attacker]++;
			if(PlayerLevel[g_attacker] < MAXLEVEL-1) 
			{
				if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA)
				{
					PlayerXp[g_attacker] += get_pcvar_num(admin_xp)
				}
					
				if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) )
				{
					PlayerXp[g_attacker] += counted_triple
						
					set_hudmessage(0, 40, 255, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
				}
				else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) )
				{
					PlayerXp[g_attacker] += counted_ultra
						
					set_hudmessage(255, 30, 0, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
				}
				else
				{
					PlayerXp[g_attacker] += get_pcvar_num(xp_kill)
					
					set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
					show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) )
				}
				
				check_level(g_attacker)
			}
		}
	}
}
public Event_StatusValue(id)
{
	new target = read_data(2)
  	if(target != id && target != 0 && get_pcvar_num(p_Enabled))
  	{
		static sName[32];
		get_user_name(target, sName, 31)

		set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 6.0, 0.0, 0.0, 2)
		ShowSyncHudMsg(id, g_msgHudSync1, "%L", LANG_SERVER, "LEVEL_TEXT", sName, PlayerLevel[target], RANKLEVELS[PlayerLevel[target]])
	}
}
public task_show_level(task)
{
	new id = task - TASK_SHOW_LEVEL
	
	if(!is_user_alive(id) || !get_pcvar_num(show_level_text) || !get_pcvar_num(p_Enabled) )
		return;
	
	set_hudmessage(255, 0, 0, 0.02, 0.33, 0, 0.0, 0.3, 0.0, 0.0)
	ShowSyncHudMsg(id, g_msgHudSync1 , "%L", LANG_SERVER, "LEVEL_HUD_TEXT", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]], RANK[PlayerLevel[id]], RANKLEVELS[PlayerLevel[id]])
	
	set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id)		
}
public showlevel(id)
{
	if ( !get_pcvar_num(p_Enabled) || get_pcvar_num(show_level_text) )
		return PLUGIN_HANDLED;
	
	client_printcolor(id, "%L", LANG_SERVER, "LEVEL_TEXT2", PlayerLevel[id] , PlayerXp[id], LEVELS[PlayerLevel[id]]);
	client_printcolor(id, "%L", LANG_SERVER, "LEVEL_TEXT3", RANK[PlayerLevel[id]], RANKLEVELS[PlayerLevel[id]]);
	
	return PLUGIN_HANDLED;
}
public descriptionx(id)
{
	new szMotd[2048], szTitle[64], iPos = 0
	format(szTitle, 63, "Info")
	iPos += format(szMotd[iPos], 2047-iPos, "<html><head><style type=^"text/css^">pre{color:#FFB000;}body{background:#000000;margin-left:8px;margin-top:0px;}</style></head><pre><body>")
	iPos += format(szMotd[iPos], 2047-iPos, "^n^n<b>%s</b>^n^n", szTitle)
	iPos += format(szMotd[iPos], 2047-iPos, "%L^n", LANG_SERVER, "DESCRIPTION")
	
	iPos += format(szMotd[iPos], 2047-iPos, "%L", LANG_SERVER, "DESCRIPTION2")
		
	show_motd(id, szMotd, szTitle)
	return PLUGIN_HANDLED;
}
public check_level(id)
{
	if(PlayerLevel[id] < MAXLEVEL-1 && get_pcvar_num(p_Enabled))
	{
		while(PlayerXp[id] >= LEVELS[PlayerLevel[id]])
		{
			PlayerLevel[id]++;
				
			if(is_user_alive(id))
			{	
				if ( get_pcvar_num(level_style) )
				{
					give_weapon(id);
				}
				
				new p_origin[3];
				get_user_origin(id, p_origin, 0);
				
				set_sprite(p_origin, levelspr, 30)
				set_sprite(p_origin, levelspr2, 30)
			}
			emit_sound(id, CHAN_ITEM, LevelUp, 1.0, ATTN_NORM, 0, PITCH_NORM);
			
			static name[32] ; get_user_name(id, name, charsmax(name));
			client_printcolor(0, "%L", LANG_SERVER, "LEVEL_UP", name, PlayerLevel[id]);
		}
	} 
}
// Main Menu Info
public show_main_menu_info(id)
{
	if ( !get_pcvar_num(p_Enabled) )
		return;
	
	static menu[510], len;
	len = 0;
    
	new xKeys3 = MENU_KEY_0|MENU_KEY_1;

    // Title
	len += formatex(menu[len], sizeof menu - 1 - len, "%L", LANG_SERVER, "TITLE_MENU_INFO")
	
	len += formatex(menu[len], sizeof menu - 1 - len, "\r1. \w%L", id, "INFO")
	if ( get_pcvar_num(show_rank) )
	{
		xKeys3 |= (MENU_KEY_2)
		
		len += formatex(menu[len], sizeof menu - 1 - len, "^n\r2. \wTop 20^n")
	}
	else
	{
		len += formatex(menu[len], sizeof menu - 1 - len, "^n\d2. Top 20^n")
	}
	
	if(find_plugin_byfile("gunxpmod_shop.amxx") != INVALID_PLUGIN_ID)
	{
		xKeys3 |= (MENU_KEY_3)
		
		len += formatex(menu[len], sizeof menu - 1 - len, "\r3. \w%L^n", id, "ITEM_LIST")
		if ( is_user_alive(id) )
		{
			xKeys3 |= (MENU_KEY_4)
			
			len += formatex(menu[len], sizeof menu - 1 - len, "\r4. \w%L^n", id, "UNLOCKS_SHOP_TEXT")
		}
	}
	
	len += formatex(menu[len], sizeof menu - 1 - len, "^n^n\r0.\w %L", id, "EXIT_MENU")

	show_menu(id, xKeys3, menu, -1, "Main Menu")
} 
public main_menu_info(id, key)
{
	switch (key)
	{
		case 0:
		{
			show_main_menu_info(id)
			
			descriptionx(id)
		}
		case 1:
		{
			showtop20(id)
			
			show_main_menu_info(id)
		}
		case 2:
		{
			show_main_menu_info(id)
			
			if(callfunc_begin( "display_items","gunxpmod_shop.amxx") == 1)
			{
				callfunc_push_int( id ); 
				callfunc_end();
			}
		}
		case 3:
		{
			if(callfunc_begin("item_upgrades","gunxpmod_shop.amxx") == 1)
			{
				callfunc_push_int( id ); 
				callfunc_end();
			}
		}
		case 9:
		{
			return PLUGIN_HANDLED;
		}
	}

	return PLUGIN_HANDLED;
}
// Main Menu Level Style
public show_main_menu_level(id)
{
	if ( !is_user_alive(id) )
		return;
	
	new szInfo[60], szChooseT[40], szLastG[40];
	formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] );
	
	new menu = menu_create(szInfo , "main_menu_level");
	
	formatex(szChooseT, charsmax(szChooseT), "%L", LANG_SERVER, "CHOOSE_TEXT");
	menu_additem(menu, szChooseT, "1", 0);
	
	formatex(szLastG, charsmax(szLastG), "%L", LANG_SERVER, "LAST_GUNS");
	menu_additem(menu, szLastG, "2", 0);
	
	new szExit[15];
	formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU");
	
	menu_setprop(menu, MPROP_EXITNAME, szExit);
	
	menu_display(id , menu , 0);
} 
public main_menu_level(id , menu , item) 
{ 
	if ( !is_user_alive(id) )
	{
		return PLUGIN_HANDLED;
	}
	
	#if defined ZOMBIE_PLAGUE
	if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T )
		return PLUGIN_HANDLED;
	#endif
	
	if(item == MENU_EXIT) 
	{ 
		menu_destroy(menu); 
		return PLUGIN_HANDLED;
	} 
	new data[6], iName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);

	new item_id = str_to_num(data);
	
	switch (item_id)
	{
		case 1: // show pistols
		{
			show_menu_level_pistol(id);
		}
		case 2: // last weapons
		{
			if ( PlayerLevel[id] > MAX_PISTOLS_MENU - 1 )
			{
				give_weapon_menu(id, g_remember_selection[id], 1, 1);
				give_weapon_menu(id, g_remember_selection_pistol[id], 0, 0);
			}
			else if ( PlayerLevel[id] < MAX_PISTOLS_MENU )
			{
				give_weapon_menu(id, g_remember_selection_pistol[id], 1, 1);
			}
		}
	}

	menu_destroy(menu); 
	return PLUGIN_HANDLED;
}
// Menu Level Style Pistols
public show_menu_level_pistol(id)
{
	if ( !is_user_alive(id) )
		return;
	
	new szInfo[60];
	formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] );
	
	new menu = menu_create(szInfo , "pistol_menu");
	
	for (new item_id = 0; item_id < MAX_PISTOLS_MENU; item_id++)
	{
		new szItems[60], szTempid[32];
			
		if ( PlayerLevel[id] >= GUN_LEVELS[item_id] )
		{
			formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "ACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )

			num_to_str(item_id, szTempid, charsmax(szTempid) );

			menu_additem(menu, szItems, szTempid, 0);
		}
			
		else
		{
			formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "INACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )
			menu_additem(menu, szItems, "999", 0, menu_makecallback("CallbackMenu"));
		}
	}
	
	new szNext[15], szBack[15], szExit[15];
	formatex(szBack, charsmax(szBack), "%L", LANG_SERVER, "BACK_MENU");
	formatex(szNext, charsmax(szNext), "%L", LANG_SERVER, "NEXT_MENU");
	formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU");
	
	menu_setprop(menu, MPROP_BACKNAME, szBack) 
	menu_setprop(menu, MPROP_NEXTNAME, szNext) 
	menu_setprop(menu, MPROP_EXITNAME, szExit) 
	
	menu_display(id , menu , 0); 
}
public pistol_menu(id , menu , item) 
{ 
	if ( !is_user_alive(id) )
	{
		return PLUGIN_HANDLED;
	}
	
	#if defined ZOMBIE_PLAGUE
	if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T )
		return PLUGIN_HANDLED;
	#endif
	
	if(item == MENU_EXIT) 
	{ 
		menu_destroy(menu); 
		return PLUGIN_HANDLED;
	} 
	new data[6], iName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);

	new item_id = str_to_num(data);

	g_remember_selection_pistol[id] = item_id;
	
	give_weapon_menu(id, item_id, 1, 1);
	
	if ( PlayerLevel[id] > MAX_PISTOLS_MENU - 1 )
	{
		show_menu_level(id);
	}

	menu_destroy(menu); 
	return PLUGIN_HANDLED;
}
// Menu Level Style Primary
public show_menu_level(id)
{
	if ( !is_user_alive(id) || PlayerLevel[id] < MAX_PISTOLS_MENU )
		return;
	
	new szInfo[100];
	formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] );
	
	new menu = menu_create(szInfo , "level_menu");
	
	for (new item_id = MAX_PISTOLS_MENU; item_id < MAXLEVEL; item_id++)
	{
		new szItems[512], szTempid[32];
			
		if ( PlayerLevel[id] >= GUN_LEVELS[item_id] )
		{
			formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "ACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )

			num_to_str(item_id, szTempid, charsmax(szTempid) );

			menu_additem(menu, szItems, szTempid, 0);
		}
		else
		{
			formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "INACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )
			menu_additem(menu, szItems, "999", 0, menu_makecallback("CallbackMenu"));
		}
	}
	
	new szNext[15], szBack[15], szExit[15];
	formatex(szBack, charsmax(szBack), "%L", LANG_SERVER, "BACK_MENU");
	formatex(szNext, charsmax(szNext), "%L", LANG_SERVER, "NEXT_MENU");
	formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU");
	
	menu_setprop(menu, MPROP_BACKNAME, szBack) 
	menu_setprop(menu, MPROP_NEXTNAME, szNext) 
	menu_setprop(menu, MPROP_EXITNAME, szExit) 
	
	menu_display(id , menu , 0); 
}
public level_menu(id , menu , item) 
{ 
	if ( !is_user_alive(id) || PlayerLevel[id] < MAX_PISTOLS_MENU )
	{
		return PLUGIN_HANDLED;
	}
	
	#if defined ZOMBIE_PLAGUE
	if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T )
		return PLUGIN_HANDLED;
	#endif
	
	if(item == MENU_EXIT) 
	{ 
		menu_destroy(menu); 
		return PLUGIN_HANDLED;
	} 
	new data[6], iName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);

	new item_id = str_to_num(data);

	g_remember_selection[id] = item_id;
	
	give_weapon_menu(id, item_id, 0, 0);
	
	menu_destroy(menu); 
	return PLUGIN_HANDLED;
}
public CallbackMenu(id, menu, item) 
{ 
    return ITEM_DISABLED; 
}

// Selected by menu or remember selection and give item
public give_weapon_menu(id, selection, strip, givegren)
{
	#if defined ZOMBIE_SWARM
    if( is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && get_pcvar_num(p_Enabled) ) 
    {
		if ( strip )
		{
			StripPlayerWeapons(id);
		}
		
		if ( get_pcvar_num(enable_grenades) && givegren )
		{
			give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
			give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
			give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
			give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
		}
		
		give_item(id, WEAPONCONST[selection]);

		cs_set_user_bpammo(id, AMMOCONST[selection], AMMO2CONST[selection])
    }
	#endif
	
	#if defined ZOMBIE_INFECTION || defined NORMAL_MOD
    if(is_user_alive(id) && get_pcvar_num(p_Enabled)) 
    {
		if ( strip )
		{
			StripPlayerWeapons(id);
		}
		
		if ( get_pcvar_num(enable_grenades) && givegren )
		{
			give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
			give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
			give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
			give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
		}
		
		give_item(id, WEAPONCONST[selection]);

		cs_set_user_bpammo(id, AMMOCONST[selection], AMMO2CONST[selection])
    }
	#endif
}
public give_weapon(id)
{
	#if defined ZOMBIE_SWARM
	if( is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && get_pcvar_num(p_Enabled)) 
	{
		StripPlayerWeapons(id);
		
		if ( get_pcvar_num(enable_grenades) && get_pcvar_num(level_style) )
		{
			give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
			give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
			give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
			give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
		}
		
		give_item(id, WEAPONCONST[PlayerLevel[id]]);
			
		cs_set_user_bpammo(id, AMMOCONST[PlayerLevel[id]], AMMO2CONST[PlayerLevel[id]])
	}
	#endif
	
	#if defined ZOMBIE_INFECTION || defined NORMAL_MOD
	if(is_user_alive(id) && get_pcvar_num(p_Enabled)) 
	{
		StripPlayerWeapons(id);
		
		if ( get_pcvar_num(enable_grenades) && get_pcvar_num(level_style) )
		{
			give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
			give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
			give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
			give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
		}

		give_item(id, WEAPONCONST[PlayerLevel[id]]);

		cs_set_user_bpammo(id, AMMOCONST[PlayerLevel[id]], AMMO2CONST[PlayerLevel[id]])
	}
	#endif
}
public set_sprite(p_origin[3], sprite, radius)
{
	// Explosion
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY, p_origin)
	write_byte(TE_EXPLOSION)
	write_coord(p_origin[0])
	write_coord(p_origin[1])
	write_coord(p_origin[2])
	write_short(sprite)
	write_byte(radius)
	write_byte(15)
	write_byte(4)
	message_end()
}
//Shows Top 20
public showtop20(id)
{
	if( !get_pcvar_num(p_Enabled) && !get_pcvar_num(show_rank) )
		return;
	
	static Sort[33][2];
	new players[32],num,count,index;
	get_players(players,num);
    
	for(new i = 0; i < num; i++)
	{
		index = players[i];
		Sort[count][0] = index;
		Sort[count][1] = PlayerXp[index];
		count++;
	}
    
	SortCustom2D(Sort,count,"CompareXp");
	new motd[1501],iLen;
	iLen = formatex(motd, sizeof motd - 1,"<body bgcolor=#000000><font color=#98f5ff><pre>");
	iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"%s %-22.22s %3s^n", "#", "Name", "# Experience");
    
	new y = clamp(count,0,20);
	new name[32],kindex;
    
	for(new x = 0; x < y; x++)
	{
		kindex = Sort[x][0];
		get_user_name(kindex,name,sizeof name - 1);
		iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"%d %-22.22s %d^n", x + 1, name, Sort[x][1]);
	}
	iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"</body></font></pre>");
	show_motd(id,motd, "GunXpMod Top 20");
}
public CompareXp(elem1[], elem2[])
{
    if(elem1[1] > elem2[1])
        return -1;
    else if(elem1[1] < elem2[1])
        return 1;
    
    return 0;
} 
// Command to set player Level
public cmd_give_level(id, level, cid) 
{
	if( !cmd_access(id, level, cid, 3) || !get_pcvar_num(p_Enabled) )
	{
		return PLUGIN_HANDLED;
	}
	
	new Arg1[64], Target
	read_argv(1, Arg1, 63)
	Target = cmd_target(id, Arg1, 0)
	
	new iLevel[32], Value
	read_argv(2, iLevel, 31)
	Value = str_to_num(iLevel)
	
	if(iLevel[0] == '-') 
	{
		console_print(id, "You can't have a '-' in the value!")
		return PLUGIN_HANDLED;
	}
	
	if(!Target) 
	{
		console_print(id, "Target not found!")
		return PLUGIN_HANDLED;
	}
	
	if(Value > MAXLEVEL-1)
	{
		console_print(id, "You can't set a more than %d!", MAXLEVEL-1)
		return PLUGIN_HANDLED;
	}
	
	if(Value < 1)
	{
		console_print(id, "You can't set less than 1!")
		return PLUGIN_HANDLED;
	}
	
	new AdminName[32]
	get_user_name(id, AdminName, 31)
		
	new TargetName[32]
	get_user_name(Target, TargetName, 31)
	
	PlayerLevel[Target] = Value - 1
	PlayerXp[Target] = LEVELS[PlayerLevel[Target]]
	check_level(Target)
	
	client_printcolor(Target, "/gADMIN: /ctr%s /yhas set your level to /g%d", AdminName, Value)

	return PLUGIN_HANDLED;
}

// ============================================================//
//                          [~ Saving datas ~]			       //
// ============================================================//
public MySQLx_Init()
{
	if ( !get_pcvar_num(p_Enabled) || !get_pcvar_num(save_type) )
		return;
	
	new szHost[64], szUser[32], szPass[32], szDB[128];
	
	get_pcvar_string( mysqlx_host, szHost, charsmax( szHost ) );
	get_pcvar_string( mysqlx_user, szUser, charsmax( szUser ) );
	get_pcvar_string( mysqlx_pass, szPass, charsmax( szPass ) );
	get_pcvar_string( mysqlx_db, szDB, charsmax( szDB ) );
	
	g_hTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDB );
	
	for ( new i = 0; i < sizeof szTables; i++ )
	{
		SQL_ThreadQuery( g_hTuple, "QueryCreateTable", szTables[i])
	}
}
public QueryCreateTable( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) 
{ 
	if( iFailState == TQUERY_CONNECT_FAILED 
	|| iFailState == TQUERY_QUERY_FAILED ) 
	{ 
		log_amx( "%s", szError ); 
		
		return;
	} 
}

SaveLevel(id)
{ 
	if ( get_pcvar_num(savexp) )
	{
		if ( !get_pcvar_num(save_type) )
		{
			new szData[256];
			new szKey[64];
			
			formatex( szKey , 63 , "%s-ID" , g_szAuthID[id]);
			formatex( szData , 255 , "%i#%i#" , PlayerLevel[id], PlayerXp[id] );
		
			nvault_set( g_Vault , szKey , szData );
		}
		else
		{	
			static szQuery[ 128 ]; 

			formatex( szQuery, 127, "REPLACE INTO `mytable` (`player_id`, `player_level`, `player_xp`) VALUES ('%s', '%d', '%d');", g_szAuthID[id] , PlayerLevel[id], PlayerXp[id] );
		
			SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
		}
	}
	else
	{
		if ( !get_pcvar_num(save_type) )
		{
			new szData[256];
			new szKey[64];
			
			formatex( szKey , 63 , "%s-IP" , g_szAuthIP[id] );
			formatex( szData , 255 , "%i#%i#" , PlayerLevel[id], PlayerXp[id] );
		
			nvault_set( g_Vault , szKey , szData );
		}
		else
		{
			static szQuery[ 128 ]; 

			formatex( szQuery, 127, "REPLACE INTO `mytable` (`player_id`, `player_level`, `player_xp`) VALUES ('%s', '%d', '%d');", g_szAuthIP[id] , PlayerLevel[id], PlayerXp[id] );
		
			SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
		}
	}
}

LoadLevel(id)
{
	if ( get_pcvar_num(savexp) )
	{
		if ( !get_pcvar_num(save_type) )
		{
			new szData[256];
			new szKey[40];

			formatex( szKey , 39 , "%s-ID" , g_szAuthID[id] );

			formatex(szData , 255, "%i#%i#", PlayerLevel[id], PlayerXp[id]) 
			
			nvault_get(g_Vault, szKey, szData, 255) 

			replace_all(szData , 255, "#", " ")
			new xp[32], level[32] 
			parse(szData, level, 31, xp, 31) 
			PlayerLevel[id] = str_to_num(level)
			PlayerXp[id] = str_to_num(xp)  
		}
		else
		{
			static szQuery[ 128 ], iData[ 1 ]; 
			formatex( szQuery, 127, "SELECT `player_level`, `player_xp` FROM `mytable` WHERE ( `player_id` = '%s' );", g_szAuthID[id] ); 
     
			iData[ 0 ] = id;
			SQL_ThreadQuery( g_hTuple, "QuerySelectData", szQuery, iData, 1 );
		}
	}
	else
	{
		if ( !get_pcvar_num(save_type) )
		{
			new szData[256];
			new szKey[40];

			formatex( szKey , 39 , "%s-IP" , g_szAuthIP[id] );

			formatex(szData , 255, "%i#%i#", PlayerLevel[id], PlayerXp[id]) 
			
			nvault_get(g_Vault, szKey, szData, 255) 

			replace_all(szData , 255, "#", " ")
			new xp[32], level[32] 
			parse(szData, level, 31, xp, 31) 
			PlayerLevel[id] = str_to_num(level)
			PlayerXp[id] = str_to_num(xp) 
		}
		else
		{
			static szQuery[ 128 ], iData[ 1 ]; 
			formatex( szQuery, 127, "SELECT `player_level`, `player_xp` FROM `mytable` WHERE ( `player_id` = '%s' );", g_szAuthIP[id] ); 
     
			iData[ 0 ] = id;
			SQL_ThreadQuery( g_hTuple, "QuerySelectData", szQuery, iData, 1 );
		}
	}
}
public QuerySelectData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) 
{ 
	if( iFailState == TQUERY_CONNECT_FAILED 
	|| iFailState == TQUERY_QUERY_FAILED ) 
	{ 
		log_amx( "%s", szError );
		
		return;
	} 
	else 
	{ 
		new id = iData[ 0 ];
		
		new ColLevel = SQL_FieldNameToNum(hQuery, "player_level") 
		new ColXp = SQL_FieldNameToNum(hQuery, "player_xp")
		
		while (SQL_MoreResults(hQuery)) 
		{
			PlayerLevel[id] = SQL_ReadResult(hQuery, ColLevel);
			PlayerXp[id] = SQL_ReadResult(hQuery, ColXp);
					
			SQL_NextRow(hQuery)
		}
	} 
}
public QuerySetData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) 
{ 
	if( iFailState == TQUERY_CONNECT_FAILED 
	|| iFailState == TQUERY_QUERY_FAILED ) 
	{ 
		log_amx( "%s", szError ); 
		
		return;
	} 
} 
// ============================================================//
//                          [~ Natives ~]			       	   //
// ============================================================//
// Native: get_user_xp
public native_get_user_xp(id)
{
	return PlayerXp[id];
}
// Native: set_user_xp
public native_set_user_xp(id, amount)
{
	PlayerXp[id] = amount;
}
// Native: get_user_level
public native_get_user_level(id)
{
	return PlayerLevel[id];
}
// Native: set_user_xp
public native_set_user_level(id, amount)
{
	PlayerLevel[id] = amount;
}
// Native: Gets user level by Xp
public native_get_user_max_level(id)
{
	return LEVELS[PlayerLevel[id]];
}
// ============================================================//
//                          [~ Stocks ~]			       	   //
// ============================================================//
stock client_printcolor(const id, const input[], any:...)
{
	new count = 1, players[32];
	static msg[191];
	vformat(msg,190,input,3);
	replace_all(msg,190,"/g","^4");// green txt
	replace_all(msg,190,"/y","^1");// orange txt
	replace_all(msg,190,"/ctr","^3");// team txt
	replace_all(msg,190,"/w","^0");// team txt
	if (id) players[0] = id; else get_players(players,count,"ch");
	for (new i = 0; i < count; i++)
		if (is_user_connected(players[i]))
		{
			message_begin(MSG_ONE_UNRELIABLE, SayTxT, _, players[i]);
			write_byte(players[i]);
			write_string(msg);
			message_end();
		}
}	
public StripPlayerWeapons(id) 
{ 
	strip_user_weapons(id) 
	set_pdata_int(id, OFFSET_PRIMARYWEAPON, 0) 
	give_item(id, "weapon_knife");
} 

[/spoiler]

gunxpmod.cfg

 

[spoiler]

#define MAXLEVEL 24 // I suggest don't edit
#define MAX_PISTOLS_MENU 6 // I suggest don't edit

/*================================================================================
		       [!-->All those settings can be modified<--!]
=================================================================================*/
/*================================================================================
[Commenting/uncommenting MODS.]
=================================================================================*/
/*Normal mod,means simple cs style, without other mods.*/
#define NORMAL_MOD

/*Uncomment it if you are using Zombie Swarm and comment other.*/
//#define ZOMBIE_SWARM

/*Uncomment it if you are using Zombie Infection style mods and comment other.*/
//#define ZOMBIE_INFECTION

/*================================================================================
[Uncomment it if ZOMBIE_INFECTION and select zombie style MOD.]
=================================================================================*/
//#define ZOMBIE_BIOHAZARD
//#define ZOMBIE_PLAGUE
/*================================================================================
[End of MODS.]
=================================================================================*/

/*================================================================================
[Admin 'Flag' for giving extra Experience to admins each kill.]
=================================================================================*/
#define ADMIN_EXTRA ADMIN_LEVEL_H
/*================================================================================
[End of flags.]
=================================================================================*/

/*================================================================================
[Sounds, Level Up wave sound.]
=================================================================================*/
new const LevelUp[] = "umbrella/levelup.wav";
/*================================================================================
[End of sounds.]
=================================================================================*/

/*================================================================================
[XP Table, rank,gun level names.]
=================================================================================*/
new const LEVELS[MAXLEVEL] = { 
90, // Needed on level 1
180, // Needed on level 2
300, // Needed on level 3
450, // Needed on level 4
700, // Needed on level 5
1200, // Needed on level 6
1800, // Needed on level 7
2800, // Needed on level 8
4100, // Needed on level 9
5200, // Needed on level 10
6000, // Needed on level 11
6800, // Needed on level 12
8200, // Needed on level 13
10200, // Needed on level 14
12000, // Needed on level 15
15000, // Needed on level 16
17500, // Needed on level 17
20500, // Needed on level 18
25500, // Needed on level 19
29000, // Needed on level 20
35000, // Needed on level 21
46000, // Needed on level 22
58000, // Needed on level 23
150000 // Needed on level 24
}; // Needed Xp on each Levels

new const GUN_LEVELS[MAXLEVEL] = { 
0, // level 0, Glock.
1, // level 1, USP.
2, // level 2, P228.
3, // level 3, Fiveseven.
4, // level 4, Deagle.
5, // level 5, Elite. // End of Secondary Weapons.
6, // level 6, TMP. 
7, // level 7, MAC-10.
8, // level 8, UMP 45.
9, // level 9, MP5 Navy.
10, // level 10, P90.
11, // level 11, Scout.
12, // level 12, AWP.
13, // level 13, Famas.
14, // level 14, Galil.
15, // level 15, M3/Pump.
16, // level 16, XM1014/Auto-pump.
17, // level 17, Ak47.
18, // level 18, M4a1.
19, // level 19, AUG.
20, // level 20, SG552.
21, // level 21, SG550.
22, // level 22, G3SG1.
23, // level 23, M249/Machinegun. // End of Primary Weapons.
}; // Needed Level to choose gun from menu

new const RANKLEVELS[MAXLEVEL][] = { "Beginner", "Beginner", "Beginner", "Beginner", "Beginner", "Slayer", "Slayer", "Slayer",
"Hunter", "Hunter", "Hunter", "Hunter", "Assassin", "Assassin", "Hero", "Hero", "Hero", "War Lord", "War Lord", 
"Supernatural", "Supernatural", "Supernatural", "Umbrella Soldier", "Umbrella Soldier"
}; // Rank Level Names

new const RANK[MAXLEVEL][] = { "Glock 18C", "USP .45 ACP Tactical", "P228 Compact", "FiveseveN", "Desert Eagle .50 AE", "Dual Elite Berettas", 
"Schmidt TMP", "Ingram MAC-10", "UMP 45", "MP5 Navy", "ES P90", "Scout", "AWP Magnum Sniper", "Famas", "IMI Galil", "M3 Super 90", "XM1014 M4", 
"AK-47", "M4A1 Carbine", "Steyr AUG A1", "SG-552 Commando", "SG-550 Auto-Sniper", "G3SG1 Auto-Sniper", "M249 Para Machinegun" 
}; // Gun Level Rank Names
/*================================================================================
[End of XP Table.]
=================================================================================*/

/*================================================================================
[Grenades on each level settings.]
=================================================================================*/
new const FLASHBANG_LEVEL[MAXLEVEL][] = { "", // 0 level, nothing if you want,won't give grenade on level 0
"", "", "",
"", "", "", 
"", "", "", // 9 level
"", "weapon_flashbang", "weapon_flashbang", "weapon_flashbang", 
"weapon_flashbang", "weapon_flashbang", "weapon_flashbang", 
"weapon_flashbang", "weapon_flashbang", "weapon_flashbang",
"weapon_flashbang", "weapon_flashbang", "weapon_flashbang", "weapon_flashbang" 
}; // Give Flashbangs on current level

new const HEGRENADE_LEVEL[MAXLEVEL][] = { "weapon_hegrenade",
"weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade",
"weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade", 
"weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade", // 9 level
"weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade", 
"weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade", 
"weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade",
"weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade" 
}; // Give Hegrenade on current level

new const SMOKEGRENADE_LEVEL[MAXLEVEL][] = { "weapon_smokegrenade",
"weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade",
"weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade", 
"weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade", // 9 level
"weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade", 
"weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade", 
"weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade",
"weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade" 
}; // Give Smokegrenade on current level

/*================================================================================
[Weapon's backpack ammo on spawn/menu choose.]
=================================================================================*/
new const AMMO2CONST[MAXLEVEL] = { 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 90, // <--awp 
400, 400, 80, 80, 400, 400, 400, 400, 200, 200, 400
}; // Weapons Ammo

[/spoiler]

Jak wyłączyć działanie cichego chodzenia gdy ktoś zmieni na broń

31.12.2016 02:29

Witam mam problem ponieważ nie wiem jak zrobić żeby ciche chodzenie było tylko na nożu gdy ktoś ma experta z gadżetów agenta

używam : https://amxx.pl/topi...k-mod-pl-v151a/

 

Z góry dziękuje za pomoc :D

 

Wycinek z medalem gadżetów agenta


	new agentlevel = g_PlayerBadges[id][BADGE_AGENT];
	
	if( agentlevel>LEVEL_NONE )
	{
			cs_set_user_nvg(id,1) 
	}
	
	    if( agentlevel>LEVEL_VETERAN  )
	    {
	        set_user_footsteps(id, 1);
	    }
		

całe badgepowers:

//Bf2 Rank Mod badge powers File
//Contains all the power giving etc checking functions.

#if defined bf2_powers_included
#endinput
#endif
#define bf2_powers_included

public set_speed(id)
{
	if ( !get_pcvar_num(gPcvarBadgesActive) || !get_pcvar_num(gPcvarBadgePowers) ) return;
	if ( !is_user_alive(id) || freezetime ) return;
	
	new Float:speed;
	
	if ( g_imobile[id] )
	{
		speed = 100.0;
	}
	else
	{
		if ( cs_get_user_vip(id) )
		{
			//VIPs only have 1 speed no matter the weapon
			speed = 227.0;
		}
		else
		{
			new weapon = get_user_weapon(id);
			
			speed = gCSWeaponSpeed[weapon];
			
			if ( gCurrentFOV[id] <= 45 )
			{
				switch(weapon)
				{
					case CSW_SCOUT: speed = 220.0;
					case CSW_SG550, CSW_AWP, CSW_G3SG1: speed = 150.0;
				}
			}
		}
		
		new smglevel = g_PlayerBadges[id][BADGE_SMG];
		new szybkosc = get_pcvar_num(gPcvarSpeed);
		
		if ( smglevel )
		{
			speed += (smglevel * szybkosc);
		}
	}
	
	if ( speed != get_user_maxspeed(id) )
	{
		set_user_maxspeed(id, speed);
	}
}

public set_invis(id)
{
	if ( !get_pcvar_num(gPcvarBadgesActive) || !get_pcvar_num(gPcvarBadgePowers) ) return;
	if ( !is_user_alive(id) ) return;
	
	new shotgunlevel = g_PlayerBadges[id][BADGE_SHOTGUN];
	
	if ( shotgunlevel && get_user_weapon(id) == CSW_KNIFE )
	{
		fm_set_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransTexture, gInvisAlphaValue[shotgunlevel-1]);
		g_invis[id] = true;
	}
	else
	{
		fm_set_rendering(id);
		g_invis[id] = false;
	}
}

public set_grav(id)
{
	if ( !get_pcvar_num(gPcvarBadgesActive) || !get_pcvar_num(gPcvarBadgePowers) ) return;
	if ( !is_user_alive(id) ) return;
	
	new gravlevel = g_PlayerBadges[id][BADGE_GRAVITY];
	
	if ( gravlevel && get_user_weapon(id) == CSW_KNIFE )
	{
		new Float:grav
		switch(gravlevel)
		{
			case 1: grav = get_pcvar_float(gPcvarGrav1);
			case 2: grav = get_pcvar_float(gPcvarGrav2);
			case 3: grav = get_pcvar_float(gPcvarGrav3);
			case 4: grav = get_pcvar_float(gPcvarGrav4);
			case 5: grav = get_pcvar_float(gPcvarGrav5);
			case 6: grav = get_pcvar_float(gPcvarGrav6);
		}
		fm_set_user_gravity(id, grav)
		g_grav[id] = true;
	}
	else
	{
		fm_set_user_gravity(id, 1.0)
		g_grav[id] = false;
	}
}

public remove_imobile(id)
{
	g_imobile[id] = false;
	
	set_speed(id);
}

public give_userweapon(id)
{
	if ( !get_pcvar_num(gPcvarBadgesActive) || !get_pcvar_num(gPcvarBadgePowers) ) return;
	if ( !is_user_alive(id) ) return;
	
	new bool:givenitem = false;
	
	new assaultlevel = g_PlayerBadges[id][BADGE_ASSAULT];
	new assaulthp = get_pcvar_num(gPcvarHP);
	
	if ( assaultlevel )
	{
		new hp;
		hp = 100 + (assaultlevel * assaulthp);
		
		if ( get_user_health(id) < hp )
		{
			set_user_health(id, hp);
			
			if ( pev(id, pev_max_health) < float(hp) )
			{
				set_pev(id, pev_max_health, float(hp));
			}
			
			givenitem = true;
		}
	}
	
	new kasalevel = g_PlayerBadges[id][BADGE_KASA];
	new kasaile = get_pcvar_num(gPcvarKasa);
	new kasa = cs_get_user_money(id);
	
	if ( kasalevel )
	{
		new kasadodaj = kasa + (kasalevel * kasaile);
		
		if( cs_get_user_money(id) < 16000 )
		{		
			cs_set_user_money(id, kasadodaj);
		}
		
		givenitem = true;
	}
	
	new sniperlevel = g_PlayerBadges[id][BADGE_SNIPER];
	
	if ( sniperlevel )
	{
		if ( random_num(1, (7-sniperlevel)) == 1 )
		{
			new weaponName[32];
			new weaponID = get_user_weapon(id);
			
			if ( !get_pcvar_num(gPcvarFreeAwp) )
			{
				fm_give_item(id, "weapon_scout");
			}
			else
			{
				#if defined VIP_BF2
				if(get_user_flags(id) & ADMIN_LEVEL_H) 
				{
					fm_give_item(id, "weapon_awp");
				}
				else 
				{
					fm_give_item(id, "weapon_scout");
				}
				#else
				fm_give_item(id, "weapon_awp");
				#endif
			}
			
			if ( weaponID )
			{
				get_weaponname(weaponID, weaponName, charsmax(weaponName));
				engclient_cmd(id, weaponName);
			}
			
			givenitem = true;
		}
	}
	
	new explosionlevel = g_PlayerBadges[id][BADGE_EXPLOSIVES];
	
	if ( explosionlevel )
	{
		if ( random_num(1, (7-explosionlevel)) == 1 )
		{
			fm_give_item(id, "weapon_hegrenade");
			
			givenitem = true;
		}
	}
	
	new agentlevel = g_PlayerBadges[id][BADGE_AGENT];
	
	if( agentlevel>LEVEL_NONE )
	{
			cs_set_user_nvg(id,1) 
	}
	
	    if( agentlevel>LEVEL_VETERAN )
	    {
	        set_user_footsteps(id, 1);
	    }
	
	
	new CsArmorType:ArmorType;
	new UserArmor = cs_get_user_armor(id, ArmorType);
	
	new armor1 = get_pcvar_num(gPcvarArmor1);
	new armor2 = get_pcvar_num(gPcvarArmor2);
	new armor3 = get_pcvar_num(gPcvarArmor3);
	new armor4 = get_pcvar_num(gPcvarArmor4);
	new armor5 = get_pcvar_num(gPcvarArmor5);
	new armor6 = get_pcvar_num(gPcvarArmor6);
	
	switch (numofbadges[id])
	{
		case 6 .. 15:
		{
			if ( UserArmor < armor1 )
			{
				cs_set_user_armor(id, armor1, CS_ARMOR_VESTHELM);
				givenitem = true;
			}
		}
		
		case 16 .. 27:
		{
			if ( UserArmor < armor2 )
			{
				cs_set_user_armor(id, armor2, CS_ARMOR_VESTHELM);
				givenitem = true;
			}
		}
		
		case 28 .. 38:
		{
			if ( UserArmor < armor3 )
			{
				cs_set_user_armor(id, armor3, CS_ARMOR_VESTHELM);
				givenitem = true;
			}
		}
		
		case 39 .. 49:
		{
			if ( UserArmor < armor4 )
			{
				cs_set_user_armor(id, armor4, CS_ARMOR_VESTHELM);
				givenitem = true;
			}
		}
		
		case 50 .. 60:
		{
			if ( UserArmor < armor5 )
			{
				cs_set_user_armor(id, armor5, CS_ARMOR_VESTHELM);
				givenitem = true;
			}
		}
		
		case 61 .. 72:
		{
			if ( UserArmor < armor6 )
			{
				cs_set_user_armor(id, armor6, CS_ARMOR_VESTHELM);
				givenitem = true;
			}
		}
	}
	
	if ( givenitem )
	{
		screen_flash(id, 0, 255, 0, 100);
	}
}

Szukam pluginu na polskie znaki na chacie

26.12.2016 20:58

Witam , szukam pluginu na polskie znaki na chacie tylko nie może być plugin  polskichat ponieważ koliduje z innymi pluginami. Znacie może jakieś inne sposoby na spolszczenie chatu chodzi mi o pisanie na say. Z góry dziękuję i pozdrawiam :D

BF2 v1.5.1a bug z zabijaniem samego siebie

24.12.2016 23:30

Witam mam problem z bf2 v1.5.1a https://amxx.pl/topi...-mod-pl-v151a/ 

Jest bug ponieważ gdy się wejdzie na serwer i wpiszę się kila dostaje się odznakę z szturmówki jak się zrobi tak drugi raz dostaje się 2 odznakę z szturmówki i z grawitacji czy  może ktoś pomóc w naprawie tego ?  Z góry dziękuję za pomoc daje ++ :D

 

wycinek z check.inl z bronią szturmową :
 
[spoiler]

		//Assault badge section
		currentbadge=g_PlayerBadges[id][BADGE_ASSAULT];
		wstats[0]=0;
		wstats[4]=0;
		wstats[5]=0;
		wroundstats[0]=0;

		get_user_stats(id,wstats,wbodyhits);

		new acc = floatround((float(wstats[5])/float(wstats[4]))*100);
		accuracy[id]=acc;

		switch (currentbadge)
		{
			case LEVEL_NONE:
			{
				if (roundkills[0]>3)
				{
					g_PlayerBadges[id][BADGE_ASSAULT]=LEVEL_START; //Poczatkujacy Assault Badge
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_ASSAULT][LEVEL_START]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_ASSAULT][LEVEL_START]);
					#endif
					badgegained=true;
				}
			}
			case LEVEL_START:
			{
				if (acc>24)
				{
					g_PlayerBadges[id][BADGE_ASSAULT]=LEVEL_BASIC; //Basic Assault Badge
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_ASSAULT][LEVEL_BASIC]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_ASSAULT][LEVEL_BASIC]);
					#endif
					badgegained=true;
				}
			}
			case LEVEL_BASIC:
			{
				if ((roundkills[0]>4) && (roundkills[2]>2) && (totalkills[id]>1999))
				{
					g_PlayerBadges[id][BADGE_ASSAULT]=LEVEL_VETERAN; //Veteran Assault Badge
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_ASSAULT][LEVEL_VETERAN]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_ASSAULT][LEVEL_VETERAN]);
					#endif
					badgegained=true;
				}
			}
			case LEVEL_VETERAN:
			{   
				if ((roundkills[0]>6) && (roundkills[2]>4) && (totalkills[id]>3999))
				{
					g_PlayerBadges[id][BADGE_ASSAULT]=LEVEL_EXPERT; //Expert Assault Badge
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_ASSAULT][LEVEL_VETERAN]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_ASSAULT][LEVEL_VETERAN]);
					#endif
					badgegained=true;
				}
			}
			case LEVEL_EXPERT:
			{
				if ((roundkills[0]>4) && (roundkills[2]>1) && (totalkills[id]>4999))
				{
					g_PlayerBadges[id][BADGE_ASSAULT]=LEVEL_PROFESIONAL; //Profesjonalista Assault Badge
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_ASSAULT][LEVEL_PROFESIONAL]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_ASSAULT][LEVEL_PROFESIONAL]);
					#endif
					badgegained=true;
				}
			}
			case LEVEL_PROFESIONAL:
			{
				if ((roundkills[0]>4) && (roundkills[2]>1) && (totalkills[id]>5999))
				{
					g_PlayerBadges[id][BADGE_ASSAULT]=LEVEL_AGENT; //Profesjonalista Assault Badge
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_ASSAULT][LEVEL_AGENT]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_ASSAULT][LEVEL_AGENT]);
					#endif
					badgegained=true;
				}
			}
		}
		//End Assault section

[/spoiler]

 

Odznaka z grawitacją: 

 

[spoiler]

//GRAVITY badge section
		currentbadge=g_PlayerBadges[id][BADGE_GRAVITY];
		wstats[0]=0;
		wstats[4]=0;
		wstats[5]=0;
		wroundstats[0]=0;

		get_user_stats(id,wstats,wbodyhits);

		switch (currentbadge)
		{
			case LEVEL_NONE:
			{
				if (roundkills[0]>8)
				{
					g_PlayerBadges[id][BADGE_GRAVITY]=LEVEL_START; //Poczatkujacy GRAVITY Badge
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_GRAVITY][LEVEL_START]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_GRAVITY][LEVEL_START]);
					#endif
					badgegained=true;
				}
			}
			case LEVEL_START:
			{
				if ((roundkills[0]>1) && (roundkills[2]>1) && (totalkills[id]>999))
				{
					g_PlayerBadges[id][BADGE_GRAVITY]=LEVEL_BASIC; //Basic GRAVITY Badge
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_GRAVITY][LEVEL_BASIC]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_GRAVITY][LEVEL_BASIC]);
					#endif
					badgegained=true;
				}
			}
			case LEVEL_BASIC:
			{
				if ((roundkills[0]>2) && (roundkills[2]>2) && (totalkills[id]>1999))
				{
					g_PlayerBadges[id][BADGE_GRAVITY]=LEVEL_VETERAN; //Veteran GRAVITY Badge
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_GRAVITY][LEVEL_VETERAN]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_GRAVITY][LEVEL_VETERAN]);
					#endif
					badgegained=true;
				}
			}
			case LEVEL_VETERAN:
			{   
				if ((roundkills[0]>3) && (roundkills[2]>3) && (totalkills[id]>2999))
				{
					g_PlayerBadges[id][BADGE_GRAVITY]=LEVEL_EXPERT; //Expert GRAVITY Badge
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_GRAVITY][LEVEL_VETERAN]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_GRAVITY][LEVEL_VETERAN]);
					#endif
					badgegained=true;
				}
			}
			case LEVEL_EXPERT:
			{
				if ((roundkills[0]>4) && (roundkills[2]>4) && (totalkills[id]>3999))
				{
					g_PlayerBadges[id][BADGE_GRAVITY]=LEVEL_PROFESIONAL; //Profesjonalista GRAVITY Badge
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_GRAVITY][LEVEL_PROFESIONAL]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_GRAVITY][LEVEL_PROFESIONAL]);
					#endif
					badgegained=true;
				}
			}
			case LEVEL_PROFESIONAL:
			{
				if ((roundkills[0]>6) && (roundkills[2]>6) && (totalkills[id]>5999))
				{
					g_PlayerBadges[id][BADGE_GRAVITY]=LEVEL_AGENT; //Profesjonalista GRAVITY Badge
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_GRAVITY][LEVEL_AGENT]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_GRAVITY][LEVEL_AGENT]);
					#endif
					badgegained=true;
				}
			}
		}
		//End GRAVITY section
		
		//Start agent gadgets section
		currentbadge=g_PlayerBadges[id][BADGE_AGENT];

		kills=totalkills[id];

		switch (currentbadge)
		{
			case LEVEL_NONE:
			{
				if (kills>2499)
				{
					g_PlayerBadges[id][BADGE_AGENT]=LEVEL_START;
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_AGENT][LEVEL_START]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_AGENT][LEVEL_START]);
					#endif
					badgegained=true;
				}
			}
			case LEVEL_START:
			{
				if (kills>3999)
				{
					g_PlayerBadges[id][BADGE_AGENT]=LEVEL_BASIC;
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_AGENT][LEVEL_BASIC]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_AGENT][LEVEL_BASIC]);
					#endif
					badgegained=true;
				}
			}
			case LEVEL_BASIC:
			{
				if (kills>5499)
				{
					g_PlayerBadges[id][BADGE_AGENT]=LEVEL_VETERAN;
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_AGENT][LEVEL_VETERAN]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_AGENT][LEVEL_VETERAN]);
					#endif
					badgegained=true;
				}
			}
			case LEVEL_VETERAN:
			{
				if (kills>6999)
				{
					g_PlayerBadges[id][BADGE_AGENT]=LEVEL_EXPERT;
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_AGENT][LEVEL_EXPERT]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_AGENT][LEVEL_EXPERT]);
					#endif
					badgegained=true;
				}
			}
			case LEVEL_EXPERT:
			{
				if (kills>8499)
				{
					g_PlayerBadges[id][BADGE_AGENT]=LEVEL_PROFESIONAL;
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_AGENT][LEVEL_PROFESIONAL]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_AGENT][LEVEL_PROFESIONAL]);
					#endif
					badgegained=true;
				}
			}
			case LEVEL_PROFESIONAL:
			{
				if (kills>9499)
				{
					g_PlayerBadges[id][BADGE_AGENT]=LEVEL_AGENT;
					#if defined KOLOROWY_SAY
					ColorChat(id,TEAM_COLOR,"[BF2]^x03 Zdobyles odznake:^x04 %s",gBadgeName[BADGE_AGENT][LEVEL_AGENT]);
					#else
					client_print(id,print_chat,"[BF2] Zdobyles odznake: %s",gBadgeName[BADGE_AGENT][LEVEL_AGENT]);
					#endif
					badgegained=true;
				}
			}
		}
		//End agent gadgets section

[/spoiler]