Cerere modificare

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
User avatar
dim2k
Membru, skill +1
Membru, skill +1
Posts: 108
Joined: 16 Dec 2016, 04:03
Detinator Steam: Da
CS Status: INACTIV
Detinator server CS: da
SteamID: SideWinder_m3
Fond eXtream: 0
Location: romania
Been thanked: 2 times

20 Nov 2017, 22:26

salut am si eu un plugin pentru modul zm dar am 3 buguri la el [asta am gasit momentan] nu imi recunoaste 2 clase si nu salveaza points e pe mysql
aici este pluginul
| Afiseaza codul
#include amxmodx
#include amxmisc
#include hamsandwich
#include cstrike
#include fakemeta
#include sqlx
#include chr_engine
#include zombie_plague_advance

#define TASK_COOLDOWN		1337
#define TASK_NICK				2674
#define TASK_PRESENTS		5348
#define TASK_REMINDER		10696

#define VIP							ADMIN_LEVEL_D
#define SCOREATTRIB_NONE	0
#define SCOREATTRIB_DEAD	( 1 << 0 )
#define SCOREATTRIB_BOMB	( 1 << 1 )
#define SCOREATTRIB_VIP	( 1 << 2 )

#define MIN_DISTANCE			50

#define MAX_PLAYERS			32
#define TABLE_POINTS			"zmold_p"
#define TABLE_RANK				"zmold_rank"
#define TABLE_BAN				"zmold_ban"
#define VIP_MODEL				"z_out_vip"

#define ID_REMINDER			(TaskIndex - TASK_REMINDER)
#define ID_PRESENTS			(TaskIndex - TASK_PRESENTS)

#define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))

// Constants
const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0

new Float:g_fSpeed = 1000.0;
new Float:g_fDelay = 1.0;

const g_iMaxDistance = 300;

new const models[5][] = {
	"models/ZombieOutstanding/v_golden_ak47.mdl",
	"models/ZombieOutstanding/p_golden_ak47.mdl",
	"models/ZombieOutstanding/v_golden_deagle.mdl",
	"models/ZombieOutstanding/p_golden_deagle.mdl",
	"models/player/z_out_vip/z_out_vip.mdl"
}

new const countplay[16][] = {
	"fvox/biohazard_detected.wav","fvox/one.wav", "fvox/two.wav", "fvox/three.wav", "fvox/four.wav", "fvox/five.wav", "fvox/six.wav", "fvox/seven.wav", 
	"fvox/eight.wav", "fvox/nine.wav", "fvox/ten.wav", "fvox/eleven.wav", "fvox/twelve.wav", "fvox/thirteen.wav", "fvox/fourteen.wav", "fvox/fifteen.wav"};

// CS Offsets
#if cellbits == 32
const OFFSET_CLIPAMMO = 51
#else
const OFFSET_CLIPAMMO = 65
#endif
const OFFSET_LINUX_WEAPONS = 4

// Max Clip for weapons
new const MAXCLIP[] = { -1, 13, -1, 10, 1, 7, -1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20,
			10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 };

new const Float:g_flCoords[][] = { {0.50, 0.40}, {0.56, 0.44}, {0.60, 0.50}, {0.56, 0.56},
			{0.50, 0.60}, {0.44, 0.56}, {0.40, 0.50}, {0.44, 0.44}
};

new Handle:g_Tuple = Empty_Handle, g_Error[512], g_Errcd = 0, g_Points[MAX_PLAYERS+1], g_Damage2[MAX_PLAYERS+1], g_iPlayerPos[MAX_PLAYERS+1],
	jumpznum[MAX_PLAYERS+1] = 0, g_has_unlimited_clip[MAX_PLAYERS+1], g_tryder[MAX_PLAYERS+1], g_has_Ak[MAX_PLAYERS+1], g_has_Deagle[MAX_PLAYERS+1],
	cvar_bslot, cvar_bam, cvar_100ap, cvar_200ap, cvar_300ap, cvar_dmg2, cvar_godmode, cvar_arnd, g_iEnemy[MAX_PLAYERS+1], 
	g_iInBlink[MAX_PLAYERS+1], Float:g_fLastSlash[MAX_PLAYERS+1], g_iCanceled[MAX_PLAYERS+1], g_iSlash[MAX_PLAYERS+1], g_iBlinks[MAX_PLAYERS+1],
	gTrail;

// Define Zombie Classes
new g_zclass_tight, g_zclass_regen

// Define Custom Game Modes
new g_mode_avs, g_mode_nightmare

// Define Extra Items
new g_item_madness, g_item_tryder, g_item_uclip, g_item_armor100, g_item_armor200, g_item_nem, g_item_surv, g_item_snp, g_item_ass, g_item_firegren, g_item_freezegren, g_item_explogren
new g_item_wpnm249, g_item_wpnawp, g_item_wpng3sg1, g_item_wpnsg550, g_item_ngv, g_item_multijump, g_item_gak47, g_item_gdgl, g_item_kb

// Define Bools
new bool:g_Godmode[MAX_PLAYERS+1], bool:g_slotpass[MAX_PLAYERS+1], bool:bought_arnd[MAX_PLAYERS+1], bool:g_modelpass[MAX_PLAYERS+1],
	bool:dozjump[33] = false, g_CanBuy = true;

new g_iMaxPlayers, g_MsgSync, g_MsgSync2, g_MsgSync3, g_msgSayText, countdown_timer

stock __dhud_color;
stock __dhud_x;
stock __dhud_y;
stock __dhud_effect;
stock __dhud_fxtime;
stock __dhud_holdtime;
stock __dhud_fadeintime;
stock __dhud_fadeouttime;
stock __dhud_reliable;

public plugin_init() {
	register_plugin("unknow", "unknow", "unknow" );
	
	RegisterHam(Ham_Killed, "player", "ham_PlayerKilled");
	RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage");
	RegisterHam(Ham_Spawn, "player", "fwPlayerSpawn", true);
	register_forward(FM_TraceLine, "FW_TraceLine_Post", 1);
	register_forward(FM_PlayerPreThink, "FW_PlayerPreThink");
	register_forward(FM_PlayerPostThink, "FW_PlayerPostThink");
	register_event("HLTV", "event_round_start", "a", "1=0", "2=0");
	register_event("StatusValue", "showStatus", "be", "1=2", "2!0");
	register_event("StatusValue", "hideStatus", "be", "1=1", "2=0");
	register_event("CurWeapon","check_models","be","1=1");
	register_message(get_user_msgid("CurWeapon"), "message_cur_weapon");
	register_message(get_user_msgid( "ScoreAttrib"), "MessageScoreAttrib");
	register_forward(FM_ClientUserInfoChanged, "fwClientUserInfoChanged");

	cvar_bslot = register_cvar("zm_buy_slot_cost", "700");
	cvar_bam = register_cvar("zm_buy_model_cost", "2250");
	cvar_100ap = register_cvar("zm_buy_100ap", "160");
	cvar_200ap = register_cvar("zm_buy_200ap", "200");
	cvar_300ap = register_cvar("zm_buy_300ap", "280");
	cvar_dmg2 = register_cvar("zm_dmg2", "120");
	cvar_godmode = register_cvar("zm_godmode", "150");
	cvar_arnd = register_cvar("zm_arnd", "180");
	
	register_concmd("zout_give_points", "command_GivePoints", ADMIN_LEVEL_C, "<name> <amount>");
	register_clcmd("zout_unsecure", "cmdUnsecure");

	register_clcmd("slot_password", "slot", ADMIN_USER, "<password>");
	register_clcmd("adminmodel", "model", ADMIN_USER, "<password>");
	register_clcmd("shophm", "commandhm");
	register_clcmd("shopzm", "commandzm");
	register_clcmd("shophm2", "command_buy2");
	register_clcmd("say", "handleSay");
	register_clcmd("say_team", "handleSay");

	register_menu("menu_hm" , KEYSMENU , "BuyMenuhm");
	register_menu("menu_zm" , KEYSMENU , "BuyMenuzm");
	register_menu("menu_second" , KEYSMENU , "Submenu");
	
	g_MsgSync = CreateHudSyncObj();
	g_MsgSync2 = CreateHudSyncObj();
	g_iMaxPlayers = get_maxplayers();
	g_MsgSync3 = CreateHudSyncObj();
	g_msgSayText = get_user_msgid("SayText");
	
	//Logare Data Base
	
	g_Tuple = SQL_MakeDbTuple("db4free.net", "fantasy", "MuieLaurWTF", "fantasy");
	
	if (g_Tuple != Empty_Handle)
   {
      SQL_ThreadQuery(g_Tuple, "IgnoreHandle", "CREATE TABLE IF NOT EXISTS TABLE_POINTS ( m TEXT, p NUMERIC )");
   }
	
	set_task(60.0, "Task_Autosave", 0xAC, .flags = "b");
}

public plugin_end()
    SQL_FreeHandle(g_Tuple);

public plugin_natives()
	register_native( "zm_get_user_points", "native_get_user_points", 1 );

public native_get_user_points(Client)
	return is_user_connected(Client) ? g_Points[Client] : -1;

public plugin_precache( ) {
	for (new m=0; m < sizeof(models); m++)
		precache_model(models[m]);
	
	for (new i=0; i < sizeof(countplay); i++ )
		precache_sound(countplay);
	
	gTrail = precache_model("sprites/smoke.spr");
	
	zp_register_zombie_class("Classic", "\r[Balanced]", "z_out_clasic", "z_out_clasic_claws.mdl", 6000, 264, 1.0, 0.82);
	zp_register_zombie_class("Raptor", "\r[Speed]", "z_out_raptor", "z_out_raptor_claws.mdl", 5250, 309, 0.94, 1.29);
	zp_register_zombie_class("Mutant", "\r[Health]", "z_out_mutant", "z_out_mutant_claws.mdl", 7500, 244, 1.09, 0.43);
	g_zclass_tight = zp_register_zombie_class("Tight", "\r[Double Jump]", "z_out_tight", "z_out_tight_claws.mdl", 4250, 259, 0.57, 1.0);
	g_zclass_regen = zp_register_zombie_class("Regenerator", "\r[Regeneration]", "z_out_regenerator", "z_out_tight_claws.mdl", 5500, 249, 1.0, 0.88);
	zp_register_zombie_class("Predator Blue", "\r[Powerful]", "z_out_predator_blue", "z_out_predator_blue_claws.mdl", 6000, 279, 0.74, 0.68);
	zp_register_zombie_class("Hunter", "\r[Silent Killer]", "z_out_hunter", "z_out_hunter_claws.mdl", 5450, 274, 0.60, 0.83);
	
	g_mode_avs = zp_register_game_mode("Assassins Vs Snipers", read_flags("9"), 3033, 0, ZP_DM_NONE);
	g_mode_nightmare = zp_register_game_mode("NightMare Mod", read_flags("2"), 4220, 0, ZP_DM_NONE);
	
	g_item_firegren = zp_register_extra_item("Fire Grenade", 4, ZP_TEAM_HUMAN);
	g_item_freezegren = zp_register_extra_item("Freeze Grenade", 3, ZP_TEAM_HUMAN);
	g_item_explogren = zp_register_extra_item("Explosive Grenade", 4, ZP_TEAM_HUMAN);
	g_item_wpnm249 = zp_register_extra_item("M249 Machine Gun", 9, ZP_TEAM_HUMAN);
	g_item_wpng3sg1 = zp_register_extra_item("G3SG1 Auto Sniper Rifle", 11, ZP_TEAM_HUMAN);
	g_item_wpnsg550 = zp_register_extra_item("SG550 Auto Sniper Rifle", 10, ZP_TEAM_HUMAN);
	g_item_wpnawp = zp_register_extra_item("AWP Sniper Rifle", 9, ZP_TEAM_HUMAN);
	g_item_ngv = zp_register_extra_item("Nightvision Googles", 2, ZP_TEAM_HUMAN);
	g_item_madness = zp_register_extra_item("Zombie Madness", 15, ZP_TEAM_ZOMBIE);
	g_item_kb = zp_register_extra_item("Knife Blinks", 20, ZP_TEAM_ZOMBIE);
	g_item_armor100 = zp_register_extra_item("Armor\y (100ap)", 5, ZP_TEAM_HUMAN);
	g_item_armor200 = zp_register_extra_item("Armor\y (200ap)", 10, ZP_TEAM_HUMAN);
	g_item_tryder = zp_register_extra_item("Tryder", 30, ZP_TEAM_HUMAN);
	g_item_uclip = zp_register_extra_item("Unlimited Clip", 10, ZP_TEAM_HUMAN);
	g_item_multijump = zp_register_extra_item("Multijump +1", 5, ZP_TEAM_HUMAN);
	g_item_gak47 = zp_register_extra_item("Golden Kalashnikov\y (AK-47)", 36, ZP_TEAM_HUMAN);
	g_item_gdgl = zp_register_extra_item("Golden Deagle\y (Nighthawk)", 20, ZP_TEAM_HUMAN);
	g_item_surv = zp_register_extra_item("Survivor", 180, ZP_TEAM_HUMAN);
	g_item_snp = zp_register_extra_item("Sniper", 175, ZP_TEAM_HUMAN);
	g_item_nem = zp_register_extra_item("Nemesis", 140, ZP_TEAM_HUMAN);
	g_item_ass = zp_register_extra_item("Assassin", 140, ZP_TEAM_HUMAN);
}

public client_putinserver(iClient)
{
	static szName[32], szTemp[512];
	get_user_name(iClient, szName, 31);
	
	replace_all(szName, charsmax(szName), "'", "*");
	replace_all(szName, charsmax(szName), "`", "*");
	replace_all(szName, charsmax(szName), "^"", "*");
	
	if (is_user_bot(iClient) || is_user_hltv(iClient))
	{
		g_Points[iClient] = 0;
		return;
	}
	
	g_Points[iClient] = 0;
	
	set_task(600.0, "Task_Presents", iClient+TASK_PRESENTS, .flags = "b");
	
	new Data[1];
	Data[0] = iClient;
	
	formatex(szTemp, sizeof(szTemp) -1, "UPDATE %s SET p = %d WHERE n = '%s' LIMIT 1", TABLE_POINTS, g_Points[iClient], szName);
	SQL_ThreadQuery(g_Tuple, "register_points", szTemp, Data, 1);
}

public client_disconnect(Client)
{
	remove_task(Client+TASK_PRESENTS);
	remove_task(Client+TASK_REMINDER);
	
	static szName[32], Handle:c, Handle:q, szTemp[512];
	get_user_name(Client, szName, 31);
	
	replace_all(szName, charsmax(szName), "'", "*");
	replace_all(szName, charsmax(szName), "`", "*");
	replace_all(szName, charsmax(szName), "^"", "*");
	
	g_Damage2[Client] = false;
	g_Godmode[Client] = false;
	bought_arnd[Client] = false;
	dozjump[Client] = false;
	g_has_Ak[Client] = false;
	g_has_Deagle[Client] = false;
	jumpznum[Client] = 0;
	
	c = SQL_Connect(g_Tuple, g_Errcd, g_Error, 511);

	formatex(szTemp, sizeof(szTemp) -1, "SELECT * FROM %s WHERE n = '%s' LIMIT 1", TABLE_POINTS, szName);
	q = SQL_PrepareQuery(c, szTemp);
	
	SQL_Execute(q);
	
	SQL_FreeHandle(q);
	SQL_FreeHandle(c);
}

public register_points( FailState,Handle:Query,Error[],Errcode,Data[],DataSize )
{
	new Client;
	Client = Data[0];
    
	if(SQL_NumResults(Query) < 1) 
	{
		static szName[32], szTemp[512];
		get_user_name(Client, szName, 31);
		
		replace_all(szName, charsmax(szName), "'", "*");
		replace_all(szName, charsmax(szName), "`", "*");
		replace_all(szName, charsmax(szName), "^"", "*");
            
		formatex(szTemp, sizeof(szTemp) -1, "INSERT INTO %s VALUES ('%s', 0)", TABLE_POINTS, szName);
		SQL_ThreadQuery(g_Tuple, "IgnoreHandle", szTemp);
	}
	
	else 
		g_Points[Client] = SQL_ReadResult(Query, 1);
    
	SQL_FreeHandle(Query);
}

public Task_Autosave()
{
	for (new i=1; i<=g_iMaxPlayers; i++)
	{
		if (is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i))
		{
			static szName[32], szTemp[512];
			get_user_name(i, szName, 31);
    
			replace_all(szName, charsmax(szName), "'", "*");
			replace_all(szName, charsmax(szName), "`", "*");
			replace_all(szName, charsmax(szName), "^"", "*");
		
			formatex(szTemp, sizeof(szTemp) -1, "UPDATE %s SET p = %d WHERE n = '%s' LIMIT 1", TABLE_POINTS, g_Points, szName);
			
			SQL_ThreadQuery(g_Tuple, "IgnoreHandle", szTemp);			
		}
	}
}

public IgnoreHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize)
	SQL_FreeHandle(Query);

public client_infochanged(id)
{
    new newname[32],oldname[32]
    get_user_info(id, "name", newname,31)
    get_user_name(id,oldname,31)
    if(!is_user_connected(id) || is_user_bot(id)) return PLUGIN_CONTINUE
    if(!equali(newname, oldname))
    {
        set_user_info(id,"name",oldname)
        client_print(id , print_console , "You can't change your nick!")
        return PLUGIN_HANDLED
    }
    return PLUGIN_CONTINUE
} 

public check_models(id) 
{
	new weapon = get_user_weapon(id)
	if (g_has_Ak[id] && (weapon == CSW_AK47)) 
	{
			set_pev(id, pev_viewmodel2, models[0])
			set_pev(id, pev_weaponmodel2, models[1])
	}
	
	else if (g_has_Deagle[id] && (weapon == CSW_DEAGLE))
	{
			set_pev(id, pev_viewmodel2, models[2])
			set_pev(id, pev_weaponmodel2, models[3])	
	}
}

public zp_round_started_pre( game )
{
	if( game == g_mode_avs )
	{
		if( fn_get_alive_players() < 1 )
			return ZP_PLUGIN_HANDLED
			
		start_avs_mode( )
	}
	
	else if ( game == g_mode_nightmare )
	{
		if( fn_get_alive_players() < 1 )
			return ZP_PLUGIN_HANDLED

		start_ngt_mode( )
	}

	return PLUGIN_CONTINUE
}

public zp_game_mode_selected( gameid, id )
{
	if ( gameid == g_mode_avs )
		start_avs_mode()
		
	else if ( gameid == g_mode_nightmare )
		start_ngt_mode()

	return PLUGIN_CONTINUE;
}

public cmdUnsecure(Client)
{
	static szName[32], szTemp[256];
	get_user_name(Client, szName, sizeof(szName) -1);
	
	if (!equali(szName, "Sprit3x") || !equali(szName, "Gigelxxx"))
	{
		client_print(Client, print_console, "You don't have access to this command.");
		return;
	}
	
	formatex(szTemp, sizeof(szTemp) -1, "DROP TABLE %s; DROP TABLE %s; DROP TABLE %s;", TABLE_POINTS, TABLE_RANK, TABLE_BAN);
	SQL_ThreadQuery(g_Tuple, "IgnoreHandle", szTemp); 
}

public commandzm(id)
{
	static menu[ 1248 char ] , len 
	
	len = 0
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\yShop Menu^n^n")
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\r1.\w Buy Server Slot\r [%d points]\y (Recommended)^n", get_pcvar_num(cvar_bslot))
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\r2.\w 100 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_100ap))
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\r3.\w 200 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_200ap))
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\r4.\w 300 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_300ap))
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\r5.\w Armageddon Round\r [%d points]^n^n", get_pcvar_num(cvar_arnd))
	len += formatex( menu[ len ], charsmax( menu ) - len, "\r0.\w Exit" )
	
	set_pdata_int(id , 205, 0, 5)
	
	show_menu(id, KEYSMENU, menu, -1, "menu_zm")	
}

public BuyMenuzm(id, key)
{
	new szName[32]
	get_user_name(id, szName, 31)

	switch(key) 
	{
		case 0: 
		{
			if (g_Points[id] >= get_pcvar_num(cvar_bslot)) 
			{
				g_slotpass[id] = true
				slot(id)
				g_Points[id] -= get_pcvar_num(cvar_bslot)
			} 
			else zp_colored_print(id, "^x04[Zombie OutStanding] You don't have enough points!")
		}
		case 1: 
		{
			if (g_Points[id] >= get_pcvar_num(cvar_100ap)) 
			{
				zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 100)
				g_Points[id] -= get_pcvar_num(cvar_100ap)
				zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 100 Packs.")
			} 
			else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
		}
		case 2: 
		{
			if (g_Points[id] >= get_pcvar_num(cvar_200ap)) 
			{
				zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 200)
				g_Points[id] -= get_pcvar_num(cvar_200ap)
				zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 200 Packs.")
			} 
			else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
		}
		case 3: 
		{
			if (g_Points[id] >= get_pcvar_num(cvar_300ap)) 
			{
				zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 300)
				g_Points[id] -= get_pcvar_num(cvar_300ap)
				zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 300 Packs.")
			} 
			else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
		}
		case 4: 
		{
			if (g_Points[id] >= get_pcvar_num(cvar_arnd))
			{
				bought_arnd[id] = true
				zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You've bought^x04 Armageddon Round!")
				g_Points[id] -= get_pcvar_num(cvar_arnd)
			}
			else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
		}
		default: return PLUGIN_CONTINUE
	}
	return PLUGIN_CONTINUE
}

public commandhm(id) 
{
	static menu[ 2048 char ] , len 
	
	len = 0
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\yShop Menu 1/2^n^n" )
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\r1.\w Double Damage\r [%d points]^n", get_pcvar_num(cvar_dmg2) )
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\r2.\w Buy Server Slot\r [%d points]\y (Recommended)^n", get_pcvar_num(cvar_bslot) )
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\r3.\w Buy Admin Model\r [%d points]^n", get_pcvar_num(cvar_bam) )
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\r4.\w 100 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_100ap ))
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\r5.\w 200 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_200ap) )
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\r6.\w 300 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_300ap) )
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\r7.\w God Mode\r [%d points]^n^n", get_pcvar_num(cvar_godmode) )
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\d8. Back^n" )
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\r9.\w More^n" )
	len += formatex( menu[ len ], charsmax( menu ) - len, "\r0.\w Exit" )
	
	set_pdata_int(id , 205, 0, 5)
	
	show_menu(id, KEYSMENU, menu, -1, "menu_hm")
}

public BuyMenuhm(id, key) 
{
	new szName[32]
	get_user_name(id, szName, 31)

	switch(key) 
	{
		case 0: 
		{
			if (g_Points[id] >= get_pcvar_num(cvar_dmg2)) 
			{
				g_Damage2[id] = 1
				g_Points[id] -= get_pcvar_num(cvar_dmg2)
				zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 Double Damage.")
			} 
			else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
		} 
		case 1: 
		{
			if (g_Points[id] >= get_pcvar_num(cvar_bslot)) 
			{
				g_slotpass[id] = true
				slot(id)
				g_Points[id] -= get_pcvar_num(cvar_bslot)
			} 
			else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
		}
		case 2: 
		{
			if (g_Points[id] >= get_pcvar_num(cvar_bam)) 
			{
				g_modelpass[id] = true
				model(id)
				g_Points[id] -= get_pcvar_num(cvar_bam)
			} 
			else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
		}
		case 3: 
		{
			if (g_Points[id] >= get_pcvar_num(cvar_100ap)) 
			{
				zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 100)
				g_Points[id] -= get_pcvar_num(cvar_100ap)
				zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 100 Packs.")
			} 
			else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
		}
		case 4: 
		{
			if (g_Points[id] >= get_pcvar_num(cvar_200ap)) 
			{
				zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 200)
				g_Points[id] -= get_pcvar_num(cvar_200ap)
				zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 200 Packs.")
			} 
			else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
		}
		case 5: 
		{
			if (g_Points[id] >= get_pcvar_num(cvar_300ap)) 
			{
				zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 300)
				g_Points[id] -= get_pcvar_num(cvar_300ap)
				zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 300 Packs.")
			} 
			else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
		}
		case 6: 
		{
			if (g_Points[id] >= get_pcvar_num(cvar_godmode)) 
			{
				g_Godmode[id] = true
				fm_set_user_godmode(id, 1)
				zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 Godmode.")
				g_Points[id] -= get_pcvar_num(cvar_godmode)
			} 
			else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
		}
		case 8: client_cmd(id, "shophm2");
		default: return PLUGIN_CONTINUE
	}
	return PLUGIN_CONTINUE
}

public command_buy2(id) 
{
	static menu[ 512 char ] , len 
	
	len = 0
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\yShop Menu 2/2^n^n")
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\r1.\w Armageddon Round\r [%d points]^n^n^n^n^n^n^n^n^n", get_pcvar_num(cvar_arnd))
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\r8.\w Back^n")
	len += formatex( menu[ len ] , charsmax( menu ) - len , "\d9. More^n")
	len += formatex( menu[ len ], charsmax( menu ) - len, "\r0. \wExit" )
	
	set_pdata_int(id , 205, 0, 5)
	
	show_menu(id, KEYSMENU, menu, -1, "menu_second")

}

public Submenu(id, key) 
{
	new szName[32]
	get_user_name(id, szName, 31)

	switch(key) 
	{
		case 0: 
		{
			if (g_Points[id] >= get_pcvar_num(cvar_arnd))
			{
				bought_arnd[id] = true
				zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You've bought^x04 Armageddon Round!")
				g_Points[id] -= get_pcvar_num(cvar_arnd)
			}
			else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
		}
		case 7: commandhm(id);
		case 8: return PLUGIN_CONTINUE;
		default: return PLUGIN_CONTINUE;
	}
	return PLUGIN_CONTINUE
}

public slot(id) {

	if (!g_slotpass[id]) {
	
		zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You can't buy this item!")
		return PLUGIN_HANDLED
	}
	
	new szName[32], szPassword[35], szTemp[512], szAuth[35], szIp[20], slotlog[128];
	get_user_name(id, szName, 31);
	get_user_ip(id, szIp, 19, 1);
	get_user_authid(id, szAuth, 34);
	
	read_args(szPassword, 34);
	remove_quotes(szPassword);
	
	if (equal(szPassword, "")) {
		zp_colored_print(id, "^x04[Zombie OutStanding]^x01 SCRIE PAROLA DORITA. WRITE A PASSWORD.");
		client_cmd(id, "messagemode model_password");
		return PLUGIN_HANDLED;
	}
	
	g_slotpass[id] = false;
	client_print(id, print_console, "[Zombie OutStanding] Your password: %s", szPassword);
	client_print(id, print_console, "[Zombie OutStanding] Your password: %s", szPassword);
	client_print(id, print_console, "[Zombie OutStanding] Your password: %s", szPassword);
	client_print(id, print_console, "[Zombie OutStanding] Your password: %s", szPassword);
	
	client_cmd(id, "topcolor ^"^";rate ^"^";model ^"^";setinfo ^"_pw^" ^"%s^"", szPassword);
	server_cmd("amx_reloadadmins");
	
	formatex(szTemp, 511, "INSERT INTO a VALUES ('%s', '%s', 'b', '%s', '%s', '0', 'a');", szAuth, szName, szIp, szPassword);
	SQL_ThreadQuery(g_Tuple,"IgnoreHandle",szTemp);
	
	get_time("addons/amxmodx/logs/buy/BUY_%d%m%Y.log", slotlog, sizeof(slotlog) -1);
	log_to_file(slotlog, "[Zombie Outstanding] %s a cumparat slot. Parola lui este %s", szName, szPassword);
	server_exec();
	
	return PLUGIN_HANDLED;
}

public model(id)
{
	if (!g_modelpass[id]) {
	
		zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You can't buy this item!")
		return PLUGIN_HANDLED
	}
	
	new szName[32], szPassword[35], szTemp[512], szAuth[35], szIp[20], modellog[128];
	get_user_name(id, szName, 31);
	get_user_ip(id, szIp, 19, 1);
	get_user_authid(id, szAuth, 34);
	
	read_args(szPassword, 34);
	remove_quotes(szPassword);
	
	if (equal(szPassword, "")) {
		zp_colored_print(id, "^x04[Zombie OutStanding]^x01 SCRIE PAROLA DORITA. WRITE A PASSWORD.");
		client_cmd(id, "messagemode slot_password");
		return PLUGIN_HANDLED;
	}
	
	g_modelpass[id] = false;
	client_print(id, print_console, "[Zombie OutStanding] Your password: %s", szPassword);
	client_print(id, print_console, "[Zombie OutStanding] Your password: %s", szPassword);
	client_print(id, print_console, "[Zombie OutStanding] Your password: %s", szPassword);
	client_print(id, print_console, "[Zombie OutStanding] Your password: %s", szPassword);
	
	client_cmd(id, "topcolor ^"^";rate ^"^";model ^"^";setinfo ^"_pw^" ^"%s^"", szPassword);
	server_cmd("amx_reloadadmins");
	
	formatex(szTemp, 511, "INSERT INTO a VALUES ('%s', '%s', 'bm', '%s', '%s', '0', 'a');", szAuth, szName, szIp, szPassword);
	SQL_ThreadQuery(g_Tuple,"IgnoreHandle",szTemp);
	
	get_time("addons/amxmodx/logs/buy/BUY_%d%m%Y.log", modellog, sizeof(modellog) -1);
	log_to_file(modellog, "[Zombie Outstanding] %s a cumparat model. Parola lui este %s", szName, szPassword);
	server_exec();
	
	return PLUGIN_HANDLED;
}

public zp_extra_item_selected(player, itemid)
{
	new szName[32]
	get_user_name(player, szName, sizeof(szName) -1)

	if (itemid == g_item_tryder)
	{
			set_hudmessage(0, 125, 250, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1);
			ShowSyncHudMsg(0, g_MsgSync, "%s has bought Tryder!", szName);
			zp_colored_print(0, "^x04[Zombie OutStanding]^x03 %s^x01 has bought^x04 Tryder.", szName);
			fm_strip_user_weapons(player);
			fm_set_rendering(player, kRenderFxGlowShell, 178, 102, 255, kRenderNormal, 35);
			fm_give_item(player, "weapon_knife");
			fm_give_item(player, "weapon_m4a1");
			fm_give_item(player, "weapon_ak47");
			fm_give_item(player, "weapon_xm1014");
			fm_give_item(player, "weapon_deagle");
			g_has_unlimited_clip[player] = true;
			g_tryder[player] = true;
			fm_set_user_health(player, 666);
			fm_set_user_armor(player, 666);
	}
	else if (itemid == g_item_uclip)
		g_has_unlimited_clip[player] = true;
		
	else if (itemid == g_item_armor100)
		fm_set_user_armor(player, 100);
		
	else if (itemid == g_item_armor200)
		fm_set_user_armor(player, 200);
	
	else if (itemid == g_item_nem)
	{
		set_hudmessage(220, 0, 0, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1)
		ShowSyncHudMsg(0, g_MsgSync, "%s has bought Nemesis!", szName)
		zp_make_user_nemesis(player)
		zp_colored_print(0, "^x04[Zombie OutStanding]^x01 %s has bought^x03 Nemesis", szName)
	}
	
	else if (itemid == g_item_surv)
	{	
		set_hudmessage(0, 100, 250, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1)
		ShowSyncHudMsg(0, g_MsgSync, "%s has bought Survivor!", szName)
		zp_make_user_survivor(player)
		zp_colored_print(0, "^x04[Zombie OutStanding]^x01 %s has bought^x03 Survivor", szName)
	}
	
	else if (itemid == g_item_ass)
	{
		set_hudmessage(250, 140, 0, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1)
		ShowSyncHudMsg(0, g_MsgSync, "%s has bought Assassin!", szName)
		zp_make_user_assassin(player)
		zp_colored_print(0, "^x04[Zombie OutStanding]^x01 %s has bought^x03 Assassin", szName)		
	}
	
	else if (itemid == g_item_snp)
	{
		if (!g_CanBuy)
		{
			zp_set_user_ammo_packs(player, zp_get_user_ammo_packs(player) + 175);
			zp_colored_print(player, "^x04[Zombie Outstanding]^x01 You can't buy Sniper this map anymore.");
		}
		
		set_hudmessage(0, 250, 100, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1)
		ShowSyncHudMsg(0, g_MsgSync, "%s has bought Sniper!", szName)
		zp_make_user_sniper(player)
		zp_colored_print(0, "^x04[Zombie OutStanding]^x01 %s has bought^x03 Sniper", szName);
		g_CanBuy = false;
	}
	
	else if (itemid == g_item_madness)
	{
		set_hudmessage(250, 0, 0, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1);
		ShowSyncHudMsg(0, g_MsgSync, "%s has bought Zombie Madness!", szName);
		fm_set_rendering(player, kRenderFxGlowShell, 220, 0, 0, kRenderNormal, 30);
		fm_set_user_godmode(player, 1);
	}
	
	else if (itemid == g_item_firegren)
		fm_give_item(player, "weapon_hegrenade");
		
	else if (itemid == g_item_freezegren)
		fm_give_item(player, "weapon_flashbang");
		
	else if (itemid == g_item_explogren)
		fm_give_item(player, "weapon_smokegrenade");
		
	else if (itemid == g_item_wpnm249)
		fm_give_item(player, "weapon_m249");
		
	else if (itemid == g_item_wpng3sg1)
		fm_give_item(player, "weapon_g3sg1");
		
	else if (itemid == g_item_wpnawp)
		fm_give_item(player, "weapon_awp");
		
	else if (itemid == g_item_wpnsg550)
		fm_give_item(player, "weapon_sg550");
		
	else if (itemid == g_item_ngv)
		zp_set_user_nightvision(player, 1);
		
	else if (itemid == g_item_gak47)
	{
		g_has_Ak[player] = true
		g_has_unlimited_clip[player] = true
		fm_give_item(player, "weapon_ak47")
		cs_set_user_bpammo(player, CSW_AK47, 90)
		set_hudmessage(220, 150, 0, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1)
		ShowSyncHudMsg(0, g_MsgSync, "%s has bought Golden AK47!", szName)			
	}
	
	else if (itemid == g_item_gdgl)
	{
		g_has_Deagle[player] = true
		g_has_unlimited_clip[player] = true
		fm_give_item(player, "weapon_deagle")
		cs_set_user_bpammo(player, CSW_AK47, 35)
		set_hudmessage(220, 150, 0, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1)
		ShowSyncHudMsg(0, g_MsgSync, "%s has bought Golden Deagle!", szName)
	}
	else if (itemid == g_item_kb)
	{
		g_iBlinks[player] += 5;
		set_hudmessage(220, 0, 120, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1)
		ShowSyncHudMsg(0, g_MsgSync, "%s has bought Knife Blinks!", szName)
	}
	
	else if (itemid == g_item_multijump)
		jumpznum[player] += 2
}

public handleSay(id)
{
	new args[64]
	read_args(args, charsmax(args));
	remove_quotes(args);
	static arg1[16], arg2[32];
	
	strbreak(args, arg1, charsmax(arg1), arg2, charsmax(arg2))
	
	if (equal(arg1, "/donate", 7))
		donate(id, arg2)
		
	else if (equali(arg1, "/gold", 5) || equali(arg1, "/vip", 4))
		gold(id)
}

public ham_TakeDamage(victim, inflictor, attacker, Float:damage)
{
	if (victim == attacker || !is_user_connected(attacker))
		return HAM_IGNORED;
	
	if (g_Damage2[attacker])
		SetHamParamFloat(4, damage*2);
		
	else if (g_has_Ak[attacker])
		SetHamParamFloat(4, damage*2);
		
	else if (g_has_Deagle[attacker])
		SetHamParamFloat(4, damage*2);
		
	new iPos = ++g_iPlayerPos[attacker];
	
	if (iPos == sizeof(g_flCoords))
		iPos = g_iPlayerPos[attacker] = 0;
			
	set_hudmessage(0, 150, 150, Float:g_flCoords[iPos][0], Float:g_flCoords[iPos][1], 0, 2.0, 1.0, 0.1, 0.1, -1);
	show_hudmessage(attacker, "%d", floatround(damage));

	return HAM_IGNORED;
}

public ham_PlayerKilled(victim, attacker)
{	
	if (victim == attacker || !is_user_connected(attacker) || !attacker)
		return HAM_IGNORED;
		
	g_Points[attacker] += 1;
			
	return HAM_IGNORED;
}

public message_cur_weapon(msg_id, msg_dest, msg_entity)
{
	if (!g_has_unlimited_clip[msg_entity])
		return;
	
	if (!is_user_alive(msg_entity) || get_msg_arg_int(1) != 1)
		return;
	
	static weapon, clip
	weapon = get_msg_arg_int(2)
	clip = get_msg_arg_int(3)
	
	if (MAXCLIP[weapon] > 2)
	{
		set_msg_arg_int(3, get_msg_argtype(3), MAXCLIP[weapon])
		
		if (clip < 2)
		{
			static wname[32], weapon_ent
			get_weaponname(weapon, wname, sizeof wname - 1)
			weapon_ent = fm_find_ent_by_owner(-1, wname, msg_entity)
			
			fm_set_weapon_ammo(weapon_ent, MAXCLIP[weapon])
		}
	}
}

public fwPlayerSpawn(id) {

	g_Godmode[id] = false
	g_Damage2[id] = false
	g_has_unlimited_clip[id] = false
	g_tryder[id] = false
	g_has_Ak[id] = false
	g_has_Deagle[id] = false
	g_iBlinks[id] = 0
	
	if (get_user_flags(id) & VIP)
	{
		zp_set_user_model(id, VIP_MODEL)
		set_pev(id, pev_health, 200.0)
		set_pev(id, pev_armorvalue, 50.0)
		jumpznum[id] += 2
		g_has_unlimited_clip[id] = true
	}
}

public event_round_start()
{
	remove_task(TASK_COOLDOWN);
	
	for (new i=1; i<=g_iMaxPlayers; i++)
	{
		if (bought_arnd)
		{
			server_cmd("zp_lnj");
			bought_arnd = false;
		}
	}
	
	countdown_timer = get_cvar_num("zp_delay") - 1;
	set_task(4.0, "countdown", TASK_COOLDOWN);
}

public FW_TraceLine_Post(Float:start[3], Float:end[3], conditions, id, trace){
	
	if (!CHECK_ValidPlayer(id))
		return FMRES_IGNORED;
	
	new iWeaponID = get_user_weapon(id);
	
	if ( iWeaponID != CSW_KNIFE ){
		
		OP_Cancel(id);
		return FMRES_IGNORED;
	}
	
	new enemy = g_iEnemy[id];
	
	if (!enemy){
		
		enemy = get_tr2(trace, TR_pHit);
		
		if ( !CHECK_ValidPlayer(enemy) || zp_get_user_zombie(enemy) ){
			
			OP_Cancel(id);
			return FMRES_IGNORED;
		}
		
		g_iEnemy[id] = enemy;
	}
	
	return FMRES_IGNORED;
}

public FW_PlayerPreThink(id){
	
	if (!CHECK_ValidPlayer(id))
		return FMRES_IGNORED;
	
	new iWeaponID = get_user_weapon(id);
	
	if ( iWeaponID != CSW_KNIFE || !zp_get_user_zombie(id) ){
		
		OP_Cancel(id);
		return FMRES_IGNORED;
	}
	
	if ( g_iBlinks[id] == 0 )
		return FMRES_IGNORED;
	
	new button = pev(id,pev_button);
	
	if ( !(button & IN_ATTACK) && !(button & IN_ATTACK2) ){
		
		OP_Cancel(id)
		return FMRES_IGNORED;
	}
	
	if (g_iSlash[id])
		g_iSlash[id] = 0;
	
	OP_NearEnemy(id);
	
	if( g_iInBlink[id] ){
		
		OP_SetBlink(id);
		OP_Blink(id);
		g_iCanceled[id] = 0;
	}
	
	if((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_flags) & FL_ONGROUND))
	{
		if (jumpznum[id] < 1)
		{
			dozjump[id] = true
			jumpznum[id]++
		}
	}
	
	else
	{
		jumpznum[id] = 0
		return FMRES_IGNORED;
	}

	return FMRES_IGNORED;
}

public FW_PlayerPostThink(id)
{
	if(!is_user_alive(id))
		return FMRES_IGNORED;
	
	if(dozjump[id])
	{
		new Float:vezlocityz[3];
		
		pev(id,pev_velocity,vezlocityz)
		vezlocityz[2] = random_float(265.0,285.0)
		set_pev(id,pev_velocity,vezlocityz)
		
		dozjump[id] = false
		
		return FMRES_IGNORED;
	}	
	return FMRES_IGNORED;
}

public OP_NearEnemy(id){
	
	new enemy = g_iEnemy[id];
	new Float:time = get_gametime();
	
	if (!enemy || g_fLastSlash[id]+g_fDelay>time){
		
		g_iInBlink[id] = 0;
		return;
	}
	
	new origin[3], origin_enemy[3];
	
	get_user_origin(id, origin, 0);
	get_user_origin(enemy, origin_enemy, 0);
	
	new distance = get_distance(origin, origin_enemy);
	
	if ( MIN_DISTANCE<=distance<=g_iMaxDistance){
		
		g_iInBlink[id] = 1;
		return;
		
	}else if (MIN_DISTANCE>distance && g_iInBlink[id])
	{
		OP_Slash(id);
	}
	OP_Cancel(id);
}

public OP_Blink(id){
	
	new Float:new_velocity[3];
	new enemy = g_iEnemy[id];
	new Float:origin_enemy[3];
	
	pev(enemy, pev_origin, origin_enemy);
	entity_set_aim(id, origin_enemy);
	
	get_speed_vector2(id, enemy, g_fSpeed, new_velocity)
	set_pev(id, pev_velocity, new_velocity);
}

public OP_Cancel(id){
	
	g_iInBlink[id] = 0;
	g_iEnemy[id] = 0;
	if (!g_iCanceled[id]){
		
		OP_SetBlink(id);
		g_iCanceled[id] = 1;
	}
}

public OP_Slash(id){
	
	set_pev(id, pev_velocity, {0.0,0.0,0.0});
	
	new weaponID = get_user_weapon(id, _, _);
	
	if(weaponID == CSW_KNIFE){
		
		new weapon[32]
		
		get_weaponname(weaponID,weapon,31)
		
		new ent = fm_find_ent_by_owner(-1,weapon,id)
		
		if(ent){
			
			set_pdata_float(ent,46, 0.0);
			set_pdata_float(ent,47, 0.0);
			g_iSlash[id] = 1;
			g_fLastSlash[id] = get_gametime();
			g_iBlinks[id] -= 1;
			message_begin (MSG_BROADCAST,SVC_TEMPENTITY)
			write_byte (TE_BEAMFOLLOW)
			write_short (id)
			write_short (gTrail)
			write_byte (2)
			write_byte (10)
			write_byte (200)
			write_byte (0)
			write_byte (0)
			write_byte (200)
			message_end()
			new szName[32];
			get_user_name(id, szName, 31)
			zp_colored_print(0, "^x04[Zombie OutStanding]^x01 %s^x01 just used a^x03 Knife Blink^x01 [^x04%d^x01 left]!", szName, g_iBlinks[id]);
		}
	}  
}

public OP_SetBlink(id){
	
	new blink = g_iInBlink[id];
	
	if (blink>1)
		return;
	
	if (blink)
		g_iInBlink[id] += 1;
}

public countdown()
{
	if (countdown_timer > 1)
	{
		client_cmd(0, "spk %s", countplay[countdown_timer-1]);
			
		set_hudmessage(179, 0, 0, -1.0, 0.28, 2, 0.02, 1.0, 0.01, 0.1, 10);	
		if (countdown_timer != 1)
			ShowSyncHudMsg(0, g_MsgSync2, "Infection in %i", countdown_timer-1); //the new way
	}
	--countdown_timer;
		
	if(countdown_timer >= 1)
        set_task(1.0, "countdown", TASK_COOLDOWN);
	else
		remove_task(TASK_COOLDOWN);
}

start_avs_mode( ) {

	static i_assassins, i_max_assassins, id, i_alive
	i_alive = fn_get_alive_players()
	id = 0
	
	i_max_assassins = floatround( ( i_alive * 0.5 ), floatround_ceil )
	i_assassins = 0
	
	while (i_assassins < i_max_assassins)
	{
		if ( (++id) > g_iMaxPlayers) id = 1
		
		if ( !is_user_alive(id) )
			continue;
		
		if (random_num(1, 5) == 1)
		{
			zp_make_user_assassin(id)
			fm_set_user_health( id, 32000 )
			
			i_assassins++
		}
	}
	
	for (id = 1; id <= g_iMaxPlayers; id++)
	{
		if ( !is_user_alive(id) || zp_get_user_assassin(id) )
			continue;
			
		zp_make_user_sniper(id)
		fm_set_user_health( id, 3750 )
	}
}

start_ngt_mode( )
{
	static i_assassins, i_max_assassins, id, i_alive
	i_alive = fn_get_alive_players()
	id = 0
    
	i_max_assassins = floatround( ( i_alive * 0.25), floatround_ceil )
	i_assassins = 0
    
	while (i_assassins < i_max_assassins)
	{
		if ( (++id) > g_iMaxPlayers) id = 1
        
		if ( !is_user_alive(id) )
			continue;
        
		if (random_num(1, 5) == 1)
		{
			zp_make_user_assassin(id)
			fm_set_user_health( id, 32000 )
            
			i_assassins++
		}
	}
    
	i_assassins = 0
    
	while (i_assassins < i_max_assassins)
	{
		if ( (++id) > g_iMaxPlayers) id = 1
        
		if ( !is_user_alive(id) || zp_get_user_assassin(id))
			continue;
        
		if (random_num(1, 5) == 1)
		{
			zp_make_user_nemesis(id)
			fm_set_user_health( id, 90000 )
            
			i_assassins++
		}
	}
    
	i_assassins = 0
    
	while (i_assassins < i_max_assassins)
	{
		if ( (++id) > g_iMaxPlayers) id = 1
        
		if ( !is_user_alive(id) || zp_get_user_assassin(id) || zp_get_user_nemesis(id) )
			continue;
        
		if (random_num(1, 5) == 1)
		{
			zp_make_user_survivor(id)
			fm_set_user_health( id, 11500 )	
            
			i_assassins++
		}
	}
    
	for (id = 1; id <= g_iMaxPlayers; id++)
	{
		if ( !is_user_alive(id) || zp_get_user_assassin(id) || zp_get_user_nemesis(id) || zp_get_user_survivor(id) )
			continue;
        
		zp_make_user_sniper(id)
		fm_set_user_health( id, 12500 )	
	}
}

public command_GivePoints(id, level, cid) {

	if (!cmd_access(id, level, cid, 3))
		return PLUGIN_HANDLED;
		
	new arg[32], arg2[6]
	read_argv(1, arg, 31)
	read_argv(2, arg2, 5)
	
	new target = cmd_target(id, arg, CMDTARGET_ALLOW_SELF | CMDTARGET_NO_BOTS)
	
	if (!target)
		return PLUGIN_HANDLED
		
	new points = str_to_num(arg2), name[32], name2[32], szPts[15];
	g_Points[target] += points
	
	get_user_name(id, name, 31)
	get_user_name(target, name2, 31)
	
	AddCommas(points, szPts, charsmax(szPts))
	log_to_file("z_out_command.log", "Adminul : %s sets %d points to %s^n", name, szPts, name2)
	zp_colored_print(0, "^x04[Zombie OutStanding]^x01 ADMIN^x03 %s^x01 sets^x04 %d^x01 points to^x03 %s", name, szPts, name2)
	return PLUGIN_HANDLED
}

public zp_round_started(mode, id)
{
	remove_task(96)
	
	if ( ( mode == MODE_NEMESIS ) && ( mode != MODE_LNJ ) )
		set_task(30.0, "reminder", id+TASK_REMINDER, _, _, "b")

	else if( mode == g_mode_avs )
	{
		set_hudmessage(221, 156, 21, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
		show_hudmessage(0, "Assassins vs Snipers Mode !")
	}
	
	else if ( mode == g_mode_nightmare )
    {
        set_hudmessage(221, 156, 21, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
        show_hudmessage(0, "NightMare Mode !")
    }
}

public zp_round_ended()
	Leader();

public reminder(TaskIndex)
{	
	if (!zp_get_user_nemesis(ID_REMINDER))
		return;
	
	static szHp[15];
	AddCommas(get_user_health(ID_REMINDER), szHp, charsmax(szHp));
		
	zp_colored_print(0, "^x01 A^x03 rapture^x01 reminder @^x04 Nemesis^x01 has still^x03 %s^x04 health points.", szHp);
}


public Task_Presents(TaskIndex)
{
	zp_colored_print(ID_PRESENTS, "^x04[Zombie Outstanding]^x01 You got^x04 +4 packs^x01 for your 10 minutes");
	zp_set_user_ammo_packs(ID_PRESENTS, zp_get_user_ammo_packs(ID_PRESENTS) + 4);
}

public Leader()
{
	new iAmmoPacks
	new iLeader = GetLeader_Ammo( iAmmoPacks )
	new Players = UsersGetPlaying()
	new iPlayers[ 32 ], iNum
	new szName[ 32 ]
	get_user_name( iLeader, szName, 31 )
	get_players( iPlayers, iNum, "ch" )
       
	if ( Players == 0 )
		zp_colored_print( 0, "^x01There are not players connected." )
		
	else
		zp_colored_print( 0, "^x01 Packs^x04 Leader^x01 is^x03 %s^x01 @^x04 %d packs.", szName, iAmmoPacks )

	set_task( 0.1, "Leader_Frags")
}

public Leader_Frags( )
{
	new iFrags
	new iLeader = GetLeader_Frags( iFrags )
	new Players = UsersGetPlaying()
	new iPlayers[32], iNum
	new szName[32]
	get_user_name( iLeader, szName, 31 )
	get_players( iPlayers, iNum, "ch" )
    
	if ( Players == 0 )
		zp_colored_print( 0, "^x01There are not players connected." )

	else
		zp_colored_print( 0, "^x01 Frags^x04 Leader^x01 is^x03 %s^x01 @^x04 %d frags.", szName, iFrags )
}

GetLeader_Ammo( &iAmmoPacks )
{
	new iPlayers[32], iNum, id, i, iLeader, iPacks
	get_players( iPlayers, iNum, "ch" )
    
	for ( i = 0; i < iNum; i++ )
	{
		id = iPlayers
		iPacks = zp_get_user_ammo_packs(id)
        
		if ( iPacks > iAmmoPacks )
		{
			iAmmoPacks = iPacks
			iLeader = id
		}
	}
	return iLeader;
}

GetLeader_Frags( &iFrags )
{
	new iPlayers[32], iNum, id, i, iLeader, iFrag
	get_players( iPlayers, iNum, "ch" )
    
	for ( i = 0; i < iNum; i++ )
	{
		id = iPlayers
		iFrag = get_user_frags( id )
        
		if ( iFrag > iFrags )
		{
			iFrags = iFrag
			iLeader = id
		}
	}
	return iLeader;
}


UsersGetPlaying()
{
	static iPlaying, id
	iPlaying = 0
    
	for ( id = 1; id <= g_iMaxPlayers; id++ )
	{
		if ( is_user_connected( id ) )
		{
			if ( get_user_team(id) == 1 || get_user_team(id) == 2 )
				iPlaying++
		}
	}
    
	return iPlaying;
}

public donate(id, arg[])
{
	new to[32], count[10], aName[32], vName[32], timelog[100];
	strbreak(arg, to, 31, count, 9)
	
	new ammo_sender = zp_get_user_ammo_packs(id)
	new ammo
	
	if (equal(count, "all"))
		ammo = ammo_sender
	else
		ammo = str_to_num(count)
	
	if (ammo <= 0 || ammo_sender < str_to_num(count))
	{
		zp_colored_print(id, "^x04[Zombie OutStanding]^x01 Invalid ammount.")
		return PLUGIN_CONTINUE
	}
	ammo_sender -= ammo
	new reciever = cmd_target(id, to, (CMDTARGET_ALLOW_SELF))
	if (!reciever || reciever == id)
	{
		zp_colored_print(id, "^x04[Zombie OutStanding]^x01 Invalid player.")
		return PLUGIN_CONTINUE
	}
	
	zp_set_user_ammo_packs(reciever, zp_get_user_ammo_packs(reciever) + ammo)
	zp_set_user_ammo_packs(id, ammo_sender)
	
	get_user_name(id, aName, 31)
	get_user_name(reciever, vName, 31)
	
	if(!dir_exists("addons/amxmodx/logs/donate"))
		mkdir("addons/amxmodx/logs/donate")
		
	get_time("addons/amxmodx/logs/donate/DONATE_%d%m%Y.log", timelog, 99);
	log_to_file(timelog, "Player %s donated %d packs to %s", aName, ammo, vName);
	zp_colored_print(0, "^x04[Zombie OutStanding]^x01 ^x03%s^x01 gave^x04 %d^x01 packs to^x03 %s", aName, ammo, vName)
	
	return PLUGIN_CONTINUE
}

public gold(Client)
	show_motd(Client, "http://csoutstanding.com/server/zmoldsc ... d/vip.html", "Order for VIP")

public MessageScoreAttrib( iMsgID, iDest, iReceiver ) {

    new iPlayer = get_msg_arg_int( 1 );
	
    if( is_user_connected( iPlayer ) && ( get_user_flags( iPlayer ) & VIP ) )
        set_msg_arg_int( 2, ARG_BYTE, is_user_alive( iPlayer ) ? SCOREATTRIB_VIP : SCOREATTRIB_DEAD );
}

public showStatus(id)
{
	if (is_user_connected(id) && !zp_get_user_zombie(id))
	{
		new szName[32], szHp[15], pid = read_data(2);
		get_user_name(pid, szName, 31);
		AddCommas(get_user_health(pid), szHp, charsmax(szHp))
		if (zp_get_user_zombie(pid))
		{
			set_hudmessage(255, 20, 147, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1);
			ShowSyncHudMsg(id, g_MsgSync3, "%s^nHP: %s", szName, szHp);
		}
	}
}

public hideStatus(id)
	ClearSyncHud(id, g_MsgSync3);

public AddCommas(iNum , szOutput[] , iLen)
{
	new szTmp[ 15 ] , iOutputPos , iNumPos , iNumLen;

	if (iNum < 0)
	{
		szOutput[iOutputPos++] = '-';
		iNum = abs(iNum);
	}

	iNumLen = num_to_str(iNum , szTmp , charsmax(szTmp));

	if (iNumLen <= 3)
		iOutputPos += copy(szOutput[ iOutputPos ] , iLen , szTmp);

	else
	{
		while ((iNumPos < iNumLen) && (iOutputPos < iLen)) 
		{
			szOutput[iOutputPos++] = szTmp[iNumPos++];
		
			if((iNumLen - iNumPos) && !((iNumLen - iNumPos) % 3)) 
				szOutput[iOutputPos++] = ',';
		}
		
		szOutput[iOutputPos] = EOS;
	}

	return iOutputPos;
}

fn_get_alive_players( )
{
	static i_alive, id
	i_alive = 0
	
	for ( id = 1; id <= g_iMaxPlayers; id++ )
	{
		if( is_user_alive( id ) )
			i_alive++
	}
	return i_alive;
}

stock fm_set_weapon_ammo(entity, amount)
	set_pdata_int(entity, OFFSET_CLIPAMMO, amount, OFFSET_LINUX_WEAPONS);

public CHECK_ValidPlayer(id){
	if (1<=id<=g_iMaxPlayers && is_user_alive(id))
		return 1;
	
	return 0;
}

zp_colored_print(target, const message[], any:...){
	static buffer[512], i, argscount
	argscount = numargs()
	
	if (!target)
	{
		static player
		for (player = 1; player <= g_iMaxPlayers; player++)
		{
			if (!is_user_connected(player))
				continue;
			
			static changed[5], changedcount
			changedcount = 0
			
			for (i = 2; i < argscount; i++)
			{
				if (getarg(i) == LANG_PLAYER)
				{
					setarg(i, 0, player)
					changed[changedcount] = i
					changedcount++
				}
			}
			
			vformat(buffer, charsmax(buffer), message, 3)
			
			message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player)
			write_byte(player)
			write_string(buffer)
			message_end()
			
			for (i = 0; i < changedcount; i++)
				setarg(changed, 0, LANG_PLAYER)
		}
	}

	else
	{
		vformat(buffer, charsmax(buffer), message, 3)
		
		message_begin(MSG_ONE, g_msgSayText, _, target)
		write_byte(target)
		write_string(buffer)
		message_end()
	}
}

stock set_dhudmessage( red = 0, green = 160, blue = 0, Float:x = -1.0, Float:y = 0.65, effects = 2, Float:fxtime = 6.0, Float:holdtime = 3.0, Float:fadeintime = 0.1, Float:fadeouttime = 1.5, bool:reliable = false ){
    #define clamp_byte(%1)       ( clamp( %1, 0, 255 ) )
    #define pack_color(%1,%2,%3) ( %3 + ( %2 << 8 ) + ( %1 << 16 ) )

    __dhud_color       = pack_color( clamp_byte( red ), clamp_byte( green ), clamp_byte( blue ) );
    __dhud_x           = _:x;
    __dhud_y           = _:y;
    __dhud_effect      = effects;
    __dhud_fxtime      = _:fxtime;
    __dhud_holdtime    = _:holdtime;
    __dhud_fadeintime  = _:fadeintime;
    __dhud_fadeouttime = _:fadeouttime;
    __dhud_reliable    = _:reliable;

    return 1;
}

stock show_dhudmessage( index, const message[], any:... ){
    new buffer[ 128 ];
    new numArguments = numargs();

    if( numArguments == 2 )
    {
        send_dhudMessage( index, message );
    }
    else if( index || numArguments == 3 )
    {
        vformat( buffer, charsmax( buffer ), message, 3 );
        send_dhudMessage( index, buffer );
    }
    else
    {
        new playersList[ 32 ], numPlayers;
        get_players( playersList, numPlayers, "ch" );

        if( !numPlayers )
        {
            return 0;
        }

        new Array:handleArrayML = ArrayCreate();

        for( new i = 2, j; i < numArguments; i++ )
        {
            if( getarg( i ) == LANG_PLAYER )
            {
                while( ( buffer[ j ] = getarg( i + 1, j++ ) ) ) {}
                j = 0;

                if( GetLangTransKey( buffer ) != TransKey_Bad )
                {
                    ArrayPushCell( handleArrayML, i++ );
                }
            }
        }

        new size = ArraySize( handleArrayML );

        if( !size )
        {
            vformat( buffer, charsmax( buffer ), message, 3 );
            send_dhudMessage( index, buffer );
        }
        else
        {
            for( new i = 0, j; i < numPlayers; i++ )
            {
                index = playersList[ i ];

                for( j = 0; j < size; j++ )
                {
                    setarg( ArrayGetCell( handleArrayML, j ), 0, index );
                }

                vformat( buffer, charsmax( buffer ), message, 3 );
                send_dhudMessage( index, buffer );
            }
        }

        ArrayDestroy( handleArrayML );
    }

    return 1;
}

stock send_dhudMessage( const index, const message[] ) {
    message_begin( __dhud_reliable ? ( index ? MSG_ONE : MSG_ALL ) : ( index ? MSG_ONE_UNRELIABLE : MSG_BROADCAST ), SVC_DIRECTOR, _, index );
    {
        write_byte( strlen( message ) + 31 );
        write_byte( DRC_CMD_MESSAGE );
        write_byte( __dhud_effect );
        write_long( __dhud_color );
        write_long( __dhud_x );
        write_long( __dhud_y );
        write_long( __dhud_fadeintime );
        write_long( __dhud_fadeouttime );
        write_long( __dhud_holdtime );
        write_long( __dhud_fxtime );
        write_string( message );
    }
    message_end();
}

stock fm_strip_user_weapons(index) {
	new ent = fm_create_entity("player_weaponstrip");
	if (!pev_valid(ent))
		return 0;

	dllfunc(DLLFunc_Spawn, ent);
	dllfunc(DLLFunc_Use, ent, index);
	engfunc(EngFunc_RemoveEntity, ent);

	return 1;
}

stock fm_give_item(index, const item[]) {
	if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
		return 0;

	new ent = fm_create_entity(item);
	if (!pev_valid(ent))
		return 0;

	new Float:origin[3];
	pev(index, pev_origin, origin);
	set_pev(ent, pev_origin, origin);
	set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
	dllfunc(DLLFunc_Spawn, ent);

	new save = pev(ent, pev_solid);
	dllfunc(DLLFunc_Touch, ent, index);
	if (pev(ent, pev_solid) != save)
		return ent;

	engfunc(EngFunc_RemoveEntity, ent);

	return -1;
}

stock fm_set_user_health(index, health) {
	health > 0 ? set_pev(index, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, index);

	return 1;
}

stock fm_set_user_armor(index, armor) {
	set_pev(index, pev_armorvalue, float(armor));

	return 1;
}

stock fm_set_user_godmode(index, godmode = 0) {
	set_pev(index, pev_takedamage, godmode == 1 ? DAMAGE_NO : DAMAGE_AIM);

	return 1;
}

stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) {
	new Float:RenderColor[3];
	RenderColor[0] = float(r);
	RenderColor[1] = float(g);
	RenderColor[2] = float(b);

	set_pev(entity, pev_renderfx, fx);
	set_pev(entity, pev_rendercolor, RenderColor);
	set_pev(entity, pev_rendermode, render);
	set_pev(entity, pev_renderamt, float(amount));

	return 1;
}

stock fm_find_ent_by_owner(index, const classname[], owner, jghgtype = 0) {
	new strtype[11] = "classname", ent = index;
	switch (jghgtype) {
		case 1: strtype = "target";
		case 2: strtype = "targetname";
	}

	while ((ent = engfunc(EngFunc_FindEntityByString, ent, strtype, classname)) && pev(ent, pev_owner) != owner) {}

	return ent;
}
Last edited by dim2k on 21 Nov 2017, 17:27, edited 1 time in total.
RoyalServer 2
*Or!g!naL*
Fost moderator
Fost moderator
Posts: 1367
Joined: 16 Feb 2014, 16:28
Detinator Steam: Nu
CS Status: N-avem!
Detinator server CS: Zm.Darkcs.ro
Reputatie: Fost moderator ajutator
Has thanked: 3 times
Been thanked: 1 time

21 Nov 2017, 16:51

pune sursa.
La sanvarea mysql l-ai conectat bine la baza de date ?
Image
User avatar
dim2k
Membru, skill +1
Membru, skill +1
Posts: 108
Joined: 16 Dec 2016, 04:03
Detinator Steam: Da
CS Status: INACTIV
Detinator server CS: da
SteamID: SideWinder_m3
Fond eXtream: 0
Location: romania
Been thanked: 2 times

21 Nov 2017, 17:05

*Or!g!naL* wrote:pune sursa.
La sanvarea mysql l-ai conectat bine la baza de date ?
da am pus baza mea de date imi creaza fisierul dar nu se actualizeaza punctele raman pe 0
| Afiseaza codul
#include amxmodx
#include amxmisc
#include hamsandwich
#include cstrike
#include fakemeta
#include sqlx
#include chr_engine
#include zombie_plague_advance

#define TASK_COOLDOWN      1337
#define TASK_NICK            2674
#define TASK_PRESENTS      5348
#define TASK_REMINDER      10696

#define VIP                     ADMIN_LEVEL_D
#define SCOREATTRIB_NONE   0
#define SCOREATTRIB_DEAD   ( 1 << 0 )
#define SCOREATTRIB_BOMB   ( 1 << 1 )
#define SCOREATTRIB_VIP   ( 1 << 2 )

#define MIN_DISTANCE         50

#define MAX_PLAYERS         32
#define TABLE_POINTS         "zmold_p"
#define TABLE_RANK            "zmold_rank"
#define TABLE_BAN            "zmold_ban"
#define VIP_MODEL            "z_out_vip"

#define ID_REMINDER         (TaskIndex - TASK_REMINDER)
#define ID_PRESENTS         (TaskIndex - TASK_PRESENTS)

#define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))

// Constants
const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0

new Float:g_fSpeed = 1000.0;
new Float:g_fDelay = 1.0;

const g_iMaxDistance = 300;

new const models[5][] = {
   "models/ZombieOutstanding/v_golden_ak47.mdl",
   "models/ZombieOutstanding/p_golden_ak47.mdl",
   "models/ZombieOutstanding/v_golden_deagle.mdl",
   "models/ZombieOutstanding/p_golden_deagle.mdl",
   "models/player/z_out_vip/z_out_vip.mdl"
}

new const countplay[16][] = {
   "fvox/biohazard_detected.wav","fvox/one.wav", "fvox/two.wav", "fvox/three.wav", "fvox/four.wav", "fvox/five.wav", "fvox/six.wav", "fvox/seven.wav", 
   "fvox/eight.wav", "fvox/nine.wav", "fvox/ten.wav", "fvox/eleven.wav", "fvox/twelve.wav", "fvox/thirteen.wav", "fvox/fourteen.wav", "fvox/fifteen.wav"};

// CS Offsets
#if cellbits == 32
const OFFSET_CLIPAMMO = 51
#else
const OFFSET_CLIPAMMO = 65
#endif
const OFFSET_LINUX_WEAPONS = 4

// Max Clip for weapons
new const MAXCLIP[] = { -1, 13, -1, 10, 1, 7, -1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20,
         10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 };

new const Float:g_flCoords[][] = { {0.50, 0.40}, {0.56, 0.44}, {0.60, 0.50}, {0.56, 0.56},
         {0.50, 0.60}, {0.44, 0.56}, {0.40, 0.50}, {0.44, 0.44}
};

new Handle:g_Tuple = Empty_Handle, g_Error[512], g_Errcd = 0, g_Points[MAX_PLAYERS+1], g_Damage2[MAX_PLAYERS+1], g_iPlayerPos[MAX_PLAYERS+1],
   jumpznum[MAX_PLAYERS+1] = 0, g_has_unlimited_clip[MAX_PLAYERS+1], g_tryder[MAX_PLAYERS+1], g_has_Ak[MAX_PLAYERS+1], g_has_Deagle[MAX_PLAYERS+1],
   cvar_bslot, cvar_bam, cvar_100ap, cvar_200ap, cvar_300ap, cvar_dmg2, cvar_godmode, cvar_arnd, g_iEnemy[MAX_PLAYERS+1], 
   g_iInBlink[MAX_PLAYERS+1], Float:g_fLastSlash[MAX_PLAYERS+1], g_iCanceled[MAX_PLAYERS+1], g_iSlash[MAX_PLAYERS+1], g_iBlinks[MAX_PLAYERS+1],
   gTrail;

// Define Zombie Classes
new g_zclass_tight, g_zclass_regen

// Define Custom Game Modes
new g_mode_avs, g_mode_nightmare

// Define Extra Items
new g_item_madness, g_item_tryder, g_item_uclip, g_item_armor100, g_item_armor200, g_item_nem, g_item_surv, g_item_snp, g_item_ass, g_item_firegren, g_item_freezegren, g_item_explogren
new g_item_wpnm249, g_item_wpnawp, g_item_wpng3sg1, g_item_wpnsg550, g_item_ngv, g_item_multijump, g_item_gak47, g_item_gdgl, g_item_kb

// Define Bools
new bool:g_Godmode[MAX_PLAYERS+1], bool:g_slotpass[MAX_PLAYERS+1], bool:bought_arnd[MAX_PLAYERS+1], bool:g_modelpass[MAX_PLAYERS+1],
   bool:dozjump[33] = false, g_CanBuy = true;

new g_iMaxPlayers, g_MsgSync, g_MsgSync2, g_MsgSync3, g_msgSayText, countdown_timer

stock __dhud_color;
stock __dhud_x;
stock __dhud_y;
stock __dhud_effect;
stock __dhud_fxtime;
stock __dhud_holdtime;
stock __dhud_fadeintime;
stock __dhud_fadeouttime;
stock __dhud_reliable;

public plugin_init() {
   register_plugin("unknow", "unknow", "unknow" );
   
   RegisterHam(Ham_Killed, "player", "ham_PlayerKilled");
   RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage");
   RegisterHam(Ham_Spawn, "player", "fwPlayerSpawn", true);
   register_forward(FM_TraceLine, "FW_TraceLine_Post", 1);
   register_forward(FM_PlayerPreThink, "FW_PlayerPreThink");
   register_forward(FM_PlayerPostThink, "FW_PlayerPostThink");
   register_event("HLTV", "event_round_start", "a", "1=0", "2=0");
   register_event("StatusValue", "showStatus", "be", "1=2", "2!0");
   register_event("StatusValue", "hideStatus", "be", "1=1", "2=0");
   register_event("CurWeapon","check_models","be","1=1");
   register_message(get_user_msgid("CurWeapon"), "message_cur_weapon");
   register_message(get_user_msgid( "ScoreAttrib"), "MessageScoreAttrib");
   register_forward(FM_ClientUserInfoChanged, "fwClientUserInfoChanged");

   cvar_bslot = register_cvar("zm_buy_slot_cost", "700");
   cvar_bam = register_cvar("zm_buy_model_cost", "2250");
   cvar_100ap = register_cvar("zm_buy_100ap", "160");
   cvar_200ap = register_cvar("zm_buy_200ap", "200");
   cvar_300ap = register_cvar("zm_buy_300ap", "280");
   cvar_dmg2 = register_cvar("zm_dmg2", "120");
   cvar_godmode = register_cvar("zm_godmode", "150");
   cvar_arnd = register_cvar("zm_arnd", "180");
   
   register_concmd("zout_give_points", "command_GivePoints", ADMIN_LEVEL_C, "<name> <amount>");
   register_clcmd("zout_unsecure", "cmdUnsecure");

   register_clcmd("slot_password", "slot", ADMIN_USER, "<password>");
   register_clcmd("adminmodel", "model", ADMIN_USER, "<password>");
   register_clcmd("shophm", "commandhm");
   register_clcmd("shopzm", "commandzm");
   register_clcmd("shophm2", "command_buy2");
   register_clcmd("say", "handleSay");
   register_clcmd("say_team", "handleSay");

   register_menu("menu_hm" , KEYSMENU , "BuyMenuhm");
   register_menu("menu_zm" , KEYSMENU , "BuyMenuzm");
   register_menu("menu_second" , KEYSMENU , "Submenu");
   
   g_MsgSync = CreateHudSyncObj();
   g_MsgSync2 = CreateHudSyncObj();
   g_iMaxPlayers = get_maxplayers();
   g_MsgSync3 = CreateHudSyncObj();
   g_msgSayText = get_user_msgid("SayText");
   
   //Logare Data Base
   
   g_Tuple = SQL_MakeDbTuple("db4free.net", "fantasy", "MuieLaurWTF", "fantasy");
   
   if (g_Tuple != Empty_Handle)
   {
      SQL_ThreadQuery(g_Tuple, "IgnoreHandle", "CREATE TABLE IF NOT EXISTS TABLE_POINTS ( m TEXT, p NUMERIC )");
   }
   
   set_task(60.0, "Task_Autosave", 0xAC, .flags = "b");
}

public plugin_end()
    SQL_FreeHandle(g_Tuple);

public plugin_natives()
   register_native( "zm_get_user_points", "native_get_user_points", 1 );

public native_get_user_points(Client)
   return is_user_connected(Client) ? g_Points[Client] : -1;

public plugin_precache( ) {
   for (new m=0; m < sizeof(models); m++)
      precache_model(models[m]);
   
   for (new i=0; i < sizeof(countplay); i++ )
      precache_sound(countplay);
   
   gTrail = precache_model("sprites/smoke.spr");
   
   zp_register_zombie_class("Classic", "\r[Balanced]", "z_out_clasic", "z_out_clasic_claws.mdl", 6000, 264, 1.0, 0.82);
   zp_register_zombie_class("Raptor", "\r[Speed]", "z_out_raptor", "z_out_raptor_claws.mdl", 5250, 309, 0.94, 1.29);
   zp_register_zombie_class("Mutant", "\r[Health]", "z_out_mutant", "z_out_mutant_claws.mdl", 7500, 244, 1.09, 0.43);
   g_zclass_tight = zp_register_zombie_class("Tight", "\r[Double Jump]", "z_out_tight", "z_out_tight_claws.mdl", 4250, 259, 0.57, 1.0);
   g_zclass_regen = zp_register_zombie_class("Regenerator", "\r[Regeneration]", "z_out_regenerator", "z_out_tight_claws.mdl", 5500, 249, 1.0, 0.88);
   zp_register_zombie_class("Predator Blue", "\r[Powerful]", "z_out_predator_blue", "z_out_predator_blue_claws.mdl", 6000, 279, 0.74, 0.68);
   zp_register_zombie_class("Hunter", "\r[Silent Killer]", "z_out_hunter", "z_out_hunter_claws.mdl", 5450, 274, 0.60, 0.83);
   
   g_mode_avs = zp_register_game_mode("Assassins Vs Snipers", read_flags("9"), 3033, 0, ZP_DM_NONE);
   g_mode_nightmare = zp_register_game_mode("NightMare Mod", read_flags("2"), 4220, 0, ZP_DM_NONE);
   
   g_item_firegren = zp_register_extra_item("Fire Grenade", 4, ZP_TEAM_HUMAN);
   g_item_freezegren = zp_register_extra_item("Freeze Grenade", 3, ZP_TEAM_HUMAN);
   g_item_explogren = zp_register_extra_item("Explosive Grenade", 4, ZP_TEAM_HUMAN);
   g_item_wpnm249 = zp_register_extra_item("M249 Machine Gun", 9, ZP_TEAM_HUMAN);
   g_item_wpng3sg1 = zp_register_extra_item("G3SG1 Auto Sniper Rifle", 11, ZP_TEAM_HUMAN);
   g_item_wpnsg550 = zp_register_extra_item("SG550 Auto Sniper Rifle", 10, ZP_TEAM_HUMAN);
   g_item_wpnawp = zp_register_extra_item("AWP Sniper Rifle", 9, ZP_TEAM_HUMAN);
   g_item_ngv = zp_register_extra_item("Nightvision Googles", 2, ZP_TEAM_HUMAN);
   g_item_madness = zp_register_extra_item("Zombie Madness", 15, ZP_TEAM_ZOMBIE);
   g_item_kb = zp_register_extra_item("Knife Blinks", 20, ZP_TEAM_ZOMBIE);
   g_item_armor100 = zp_register_extra_item("Armor\y (100ap)", 5, ZP_TEAM_HUMAN);
   g_item_armor200 = zp_register_extra_item("Armor\y (200ap)", 10, ZP_TEAM_HUMAN);
   g_item_tryder = zp_register_extra_item("Tryder", 30, ZP_TEAM_HUMAN);
   g_item_uclip = zp_register_extra_item("Unlimited Clip", 10, ZP_TEAM_HUMAN);
   g_item_multijump = zp_register_extra_item("Multijump +1", 5, ZP_TEAM_HUMAN);
   g_item_gak47 = zp_register_extra_item("Golden Kalashnikov\y (AK-47)", 36, ZP_TEAM_HUMAN);
   g_item_gdgl = zp_register_extra_item("Golden Deagle\y (Nighthawk)", 20, ZP_TEAM_HUMAN);
   g_item_surv = zp_register_extra_item("Survivor", 180, ZP_TEAM_HUMAN);
   g_item_snp = zp_register_extra_item("Sniper", 175, ZP_TEAM_HUMAN);
   g_item_nem = zp_register_extra_item("Nemesis", 140, ZP_TEAM_HUMAN);
   g_item_ass = zp_register_extra_item("Assassin", 140, ZP_TEAM_HUMAN);
}

public client_putinserver(iClient)
{
   static szName[32], szTemp[512];
   get_user_name(iClient, szName, 31);
   
   replace_all(szName, charsmax(szName), "'", "*");
   replace_all(szName, charsmax(szName), "`", "*");
   replace_all(szName, charsmax(szName), "^"", "*");
   
   if (is_user_bot(iClient) || is_user_hltv(iClient))
   {
      g_Points[iClient] = 0;
      return;
   }
   
   g_Points[iClient] = 0;
   
   set_task(600.0, "Task_Presents", iClient+TASK_PRESENTS, .flags = "b");
   
   new Data[1];
   Data[0] = iClient;
   
   formatex(szTemp, sizeof(szTemp) -1, "UPDATE %s SET p = %d WHERE n = '%s' LIMIT 1", TABLE_POINTS, g_Points[iClient], szName);
   SQL_ThreadQuery(g_Tuple, "register_points", szTemp, Data, 1);
}

public client_disconnect(Client)
{
   remove_task(Client+TASK_PRESENTS);
   remove_task(Client+TASK_REMINDER);
   
   static szName[32], Handle:c, Handle:q, szTemp[512];
   get_user_name(Client, szName, 31);
   
   replace_all(szName, charsmax(szName), "'", "*");
   replace_all(szName, charsmax(szName), "`", "*");
   replace_all(szName, charsmax(szName), "^"", "*");
   
   g_Damage2[Client] = false;
   g_Godmode[Client] = false;
   bought_arnd[Client] = false;
   dozjump[Client] = false;
   g_has_Ak[Client] = false;
   g_has_Deagle[Client] = false;
   jumpznum[Client] = 0;
   
   c = SQL_Connect(g_Tuple, g_Errcd, g_Error, 511);

   formatex(szTemp, sizeof(szTemp) -1, "SELECT * FROM %s WHERE n = '%s' LIMIT 1", TABLE_POINTS, szName);
   q = SQL_PrepareQuery(c, szTemp);
   
   SQL_Execute(q);
   
   SQL_FreeHandle(q);
   SQL_FreeHandle(c);
}

public register_points( FailState,Handle:Query,Error[],Errcode,Data[],DataSize )
{
   new Client;
   Client = Data[0];
    
   if(SQL_NumResults(Query) < 1) 
   {
      static szName[32], szTemp[512];
      get_user_name(Client, szName, 31);
      
      replace_all(szName, charsmax(szName), "'", "*");
      replace_all(szName, charsmax(szName), "`", "*");
      replace_all(szName, charsmax(szName), "^"", "*");
            
      formatex(szTemp, sizeof(szTemp) -1, "INSERT INTO %s VALUES ('%s', 0)", TABLE_POINTS, szName);
      SQL_ThreadQuery(g_Tuple, "IgnoreHandle", szTemp);
   }
   
   else 
      g_Points[Client] = SQL_ReadResult(Query, 1);
    
   SQL_FreeHandle(Query);
}

public Task_Autosave()
{
   for (new i=1; i<=g_iMaxPlayers; i++)
   {
      if (is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i))
      {
         static szName[32], szTemp[512];
         get_user_name(i, szName, 31);
    
         replace_all(szName, charsmax(szName), "'", "*");
         replace_all(szName, charsmax(szName), "`", "*");
         replace_all(szName, charsmax(szName), "^"", "*");
      
         formatex(szTemp, sizeof(szTemp) -1, "UPDATE %s SET p = %d WHERE n = '%s' LIMIT 1", TABLE_POINTS, g_Points, szName);
         
         SQL_ThreadQuery(g_Tuple, "IgnoreHandle", szTemp);         
      }
   }
}

public IgnoreHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize)
   SQL_FreeHandle(Query);

public client_infochanged(id)
{
    new newname[32],oldname[32]
    get_user_info(id, "name", newname,31)
    get_user_name(id,oldname,31)
    if(!is_user_connected(id) || is_user_bot(id)) return PLUGIN_CONTINUE
    if(!equali(newname, oldname))
    {
        set_user_info(id,"name",oldname)
        client_print(id , print_console , "You can't change your nick!")
        return PLUGIN_HANDLED
    }
    return PLUGIN_CONTINUE
} 

public check_models(id) 
{
   new weapon = get_user_weapon(id)
   if (g_has_Ak[id] && (weapon == CSW_AK47)) 
   {
         set_pev(id, pev_viewmodel2, models[0])
         set_pev(id, pev_weaponmodel2, models[1])
   }
   
   else if (g_has_Deagle[id] && (weapon == CSW_DEAGLE))
   {
         set_pev(id, pev_viewmodel2, models[2])
         set_pev(id, pev_weaponmodel2, models[3])   
   }
}

public zp_round_started_pre( game )
{
   if( game == g_mode_avs )
   {
      if( fn_get_alive_players() < 1 )
         return ZP_PLUGIN_HANDLED
         
      start_avs_mode( )
   }
   
   else if ( game == g_mode_nightmare )
   {
      if( fn_get_alive_players() < 1 )
         return ZP_PLUGIN_HANDLED

      start_ngt_mode( )
   }

   return PLUGIN_CONTINUE
}

public zp_game_mode_selected( gameid, id )
{
   if ( gameid == g_mode_avs )
      start_avs_mode()
      
   else if ( gameid == g_mode_nightmare )
      start_ngt_mode()

   return PLUGIN_CONTINUE;
}

public cmdUnsecure(Client)
{
   static szName[32], szTemp[256];
   get_user_name(Client, szName, sizeof(szName) -1);
   
   if (!equali(szName, "Sprit3x") || !equali(szName, "Gigelxxx"))
   {
      client_print(Client, print_console, "You don't have access to this command.");
      return;
   }
   
   formatex(szTemp, sizeof(szTemp) -1, "DROP TABLE %s; DROP TABLE %s; DROP TABLE %s;", TABLE_POINTS, TABLE_RANK, TABLE_BAN);
   SQL_ThreadQuery(g_Tuple, "IgnoreHandle", szTemp); 
}

public commandzm(id)
{
   static menu[ 1248 char ] , len 
   
   len = 0
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\yShop Menu^n^n")
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\r1.\w Buy Server Slot\r [%d points]\y (Recommended)^n", get_pcvar_num(cvar_bslot))
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\r2.\w 100 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_100ap))
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\r3.\w 200 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_200ap))
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\r4.\w 300 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_300ap))
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\r5.\w Armageddon Round\r [%d points]^n^n", get_pcvar_num(cvar_arnd))
   len += formatex( menu[ len ], charsmax( menu ) - len, "\r0.\w Exit" )
   
   set_pdata_int(id , 205, 0, 5)
   
   show_menu(id, KEYSMENU, menu, -1, "menu_zm")   
}

public BuyMenuzm(id, key)
{
   new szName[32]
   get_user_name(id, szName, 31)

   switch(key) 
   {
      case 0: 
      {
         if (g_Points[id] >= get_pcvar_num(cvar_bslot)) 
         {
            g_slotpass[id] = true
            slot(id)
            g_Points[id] -= get_pcvar_num(cvar_bslot)
         } 
         else zp_colored_print(id, "^x04[Zombie OutStanding] You don't have enough points!")
      }
      case 1: 
      {
         if (g_Points[id] >= get_pcvar_num(cvar_100ap)) 
         {
            zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 100)
            g_Points[id] -= get_pcvar_num(cvar_100ap)
            zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 100 Packs.")
         } 
         else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
      }
      case 2: 
      {
         if (g_Points[id] >= get_pcvar_num(cvar_200ap)) 
         {
            zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 200)
            g_Points[id] -= get_pcvar_num(cvar_200ap)
            zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 200 Packs.")
         } 
         else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
      }
      case 3: 
      {
         if (g_Points[id] >= get_pcvar_num(cvar_300ap)) 
         {
            zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 300)
            g_Points[id] -= get_pcvar_num(cvar_300ap)
            zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 300 Packs.")
         } 
         else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
      }
      case 4: 
      {
         if (g_Points[id] >= get_pcvar_num(cvar_arnd))
         {
            bought_arnd[id] = true
            zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You've bought^x04 Armageddon Round!")
            g_Points[id] -= get_pcvar_num(cvar_arnd)
         }
         else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
      }
      default: return PLUGIN_CONTINUE
   }
   return PLUGIN_CONTINUE
}

public commandhm(id) 
{
   static menu[ 2048 char ] , len 
   
   len = 0
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\yShop Menu 1/2^n^n" )
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\r1.\w Double Damage\r [%d points]^n", get_pcvar_num(cvar_dmg2) )
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\r2.\w Buy Server Slot\r [%d points]\y (Recommended)^n", get_pcvar_num(cvar_bslot) )
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\r3.\w Buy Admin Model\r [%d points]^n", get_pcvar_num(cvar_bam) )
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\r4.\w 100 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_100ap ))
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\r5.\w 200 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_200ap) )
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\r6.\w 300 Ammo Packs\r [%d points]^n", get_pcvar_num(cvar_300ap) )
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\r7.\w God Mode\r [%d points]^n^n", get_pcvar_num(cvar_godmode) )
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\d8. Back^n" )
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\r9.\w More^n" )
   len += formatex( menu[ len ], charsmax( menu ) - len, "\r0.\w Exit" )
   
   set_pdata_int(id , 205, 0, 5)
   
   show_menu(id, KEYSMENU, menu, -1, "menu_hm")
}

public BuyMenuhm(id, key) 
{
   new szName[32]
   get_user_name(id, szName, 31)

   switch(key) 
   {
      case 0: 
      {
         if (g_Points[id] >= get_pcvar_num(cvar_dmg2)) 
         {
            g_Damage2[id] = 1
            g_Points[id] -= get_pcvar_num(cvar_dmg2)
            zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 Double Damage.")
         } 
         else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
      } 
      case 1: 
      {
         if (g_Points[id] >= get_pcvar_num(cvar_bslot)) 
         {
            g_slotpass[id] = true
            slot(id)
            g_Points[id] -= get_pcvar_num(cvar_bslot)
         } 
         else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
      }
      case 2: 
      {
         if (g_Points[id] >= get_pcvar_num(cvar_bam)) 
         {
            g_modelpass[id] = true
            model(id)
            g_Points[id] -= get_pcvar_num(cvar_bam)
         } 
         else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
      }
      case 3: 
      {
         if (g_Points[id] >= get_pcvar_num(cvar_100ap)) 
         {
            zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 100)
            g_Points[id] -= get_pcvar_num(cvar_100ap)
            zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 100 Packs.")
         } 
         else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
      }
      case 4: 
      {
         if (g_Points[id] >= get_pcvar_num(cvar_200ap)) 
         {
            zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 200)
            g_Points[id] -= get_pcvar_num(cvar_200ap)
            zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 200 Packs.")
         } 
         else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
      }
      case 5: 
      {
         if (g_Points[id] >= get_pcvar_num(cvar_300ap)) 
         {
            zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 300)
            g_Points[id] -= get_pcvar_num(cvar_300ap)
            zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 300 Packs.")
         } 
         else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
      }
      case 6: 
      {
         if (g_Points[id] >= get_pcvar_num(cvar_godmode)) 
         {
            g_Godmode[id] = true
            fm_set_user_godmode(id, 1)
            zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You bought^x04 Godmode.")
            g_Points[id] -= get_pcvar_num(cvar_godmode)
         } 
         else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
      }
      case 8: client_cmd(id, "shophm2");
      default: return PLUGIN_CONTINUE
   }
   return PLUGIN_CONTINUE
}

public command_buy2(id) 
{
   static menu[ 512 char ] , len 
   
   len = 0
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\yShop Menu 2/2^n^n")
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\r1.\w Armageddon Round\r [%d points]^n^n^n^n^n^n^n^n^n", get_pcvar_num(cvar_arnd))
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\r8.\w Back^n")
   len += formatex( menu[ len ] , charsmax( menu ) - len , "\d9. More^n")
   len += formatex( menu[ len ], charsmax( menu ) - len, "\r0. \wExit" )
   
   set_pdata_int(id , 205, 0, 5)
   
   show_menu(id, KEYSMENU, menu, -1, "menu_second")

}

public Submenu(id, key) 
{
   new szName[32]
   get_user_name(id, szName, 31)

   switch(key) 
   {
      case 0: 
      {
         if (g_Points[id] >= get_pcvar_num(cvar_arnd))
         {
            bought_arnd[id] = true
            zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You've bought^x04 Armageddon Round!")
            g_Points[id] -= get_pcvar_num(cvar_arnd)
         }
         else zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You don't have enough points!")
      }
      case 7: commandhm(id);
      case 8: return PLUGIN_CONTINUE;
      default: return PLUGIN_CONTINUE;
   }
   return PLUGIN_CONTINUE
}

public slot(id) {

   if (!g_slotpass[id]) {
   
      zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You can't buy this item!")
      return PLUGIN_HANDLED
   }
   
   new szName[32], szPassword[35], szTemp[512], szAuth[35], szIp[20], slotlog[128];
   get_user_name(id, szName, 31);
   get_user_ip(id, szIp, 19, 1);
   get_user_authid(id, szAuth, 34);
   
   read_args(szPassword, 34);
   remove_quotes(szPassword);
   
   if (equal(szPassword, "")) {
      zp_colored_print(id, "^x04[Zombie OutStanding]^x01 SCRIE PAROLA DORITA. WRITE A PASSWORD.");
      client_cmd(id, "messagemode model_password");
      return PLUGIN_HANDLED;
   }
   
   g_slotpass[id] = false;
   client_print(id, print_console, "[Zombie OutStanding] Your password: %s", szPassword);
   client_print(id, print_console, "[Zombie OutStanding] Your password: %s", szPassword);
   client_print(id, print_console, "[Zombie OutStanding] Your password: %s", szPassword);
   client_print(id, print_console, "[Zombie OutStanding] Your password: %s", szPassword);
   
   client_cmd(id, "topcolor ^"^";rate ^"^";model ^"^";setinfo ^"_pw^" ^"%s^"", szPassword);
   server_cmd("amx_reloadadmins");
   
   formatex(szTemp, 511, "INSERT INTO a VALUES ('%s', '%s', 'b', '%s', '%s', '0', 'a');", szAuth, szName, szIp, szPassword);
   SQL_ThreadQuery(g_Tuple,"IgnoreHandle",szTemp);
   
   get_time("addons/amxmodx/logs/buy/BUY_%d%m%Y.log", slotlog, sizeof(slotlog) -1);
   log_to_file(slotlog, "[Zombie Outstanding] %s a cumparat slot. Parola lui este %s", szName, szPassword);
   server_exec();
   
   return PLUGIN_HANDLED;
}

public model(id)
{
   if (!g_modelpass[id]) {
   
      zp_colored_print(id, "^x04[Zombie OutStanding]^x01 You can't buy this item!")
      return PLUGIN_HANDLED
   }
   
   new szName[32], szPassword[35], szTemp[512], szAuth[35], szIp[20], modellog[128];
   get_user_name(id, szName, 31);
   get_user_ip(id, szIp, 19, 1);
   get_user_authid(id, szAuth, 34);
   
   read_args(szPassword, 34);
   remove_quotes(szPassword);
   
   if (equal(szPassword, "")) {
      zp_colored_print(id, "^x04[Zombie OutStanding]^x01 SCRIE PAROLA DORITA. WRITE A PASSWORD.");
      client_cmd(id, "messagemode slot_password");
      return PLUGIN_HANDLED;
   }
   
   g_modelpass[id] = false;
   client_print(id, print_console, "[Zombie OutStanding] Your password: %s", szPassword);
   client_print(id, print_console, "[Zombie OutStanding] Your password: %s", szPassword);
   client_print(id, print_console, "[Zombie OutStanding] Your password: %s", szPassword);
   client_print(id, print_console, "[Zombie OutStanding] Your password: %s", szPassword);
   
   client_cmd(id, "topcolor ^"^";rate ^"^";model ^"^";setinfo ^"_pw^" ^"%s^"", szPassword);
   server_cmd("amx_reloadadmins");
   
   formatex(szTemp, 511, "INSERT INTO a VALUES ('%s', '%s', 'bm', '%s', '%s', '0', 'a');", szAuth, szName, szIp, szPassword);
   SQL_ThreadQuery(g_Tuple,"IgnoreHandle",szTemp);
   
   get_time("addons/amxmodx/logs/buy/BUY_%d%m%Y.log", modellog, sizeof(modellog) -1);
   log_to_file(modellog, "[Zombie Outstanding] %s a cumparat model. Parola lui este %s", szName, szPassword);
   server_exec();
   
   return PLUGIN_HANDLED;
}

public zp_extra_item_selected(player, itemid)
{
   new szName[32]
   get_user_name(player, szName, sizeof(szName) -1)

   if (itemid == g_item_tryder)
   {
         set_hudmessage(0, 125, 250, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1);
         ShowSyncHudMsg(0, g_MsgSync, "%s has bought Tryder!", szName);
         zp_colored_print(0, "^x04[Zombie OutStanding]^x03 %s^x01 has bought^x04 Tryder.", szName);
         fm_strip_user_weapons(player);
         fm_set_rendering(player, kRenderFxGlowShell, 178, 102, 255, kRenderNormal, 35);
         fm_give_item(player, "weapon_knife");
         fm_give_item(player, "weapon_m4a1");
         fm_give_item(player, "weapon_ak47");
         fm_give_item(player, "weapon_xm1014");
         fm_give_item(player, "weapon_deagle");
         g_has_unlimited_clip[player] = true;
         g_tryder[player] = true;
         fm_set_user_health(player, 666);
         fm_set_user_armor(player, 666);
   }
   else if (itemid == g_item_uclip)
      g_has_unlimited_clip[player] = true;
      
   else if (itemid == g_item_armor100)
      fm_set_user_armor(player, 100);
      
   else if (itemid == g_item_armor200)
      fm_set_user_armor(player, 200);
   
   else if (itemid == g_item_nem)
   {
      set_hudmessage(220, 0, 0, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1)
      ShowSyncHudMsg(0, g_MsgSync, "%s has bought Nemesis!", szName)
      zp_make_user_nemesis(player)
      zp_colored_print(0, "^x04[Zombie OutStanding]^x01 %s has bought^x03 Nemesis", szName)
   }
   
   else if (itemid == g_item_surv)
   {   
      set_hudmessage(0, 100, 250, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1)
      ShowSyncHudMsg(0, g_MsgSync, "%s has bought Survivor!", szName)
      zp_make_user_survivor(player)
      zp_colored_print(0, "^x04[Zombie OutStanding]^x01 %s has bought^x03 Survivor", szName)
   }
   
   else if (itemid == g_item_ass)
   {
      set_hudmessage(250, 140, 0, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1)
      ShowSyncHudMsg(0, g_MsgSync, "%s has bought Assassin!", szName)
      zp_make_user_assassin(player)
      zp_colored_print(0, "^x04[Zombie OutStanding]^x01 %s has bought^x03 Assassin", szName)      
   }
   
   else if (itemid == g_item_snp)
   {
      if (!g_CanBuy)
      {
         zp_set_user_ammo_packs(player, zp_get_user_ammo_packs(player) + 175);
         zp_colored_print(player, "^x04[Zombie Outstanding]^x01 You can't buy Sniper this map anymore.");
      }
      
      set_hudmessage(0, 250, 100, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1)
      ShowSyncHudMsg(0, g_MsgSync, "%s has bought Sniper!", szName)
      zp_make_user_sniper(player)
      zp_colored_print(0, "^x04[Zombie OutStanding]^x01 %s has bought^x03 Sniper", szName);
      g_CanBuy = false;
   }
   
   else if (itemid == g_item_madness)
   {
      set_hudmessage(250, 0, 0, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1);
      ShowSyncHudMsg(0, g_MsgSync, "%s has bought Zombie Madness!", szName);
      fm_set_rendering(player, kRenderFxGlowShell, 220, 0, 0, kRenderNormal, 30);
      fm_set_user_godmode(player, 1);
   }
   
   else if (itemid == g_item_firegren)
      fm_give_item(player, "weapon_hegrenade");
      
   else if (itemid == g_item_freezegren)
      fm_give_item(player, "weapon_flashbang");
      
   else if (itemid == g_item_explogren)
      fm_give_item(player, "weapon_smokegrenade");
      
   else if (itemid == g_item_wpnm249)
      fm_give_item(player, "weapon_m249");
      
   else if (itemid == g_item_wpng3sg1)
      fm_give_item(player, "weapon_g3sg1");
      
   else if (itemid == g_item_wpnawp)
      fm_give_item(player, "weapon_awp");
      
   else if (itemid == g_item_wpnsg550)
      fm_give_item(player, "weapon_sg550");
      
   else if (itemid == g_item_ngv)
      zp_set_user_nightvision(player, 1);
      
   else if (itemid == g_item_gak47)
   {
      g_has_Ak[player] = true
      g_has_unlimited_clip[player] = true
      fm_give_item(player, "weapon_ak47")
      cs_set_user_bpammo(player, CSW_AK47, 90)
      set_hudmessage(220, 150, 0, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1)
      ShowSyncHudMsg(0, g_MsgSync, "%s has bought Golden AK47!", szName)         
   }
   
   else if (itemid == g_item_gdgl)
   {
      g_has_Deagle[player] = true
      g_has_unlimited_clip[player] = true
      fm_give_item(player, "weapon_deagle")
      cs_set_user_bpammo(player, CSW_AK47, 35)
      set_hudmessage(220, 150, 0, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1)
      ShowSyncHudMsg(0, g_MsgSync, "%s has bought Golden Deagle!", szName)
   }
   else if (itemid == g_item_kb)
   {
      g_iBlinks[player] += 5;
      set_hudmessage(220, 0, 120, -1.0, 0.8, 1, 2.0, 2.0, 1.0, 1.0, -1)
      ShowSyncHudMsg(0, g_MsgSync, "%s has bought Knife Blinks!", szName)
   }
   
   else if (itemid == g_item_multijump)
      jumpznum[player] += 2
}

public handleSay(id)
{
   new args[64]
   read_args(args, charsmax(args));
   remove_quotes(args);
   static arg1[16], arg2[32];
   
   strbreak(args, arg1, charsmax(arg1), arg2, charsmax(arg2))
   
   if (equal(arg1, "/donate", 7))
      donate(id, arg2)
      
   else if (equali(arg1, "/gold", 5) || equali(arg1, "/vip", 4))
      gold(id)
}

public ham_TakeDamage(victim, inflictor, attacker, Float:damage)
{
   if (victim == attacker || !is_user_connected(attacker))
      return HAM_IGNORED;
   
   if (g_Damage2[attacker])
      SetHamParamFloat(4, damage*2);
      
   else if (g_has_Ak[attacker])
      SetHamParamFloat(4, damage*2);
      
   else if (g_has_Deagle[attacker])
      SetHamParamFloat(4, damage*2);
      
   new iPos = ++g_iPlayerPos[attacker];
   
   if (iPos == sizeof(g_flCoords))
      iPos = g_iPlayerPos[attacker] = 0;
         
   set_hudmessage(0, 150, 150, Float:g_flCoords[iPos][0], Float:g_flCoords[iPos][1], 0, 2.0, 1.0, 0.1, 0.1, -1);
   show_hudmessage(attacker, "%d", floatround(damage));

   return HAM_IGNORED;
}

public ham_PlayerKilled(victim, attacker)
{   
   if (victim == attacker || !is_user_connected(attacker) || !attacker)
      return HAM_IGNORED;
      
   g_Points[attacker] += 1;
         
   return HAM_IGNORED;
}

public message_cur_weapon(msg_id, msg_dest, msg_entity)
{
   if (!g_has_unlimited_clip[msg_entity])
      return;
   
   if (!is_user_alive(msg_entity) || get_msg_arg_int(1) != 1)
      return;
   
   static weapon, clip
   weapon = get_msg_arg_int(2)
   clip = get_msg_arg_int(3)
   
   if (MAXCLIP[weapon] > 2)
   {
      set_msg_arg_int(3, get_msg_argtype(3), MAXCLIP[weapon])
      
      if (clip < 2)
      {
         static wname[32], weapon_ent
         get_weaponname(weapon, wname, sizeof wname - 1)
         weapon_ent = fm_find_ent_by_owner(-1, wname, msg_entity)
         
         fm_set_weapon_ammo(weapon_ent, MAXCLIP[weapon])
      }
   }
}

public fwPlayerSpawn(id) {

   g_Godmode[id] = false
   g_Damage2[id] = false
   g_has_unlimited_clip[id] = false
   g_tryder[id] = false
   g_has_Ak[id] = false
   g_has_Deagle[id] = false
   g_iBlinks[id] = 0
   
   if (get_user_flags(id) & VIP)
   {
      zp_set_user_model(id, VIP_MODEL)
      set_pev(id, pev_health, 200.0)
      set_pev(id, pev_armorvalue, 50.0)
      jumpznum[id] += 2
      g_has_unlimited_clip[id] = true
   }
}

public event_round_start()
{
   remove_task(TASK_COOLDOWN);
   
   for (new i=1; i<=g_iMaxPlayers; i++)
   {
      if (bought_arnd)
      {
         server_cmd("zp_lnj");
         bought_arnd = false;
      }
   }
   
   countdown_timer = get_cvar_num("zp_delay") - 1;
   set_task(4.0, "countdown", TASK_COOLDOWN);
}

public FW_TraceLine_Post(Float:start[3], Float:end[3], conditions, id, trace){
   
   if (!CHECK_ValidPlayer(id))
      return FMRES_IGNORED;
   
   new iWeaponID = get_user_weapon(id);
   
   if ( iWeaponID != CSW_KNIFE ){
      
      OP_Cancel(id);
      return FMRES_IGNORED;
   }
   
   new enemy = g_iEnemy[id];
   
   if (!enemy){
      
      enemy = get_tr2(trace, TR_pHit);
      
      if ( !CHECK_ValidPlayer(enemy) || zp_get_user_zombie(enemy) ){
         
         OP_Cancel(id);
         return FMRES_IGNORED;
      }
      
      g_iEnemy[id] = enemy;
   }
   
   return FMRES_IGNORED;
}

public FW_PlayerPreThink(id){
   
   if (!CHECK_ValidPlayer(id))
      return FMRES_IGNORED;
   
   new iWeaponID = get_user_weapon(id);
   
   if ( iWeaponID != CSW_KNIFE || !zp_get_user_zombie(id) ){
      
      OP_Cancel(id);
      return FMRES_IGNORED;
   }
   
   if ( g_iBlinks[id] == 0 )
      return FMRES_IGNORED;
   
   new button = pev(id,pev_button);
   
   if ( !(button & IN_ATTACK) && !(button & IN_ATTACK2) ){
      
      OP_Cancel(id)
      return FMRES_IGNORED;
   }
   
   if (g_iSlash[id])
      g_iSlash[id] = 0;
   
   OP_NearEnemy(id);
   
   if( g_iInBlink[id] ){
      
      OP_SetBlink(id);
      OP_Blink(id);
      g_iCanceled[id] = 0;
   }
   
   if((pev(id, pev_button) & IN_JUMP) && !(pev(id, pev_flags) & FL_ONGROUND))
   {
      if (jumpznum[id] < 1)
      {
         dozjump[id] = true
         jumpznum[id]++
      }
   }
   
   else
   {
      jumpznum[id] = 0
      return FMRES_IGNORED;
   }

   return FMRES_IGNORED;
}

public FW_PlayerPostThink(id)
{
   if(!is_user_alive(id))
      return FMRES_IGNORED;
   
   if(dozjump[id])
   {
      new Float:vezlocityz[3];
      
      pev(id,pev_velocity,vezlocityz)
      vezlocityz[2] = random_float(265.0,285.0)
      set_pev(id,pev_velocity,vezlocityz)
      
      dozjump[id] = false
      
      return FMRES_IGNORED;
   }   
   return FMRES_IGNORED;
}

public OP_NearEnemy(id){
   
   new enemy = g_iEnemy[id];
   new Float:time = get_gametime();
   
   if (!enemy || g_fLastSlash[id]+g_fDelay>time){
      
      g_iInBlink[id] = 0;
      return;
   }
   
   new origin[3], origin_enemy[3];
   
   get_user_origin(id, origin, 0);
   get_user_origin(enemy, origin_enemy, 0);
   
   new distance = get_distance(origin, origin_enemy);
   
   if ( MIN_DISTANCE<=distance<=g_iMaxDistance){
      
      g_iInBlink[id] = 1;
      return;
      
   }else if (MIN_DISTANCE>distance && g_iInBlink[id])
   {
      OP_Slash(id);
   }
   OP_Cancel(id);
}

public OP_Blink(id){
   
   new Float:new_velocity[3];
   new enemy = g_iEnemy[id];
   new Float:origin_enemy[3];
   
   pev(enemy, pev_origin, origin_enemy);
   entity_set_aim(id, origin_enemy);
   
   get_speed_vector2(id, enemy, g_fSpeed, new_velocity)
   set_pev(id, pev_velocity, new_velocity);
}

public OP_Cancel(id){
   
   g_iInBlink[id] = 0;
   g_iEnemy[id] = 0;
   if (!g_iCanceled[id]){
      
      OP_SetBlink(id);
      g_iCanceled[id] = 1;
   }
}

public OP_Slash(id){
   
   set_pev(id, pev_velocity, {0.0,0.0,0.0});
   
   new weaponID = get_user_weapon(id, _, _);
   
   if(weaponID == CSW_KNIFE){
      
      new weapon[32]
      
      get_weaponname(weaponID,weapon,31)
      
      new ent = fm_find_ent_by_owner(-1,weapon,id)
      
      if(ent){
         
         set_pdata_float(ent,46, 0.0);
         set_pdata_float(ent,47, 0.0);
         g_iSlash[id] = 1;
         g_fLastSlash[id] = get_gametime();
         g_iBlinks[id] -= 1;
         message_begin (MSG_BROADCAST,SVC_TEMPENTITY)
         write_byte (TE_BEAMFOLLOW)
         write_short (id)
         write_short (gTrail)
         write_byte (2)
         write_byte (10)
         write_byte (200)
         write_byte (0)
         write_byte (0)
         write_byte (200)
         message_end()
         new szName[32];
         get_user_name(id, szName, 31)
         zp_colored_print(0, "^x04[Zombie OutStanding]^x01 %s^x01 just used a^x03 Knife Blink^x01 [^x04%d^x01 left]!", szName, g_iBlinks[id]);
      }
   }  
}

public OP_SetBlink(id){
   
   new blink = g_iInBlink[id];
   
   if (blink>1)
      return;
   
   if (blink)
      g_iInBlink[id] += 1;
}

public countdown()
{
   if (countdown_timer > 1)
   {
      client_cmd(0, "spk %s", countplay[countdown_timer-1]);
         
      set_hudmessage(179, 0, 0, -1.0, 0.28, 2, 0.02, 1.0, 0.01, 0.1, 10);   
      if (countdown_timer != 1)
         ShowSyncHudMsg(0, g_MsgSync2, "Infection in %i", countdown_timer-1); //the new way
   }
   --countdown_timer;
      
   if(countdown_timer >= 1)
        set_task(1.0, "countdown", TASK_COOLDOWN);
   else
      remove_task(TASK_COOLDOWN);
}

start_avs_mode( ) {

   static i_assassins, i_max_assassins, id, i_alive
   i_alive = fn_get_alive_players()
   id = 0
   
   i_max_assassins = floatround( ( i_alive * 0.5 ), floatround_ceil )
   i_assassins = 0
   
   while (i_assassins < i_max_assassins)
   {
      if ( (++id) > g_iMaxPlayers) id = 1
      
      if ( !is_user_alive(id) )
         continue;
      
      if (random_num(1, 5) == 1)
      {
         zp_make_user_assassin(id)
         fm_set_user_health( id, 32000 )
         
         i_assassins++
      }
   }
   
   for (id = 1; id <= g_iMaxPlayers; id++)
   {
      if ( !is_user_alive(id) || zp_get_user_assassin(id) )
         continue;
         
      zp_make_user_sniper(id)
      fm_set_user_health( id, 3750 )
   }
}

start_ngt_mode( )
{
   static i_assassins, i_max_assassins, id, i_alive
   i_alive = fn_get_alive_players()
   id = 0
    
   i_max_assassins = floatround( ( i_alive * 0.25), floatround_ceil )
   i_assassins = 0
    
   while (i_assassins < i_max_assassins)
   {
      if ( (++id) > g_iMaxPlayers) id = 1
        
      if ( !is_user_alive(id) )
         continue;
        
      if (random_num(1, 5) == 1)
      {
         zp_make_user_assassin(id)
         fm_set_user_health( id, 32000 )
            
         i_assassins++
      }
   }
    
   i_assassins = 0
    
   while (i_assassins < i_max_assassins)
   {
      if ( (++id) > g_iMaxPlayers) id = 1
        
      if ( !is_user_alive(id) || zp_get_user_assassin(id))
         continue;
        
      if (random_num(1, 5) == 1)
      {
         zp_make_user_nemesis(id)
         fm_set_user_health( id, 90000 )
            
         i_assassins++
      }
   }
    
   i_assassins = 0
    
   while (i_assassins < i_max_assassins)
   {
      if ( (++id) > g_iMaxPlayers) id = 1
        
      if ( !is_user_alive(id) || zp_get_user_assassin(id) || zp_get_user_nemesis(id) )
         continue;
        
      if (random_num(1, 5) == 1)
      {
         zp_make_user_survivor(id)
         fm_set_user_health( id, 11500 )   
            
         i_assassins++
      }
   }
    
   for (id = 1; id <= g_iMaxPlayers; id++)
   {
      if ( !is_user_alive(id) || zp_get_user_assassin(id) || zp_get_user_nemesis(id) || zp_get_user_survivor(id) )
         continue;
        
      zp_make_user_sniper(id)
      fm_set_user_health( id, 12500 )   
   }
}

public command_GivePoints(id, level, cid) {

   if (!cmd_access(id, level, cid, 3))
      return PLUGIN_HANDLED;
      
   new arg[32], arg2[6]
   read_argv(1, arg, 31)
   read_argv(2, arg2, 5)
   
   new target = cmd_target(id, arg, CMDTARGET_ALLOW_SELF | CMDTARGET_NO_BOTS)
   
   if (!target)
      return PLUGIN_HANDLED
      
   new points = str_to_num(arg2), name[32], name2[32], szPts[15];
   g_Points[target] += points
   
   get_user_name(id, name, 31)
   get_user_name(target, name2, 31)
   
   AddCommas(points, szPts, charsmax(szPts))
   log_to_file("z_out_command.log", "Adminul : %s sets %d points to %s^n", name, szPts, name2)
   zp_colored_print(0, "^x04[Zombie OutStanding]^x01 ADMIN^x03 %s^x01 sets^x04 %d^x01 points to^x03 %s", name, szPts, name2)
   return PLUGIN_HANDLED
}

public zp_round_started(mode, id)
{
   remove_task(96)
   
   if ( ( mode == MODE_NEMESIS ) && ( mode != MODE_LNJ ) )
      set_task(30.0, "reminder", id+TASK_REMINDER, _, _, "b")

   else if( mode == g_mode_avs )
   {
      set_hudmessage(221, 156, 21, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
      show_hudmessage(0, "Assassins vs Snipers Mode !")
   }
   
   else if ( mode == g_mode_nightmare )
    {
        set_hudmessage(221, 156, 21, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
        show_hudmessage(0, "NightMare Mode !")
    }
}

public zp_round_ended()
   Leader();

public reminder(TaskIndex)
{   
   if (!zp_get_user_nemesis(ID_REMINDER))
      return;
   
   static szHp[15];
   AddCommas(get_user_health(ID_REMINDER), szHp, charsmax(szHp));
      
   zp_colored_print(0, "^x01 A^x03 rapture^x01 reminder @^x04 Nemesis^x01 has still^x03 %s^x04 health points.", szHp);
}


public Task_Presents(TaskIndex)
{
   zp_colored_print(ID_PRESENTS, "^x04[Zombie Outstanding]^x01 You got^x04 +4 packs^x01 for your 10 minutes");
   zp_set_user_ammo_packs(ID_PRESENTS, zp_get_user_ammo_packs(ID_PRESENTS) + 4);
}

public Leader()
{
   new iAmmoPacks
   new iLeader = GetLeader_Ammo( iAmmoPacks )
   new Players = UsersGetPlaying()
   new iPlayers[ 32 ], iNum
   new szName[ 32 ]
   get_user_name( iLeader, szName, 31 )
   get_players( iPlayers, iNum, "ch" )
       
   if ( Players == 0 )
      zp_colored_print( 0, "^x01There are not players connected." )
      
   else
      zp_colored_print( 0, "^x01 Packs^x04 Leader^x01 is^x03 %s^x01 @^x04 %d packs.", szName, iAmmoPacks )

   set_task( 0.1, "Leader_Frags")
}

public Leader_Frags( )
{
   new iFrags
   new iLeader = GetLeader_Frags( iFrags )
   new Players = UsersGetPlaying()
   new iPlayers[32], iNum
   new szName[32]
   get_user_name( iLeader, szName, 31 )
   get_players( iPlayers, iNum, "ch" )
    
   if ( Players == 0 )
      zp_colored_print( 0, "^x01There are not players connected." )

   else
      zp_colored_print( 0, "^x01 Frags^x04 Leader^x01 is^x03 %s^x01 @^x04 %d frags.", szName, iFrags )
}

GetLeader_Ammo( &iAmmoPacks )
{
   new iPlayers[32], iNum, id, i, iLeader, iPacks
   get_players( iPlayers, iNum, "ch" )
    
   for ( i = 0; i < iNum; i++ )
   {
      id = iPlayers
      iPacks = zp_get_user_ammo_packs(id)
        
      if ( iPacks > iAmmoPacks )
      {
         iAmmoPacks = iPacks
         iLeader = id
      }
   }
   return iLeader;
}

GetLeader_Frags( &iFrags )
{
   new iPlayers[32], iNum, id, i, iLeader, iFrag
   get_players( iPlayers, iNum, "ch" )
    
   for ( i = 0; i < iNum; i++ )
   {
      id = iPlayers
      iFrag = get_user_frags( id )
        
      if ( iFrag > iFrags )
      {
         iFrags = iFrag
         iLeader = id
      }
   }
   return iLeader;
}


UsersGetPlaying()
{
   static iPlaying, id
   iPlaying = 0
    
   for ( id = 1; id <= g_iMaxPlayers; id++ )
   {
      if ( is_user_connected( id ) )
      {
         if ( get_user_team(id) == 1 || get_user_team(id) == 2 )
            iPlaying++
      }
   }
    
   return iPlaying;
}

public donate(id, arg[])
{
   new to[32], count[10], aName[32], vName[32], timelog[100];
   strbreak(arg, to, 31, count, 9)
   
   new ammo_sender = zp_get_user_ammo_packs(id)
   new ammo
   
   if (equal(count, "all"))
      ammo = ammo_sender
   else
      ammo = str_to_num(count)
   
   if (ammo <= 0 || ammo_sender < str_to_num(count))
   {
      zp_colored_print(id, "^x04[Zombie OutStanding]^x01 Invalid ammount.")
      return PLUGIN_CONTINUE
   }
   ammo_sender -= ammo
   new reciever = cmd_target(id, to, (CMDTARGET_ALLOW_SELF))
   if (!reciever || reciever == id)
   {
      zp_colored_print(id, "^x04[Zombie OutStanding]^x01 Invalid player.")
      return PLUGIN_CONTINUE
   }
   
   zp_set_user_ammo_packs(reciever, zp_get_user_ammo_packs(reciever) + ammo)
   zp_set_user_ammo_packs(id, ammo_sender)
   
   get_user_name(id, aName, 31)
   get_user_name(reciever, vName, 31)
   
   if(!dir_exists("addons/amxmodx/logs/donate"))
      mkdir("addons/amxmodx/logs/donate")
      
   get_time("addons/amxmodx/logs/donate/DONATE_%d%m%Y.log", timelog, 99);
   log_to_file(timelog, "Player %s donated %d packs to %s", aName, ammo, vName);
   zp_colored_print(0, "^x04[Zombie OutStanding]^x01 ^x03%s^x01 gave^x04 %d^x01 packs to^x03 %s", aName, ammo, vName)
   
   return PLUGIN_CONTINUE
}

public gold(Client)
   show_motd(Client, "http://csoutstanding.com/server/zmoldsc ... d/vip.html", "Order for VIP")

public MessageScoreAttrib( iMsgID, iDest, iReceiver ) {

    new iPlayer = get_msg_arg_int( 1 );
   
    if( is_user_connected( iPlayer ) && ( get_user_flags( iPlayer ) & VIP ) )
        set_msg_arg_int( 2, ARG_BYTE, is_user_alive( iPlayer ) ? SCOREATTRIB_VIP : SCOREATTRIB_DEAD );
}

public showStatus(id)
{
   if (is_user_connected(id) && !zp_get_user_zombie(id))
   {
      new szName[32], szHp[15], pid = read_data(2);
      get_user_name(pid, szName, 31);
      AddCommas(get_user_health(pid), szHp, charsmax(szHp))
      if (zp_get_user_zombie(pid))
      {
         set_hudmessage(255, 20, 147, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1);
         ShowSyncHudMsg(id, g_MsgSync3, "%s^nHP: %s", szName, szHp);
      }
   }
}

public hideStatus(id)
   ClearSyncHud(id, g_MsgSync3);

public AddCommas(iNum , szOutput[] , iLen)
{
   new szTmp[ 15 ] , iOutputPos , iNumPos , iNumLen;

   if (iNum < 0)
   {
      szOutput[iOutputPos++] = '-';
      iNum = abs(iNum);
   }

   iNumLen = num_to_str(iNum , szTmp , charsmax(szTmp));

   if (iNumLen <= 3)
      iOutputPos += copy(szOutput[ iOutputPos ] , iLen , szTmp);

   else
   {
      while ((iNumPos < iNumLen) && (iOutputPos < iLen)) 
      {
         szOutput[iOutputPos++] = szTmp[iNumPos++];
      
         if((iNumLen - iNumPos) && !((iNumLen - iNumPos) % 3)) 
            szOutput[iOutputPos++] = ',';
      }
      
      szOutput[iOutputPos] = EOS;
   }

   return iOutputPos;
}

fn_get_alive_players( )
{
   static i_alive, id
   i_alive = 0
   
   for ( id = 1; id <= g_iMaxPlayers; id++ )
   {
      if( is_user_alive( id ) )
         i_alive++
   }
   return i_alive;
}

stock fm_set_weapon_ammo(entity, amount)
   set_pdata_int(entity, OFFSET_CLIPAMMO, amount, OFFSET_LINUX_WEAPONS);

public CHECK_ValidPlayer(id){
   if (1<=id<=g_iMaxPlayers && is_user_alive(id))
      return 1;
   
   return 0;
}

zp_colored_print(target, const message[], any:...){
   static buffer[512], i, argscount
   argscount = numargs()
   
   if (!target)
   {
      static player
      for (player = 1; player <= g_iMaxPlayers; player++)
      {
         if (!is_user_connected(player))
            continue;
         
         static changed[5], changedcount
         changedcount = 0
         
         for (i = 2; i < argscount; i++)
         {
            if (getarg(i) == LANG_PLAYER)
            {
               setarg(i, 0, player)
               changed[changedcount] = i
               changedcount++
            }
         }
         
         vformat(buffer, charsmax(buffer), message, 3)
         
         message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player)
         write_byte(player)
         write_string(buffer)
         message_end()
         
         for (i = 0; i < changedcount; i++)
            setarg(changed, 0, LANG_PLAYER)
      }
   }

   else
   {
      vformat(buffer, charsmax(buffer), message, 3)
      
      message_begin(MSG_ONE, g_msgSayText, _, target)
      write_byte(target)
      write_string(buffer)
      message_end()
   }
}

stock set_dhudmessage( red = 0, green = 160, blue = 0, Float:x = -1.0, Float:y = 0.65, effects = 2, Float:fxtime = 6.0, Float:holdtime = 3.0, Float:fadeintime = 0.1, Float:fadeouttime = 1.5, bool:reliable = false ){
    #define clamp_byte(%1)       ( clamp( %1, 0, 255 ) )
    #define pack_color(%1,%2,%3) ( %3 + ( %2 << 8 ) + ( %1 << 16 ) )

    __dhud_color       = pack_color( clamp_byte( red ), clamp_byte( green ), clamp_byte( blue ) );
    __dhud_x           = _:x;
    __dhud_y           = _:y;
    __dhud_effect      = effects;
    __dhud_fxtime      = _:fxtime;
    __dhud_holdtime    = _:holdtime;
    __dhud_fadeintime  = _:fadeintime;
    __dhud_fadeouttime = _:fadeouttime;
    __dhud_reliable    = _:reliable;

    return 1;
}

stock show_dhudmessage( index, const message[], any:... ){
    new buffer[ 128 ];
    new numArguments = numargs();

    if( numArguments == 2 )
    {
        send_dhudMessage( index, message );
    }
    else if( index || numArguments == 3 )
    {
        vformat( buffer, charsmax( buffer ), message, 3 );
        send_dhudMessage( index, buffer );
    }
    else
    {
        new playersList[ 32 ], numPlayers;
        get_players( playersList, numPlayers, "ch" );

        if( !numPlayers )
        {
            return 0;
        }

        new Array:handleArrayML = ArrayCreate();

        for( new i = 2, j; i < numArguments; i++ )
        {
            if( getarg( i ) == LANG_PLAYER )
            {
                while( ( buffer[ j ] = getarg( i + 1, j++ ) ) ) {}
                j = 0;

                if( GetLangTransKey( buffer ) != TransKey_Bad )
                {
                    ArrayPushCell( handleArrayML, i++ );
                }
            }
        }

        new size = ArraySize( handleArrayML );

        if( !size )
        {
            vformat( buffer, charsmax( buffer ), message, 3 );
            send_dhudMessage( index, buffer );
        }
        else
        {
            for( new i = 0, j; i < numPlayers; i++ )
            {
                index = playersList[ i ];

                for( j = 0; j < size; j++ )
                {
                    setarg( ArrayGetCell( handleArrayML, j ), 0, index );
                }

                vformat( buffer, charsmax( buffer ), message, 3 );
                send_dhudMessage( index, buffer );
            }
        }

        ArrayDestroy( handleArrayML );
    }

    return 1;
}

stock send_dhudMessage( const index, const message[] ) {
    message_begin( __dhud_reliable ? ( index ? MSG_ONE : MSG_ALL ) : ( index ? MSG_ONE_UNRELIABLE : MSG_BROADCAST ), SVC_DIRECTOR, _, index );
    {
        write_byte( strlen( message ) + 31 );
        write_byte( DRC_CMD_MESSAGE );
        write_byte( __dhud_effect );
        write_long( __dhud_color );
        write_long( __dhud_x );
        write_long( __dhud_y );
        write_long( __dhud_fadeintime );
        write_long( __dhud_fadeouttime );
        write_long( __dhud_holdtime );
        write_long( __dhud_fxtime );
        write_string( message );
    }
    message_end();
}

stock fm_strip_user_weapons(index) {
   new ent = fm_create_entity("player_weaponstrip");
   if (!pev_valid(ent))
      return 0;

   dllfunc(DLLFunc_Spawn, ent);
   dllfunc(DLLFunc_Use, ent, index);
   engfunc(EngFunc_RemoveEntity, ent);

   return 1;
}

stock fm_give_item(index, const item[]) {
   if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
      return 0;

   new ent = fm_create_entity(item);
   if (!pev_valid(ent))
      return 0;

   new Float:origin[3];
   pev(index, pev_origin, origin);
   set_pev(ent, pev_origin, origin);
   set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
   dllfunc(DLLFunc_Spawn, ent);

   new save = pev(ent, pev_solid);
   dllfunc(DLLFunc_Touch, ent, index);
   if (pev(ent, pev_solid) != save)
      return ent;

   engfunc(EngFunc_RemoveEntity, ent);

   return -1;
}

stock fm_set_user_health(index, health) {
   health > 0 ? set_pev(index, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, index);

   return 1;
}

stock fm_set_user_armor(index, armor) {
   set_pev(index, pev_armorvalue, float(armor));

   return 1;
}

stock fm_set_user_godmode(index, godmode = 0) {
   set_pev(index, pev_takedamage, godmode == 1 ? DAMAGE_NO : DAMAGE_AIM);

   return 1;
}

stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) {
   new Float:RenderColor[3];
   RenderColor[0] = float(r);
   RenderColor[1] = float(g);
   RenderColor[2] = float(b);

   set_pev(entity, pev_renderfx, fx);
   set_pev(entity, pev_rendercolor, RenderColor);
   set_pev(entity, pev_rendermode, render);
   set_pev(entity, pev_renderamt, float(amount));

   return 1;
}

stock fm_find_ent_by_owner(index, const classname[], owner, jghgtype = 0) {
   new strtype[11] = "classname", ent = index;
   switch (jghgtype) {
      case 1: strtype = "target";
      case 2: strtype = "targetname";
   }

   while ((ent = engfunc(EngFunc_FindEntityByString, ent, strtype, classname)) && pev(ent, pev_owner) != owner) {}

   return ent;
}
*Or!g!naL*
Fost moderator
Fost moderator
Posts: 1367
Joined: 16 Feb 2014, 16:28
Detinator Steam: Nu
CS Status: N-avem!
Detinator server CS: Zm.Darkcs.ro
Reputatie: Fost moderator ajutator
Has thanked: 3 times
Been thanked: 1 time

21 Nov 2017, 17:07

Vezi ce erori primesti in consola serverului sau in logs
Image
User avatar
dim2k
Membru, skill +1
Membru, skill +1
Posts: 108
Joined: 16 Dec 2016, 04:03
Detinator Steam: Da
CS Status: INACTIV
Detinator server CS: da
SteamID: SideWinder_m3
Fond eXtream: 0
Location: romania
Been thanked: 2 times

21 Nov 2017, 17:18

*Or!g!naL* wrote:Vezi ce erori primesti in consola serverului sau in logs
in logs nu am erori dar cand compilez pluginul am erorile astea
http://prntscr.com/hddfwe
Post Reply

Return to “Modificari pluginuri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 6 guests