Проблем с Shop плъгин

Въпроси и проблеми свързани с AMXModX.
Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Проблем с Shop плъгин

Мнение от atmax » 08 Авг 2018, 13:10

Първо се извинявам ако темата не е качена на правилното място ако не е моля да се премести, а не да се изтрие.

Проблемът е следния добавих нов плъгин към сървъра си и той дава следната грешка в logs:

Код за потвърждение: Избери целия код

L 08/08/2018 - 12:39:16: [AMXX] Plugin "bmshop.amxx" failed to load: Plugin uses an unknown function (name "set_user_nofrost") - check your modules.ini.
Имам плъгините с които би трябвало да работи (frostnades.amxx; nademodes.amxx) за други не се сещам ако някой знае нещо моля да помогне.
Последно промяна от OciXCrom на 08 Авг 2018, 14:58, променено общо 2 пъти.
Причина: Преместена тема! Чети имената и описанията на разделите!
Rest in peace my friend I always will remember you! 🖤👊

Аватар
1fRaNkkK
Извън линия
Потребител
Потребител
Мнения: 776
Регистриран на: 09 Окт 2016, 15:21
Се отблагодари: 8 пъти
Получена благодарност: 55 пъти

Проблем с плъгин

Мнение от 1fRaNkkK » 08 Авг 2018, 13:13

Оправи си заглавието.

Аватар
illusion
Извън линия
Developer
Developer
Мнения: 1796
Регистриран на: 27 Ное 2016, 17:47
Местоположение: CraftVision
Се отблагодари: 151 пъти
Получена благодарност: 358 пъти
Обратна връзка:

Проблем с плъгин

Мнение от illusion » 08 Авг 2018, 13:13

Дай си modules.ini и пробвай да вкараш този плъгин:

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
	
new const VERSION[] =		"2.09";

#define AMMO_FLASHBANG		11
#define AMMO_HEGRENADE		12
#define AMMO_SMOKEGRENADE	13
#define OFFSET_SHIELD		510
#define HAS_SHIELD		(1<<24)
#define USING_SHIELD		(1<<16)
#define DMG_GRENADE		(1<<24) // thanks arkshine
#define FFADE_IN			0x0000 // just here so we don't pass 0 into the function
#define BREAK_GLASS		0x01

#define GLOW_AMOUNT		1.0
#define FROST_RADIUS		240.0
#define NT_FLASHBANG		(1<<0) // 1; CSW:25
#define NT_HEGRENADE		(1<<1) // 2; CSW:4
#define NT_SMOKEGRENADE		(1<<2) // 4; CSW:9
#define ICON_HASNADE		1
#define ICON_ISCHILLED		2
#define TASK_REMOVE_CHILL	100
#define TASK_REMOVE_FREEZE	200
#define TASK_NADE_EXPLODE	300
	
// used by regular_maxspeed near the bottom
new const Float:maxSpeed[31] = { 0.0, 250.0, 0.0, 260.0, 250.0, 240.0, 250.0, 250.0, 240.0, 250.0, 250.0, 250.0,
	250.0, 210.0, 240.0, 240.0, 250.0, 250.0, 210.0, 250.0, 220.0, 230.0, 230.0, 250.0, 210.0, 250.0, 250.0,
	235.0, 221.0, 250.0, 245.0 };

new pcv_enabled, pcv_override, pcv_nadetypes, pcv_teams, pcv_price, pcv_limit, pcv_buyzone, pcv_color, pcv_icon,
pcv_by_radius, pcv_hitself, pcv_los, pcv_maxdamage, pcv_mindamage, pcv_chill_maxchance, pcv_chill_minchance,
pcv_chill_duration, pcv_chill_variance, pcv_chill_speed, pcv_freeze_maxchance, pcv_freeze_minchance,
pcv_freeze_duration, pcv_freeze_variance;

new maxPlayers, gmsgCurWeapon, gmsgSetFOV, gmsgScreenFade, gmsgStatusIcon, gmsgBlinkAcct, gmsgAmmoPickup, gmsgTextMsg,
gmsgWeapPickup, glassGibs, trailSpr, smokeSpr, exploSpr, mp_friendlyfire, czero, bot_quota, czBotHams, fwdPPT, freezetime;

new isChilled[33], isFrozen[33], frostKilled[33], novaDisplay[33], Float:glowColor[33][3], Float:oldGravity[33], oldRenderFx[33], Float:chillySpeed[33],
Float:oldRenderColor[33][3], oldRenderMode[33], Float:oldRenderAmt[33], hasFrostNade[33], nadesBought[33], Float:flashOver[33], lastWeapon[33];

new bool:b_Immune[33]

public plugin_natives()
{
	register_library( "frost" )
	
	register_native( "add_user_immune", "_user_immune" )
	register_native( "remove_user_immune", "_remove_immune" )
}

public _user_immune( iPlugin, iParams )
{
	new id = get_param( 1 )
	
	b_Immune[id] = true
}

public _remove_immune( iPlugin, iParams )
{
	new id = get_param( 1 )
	
	b_Immune[id] = false
}

public plugin_init()
{
	register_plugin("FrostNades",VERSION,"Avalanche");
	register_cvar("fn_version",VERSION,FCVAR_SERVER);

	pcv_enabled = register_cvar("fn_enabled","1");
	pcv_override = register_cvar("fn_override","1");
	pcv_nadetypes = register_cvar("fn_nadetypes","4"); // NT_SMOKEGRENADE
	pcv_teams = register_cvar("fn_teams","3");
	pcv_price = register_cvar("fn_price","300");
	pcv_limit = register_cvar("fn_limit","0");
	pcv_buyzone = register_cvar("fn_buyzone","1");
	pcv_color = register_cvar("fn_color","0 206 209");
	pcv_icon = register_cvar("fn_icon","1");

	pcv_by_radius = register_cvar("fn_by_radius","0.0");
	pcv_hitself = register_cvar("fn_hitself","1");
	pcv_los = register_cvar("fn_los","1");
	pcv_maxdamage = register_cvar("fn_maxdamage","20.0");
	pcv_mindamage = register_cvar("fn_mindamage","1.0");
	pcv_chill_maxchance = register_cvar("fn_chill_maxchance","100.0");
	pcv_chill_minchance = register_cvar("fn_chill_minchance","100.0");
	pcv_chill_duration = register_cvar("fn_chill_duration","7.0");
	pcv_chill_variance = register_cvar("fn_chill_variance","1.0");
	pcv_chill_speed = register_cvar("fn_chill_speed","60.0");
	pcv_freeze_maxchance = register_cvar("fn_freeze_maxchance","110.0");
	pcv_freeze_minchance = register_cvar("fn_freeze_minchance","40.0");
	pcv_freeze_duration = register_cvar("fn_freeze_duration","4.0");
	pcv_freeze_variance = register_cvar("fn_freeze_variance","0.5");
	
	mp_friendlyfire = get_cvar_pointer("mp_friendlyfire");
	
	new mod[6];
	get_modname(mod,5);
	if(equal(mod,"czero"))
	{
		czero = 1;
		bot_quota = get_cvar_pointer("bot_quota");
	}
	
	maxPlayers = get_maxplayers();
	gmsgCurWeapon = get_user_msgid("CurWeapon");
	gmsgSetFOV = get_user_msgid("SetFOV");
	gmsgScreenFade = get_user_msgid("ScreenFade");
	gmsgStatusIcon = get_user_msgid("StatusIcon");
	gmsgBlinkAcct = get_user_msgid("BlinkAcct");
	gmsgAmmoPickup = get_user_msgid("AmmoPickup");
	gmsgWeapPickup = get_user_msgid("WeapPickup");
	gmsgTextMsg = get_user_msgid("TextMsg");

	register_event("ScreenFade","event_flashed","be","4=255","5=255","6=255","7>199"); // hit by a flashbang

	register_forward(FM_SetModel,"fw_setmodel",1);
	register_message(get_user_msgid("DeathMsg"),"msg_deathmsg");

	register_event("SetFOV","event_setfov","b");
	register_event("CurWeapon","event_curweapon","b","1=1");
	register_event("AmmoX","event_ammox","b","1=11","1=12","1=13"); // flash, HE, smoke
		
	register_event("HLTV","event_new_round","a","1=0","2=0");
	register_logevent("logevent_round_start",2,"1=Round_Start");

	RegisterHam(Ham_Spawn,"player","ham_player_spawn",1);
	RegisterHam(Ham_Killed,"player","ham_player_killed",1);
	RegisterHam(Ham_Think,"grenade","ham_grenade_think",0);
	
	register_clcmd("say /fn","buy_frostnade");
	register_clcmd("say_team /fn","buy_frostnade");
	register_clcmd("say /frostnade","buy_frostnade");
	register_clcmd("say_team /frostnade","buy_frostnade");
}

public plugin_precache()
{
	precache_model("models/frostnova.mdl");
	glassGibs = precache_model("models/glassgibs.mdl");

	precache_sound("warcraft3/frostnova.wav"); // grenade explodes
	precache_sound("warcraft3/impalehit.wav"); // player is frozen
	precache_sound("warcraft3/impalelaunch1.wav"); // frozen wears off
	precache_sound("player/pl_duct2.wav"); // player is chilled
	precache_sound("items/gunpickup2.wav"); // player buys frostnade

	trailSpr = precache_model("sprites/laserbeam.spr");
	smokeSpr = precache_model("sprites/steam1.spr");
	exploSpr = precache_model("sprites/shockwave.spr");
}

public client_putinserver(id)
{
	isChilled[id] = 0;
	isFrozen[id] = 0;
	frostKilled[id] = 0;
	novaDisplay[id] = 0;
	hasFrostNade[id] = 0;
	chillySpeed[id] = 0.0;
	
	if(czero && !czBotHams && is_user_bot(id) && get_pcvar_num(bot_quota) > 0)
		set_task(0.1,"czbot_hook_ham",id);
}

public client_disconnect(id)
{
	if(isChilled[id]) task_remove_chill(TASK_REMOVE_CHILL+id);
	if(isFrozen[id]) task_remove_freeze(TASK_REMOVE_FREEZE+id);
}

// registering a ham hook for "player" won't register it for CZ bots,
// for some reason. so we have to register it by entity. 
public czbot_hook_ham(id)
{
	if(!czBotHams && is_user_connected(id) && is_user_bot(id) && get_pcvar_num(bot_quota) > 0)
	{
		RegisterHamFromEntity(Ham_Spawn,id,"ham_player_spawn",1);
		RegisterHamFromEntity(Ham_Killed,id,"ham_player_killed",1);
		czBotHams = 1;
	}
}

/****************************************
* PRIMARY FUNCTIONS AND SUCH
****************************************/

public buy_frostnade(id)
{
	if(!get_pcvar_num(pcv_enabled) || get_pcvar_num(pcv_override))
		return PLUGIN_CONTINUE;

	if(!is_user_alive(id)) return PLUGIN_HANDLED;

	if(get_pcvar_num(pcv_buyzone) && !cs_get_user_buyzone(id))
	{
		client_print(id,print_center,"You are not in a buy zone."); // #Cstrike_NotInBuyZone won't work
		return PLUGIN_HANDLED;
	}

	if(!(get_pcvar_num(pcv_teams) & _:cs_get_user_team(id)))
	{
		// have to do it this way to format
		message_begin(MSG_ONE,gmsgTextMsg,_,id);
		write_byte(print_center);
		write_string("#Alias_Not_Avail");
		write_string("Frost Grenade");
		message_end();

		return PLUGIN_HANDLED;
	}

	if(hasFrostNade[id])
	{
		client_print(id,print_center,"#Cstrike_Already_Own_Weapon");
		return PLUGIN_HANDLED;
	}
	
	new limit = get_pcvar_num(pcv_limit);
	if(limit && nadesBought[id] >= limit)
	{
		client_print(id,print_center,"#Cstrike_TitlesTXT_Cannot_Carry_Anymore");
		return PLUGIN_HANDLED;
	}
	
	new money = cs_get_user_money(id), price = get_pcvar_num(pcv_price);

	// need more vespene gas
	if(money < price)
	{
		client_print(id,print_center,"#Cstrike_TitlesTXT_Not_Enough_Money");
		
		message_begin(MSG_ONE_UNRELIABLE,gmsgBlinkAcct,_,id);
		write_byte(2);
		message_end();

		return PLUGIN_HANDLED;
	}
	
	// try to use smokegrenade, then flashbang, then hegrenade
	new wpnid = CSW_SMOKEGRENADE, ammoid = AMMO_SMOKEGRENADE, wpnName[20] = "weapon_smokegrenade", type = get_pcvar_num(pcv_nadetypes);
	if(!(type & NT_SMOKEGRENADE))
	{
		if(type & NT_FLASHBANG)
		{
			wpnid = CSW_FLASHBANG;
			ammoid = AMMO_FLASHBANG;
			wpnName = "weapon_flashbang";
		}
		else if(type & NT_HEGRENADE)
		{
			wpnid = CSW_HEGRENADE;
			ammoid = AMMO_HEGRENADE;
			wpnName = "weapon_hegrenade";
		}
	}
	
	hasFrostNade[id] = wpnid;
	nadesBought[id]++;
	cs_set_user_money(id,money - price);

	new ammo = cs_get_user_bpammo(id,wpnid);

	// give him one
	if(!ammo) ham_give_weapon(id,wpnName);
	else
	{
		cs_set_user_bpammo(id,wpnid,ammo+1);
		
		// just so the player can see what kind it is on his HUD

		message_begin(MSG_ONE,gmsgAmmoPickup,_,id);
		write_byte(ammoid);
		write_byte(ammo+1);
		message_end();

		message_begin(MSG_ONE,gmsgWeapPickup,_,id);
		write_byte(wpnid);
		message_end();
	}

	// won't play via ham_give_weapon or cs_set_user_bpammo
	engfunc(EngFunc_EmitSound,id,CHAN_ITEM,"items/gunpickup2.wav",VOL_NORM,ATTN_NORM,0,PITCH_NORM);
	
	return PLUGIN_HANDLED;
}

// the round ends or starts
public event_round_change()
{
	if(!get_pcvar_num(pcv_enabled)) return;

	for(new i=1;i<=maxPlayers;i++)
	{
		if(is_user_alive(i))
		{
			if(isChilled[i]) task_remove_chill(TASK_REMOVE_CHILL+i);
			if(isFrozen[i]) task_remove_freeze(TASK_REMOVE_FREEZE+i);
		}
	}
}

// the round ends
public event_round_end()
{
	if(!get_pcvar_num(pcv_enabled)) return;

	for(new i=1;i<=maxPlayers;i++)
	{
		if(is_user_alive(i))
		{
			if(isChilled[i]) task_remove_chill(TASK_REMOVE_CHILL+i);
			if(isFrozen[i]) task_remove_freeze(TASK_REMOVE_FREEZE+i);
		}
	}
}

// flashbanged
public event_flashed(id)
{
	// remember end of flashbang
	flashOver[id] = get_gametime() + (float(read_data(1)) / 4096.0);
}

public fw_setmodel(ent,model[])
{
	if(!get_pcvar_num(pcv_enabled)) return FMRES_IGNORED;

	new owner = pev(ent,pev_owner);
	if(!is_user_connected(owner)) return FMRES_IGNORED;
	
	// this isn't going to explode
	new Float:dmgtime;
	pev(ent,pev_dmgtime,dmgtime);
	if(dmgtime == 0.0) return FMRES_IGNORED;
	
	new type, csw;
	if(model[7] == 'w' && model[8] == '_')
	{
		switch(model[9])
		{
			case 'h': { type = NT_HEGRENADE; csw = CSW_HEGRENADE; }
			case 'f': { type = NT_FLASHBANG; csw = CSW_FLASHBANG; }
			case 's': { type = NT_SMOKEGRENADE; csw = CSW_SMOKEGRENADE; }
		}
	}
	if(!type) return FMRES_IGNORED;
	
	new team = _:cs_get_user_team(owner);

	// have a frostnade (override off) ;OR; override enabled, on valid team, using valid frostnade type
	if(hasFrostNade[owner] == csw ||
	(get_pcvar_num(pcv_override) && (get_pcvar_num(pcv_teams) & team) && (get_pcvar_num(pcv_nadetypes) & type)))
	{
		hasFrostNade[owner] = 0;

		set_pev(ent,pev_team,team);
		set_pev(ent,pev_bInDuck,1); // flag it as a frostnade

		new Float:rgb[3];
		get_rgb_colors(team,rgb);
		
		// glowshell
		set_pev(ent,pev_rendermode,kRenderNormal);
		set_pev(ent,pev_renderfx,kRenderFxGlowShell);
		set_pev(ent,pev_rendercolor,rgb);
		set_pev(ent,pev_renderamt,16.0);

		set_beamfollow(ent,10,10,rgb,100);
	}

	return FMRES_IGNORED;
}

// freeze a player in place whilst he's frozen
public fw_playerprethink(id)
{
	/*if(isChilled[id])
	{
		// remember rendering changes
		new fx = pev(id,pev_renderfx), Float:color[3], mode = pev(id,pev_rendermode), Float:amount;
		pev(id,pev_rendercolor,color);
		pev(id,pev_renderamt,amount);

		if(fx != kRenderFxGlowShell)
		{
			oldRenderFx[id] = fx;
			set_pev(id,pev_renderfx,kRenderFxGlowShell);
		}
		if(color[0] != glowColor[id][0] || color[1] != glowColor[id][1] || color[2] != glowColor[id][2])
		{
			oldRenderColor[id] = color;
			set_pev(id,pev_rendercolor,glowColor[id]);
		}
		if(mode != kRenderNormal)
		{
			oldRenderMode[id] = mode;
			set_pev(id,pev_rendermode,kRenderNormal);
		}
		if(amount != GLOW_AMOUNT)
		{
			oldRenderAmt[id] = amount;
			set_pev(id,pev_renderamt,GLOW_AMOUNT);
		}
	}*/

	if(isFrozen[id])
	{
		set_pev(id,pev_velocity,Float:{0.0,0.0,0.0}); // stop motion
		engfunc(EngFunc_SetClientMaxspeed,id,0.00001); // keep immobile
		
		new Float:gravity;
		pev(id,pev_gravity,gravity);
		
		// remember any gravity changes
		if(gravity != 0.000000001 && gravity != 999999999.9)
			oldGravity[id] = gravity;

		// if are on the ground and about to jump, set the gravity too high to really do so
		if((pev(id,pev_button) & IN_JUMP) && !(pev(id,pev_oldbuttons) & IN_JUMP) && (pev(id,pev_flags) & FL_ONGROUND))
			set_pev(id,pev_gravity,999999999.9);

		// otherwise, set the gravity so low that they don't fall
		else set_pev(id,pev_gravity,0.000000001);
	}
	
	return FMRES_IGNORED;
}

// override grenade kill message with skull and crossbones
public msg_deathmsg(msg_id,msg_dest,msg_entity)
{
	new victim = get_msg_arg_int(2);
	if(!is_user_connected(victim) || !frostKilled[victim]) return PLUGIN_CONTINUE;

	static weapon[8];
	get_msg_arg_string(4,weapon,7);
	if(equal(weapon,"grenade")) set_msg_arg_string(4,"frostgrenade");

	frostKilled[victim] = 0;
	return PLUGIN_CONTINUE;
}

// maintain speed on FOV changes
public event_setfov(id)
{
	if(get_pcvar_num(pcv_enabled) && is_user_alive(id) && isChilled[id] && !isFrozen[id])
	{
		new Float:maxspeed;
		pev(id,pev_maxspeed,maxspeed);
		if(maxspeed != chillySpeed[id]) engfunc(EngFunc_SetClientMaxspeed,id,chillySpeed[id]);
	}
}

// maintain speed on weapon changes
public event_curweapon(id)
{
	new weapon = read_data(2);

	if(get_pcvar_num(pcv_enabled) && is_user_alive(id))
	{
		if(isChilled[id] && weapon != lastWeapon[id])
		{
			new Float:maxspeed;
			pev(id,pev_maxspeed,maxspeed);
			chillySpeed[id] = maxspeed * get_pcvar_float(pcv_chill_speed) / 100.0;
			if(!isFrozen[id]) engfunc(EngFunc_SetClientMaxspeed,id,chillySpeed[id]);
		}

		if(isFrozen[id]) engfunc(EngFunc_SetClientMaxspeed,id,0.00001);

		if(get_pcvar_num(pcv_icon) == ICON_HASNADE) manage_icon(id,ICON_HASNADE);
	}

	lastWeapon[id] = weapon;
}

// a player's grenade ammo changes
public event_ammox(id)
{
	if(get_pcvar_num(pcv_enabled) && is_user_connected(id))
	{
		if(hasFrostNade[id] && !cs_get_user_bpammo(id,hasFrostNade[id])) hasFrostNade[id] = 0; // just lost my frost grenade
		if(get_pcvar_num(pcv_icon) == ICON_HASNADE) manage_icon(id,ICON_HASNADE);
	}
}

public event_new_round()
{
	freezetime = 1;
}

public logevent_round_start()
{
	freezetime = 0;
}

// rezzed
public ham_player_spawn(id)
{
	nadesBought[id] = 0;
	
	if(is_user_alive(id))
	{
		if(isChilled[id]) task_remove_chill(TASK_REMOVE_CHILL+id);
		if(isFrozen[id]) task_remove_freeze(TASK_REMOVE_FREEZE+id);
	}
}

// killed to death
public ham_player_killed(id)
{
	// these two should technically be caught by ammox first
	hasFrostNade[id] = 0;
	if(get_pcvar_num(pcv_icon) == ICON_HASNADE) manage_icon(id,ICON_HASNADE);

	if(isChilled[id]) task_remove_chill(TASK_REMOVE_CHILL+id);
	if(isFrozen[id]) task_remove_freeze(TASK_REMOVE_FREEZE+id);
}

// grenade is ticking away
public ham_grenade_think(ent)
{
	// not a frostnade
	if(!pev(ent,pev_bInDuck)) return FMRES_IGNORED;
	
	new Float:dmgtime;
	pev(ent,pev_dmgtime,dmgtime);
	if(dmgtime > get_gametime()) return FMRES_IGNORED;
	
	// and boom goes the dynamite
	frostnade_explode(ent);

	return FMRES_SUPERCEDE;
}

// a frost grenade explodes
public frostnade_explode(ent)
{
	new nadeTeam = pev(ent,pev_team), owner = pev(ent,pev_owner), Float:nadeOrigin[3];
	pev(ent,pev_origin,nadeOrigin);
	
	// make the smoke
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
	write_byte(TE_SMOKE);
	write_coord(floatround(nadeOrigin[0])); // x
	write_coord(floatround(nadeOrigin[1])); // y
	write_coord(floatround(nadeOrigin[2])); // z
	write_short(smokeSpr); // sprite
	write_byte(random_num(30,40)); // scale
	write_byte(5); // framerate
	message_end();
	
	// explosion
	create_blast(nadeTeam,nadeOrigin);
	emit_sound(ent,CHAN_BODY,"warcraft3/frostnova.wav",VOL_NORM,ATTN_NORM,0,PITCH_NORM);

	// cache our cvars
	new ff = get_pcvar_num(mp_friendlyfire), Float:by_radius = get_pcvar_float(pcv_by_radius),
	hitself = get_pcvar_num(pcv_hitself), los = get_pcvar_num(pcv_los), Float:maxdamage = get_pcvar_float(pcv_maxdamage),
	Float:mindamage = get_pcvar_float(pcv_mindamage), Float:chill_maxchance = get_pcvar_float(pcv_chill_maxchance),
	Float:chill_minchance = get_pcvar_float(pcv_chill_minchance), Float:freeze_maxchance, Float:freeze_minchance;

	if(!by_radius)
	{
		freeze_maxchance = get_pcvar_float(pcv_freeze_maxchance);
		freeze_minchance = get_pcvar_float(pcv_freeze_minchance);
	}

	new ta, Float:targetOrigin[3], Float:distance, tr = create_tr2(), Float:fraction, Float:damage, gotFrozen;
	for(new target=1;target<=maxPlayers;target++)
	{
		// dead, invincible, or self attack that is not allowed
		if(!is_user_alive(target) || b_Immune[target] || pev(target,pev_takedamage) == DAMAGE_NO
		|| (pev(target,pev_flags) & FL_GODMODE) ||(target == owner && !hitself))
			continue;
		
		// this is a team attack with ff disabled, excluding self attack
		ta = (_:cs_get_user_team(target) == nadeTeam);
		if(ta && !ff && target != owner) continue;
		
		pev(target,pev_origin,targetOrigin);
		distance = vector_distance(nadeOrigin,targetOrigin);
		
		// too far
		if(distance > FROST_RADIUS) continue;

		// check line of sight
		if(los)
		{
			nadeOrigin[2] += 2.0;
			engfunc(EngFunc_TraceLine,nadeOrigin,targetOrigin,DONT_IGNORE_MONSTERS,ent,tr);
			nadeOrigin[2] -= 2.0;

			get_tr2(tr,TR_flFraction,fraction);
			if(fraction != 1.0 && get_tr2(tr,TR_pHit) != target) continue;
		}

		// damaged
		if(maxdamage > 0.0)
		{
			damage = radius_calc(distance,FROST_RADIUS,maxdamage,mindamage);
			if(ta) damage /= 2.0; // half damage for friendlyfire

			if(damage > 0.0)
			{
				frostKilled[target] = 1;
				ExecuteHamB(Ham_TakeDamage,target,ent,owner,damage,DMG_GRENADE);
				if(!is_user_alive(target)) continue; // dead now
				frostKilled[target] = 0;
			}
		}

		// frozen
		if((by_radius && radius_calc(distance,FROST_RADIUS,100.0,0.0) >= by_radius)
		|| (!by_radius && random_num(1,100) <= floatround(radius_calc(distance,FROST_RADIUS,freeze_maxchance,freeze_minchance))))
		{
			gotFrozen = 1;

			freeze_player(target,nadeTeam);
			emit_sound(target,CHAN_BODY,"warcraft3/impalehit.wav",VOL_NORM,ATTN_NORM,0,PITCH_HIGH);
		}
		else gotFrozen = 0;
		
		// chilled
		if(by_radius || random_num(1,100) <= floatround(radius_calc(distance,FROST_RADIUS,chill_maxchance,chill_minchance)))
		{
			chill_player(target,nadeTeam);
			if(!gotFrozen) emit_sound(target,CHAN_BODY,"player/pl_duct2.wav",VOL_NORM,ATTN_NORM,0,PITCH_LOW);
		}
	}

	free_tr2(tr);
	set_pev(ent,pev_flags,pev(ent,pev_flags)|FL_KILLME);
}

freeze_player(id,nadeTeam)
{
	if(!isFrozen[id])
	{
		//oldGravity[id] = 1.0;
		pev(id,pev_gravity,oldGravity[id]);

		// register our forward only when we need it
		if(!fwdPPT) fwdPPT = register_forward(FM_PlayerPreThink,"fw_playerprethink",0);
		
		if(!chillySpeed[id])
		{
			new Float:maxspeed;
			pev(id,pev_maxspeed,maxspeed);
			chillySpeed[id] = maxspeed * get_pcvar_float(pcv_chill_speed) / 100.0;
		}
	}

	isFrozen[id] = nadeTeam;
	
	set_pev(id,pev_velocity,Float:{0.0,0.0,0.0});
	engfunc(EngFunc_SetClientMaxspeed,id,0.00001);
	
	new Float:duration = get_pcvar_float(pcv_freeze_duration), Float:variance = get_pcvar_float(pcv_freeze_variance);
	duration += random_float(-variance,variance);

	remove_task(TASK_REMOVE_FREEZE+id);
	set_task(duration,"task_remove_freeze",TASK_REMOVE_FREEZE+id);
	
	if(!pev_valid(novaDisplay[id])) create_nova(id);
	
	if(get_pcvar_num(pcv_icon) == ICON_ISCHILLED) manage_icon(id,ICON_ISCHILLED);
}

public task_remove_freeze(taskid)
{
	new id = taskid-TASK_REMOVE_FREEZE;
	
	if(pev_valid(novaDisplay[id]))
	{
		new origin[3], Float:originF[3];
		pev(novaDisplay[id],pev_origin,originF);
		FVecIVec(originF,origin);

		// add some tracers
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
		write_byte(TE_IMPLOSION);
		write_coord(origin[0]); // x
		write_coord(origin[1]); // y
		write_coord(origin[2] + 8); // z
		write_byte(64); // radius
		write_byte(10); // count
		write_byte(3); // duration
		message_end();

		// add some sparks
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
		write_byte(TE_SPARKS);
		write_coord(origin[0]); // x
		write_coord(origin[1]); // y
		write_coord(origin[2]); // z
		message_end();

		// add the shatter
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
		write_byte(TE_BREAKMODEL);
		write_coord(origin[0]); // x
		write_coord(origin[1]); // y
		write_coord(origin[2] + 24); // z
		write_coord(16); // size x
		write_coord(16); // size y
		write_coord(16); // size z
		write_coord(random_num(-50,50)); // velocity x
		write_coord(random_num(-50,50)); // velocity y
		write_coord(25); // velocity z
		write_byte(10); // random velocity
		write_short(glassGibs); // model
		write_byte(10); // count
		write_byte(25); // life
		write_byte(BREAK_GLASS); // flags
		message_end();

		emit_sound(novaDisplay[id],CHAN_BODY,"warcraft3/impalelaunch1.wav",VOL_NORM,ATTN_NORM,0,PITCH_LOW);
		set_pev(novaDisplay[id],pev_flags,pev(novaDisplay[id],pev_flags)|FL_KILLME);
	}

	isFrozen[id] = 0;
	novaDisplay[id] = 0;
	
	// unregister forward if we are no longer using it
	unregister_prethink();

	if(!is_user_connected(id)) return;
	
	restore_speed(id);
	set_pev(id,pev_gravity,oldGravity[id]);
	
	// sometimes trail fades during freeze, reapply
	if(isChilled[id])
	{
		new Float:rgb[3];
		get_rgb_colors(isChilled[id],rgb);
		set_beamfollow(id,30,8,rgb,100);
	}
	
	if(get_pcvar_num(pcv_icon) == ICON_ISCHILLED) manage_icon(id,ICON_ISCHILLED);
}

chill_player(id,nadeTeam)
{
	// we aren't already been chilled
	if(!isChilled[id])
	{
		oldRenderFx[id] = pev(id,pev_renderfx);
		pev(id,pev_rendercolor,oldRenderColor[id]);
		oldRenderMode[id] = pev(id,pev_rendermode);
		pev(id,pev_renderamt,oldRenderAmt[id]);

		isChilled[id] = nadeTeam; // fix -- thanks Exolent

		if(!isFrozen[id])
		{
			new Float:maxspeed;
			pev(id,pev_maxspeed,maxspeed);
			chillySpeed[id] = maxspeed * get_pcvar_float(pcv_chill_speed) / 100.0;
			engfunc(EngFunc_SetClientMaxspeed,id,chillySpeed[id]);
		}

		// register our forward only when we need it
		//if(!fwdPPT) fwdPPT = register_forward(FM_PlayerPreThink,"fw_playerprethink",0);
	}
	
	isChilled[id] = nadeTeam;
	
	new Float:duration = get_pcvar_float(pcv_chill_duration), Float:variance = get_pcvar_float(pcv_chill_variance);
	duration += random_float(-variance,variance);

	remove_task(TASK_REMOVE_CHILL+id);
	set_task(duration,"task_remove_chill",TASK_REMOVE_CHILL+id);

	new Float:rgb[3];
	get_rgb_colors(nadeTeam,rgb);
	
	glowColor[id] = rgb;
	
	// glowshell
	set_pev(id,pev_rendermode,kRenderNormal);
	set_pev(id,pev_renderfx,kRenderFxGlowShell);
	set_pev(id,pev_rendercolor,rgb);
	set_pev(id,pev_renderamt,GLOW_AMOUNT);

	set_beamfollow(id,30,8,rgb,100);

	// I decided to let the frostnade tint override a flashbang,
	// because if you are frozen, then you have much bigger problems.

	// add a blue tint to their screen
	message_begin(MSG_ONE,gmsgScreenFade,_,id);
	write_short(floatround(4096.0 * duration)); // duration
	write_short(floatround(3072.0 * duration)); // hold time (4096.0 * 0.75)
	write_short(FFADE_IN); // flags
	write_byte(floatround(rgb[0])); // red
	write_byte(floatround(rgb[1])); // green
	write_byte(floatround(rgb[2])); // blue
	write_byte(100); // alpha
	message_end();
	
	if(get_pcvar_num(pcv_icon) == ICON_ISCHILLED) manage_icon(id,ICON_ISCHILLED);
}

public task_remove_chill(taskid)
{
	new id = taskid-TASK_REMOVE_CHILL;

	isChilled[id] = 0;
	
	// unregister forward if we are no longer using it
	//unregister_prethink();

	if(!is_user_connected(id)) return;

	if(!isFrozen[id]) restore_speed(id);
	chillySpeed[id] = 0.0;

	// reset rendering
	set_pev(id,pev_renderfx,oldRenderFx[id]);
	set_pev(id,pev_rendercolor,oldRenderColor[id]);
	set_pev(id,pev_rendermode,oldRenderMode[id]);
	set_pev(id,pev_renderamt,oldRenderAmt[id]);

	clear_beamfollow(id);
	
	// not blinded
	if(get_gametime() >= flashOver[id])
	{
		// clear tint
		message_begin(MSG_ONE,gmsgScreenFade,_,id);
		write_short(0); // duration
		write_short(0); // hold time
		write_short(FFADE_IN); // flags
		write_byte(0); // red
		write_byte(0); // green
		write_byte(0); // blue
		write_byte(255); // alpha
		message_end();
	}
	
	if(get_pcvar_num(pcv_icon) == ICON_ISCHILLED) manage_icon(id,ICON_ISCHILLED);
}

// set maxspeed back to regular
restore_speed(id)
{
	if(freezetime) return;

	engfunc(EngFunc_SetClientMaxspeed,id,regular_maxspeed(id));

	lastWeapon[id] = 0;

	new clip, weapon = get_user_weapon(id,clip);
	emessage_begin(MSG_ONE,gmsgCurWeapon,_,id);
	ewrite_byte(1); // is current
	ewrite_byte(weapon); // weapon id
	ewrite_byte(clip); // clip ammo
	emessage_end();

	new Float:fov;
	pev(id,pev_fov,fov);
	emessage_begin(MSG_ONE,gmsgSetFOV,_,id);
	ewrite_byte(floatround(fov));
	emessage_end();
}

// make a frost nova at a player's feet
create_nova(id)
{
	new nova = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target"));

	engfunc(EngFunc_SetSize,nova,Float:{-8.0,-8.0,-4.0},Float:{8.0,8.0,4.0});
	engfunc(EngFunc_SetModel,nova,"models/frostnova.mdl");

	// random orientation
	new Float:angles[3];
	angles[1] = random_float(0.0,360.0);
	set_pev(nova,pev_angles,angles);

	// put it at their feet
	new Float:playerMins[3], Float:novaOrigin[3];
	pev(id,pev_mins,playerMins);
	pev(id,pev_origin,novaOrigin);
	novaOrigin[2] += playerMins[2];
	engfunc(EngFunc_SetOrigin,nova,novaOrigin);

	// make it translucent
	get_rgb_colors(isFrozen[id],angles); // let's just use angles
	set_pev(nova,pev_rendercolor,angles); // ^
	set_pev(nova,pev_rendermode,kRenderTransColor);
	set_pev(nova,pev_renderamt,100.0);

	novaDisplay[id] = nova;
}

// manage our snowflake (show it, hide it, flash it?)
manage_icon(id,mode)
{
	new status, team = _:cs_get_user_team(id);
	
	if(get_pcvar_num(pcv_enabled))
	{
		// so if I have it, status = 1; if I also have it out, status = 2
		if(mode == ICON_HASNADE)
		{
			if(hasFrostNade[id])
			{
				status = 1;
				if(get_user_weapon(id) == hasFrostNade[id]) status = 2;
			}
			else if(get_pcvar_num(pcv_override) && (get_pcvar_num(pcv_teams) & team))
			{
				new weapon = get_user_weapon(id), types = get_pcvar_num(pcv_nadetypes);

				if(types & NT_HEGRENADE)
				{
					if(cs_get_user_bpammo(id,CSW_HEGRENADE))
					{
						status = 1;
						if(weapon == CSW_HEGRENADE) status = 2;
					}
				}
				if(status != 2 && (types & NT_SMOKEGRENADE))
				{
					if(cs_get_user_bpammo(id,CSW_SMOKEGRENADE))
					{
						status = 1;
						if(weapon == CSW_SMOKEGRENADE) status = 2;
					}
				}
				if(status != 2 && (types & NT_FLASHBANG))
				{
					if(cs_get_user_bpammo(id,CSW_FLASHBANG))
					{
						status = 1;
						if(weapon == CSW_FLASHBANG) status = 2;
					}
				}
			}
		}
		else // ICON_ISCHILLED
		{
			if(isFrozen[id]) status = 2;
			else if(isChilled[id]) status = 1;
		}
	}
	
	new Float:rgb[3];
	if(status) get_rgb_colors(team,rgb); // only get colors if we need to
	
	message_begin(MSG_ONE_UNRELIABLE,gmsgStatusIcon,_,id);
	write_byte(status); // status (0=hide, 1=show, 2=flash)
	write_string("dmg_cold"); // sprite name
	write_byte(floatround(rgb[0])); // red
	write_byte(floatround(rgb[1])); // green
	write_byte(floatround(rgb[2])); // blue
	message_end();
}

/****************************************
* UTILITY FUNCTIONS
****************************************/

// check if prethink is still being used, if not, unhook it
unregister_prethink()
{
	if(fwdPPT)
	{
		new i;
		for(i=1;i<=maxPlayers;i++) if(isChilled[i] || isFrozen[i]) break;
		if(i > maxPlayers)
		{
			unregister_forward(FM_PlayerPreThink,fwdPPT,0);
			fwdPPT = 0;
		}
	}
}

// make the explosion effects
create_blast(team,Float:originF[3])
{
	new origin[3];
	FVecIVec(originF,origin);

	new Float:rgbF[3], rgb[3];
	get_rgb_colors(team,rgbF);
	FVecIVec(rgbF,rgb);

	// smallest ring
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
	write_byte(TE_BEAMCYLINDER);
	write_coord(origin[0]); // x
	write_coord(origin[1]); // y
	write_coord(origin[2]); // z
	write_coord(origin[0]); // x axis
	write_coord(origin[1]); // y axis
	write_coord(origin[2] + 385); // z axis
	write_short(exploSpr); // sprite
	write_byte(0); // start frame
	write_byte(0); // framerate
	write_byte(4); // life
	write_byte(60); // width
	write_byte(0); // noise
	write_byte(rgb[0]); // red
	write_byte(rgb[1]); // green
	write_byte(rgb[2]); // blue
	write_byte(100); // brightness
	write_byte(0); // speed
	message_end();

	// medium ring
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
	write_byte(TE_BEAMCYLINDER);
	write_coord(origin[0]); // x
	write_coord(origin[1]); // y
	write_coord(origin[2]); // z
	write_coord(origin[0]); // x axis
	write_coord(origin[1]); // y axis
	write_coord(origin[2] + 470); // z axis
	write_short(exploSpr); // sprite
	write_byte(0); // start frame
	write_byte(0); // framerate
	write_byte(4); // life
	write_byte(60); // width
	write_byte(0); // noise
	write_byte(rgb[0]); // red
	write_byte(rgb[1]); // green
	write_byte(rgb[2]); // blue
	write_byte(100); // brightness
	write_byte(0); // speed
	message_end();

	// largest ring
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
	write_byte(TE_BEAMCYLINDER);
	write_coord(origin[0]); // x
	write_coord(origin[1]); // y
	write_coord(origin[2]); // z
	write_coord(origin[0]); // x axis
	write_coord(origin[1]); // y axis
	write_coord(origin[2] + 555); // z axis
	write_short(exploSpr); // sprite
	write_byte(0); // start frame
	write_byte(0); // framerate
	write_byte(4); // life
	write_byte(60); // width
	write_byte(0); // noise
	write_byte(rgb[0]); // red
	write_byte(rgb[1]); // green
	write_byte(rgb[2]); // blue
	write_byte(100); // brightness
	write_byte(0); // speed
	message_end();

	// light effect
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
	write_byte(TE_DLIGHT);
	write_coord(origin[0]); // x
	write_coord(origin[1]); // y
	write_coord(origin[2]); // z
	write_byte(floatround(FROST_RADIUS/5.0)); // radius
	write_byte(rgb[0]); // r
	write_byte(rgb[1]); // g
	write_byte(rgb[2]); // b
	write_byte(8); // life
	write_byte(60); // decay rate
	message_end();
}

// give an entity a beam trail
set_beamfollow(ent,life,width,Float:rgb[3],brightness)
{
	clear_beamfollow(ent);

	message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
	write_byte(TE_BEAMFOLLOW);
	write_short(ent); // entity
	write_short(trailSpr); // sprite
	write_byte(life); // life
	write_byte(width); // width
	write_byte(floatround(rgb[0])); // red
	write_byte(floatround(rgb[1])); // green
	write_byte(floatround(rgb[2])); // blue
	write_byte(brightness); // brightness
	message_end();
}

// removes beam trails from an entity
clear_beamfollow(ent)
{
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
	write_byte(TE_KILLBEAM);
	write_short(ent); // entity
	message_end();
}	

// gets the regular maxspeed for this player based on his weapon
Float:regular_maxspeed(id)
{
	if(!is_user_alive(id)) return 0.0;
	
	new shield = get_pdata_int(id,OFFSET_SHIELD);
	if(shield & USING_SHIELD) return 180.0;
	if(shield & HAS_SHIELD) return 250.0;
	
	new weapon = get_user_weapon(id);
	if(weapon < 0 || weapon > 30) return 0.0;
	
	return maxSpeed[weapon];
}

// gets RGB colors from the cvar
get_rgb_colors(team,Float:rgb[3])
{
	static color[12], parts[3][4];
	get_pcvar_string(pcv_color,color,11);
	
	// if cvar is set to "team", use colors based on the given team
	if(equali(color,"team",4))
	{
		if(team == 1)
		{
			rgb[0] = 150.0;
			rgb[1] = 0.0;
			rgb[2] = 0.0;
		}
		else
		{
			rgb[0] = 0.0;
			rgb[1] = 0.0;
			rgb[2] = 150.0;
		}
	}
	else
	{
		parse(color,parts[0],3,parts[1],3,parts[2],3);
		rgb[0] = floatstr(parts[0]);
		rgb[1] = floatstr(parts[1]);
		rgb[2] = floatstr(parts[2]);
	}
}

// scale a value equally (inversely?) with the distance that something
// is from the center of another thing. that makes pretty much no sense,
// so basically, the closer we are to the center of a ring, the higher
// our value gets.
//
// EXAMPLE: distance = 60.0, radius = 240.0, maxVal = 100.0, minVal = 20.0
// we are 0.75 (1.0-(60.0/240.0)) of the way to the radius, so scaled with our
// values, it comes out to 80.0 (20.0 + (0.75 * (100.0 - 20.0)))
Float:radius_calc(Float:distance,Float:radius,Float:maxVal,Float:minVal)
{
	if(maxVal <= 0.0) return 0.0;
	if(minVal >= maxVal) return minVal;
	return minVal + ((1.0 - (distance / radius)) * (maxVal - minVal));
}

// gives a player a weapon efficiently
stock ham_give_weapon(id,weapon[])
{
	if(!equal(weapon,"weapon_",7)) return 0;

	new wEnt = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,weapon));
	if(!pev_valid(wEnt)) return 0;

 	set_pev(wEnt,pev_spawnflags,SF_NORESPAWN);
	dllfunc(DLLFunc_Spawn,wEnt);
	
	if(!ExecuteHamB(Ham_AddPlayerItem,id,wEnt))
	{
		if(pev_valid(wEnt)) set_pev(wEnt,pev_flags,pev(wEnt,pev_flags) | FL_KILLME);
		return 0;
	}

	ExecuteHamB(Ham_Item_AttachToPlayer,wEnt,id)
	return 1;
}

Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Проблем с Shop плъгин

Мнение от atmax » 08 Авг 2018, 13:24

Код за потвърждение: Избери целия код

;;;
; To enable a module, remove the semi-colon (;) in front of its name.
; If it's not here, simply add it its name, one per line.
; You don't need to write the _amxx part or the file extension.
;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; SQL Modules usually need to be enabled manually ;;
;; You can have any number on at a time.  Use      ;;
;;  amx_sql_type in sql.cfg to specify the default ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

mysql
sqlite

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Put third party modules below here.              ;;
;; You can just list their names, without the _amxx ;;
;;  or file extension.                              ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; These modules will be auto-detected and loaded   ;;
;;  as needed.  You do not need to enable them here ;;
;;  unless you have problems.                       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

fun
engine
fakemeta
geoip
sockets
regex
nvault
hamsandwich
cstrike
csx
Това ми е modules.ini заповядай. Също така този плъгин по горе ако го добавя играчите ще могат да си взимат frostnade а не трябва да могат.
Rest in peace my friend I always will remember you! 🖤👊

Аватар
TheRedShoko
Извън линия
Модератор
Модератор
Мнения: 1016
Регистриран на: 06 Окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 5 пъти
Получена благодарност: 84 пъти

Проблем с Shop плъгин

Мнение от TheRedShoko » 08 Авг 2018, 13:28

Липсва натив в плъгина за frostnade.

Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Проблем с Shop плъгин

Мнение от atmax » 08 Авг 2018, 13:32

Аз съм нов с тези работи ще дам кода на плъгина ако трябва някой да го оправи сам не мога да се оправя с тези работи :)
Rest in peace my friend I always will remember you! 🖤👊

Аватар
illusion
Извън линия
Developer
Developer
Мнения: 1796
Регистриран на: 27 Ное 2016, 17:47
Местоположение: CraftVision
Се отблагодари: 151 пъти
Получена благодарност: 358 пъти
Обратна връзка:

Проблем с Shop плъгин

Мнение от illusion » 08 Авг 2018, 13:41

С кой BMShop си?

Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Проблем с Shop плъгин

Мнение от atmax » 08 Авг 2018, 13:44

С този на Николов, всъщност доколко е негов незнам де но ето кода:

Код за потвърждение: Избери целия код

/*

	Разширен шоп плъгин, който се използва главно за блокмейкър сървъри, с доста айтъми и настройки.
	Лесна редакция по кода и голяма гъвкавост.

*/

#include < amxmodx >
#include < amxmisc >
#include < cstrike >
#include < engine >
#include < hamsandwich >
#include < fun >
#include < fakemeta >
#include < nvault >
#include < colorchat >

#define MAX_PLAYERS	32
#define PREFIX		"[BetterPlay BM Shop]"

#define PLUGIN_ACCESS	ADMIN_RCON
#define PLUGIN_VIP	ADMIN_KICK

#define MAX_BUY_ITEMS		3
#define TERRORIST_NEED_KILLS	2

#define SURVIVING_ROUNDS	2
#define SURVIVING_POINTS	2

#define MAX_FROSTIMM		3

//#define ADMIN_SCREEN_MENU

#if defined ADMIN_SCREEN_MENU
native user_flash_immunity( index, value );
#endif

new bool:hegrenade[ MAX_PLAYERS + 1 ], bool:flashbang[ MAX_PLAYERS + 1 ], bool:smokegrenade[ 33 ], bool:chameleon[ MAX_PLAYERS + 1 ], bool:godmode[ MAX_PLAYERS + 1 ], bool:speed[ MAX_PLAYERS + 1 ], bool:awp[ MAX_PLAYERS + 1 ], bool:deagle[ MAX_PLAYERS + 1 ], bool:health[ MAX_PLAYERS + 1 ], bool:armor[ MAX_PLAYERS + 1 ], bool:gravity[ MAX_PLAYERS + 1 ], bool:xp[ MAX_PLAYERS + 1 ], bool:antiflash[ MAX_PLAYERS + 1 ], bool:antihe[ MAX_PLAYERS + 1 ], bool:antifrost[ MAX_PLAYERS + 1 ];
new he_cost, flash_cost, smoke_cost, chameleon_cost, godmode_cost, speed_cost, chameleon_time, godmode_time, speed_time, awp_cost, awp_ammo, deagle_cost, deagle_ammo, health_cost, health_amount, armor_cost, armor_amount, gravity_cost, gravity_time, xp_cost, xp_amount, antiflash_cost, antihe_cost, antihe_max_immunes, antifrost_cost;

new chameleon_counter[ MAX_PLAYERS + 1 ], godmode_counter[ MAX_PLAYERS + 1 ], speed_counter[ MAX_PLAYERS + 1 ], gravity_counter[ MAX_PLAYERS + 1 ];
new iPoints[ MAX_PLAYERS + 1 ], shopused[ MAX_PLAYERS + 1 ], sync, vault;

new const PLUGIN[ ] = "BetterPlay HidenSeek Shop";
new const VERSION[ ] = "4.4";
new const AUTHOR[ ] = "Smiley";

new const t_models[ ][ ] = { "arctic", "leet", "guerilla", "terror" }
new const ct_models[ ][ ] = { "gign", "urban", "sas", "gsg9" }

new iKilled[ MAX_PLAYERS + 1 ], kill_points, headshot_points, grenade_points, R, G, B;

native hnsxp_get_user_xp( client );
native hnsxp_set_user_xp( client, xp );

native set_user_nofrost( client, chislo );

// anti-flash
new grenade[32], last, g_sync_check_data, bool:g_track_enemy, bool:g_track[ MAX_PLAYERS + 1 ];
new Float:g_gametime, g_owner
new Float:g_gametime2;
//

new cacheUserName[ 64 ], bool:iChance[ MAX_PLAYERS + 1 ], hh_start, hh_end, bool:iHappyHourStarted, iHeImmunes[ MAX_PLAYERS + 1 ], iBonusCount, cvar_bonus_on, bool:iShowTimeleft[ MAX_PLAYERS + 1 ], iCTWin[ MAX_PLAYERS + 1 ], bool:iRoundStart, bool:iAdmin[ MAX_PLAYERS + 1 ], bool:g_szHideHud[ MAX_PLAYERS + 1 ];
new frost_imm;

public plugin_init( )
{
	register_plugin( PLUGIN, VERSION, AUTHOR );
	register_cvar( "hnsshop_points_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY );
	register_cvar( "hnsshop_points_author", AUTHOR, FCVAR_SERVER | FCVAR_SPONLY );
	
	register_concmd( "shop_give_points", "GivePoints", PLUGIN_ACCESS, "<name, #userid, authid> <points>" );
	register_concmd( "shop_remove_points", "RemovePoints", PLUGIN_ACCESS, "<name, #userid, authid> <points>" );
	register_concmd( "shop_donate_points", "DonatePoints", _, "<name, #userid, authid> <points>" );
	
	register_clcmd( "give", "Give" );
	register_clcmd( "remove", "Remove" );
	register_clcmd( "donate", "Donate" );
	
	register_event( "DeathMsg", "eDeath", "a" );
	register_event( "CurWeapon", "eCurWeapon", "be", "1=1" );
	
	// for anti-flash
	register_event( "ScreenFade", "eventFlash", "be", "4=255", "5=255", "6=255", "7>199" );
	register_event( "TextMsg", "fire_in_the_hole", "b", "2&#Game_radio", "4&#Fire_in_the_hole" );
	register_event( "TextMsg", "fire_in_the_hole2", "b", "3&#Game_radio", "5&#Fire_in_the_hole" );
	register_event( "99", "grenade_throw", "b" );
	
	set_task( 2.0, "bad_fix2", _, _, _, "b" );
	//
	
	RegisterHam( Ham_Spawn, "player", "fwdPlayerSpawn", 1 );
	RegisterHam( Ham_TakeDamage, "player", "fwdPlayerTakeDamage" );
	
	register_logevent( "logeventRoundStart", 2, "1=Round_Start" );
	register_logevent( "logeventRoundEnd", 2, "1=Round_End" );
	
	register_event( "TextMsg", "eventRound_Restart", "a", "2&#Game_C", "2&#Game_w" );
	
	register_clcmd( "say /shop", "CmdMainMenu" );
	register_clcmd( "say_team /shop", "CmdMainMenu" );
	
	register_clcmd( "say /showtimeleft", "CmdShowTimeleft" );
	
	he_cost = register_cvar( "shop_he_cost", "4" );
	flash_cost = register_cvar( "shop_flash_cost", "2" );
	smoke_cost = register_cvar( "shop_smoke_cost", "3" );
	chameleon_cost = register_cvar( "shop_chameleon_cost", "5" );
	godmode_cost = register_cvar( "shop_godmode_cost", "6" );
	speed_cost = register_cvar( "shop_speed_cost", "5" );
	awp_cost = register_cvar( "shop_awp_cost", "6" );
	deagle_cost = register_cvar( "shop_deagle_cost", "3" );
	health_cost = register_cvar( "shop_health_cost", "3" );
	armor_cost = register_cvar( "shop_armor_cost", "2" );
	gravity_cost = register_cvar( "shop_gravity_cost", "3" );
	xp_cost = register_cvar( "shop_xp_cost", "10" );
	antiflash_cost = register_cvar( "shop_antiflash_cost", "9" );
	antihe_cost = register_cvar( "shop_antihe_cost", "7" );
	antifrost_cost = register_cvar( "shop_antifrost_cost", "5" );
	
	awp_ammo = register_cvar( "shop_awp_ammo", "1" );
	deagle_ammo = register_cvar( "shop_deagle_ammo", "1" );
	
	health_amount = register_cvar( "shop_health_amount", "50" );
	armor_amount = register_cvar( "shop_armor_amount", "100" );
	xp_amount = register_cvar( "shop_xp_amount", "250" );
	
	chameleon_time = register_cvar( "shop_chameleon_time", "15" );
	godmode_time = register_cvar( "shop_godmode_time", "8" );
	speed_time = register_cvar( "shop_speed_time", "20" );
	gravity_time = register_cvar( "shop_gravity_time", "15" );
	
	kill_points = register_cvar( "shop_points_kill", "1" );
	headshot_points = register_cvar( "shop_points_headshot", "2" );
	grenade_points = register_cvar( "shop_points_grenade", "3" );
	
	antihe_max_immunes = register_cvar( "shop_antihe_max_immunes", "3" );
	
	sync = CreateHudSyncObj( );
	vault = nvault_open( "HidenSeekShop" );
	
	hh_start = register_cvar( "shop_hh_start", "17" );
	hh_end = register_cvar( "shop_hh_end", "05" );
	
	new ent = create_entity( "info_target" );
	entity_set_string( ent, EV_SZ_classname, "task_entity" );
	
	register_think( "task_entity", "CmdShowPoints" );
	entity_set_float( ent, EV_FL_nextthink, get_gametime( ) + 1.0 );
	
	set_task( 1.0, "taskLoadFile" );
	set_task( 1.0, "taskLoadColors" );
	
	set_task( 300.0, "taskAdvert", _, _, _, "b" );
	set_task( 300.0, "TaskAdvertising2", _, _, _, "b" );
	
	cvar_bonus_on = register_cvar( "shop_bonuspoints_on", "1" );
	iBonusCount = 0;
	
	frost_imm = 3;
	iHappyHourStarted = false;
}

public plugin_natives()
{
	register_library("hns_shop");
	register_native("hnsshop_get_user_points", "_get_points");
	register_native("hnsshop_set_user_points", "_set_points");
	
	register_native( "hide_shop_hud", "_hide_hud" );
}

public _get_points(plugin, params)
{
	return iPoints[get_param(1)];
}

public _set_points(plugin, params)
{
	new client = get_param(1);
	iPoints[client] = max(0, get_param(2));
	SavePoints(client);
	return iPoints[client];
}

public _hide_hud( plugin, params ) { if( get_param( 2 ) <= 0 ) { g_szHideHud[ get_param( 1 ) ] = false; } else { g_szHideHud[ get_param( 1 ) ] = true; } }

public taskAdvert( ) { for( new i = 1; i <= MAX_PLAYERS; i++ ) { if( is_user_connected( i ) ) { ColorChat( i, GREEN, "%s^1 Write^3 /showtimeleft^4 to view^1 timeleft in^3 HUD^4. Write command^1 again to^3 hide^4 HUD^1.", PREFIX ); } } }
public TaskAdvertising2( ) { for( new i = 1; i <= MAX_PLAYERS; i++ ) { if( is_user_connected( i ) ) { ColorChat( i, GREEN, "%s^1 Whrite ^3/shop ^1for buy ^4items.", PREFIX ); } } }

public eventRound_Restart( ) if( get_pcvar_num( cvar_bonus_on ) ) iBonusCount = 0;
public CmdShowTimeleft( id ) iShowTimeleft[ id ] = !iShowTimeleft[ id ];

public CmdChance( id )
{
	if( !is_user_alive( id ) )
	{
		ColorChat( id, GREEN, "%s^1 Need to be^3 alive to^4 use this^1 command!", PREFIX );
		return PLUGIN_HANDLED;
	}
	
	switch( random_num( 0, 4 ) )
	{
		case 0:
		{
			iPoints[ id ]++;
			ColorChat( id, GREEN, "%s^1 You^4 won^1 and^3 win^4 1^1 point^3.", PREFIX );
		}
		default: ColorChat( id, GREEN, "%s^1 You lost!^3 Try again^4 next respawn^1.", PREFIX );
	}
	
	iChance[ id ] = true;
	CmdMainMenu( id );
	
	if( callfunc_begin( "Reset", "HNSMenu.amxx" ) == 1 )
	{
		callfunc_push_int( id );
		callfunc_end( );
	}
	
	return PLUGIN_HANDLED;
}

public taskLoadColors( )
{
	switch( random_num( 0, 5 ) )
	{
		case 0: 
		{
			R = 255;
			G = 255;
			B = 0;
		}
		case 1:
		{
			R = 0;
			G = 127;
			B = 255;
		}
		case 2: R = G = B = 255;
			case 3:
		{
			R = 0;
			G = 255;
			B = 0;
		}
		case 4:
		{
			R = 255;
			G = B = 0;
		}
		case 5:
		{
			R = random( 255 );
			G = random( 255 );
			B = random( 255 );
		}
	}
	
	return PLUGIN_HANDLED;
}

public client_authorized( id ) 
{
	LoadPoints( id );
	
	iAdmin[ id ] = ( get_user_flags( id ) & PLUGIN_VIP ) ? true : false;
	
	iShowTimeleft[ id ] = true;
}

public client_disconnect( id ) SavePoints( id );

public CmdShowPoints( ent )
{
	static iPlayers[ 32 ], iNum, i, id;
	get_players( iPlayers, iNum, "ch" );
	
	for( i = 0; i < iNum; i++ )
	{
		id = iPlayers[ i ];
		
		if( !is_user_connected( id ) || !is_user_alive( id ) || g_szHideHud[ id ] ) continue;
		
		if( iShowTimeleft[ id ] ) 
		{
			if( get_cvar_num( "mp_timelimit" ) ) 
			{
				set_hudmessage( R, G, B, 0.01, 0.91, 0, 0.8, 0.8 );
				ShowSyncHudMsg( id, sync, "Health: %d | Point%s: %d | XP: %d | Timeleft: %d:%02d", get_user_health( id ), iPoints[ id ] == 1 ? "" : "s", iPoints[ id ], hnsxp_get_user_xp( id ), ( get_timeleft( ) / 60 ), ( get_timeleft( ) % 60 ) );
			}
			else 
			{
				iShowTimeleft[ id ] = false;
			}
		}
		else 
		{
			set_hudmessage( R, G, B, 0.01, 0.91, 0, 0.8, 0.8 );
			ShowSyncHudMsg( id, sync, "Health: %d | Armor: %d | Point%s: %d | XP: %d", get_user_health( id ), get_user_armor( id ), iPoints[ id ] == 1 ? "" : "s", iPoints[ id ], hnsxp_get_user_xp( id ) );	
		}
	}
	
	entity_set_float( ent, EV_FL_nextthink, get_gametime( ) + 0.1 );
}

public GivePoints( id, level, cid )
{
	if( !cmd_access( id, level, cid, 3) ) return PLUGIN_HANDLED;
	
	new arg[35];
	read_argv(1, arg, sizeof(arg) - 1);
	
	new target = cmd_target( id, arg, CMDTARGET_NO_BOTS );
	if( !target ) return PLUGIN_HANDLED;
	
	read_argv(2, arg, sizeof(arg) - 1);
	new points = str_to_num(arg);
	
	if( points <= 0 ) return PLUGIN_HANDLED;
	
	iPoints[ target ] += points;
	SavePoints( target );
	
	new name1[ 33 ], name2[ 33 ]
	get_user_name( id, name1, charsmax( name1 ) );
	get_user_name( target, name2, charsmax( name2 ) );
	
	if( get_cvar_num( "amx_show_activity" ) == 2 ) ColorChat( 0, GREEN, "%s^1 ADMIN:^3 %s^1 give^4 %d^1 point%s to^3 %s.", PREFIX, name1, points, points > 1 ? "s" : "", name2 );
	
	return PLUGIN_HANDLED;
}

public RemovePoints( id, level, cid )
{
	if( !cmd_access( id, level, cid, 3) ) return PLUGIN_HANDLED;
	
	new arg[35];
	read_argv(1, arg, sizeof(arg) - 1);
	
	new target = cmd_target( id, arg, CMDTARGET_NO_BOTS );
	if( !target ) return PLUGIN_HANDLED;
	
	read_argv(2, arg, sizeof(arg) - 1);
	new points = str_to_num(arg);
	
	if( points <= 0 ) return PLUGIN_HANDLED;
	
	iPoints[ target ] -= points;
	SavePoints( target );
	
	new name1[ 33 ], name2[ 33 ]
	get_user_name( id, name1, charsmax( name1 ) );
	get_user_name( target, name2, charsmax( name2 ) );
	
	if( get_cvar_num( "amx_show_activity" ) == 2 ) ColorChat( 0, GREEN, "%s^1 ADMIN:^3 %s^1 removed^4 %d^1 point%s from^3 %s.", PREFIX, name1, points, points > 1 ? "s" : "", name2 );
	
	return PLUGIN_HANDLED;
}

public DonatePoints( id, level, cid )
{
	if( !cmd_access( id, level, cid, 3) ) return PLUGIN_HANDLED;
	
	new arg[35];
	read_argv(1, arg, sizeof(arg) - 1);
	
	new target = cmd_target( id, arg, CMDTARGET_NO_BOTS );
	if( !target ) return PLUGIN_HANDLED;
	
	read_argv(2, arg, sizeof(arg) - 1);
	new points = str_to_num(arg);
	
	if( points <= 0 ) return PLUGIN_HANDLED;
	
	if( iPoints[ id ] < points ) points = iPoints[ id ];
	
	iPoints[ id ] -= points;
	iPoints[ target ] += points;
	
	SavePoints( id );
	SavePoints( target );
	
	new name1[ 33 ], name2[ 33 ]
	get_user_name( id, name1, charsmax( name1 ) );
	get_user_name( target, name2, charsmax( name2 ) );
	
	ColorChat( 0, GREEN, "%s^3 %s^1 donate^4 %d^1 point%s to^3 %s.", PREFIX, name1, points, points > 1 ? "s" : "", name2 );
	
	return PLUGIN_HANDLED;
}

public eDeath( )
{
	new attacker = read_data( 1 );
	new attacked = read_data( 2 );
	
	new AttackedName[ 33 ];
	get_user_name( attacked, AttackedName, charsmax( AttackedName ) );
	
	if( is_user_connected( attacker ) && attacked != attacker && is_user_alive( attacker ) )
	{
		new iTime[ 3 ], weapon[ 33 ];
		get_time( "%H", iTime, charsmax( iTime ) );
		read_data( 4, weapon, charsmax( weapon ) );
		
		if( get_pcvar_num( hh_start ) < get_pcvar_num( hh_end ) ? ( get_pcvar_num( hh_start ) <= str_to_num( iTime ) && str_to_num( iTime ) < get_pcvar_num( hh_end ) ) : ( get_pcvar_num( hh_start ) <= str_to_num( iTime ) || str_to_num( iTime ) < get_pcvar_num( hh_end ) ) )
		{
			if( cs_get_user_team( attacker ) == CS_TEAM_T )
			{
				iKilled[ attacker ]++;
				
				if( iKilled[ attacker ] == TERRORIST_NEED_KILLS )
				{
					new point = iAdmin[ attacker ] ? 3 : 2;
					new kills = TERRORIST_NEED_KILLS;
					
					iPoints[ attacker ] += point;
					iKilled[ attacker ] = 0;
					
					SavePoints( attacker );
					ColorChat( attacker, GREEN, "%s^1 You made^3 %d^4 kill%s^1, so you^3 receive^4 %d^1 point%s^4 (happyhour)^1.", PREFIX, kills, kills == 1 ? "" : "s", point, point == 1 ? "" : "s" );
				}
			}
			else if( cs_get_user_team( attacker ) == CS_TEAM_CT )
			{	
				new message_kill[ 33 ], message_vip[ 64 ],  points;
				
				if( read_data( 3 ) )
				{
					points = get_pcvar_num( headshot_points ) * 3;
					formatex( message_kill, charsmax( message_kill ), " ^1with^3 headshot^1" );
				}
				else
				{
					if( equal( weapon, "grenade" ) )
					{
						points = get_pcvar_num( grenade_points ) * 3;
						formatex( message_kill, charsmax( message_kill ), " ^1with^3 grenade^1" );
					}
					else
					{
						points = get_pcvar_num( kill_points ) * 3;
						formatex( message_kill, charsmax( message_kill ), "" );
					}
				}
				
				new reward;
				if( iAdmin[ attacker ] )
				{
					reward = points + points;
				}
				else
				{
					reward = points;
				}
				
				iAdmin[ attacker ] ? formatex( message_vip, charsmax( message_vip ), " (Bonus:^3 %d^4 Point%s^1 for^4 VIP^3 Users^1)", points, points == 1 ? "" : "s" ) : formatex( message_vip, charsmax( message_vip ), " (buy^3 VIP^1 to get^4 more^3 Points^1)" );
				
				iPoints[ attacker ] += reward;
				SavePoints( attacker );
				
				ColorChat( attacker, GREEN, "%s^1 You received^3 %d^4 point%s^1 for killing^4 %s%s ^4(happyhour)^1%s", PREFIX, reward, reward == 1 ? "" : "s", AttackedName, message_kill, message_vip );
			}
		}
		else
		{
			if( cs_get_user_team( attacker ) == CS_TEAM_T )
			{
				iKilled[ attacker ]++;
				
				if( iKilled[ attacker ] == TERRORIST_NEED_KILLS )
				{
					new point = iAdmin[ attacker ] ? 2 : 1;
					new kills = TERRORIST_NEED_KILLS;
					
					iPoints[ attacker ] += point;
					iKilled[ attacker ] = 0;
					
					SavePoints( attacker );
					ColorChat( attacker, GREEN, "%s^1 You made^3 %d^4 kill%s^1, so you^3 receive^4 %d^1 point%s.", PREFIX, kills, kills == 1 ? "" : "s", point, point == 1 ? "" : "s" );
				}
			}
			else if( cs_get_user_team( attacker ) == CS_TEAM_CT )
			{	
				new message_kill[ 33 ], message_vip[ 64 ],  points;
				
				if( read_data( 3 ) )
				{
					points = get_pcvar_num( headshot_points );
					formatex( message_kill, charsmax( message_kill ), " ^1with^3 headshot^1" );
				}
				else
				{
					if( equal( weapon, "grenade" ) )
					{
						points = get_pcvar_num( grenade_points );
						formatex( message_kill, charsmax( message_kill ), " ^1with^3 grenade^1" );
					}
					else
					{
						points = get_pcvar_num( kill_points );
						formatex( message_kill, charsmax( message_kill ), "" );
					}
				}
				
				new reward;
				if( iAdmin[ attacker ] )
				{
					reward = points + points;
				}
				else
				{
					reward = points;
				}
				
				iAdmin[ attacker ] ? formatex( message_vip, charsmax( message_vip ), " (Bonus:^3 %d^4 Point%s^1 for^4 VIP^3 Users^1)", points, points == 1 ? "" : "s" ) : formatex( message_vip, charsmax( message_vip ), " (buy^3 VIP^1 to get^4 more^3 Points^1)" );
				
				iPoints[ attacker ] += reward;
				SavePoints( attacker );
				
				ColorChat( attacker, GREEN, "%s^1 You received^3 %d^4 point%s^1 for killing^4 %s%s%s", PREFIX, reward, reward == 1 ? "" : "s", AttackedName, message_kill, message_vip );
			}
		}
	}
	
	iCTWin[ attacked ] = 0;
}

public logeventRoundStart( ) 
{
	new iTime[ 3 ], iHour;
	get_time( "%H", iTime, charsmax( iTime ) );
	iHour = str_to_num( iTime );
	
	for( new i = 1; i <= MAX_PLAYERS; i++ )
	{
		if( !is_user_connected( i ) ) continue;
		
		shopused[ i ] = MAX_BUY_ITEMS;
		
		#if defined ADMIN_SCREEN_MENU
		user_flash_immunity( i, 0 );
		#endif
		
		antiflash[ i ] = false;
		
		set_task( 1.0, "taskRoundStart" );
	}
	
	if( get_pcvar_num( cvar_bonus_on ) )
	{	
		if( iBonusCount == 4 )
		{
			set_task( 1.0, "taskGiveBonusPoints" );
			iBonusCount = 0;
		}
		else iBonusCount++;
	}
	
	if( !iHappyHourStarted )
	{
		if( iHour == get_pcvar_num( hh_start ) )
		{
			iHappyHourStarted = true;
			
			ColorChat( 0, GREEN, "%s^3 Happy Hour^1 Stared!", PREFIX );
			ColorChat( 0, GREEN, "%s^3 All players^1 will gain^4 double points^3 now!", PREFIX );
		}
	}
	else
	{
		if( iHour == get_pcvar_num( hh_end ) )
		{
			iHappyHourStarted = false;
			
			ColorChat( 0, GREEN, "%s^3 Happy Hour^1 Ended!", PREFIX );
			ColorChat( 0, GREEN, "%s^3 All players^1 will gain^4 normal points^3 now!", PREFIX );
		}
	}
}

public taskRoundStart( ) iRoundStart = true;

public taskGiveBonusPoints( )
{
	new iPlayers[ 32 ], iName[ 33 ], iNum, id;
	get_players( iPlayers, iNum, "ach" );
	
	id = iPlayers[ random_num( 0, iNum ) ];
	
	if( !is_user_connected( id ) || is_user_bot( id ) || is_user_hltv( id ) ) return PLUGIN_CONTINUE;
	
	new CsTeams:team = cs_get_user_team( id );
	if( team == CS_TEAM_SPECTATOR ) return PLUGIN_CONTINUE;
	
	get_user_name( id, iName, charsmax( iName ) );
	
	iPoints[ id ] += 2;
	ColorChat( 0, GREEN, "%s^1 This round^3 %s^1 received^4 2^1 points.", PREFIX, iName );
	
	return PLUGIN_CONTINUE;
}

public logeventRoundEnd( )
{
	for( new i = 1; i <= 32; i++ )
	{
		if( !is_user_connected( i ) || !is_user_alive( i ) || !iRoundStart ) continue;
		
		if( cs_get_user_team( i ) != CS_TEAM_CT ) continue;
		
		new rounds = SURVIVING_ROUNDS;
		new points = SURVIVING_POINTS;
		
		if( iCTWin[ i ] == rounds )
		{
			new pt = iAdmin[ i ] ? points * 2 : points;
			iCTWin[ i ] = 0;
			
			ColorChat( i, GREEN, "%s^1 You received^3 %d^4 Point%s^1 for^3 surviving^4 %d^1 round%s.", PREFIX, pt, pt == 1 ? "" : "s", rounds, rounds == 1 ? "" : "s" );
			
			iPoints[ i ] += pt;
			SavePoints( i );
		}
		else iCTWin[ i ]++;
	}
}

public fwdPlayerSpawn( id )
{
	if( !is_user_alive( id ) ) return PLUGIN_CONTINUE;
	
	iChance[ id ] = false;
	
	hegrenade[ id ] = false;
	flashbang[ id ] = false;
	smokegrenade[ id ] = false;
	chameleon[ id ] = false;
	godmode[ id ] = false;
	
	speed[ id ] = false;
	
	awp[ id ] = false;
	deagle[ id ] = false;
	
	health[ id ] = false;
	armor[ id ] = false;
	
	gravity[ id ] = false;
	xp[ id ] = false;
	
	antihe[ id ] = false;
	iHeImmunes[ id ] = 0;
	
	set_user_nofrost( id, 0 );
	antifrost[ id ] = false;
	
	iRoundStart = false;
	remove_task( id );
	
	set_user_godmode( id, 0 );
	set_user_gravity( id, 1.0 );
	
	client_cmd( id, "cl_forwardspeed 400" );
	
	return PLUGIN_CONTINUE;
}

public fwdPlayerTakeDamage( this, idinflictor, idattacker, Float:damage, damagebits )
{
	if( damagebits & ( 1<<24 ) )
	{
		new Float:gOrigin[ 3 ], Float:tOrigin[ 3 ]; 
		pev( idinflictor, pev_origin, gOrigin );
		pev( this, pev_origin, tOrigin );
		
		if( vector_distance( gOrigin, tOrigin ) <= 255.0 )
		{
			if( !antihe[ this ] )
			{
				SetHamParamFloat( 4, random_float( 30.0, 70.0 ) );
			}
			else
			{
				new ahe = iAdmin[ this ] ? get_pcvar_num( antihe_max_immunes ) * 2 : get_pcvar_num( antihe_max_immunes );
				
				if( iHeImmunes[ this ] < ahe )
				{
					iHeImmunes[ this ]++;
					client_print( this, print_center, "Immunity from HEGrenades: %d of %d", iHeImmunes[ this ], ahe );
					
					SetHamParamFloat( 4, 0.0 );
					BlindPlayer( this, 1.0, 1.0, 255, 0, 0, 150 );
					
					if( idattacker != this )
					{
						new UserName[ 64 ];
						get_user_name( this, UserName, charsmax( UserName ) );
						
						ColorChat( idattacker, GREEN, "%s^3 %s^1 is protected^4 from^3 HE Grenades^1!", PREFIX, UserName );
					}
					else 
					{
						ColorChat( this, GREEN, "%s^1 You have^3 protection^1 from^4 HE Grenades^1 and you can not^3 kill^4 yourself^1.", PREFIX );
					}
				}
			}
		}
	}
}

public CmdMainMenu( id )
{
	new iTitle[ 64 ]
	formatex( iTitle, charsmax( iTitle ), "\yBetterPlay \d- \wHidenSeek BM \rShop^n\yMain Menu^n^n\wYour point%s: \y%i", iPoints[ id ] > 1 ? "s" : "", iPoints[ id ] );
	
	new menu = menu_create( iTitle, "CmdMainMenuHandler" );
	
	shopused[ id ] ? menu_additem( menu, "\wItems \yMenu", "1", 0 ) : menu_additem( menu, "\dItems Menu", "1", 0 );
	
	menu_additem( menu, "\wPlayer \rPoints \yMenu", "2", 0 );
	
	iChance[ id ] ? menu_additem( menu, "\dChance to win 1 Point^n", "3", 0 ) : menu_additem( menu, "\yChance \wto \rwin \y1 \wPoint^n", "3", 0 );
	
	( get_user_flags( id ) & PLUGIN_ACCESS ) ? menu_additem( menu, "\wGive \rPoints \yto \wPlayer", "4", 0 ) : menu_additem( menu, "\dGive Points to Player \y(\rOnly for admin\y)", "4", 0 );
	( get_user_flags( id ) & PLUGIN_ACCESS ) ? menu_additem( menu, "\wRemove \rPoints \yfrom \wPlayer^n", "5", 0 ) : menu_additem( menu, "\dRemove Points from Player \y(\rOnly for admin\y)^n", "5", 0 );
	
	menu_additem( menu, "\wDonate \rPoints \yto \wPlayer", "6", 0 );
	
	menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
	menu_display( id, menu, 0 );
}

public CmdMainMenuHandler( id, menu, item )
{
	if( item == MENU_EXIT )
	{
		menu_destroy( menu );
		return PLUGIN_HANDLED;
	}
	
	new iData[ 6 ], iName[ 63 ], iAccess, iCallback;
	menu_item_getinfo( menu, item, iAccess, iData, charsmax( iData ), iName, charsmax( iName ), iCallback );
	
	switch( str_to_num( iData ) )
	{
		case 1: 
		{
			if( shopused[ id ] ) CmdItemsMenu( id );
			else
			{
				CmdMainMenu( id );
				client_cmd( id, "spk buttons/button10.wav" );
				BlindPlayer( id, 0.35, 0.35, 255, 0, 0, 225 );
			}
		}
		case 2: CmdPlayerPointsMenu( id );
			case 3:
		{
			if( iChance[ id ] )
			{
				CmdMainMenu( id );
				client_cmd( id, "spk buttons/button10.wav" );
				BlindPlayer( id, 0.35, 0.35, 255, 0, 0, 225 );
			}
			else CmdChance( id );
		}
		case 4:
		{
			if( !( get_user_flags( id ) & PLUGIN_ACCESS ) )
			{
				CmdMainMenu( id );
				client_cmd( id, "spk buttons/button10.wav" );
				BlindPlayer( id, 0.35, 0.35, 255, 0, 0, 225 );
				
				return PLUGIN_HANDLED;
			}
			
			CmdGiveMenu( id );
		}
		case 5:
		{
			if( !( get_user_flags( id ) & PLUGIN_ACCESS ) )
			{
				CmdMainMenu( id );
				client_cmd( id, "spk buttons/button10.wav" );
				BlindPlayer( id, 0.35, 0.35, 255, 0, 0, 225 );
				
				return PLUGIN_HANDLED;
			}
			
			CmdRemoveMenu( id );
		}
		case 6: CmdDonateMenu( id );
		}
	
	menu_destroy( menu );
	return PLUGIN_HANDLED;
}

public CmdItemsMenu( id )
{
	if( !is_user_alive( id ) )
	{
		ColorChat( id, GREEN, "%s^1 Need to be^3 alive to^4 use the^1 shop!", PREFIX );
		CmdMainMenu( id );
		client_cmd( id, "spk buttons/button10.wav" );
		BlindPlayer( id, 0.35, 0.35, 255, 0, 0, 225 );
		
		return PLUGIN_HANDLED;
	}
	
	new iTitle[ 64 ], iText[ 15 ][ 64 ];
	formatex( iTitle, charsmax( iTitle ), "\yBetterPlay \d- \wHidenSeek BM \rShop^n\yItems Menu^n^n\wYour point%s: \y%i", iPoints[ id ] > 1 ? "s" : "", iPoints[ id ] );
	
	new menu = menu_create( iTitle, "CmdItemsMenuHandler" );
	
	if( cs_get_user_team( id ) == CS_TEAM_T )
	{
		formatex( iText[ 1 ], 63, "\wFlashbang - \y%d Point%s.", get_pcvar_num( flash_cost ), get_pcvar_num( flash_cost ) > 1 ? "s" : "" );
		formatex( iText[ 2 ], 63, "\wFrost Nade - \y%d Point%s.", get_pcvar_num( smoke_cost ), get_pcvar_num( smoke_cost ) > 1 ? "s" : "" );
		
		menu_additem( menu, iText[ 1 ], "2", 0 );
		menu_additem( menu, iText[ 2 ], "3", 0 );
	}
	else if( cs_get_user_team( id ) == CS_TEAM_CT )
	{
		new hp = iAdmin[ id ] ? get_pcvar_num( health_amount ) * 2 : get_pcvar_num( health_amount );
		new ap = iAdmin[ id ] ? get_pcvar_num( armor_amount ) * 2 : get_pcvar_num( armor_amount );
		new ahe = iAdmin[ id ] ? get_pcvar_num( antihe_max_immunes ) * 2 : get_pcvar_num( antihe_max_immunes );
		new afn = iAdmin[ id ] ? frost_imm * 2 : frost_imm;
		
		formatex( iText[ 0 ], 63, "\wHE Grenade - \y%d Point%s.", get_pcvar_num( he_cost ), get_pcvar_num( he_cost ) > 1 ? "s" : "" );
		formatex( iText[ 3 ], 63, "\wChameleon - \y%d Point%s.", get_pcvar_num( chameleon_cost ), get_pcvar_num( chameleon_cost ) > 1 ? "s" : "" );
		formatex( iText[ 4 ], 63, "\wGodmode - \y%d Point%s.", get_pcvar_num( godmode_cost ), get_pcvar_num( godmode_cost ) > 1 ? "s" : "" );
		formatex( iText[ 5 ], 63, "\wSpeed - \y%d Point%s.", get_pcvar_num( speed_cost ), get_pcvar_num( speed_cost ) > 1 ? "s" : "" );
		formatex( iText[ 6 ], 63, "\wAWP \r[\d%d \ybullet%s\r] \w- \y%d Point%s.", get_pcvar_num( awp_ammo ), get_pcvar_num( awp_ammo ) > 1 ? "s" : "", get_pcvar_num( awp_cost ), get_pcvar_num( awp_cost ) > 1 ? "s" : "" );
		formatex( iText[ 7 ], 63, "\wDeagle \r[\d%d \ybullet%s\r] \w- \y%d Point%s.", get_pcvar_num( deagle_ammo ), get_pcvar_num( deagle_ammo ) > 1 ? "s" : "", get_pcvar_num( deagle_cost ), get_pcvar_num( deagle_cost ) > 1 ? "s" : "" );
		formatex( iText[ 8 ], 63, "\w+%d \rHealth - \y%d Point%s.", hp, get_pcvar_num( health_cost ), get_pcvar_num( health_cost ) > 1 ? "s" : "" );
		formatex( iText[ 9 ], 63, "\w+%d \rArmor - \y%d Point%s.", ap, get_pcvar_num( armor_cost ), get_pcvar_num( armor_cost ) > 1 ? "s" : "" );
		formatex( iText[ 10 ], 63, "\wGravity - \y%d Point%s.", get_pcvar_num( gravity_cost ), get_pcvar_num( gravity_cost ) > 1 ? "s" : "" );
		formatex( iText[ 12 ], 63, "\wFlash Immunity \r[\d1 \yround\r] \w- \y%d Point%s.", get_pcvar_num( antiflash_cost ), get_pcvar_num( antiflash_cost ) > 1 ? "s" : "" );
		formatex( iText[ 13 ], 63, "\wHE Immunity \r[\yfrom \d%d \wgrenade%s\r] \w- \y%d Point%s.", ahe, ahe == 1 ? "" : "s", get_pcvar_num( antihe_cost ), get_pcvar_num( antihe_cost ) > 1 ? "s" : "" );
		formatex( iText[ 14 ], 63, "\wFrost Immunity \r[\yfrom \d%d \wnade%s\r] \w- \y%d Point%s.", afn, afn == 1 ? "" : "s", get_pcvar_num( antifrost_cost ), get_pcvar_num( antifrost_cost ) > 1 ? "s" : "" );
		
		menu_additem( menu, iText[ 0 ], "1", 0 );
		menu_additem( menu, iText[ 3 ], "4", 0 );
		menu_additem( menu, iText[ 4 ], "5", 0 );
		menu_additem( menu, iText[ 5 ], "6", 0 );
		menu_additem( menu, iText[ 6 ], "7", 0 );
		menu_additem( menu, iText[ 7 ], "8", 0 );
		menu_additem( menu, iText[ 8 ], "9", 0 );
		menu_additem( menu, iText[ 9 ], "10", 0 );
		menu_additem( menu, iText[ 10 ], "11", 0 );
		menu_additem( menu, iText[ 12 ], "13", 0 );
		menu_additem( menu, iText[ 13 ], "14", 0 );
		menu_additem( menu, iText[ 14 ], "15", 0 );
	}
	
	formatex( iText[ 11 ], 63, "\w%d XP - \y%d Point%s.", get_pcvar_num( xp_amount ), get_pcvar_num( xp_cost ), get_pcvar_num( xp_cost ) > 1 ? "s" : "" );
	menu_additem( menu, iText[ 11 ], "12", 0 );
	
	menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
	menu_display( id, menu, 0 );
	
	return PLUGIN_HANDLED;
}

public CmdItemsMenuHandler( id, menu, item )
{
	if( item == MENU_EXIT )
	{
		menu_destroy( menu );
		CmdMainMenu( id );
		return PLUGIN_HANDLED;
	}
	
	new iData[ 6 ], iName[ 63 ], iAccess, iCallback, iUserName[ 33 ];
	menu_item_getinfo( menu, item, iAccess, iData, charsmax( iData ), iName, charsmax( iName ), iCallback );
	get_user_name( id, iUserName, charsmax( iUserName ) );
	
	if( !is_user_alive( id ) ) return PLUGIN_HANDLED;
	
	switch( str_to_num( iData ) )
	{
		case 1:
		{
			if( hegrenade[ id ] ) 
			{
				AlreadyUsed( id );
				return PLUGIN_HANDLED;
			}
			
			if( iPoints[ id ] >= get_pcvar_num( he_cost ) )
			{
				if( !user_has_weapon( id, CSW_HEGRENADE ) )
				{
					give_item( id, "weapon_hegrenade" );
					iPoints[ id ] -= get_pcvar_num( he_cost );
					hegrenade[ id ] = true;
					
					shopused[ id ]--;
					LeftItems( id );
					
					ColorChat( id, GREEN, "%s^3 You^1 bought^4 HE Grenade^1!", PREFIX );
					SavePoints( id );						
				}
			}
			else
			{
				NoPoints( id );
				return PLUGIN_HANDLED;
			}
		}
		case 2:
		{
			if( flashbang[ id ] ) 
			{
				AlreadyUsed( id );
				return PLUGIN_HANDLED;
			}
			
			if( iPoints[ id ] >= get_pcvar_num( flash_cost ) )
			{
				if( !user_has_weapon( id, CSW_FLASHBANG ) )
				{
					give_item( id, "weapon_flashbang" );
					iPoints[ id ] -= get_pcvar_num( flash_cost );
					flashbang[ id ] = true;
					
					shopused[ id ]--;
					LeftItems( id );
					
					ColorChat( id, GREEN, "%s^3 You^1 bought^4 Flashbang^1!", PREFIX );
					SavePoints( id );
				}
			}
			else
			{
				NoPoints( id );
				return PLUGIN_HANDLED;
			}
		}
		case 3:
		{
			if( smokegrenade[ id ] ) 
			{
				AlreadyUsed( id );
				return PLUGIN_HANDLED;
			}
			
			if( iPoints[ id ] >= get_pcvar_num( smoke_cost ) )
			{
				if( !user_has_weapon( id, CSW_SMOKEGRENADE ) )
				{
					give_item( id, "weapon_smokegrenade" );
					iPoints[ id ] -= get_pcvar_num( smoke_cost );
					smokegrenade[ id ] = true;
					
					shopused[ id ]--;
					LeftItems( id );
					
					ColorChat( id, GREEN, "%s^3 You^1 bought^4 Frostnade^1!", PREFIX );
					SavePoints( id );
				}
			}
			else
			{
				NoPoints( id );
				return PLUGIN_HANDLED;
			}
		}
		case 4:
		{
			if( chameleon[ id ] ) 
			{
				AlreadyUsed( id );
				return PLUGIN_HANDLED;
			}
			
			if( iPoints[ id ] >= get_pcvar_num( chameleon_cost ) )
			{
				if( cs_get_user_team( id ) == CS_TEAM_CT )
				{
					cs_set_user_model( id, t_models[ random_num( 0, 3 ) ] );
				}
				else if( cs_get_user_team( id ) == CS_TEAM_T )
				{
					cs_set_user_model( id, ct_models[ random_num( 0, 3 ) ] );
				}
				
				iPoints[ id ] -= get_pcvar_num( chameleon_cost );
				chameleon[ id ] = true;
				
				shopused[ id ]--;
				LeftItems( id );
				
				if( get_pcvar_num( chameleon_time ) != 0 )
				{
					chameleon_counter[ id ] = get_pcvar_num( chameleon_time );
					ChameleonCounter( id );
					
					ColorChat( id, GREEN, "%s^3 You^1 bought^4 Chameleon^3 for^4 %d^1 second%s.", PREFIX, get_pcvar_num( chameleon_time ), get_pcvar_num( chameleon_time ) > 1 ? "s" : "" );
				}
				else
				{
					ColorChat( id, GREEN, "%s^3 You^1 bought^4 Chameleon^3 for^4 1^1 round.", PREFIX );
					
				}
				
				SavePoints( id );
			}
			else
			{
				NoPoints( id );
				return PLUGIN_HANDLED;
			}
		}
		case 5:
		{
			if( godmode[ id ] ) 
			{
				AlreadyUsed( id );
				return PLUGIN_HANDLED;
			}
			
			if( iPoints[ id ] >= get_pcvar_num( godmode_cost ) )
			{
				set_user_godmode( id, 1 );
				
				iPoints[ id ] -= get_pcvar_num( godmode_cost );
				godmode[ id ] = true;
				
				shopused[ id ]--;
				LeftItems( id );	
				
				if( get_pcvar_num( godmode_time ) != 0 )
				{
					godmode_counter[ id ] = get_pcvar_num( godmode_time );
					GodmodeCounter( id );
					
					ColorChat( id, GREEN, "%s^3 You^1 bought^4 Godmode^3 for^4 %d^1 second%s.", PREFIX, get_pcvar_num( godmode_time ), get_pcvar_num( godmode_time ) > 1 ? "s" : "" );
				}
				else
				{
					ColorChat( id, GREEN, "%s^3 You^1 bought^4 buy^4 Godmode^3 for^4 1^1 round.", PREFIX );
				}
				
				SavePoints( id );
			}
			else
			{
				NoPoints( id );
				return PLUGIN_HANDLED;
			}		
		}
		case 6:
		{
			if( speed[ id ] ) 
			{
				AlreadyUsed( id );
				return PLUGIN_HANDLED;
			}
			
			if( iPoints[ id ] >= get_pcvar_num( speed_cost ) )
			{
				set_user_maxspeed( id, 700.0 );
				client_cmd( id, "cl_forwardspeed 700" );
				
				iPoints[ id ] -= get_pcvar_num( speed_cost );
				speed[ id ] = true;
				
				shopused[ id ]--;
				LeftItems( id );
				
				if( get_pcvar_num( speed_time ) != 0 )
				{
					speed_counter[ id ] = get_pcvar_num( speed_time );
					SpeedCounter( id );
					ColorChat( id, GREEN, "%s^3 You^1 bought^4 Speed^3 for^4 %d^1 second%s.", PREFIX, get_pcvar_num( speed_time ), get_pcvar_num( speed_time ) > 1 ? "s" : "" );
				}
				else
				{
					ColorChat( id, GREEN, "%s^3 You^1 bought^4 Speed^3 for^4 1^1 round.", PREFIX );
				}
				
				SavePoints( id );
			}
			else
			{
				NoPoints( id );
				return PLUGIN_HANDLED;
			}
		}
		case 7:
		{
			if( awp[ id ] ) 
			{
				AlreadyUsed( id );
				return PLUGIN_HANDLED;
			}
			
			if( iPoints[ id ] >= get_pcvar_num( awp_cost ) )
			{
				if( !user_has_weapon( id, CSW_AWP ) )
				{
					give_item( id, "weapon_awp" );
					cs_set_weapon_ammo( find_ent_by_owner( 1, "weapon_awp", id ), get_pcvar_num( awp_ammo ) );	
					
					iPoints[ id ] -= get_pcvar_num( awp_cost );
					awp[ id ] = true;
					
					shopused[ id ]--;
					LeftItems( id );
					
					ColorChat( id, GREEN, "%s^3 You^1 bought^4 AWP^1 witch^3 %d^4 bullet%s^1.", PREFIX, get_pcvar_num( awp_ammo ), get_pcvar_num( awp_ammo ) == 1 ? "" : "s" );
					SavePoints( id );
				}
			}
			else
			{
				NoPoints( id );
				return PLUGIN_HANDLED;
			}
		}
		case 8:
		{
			if( deagle[ id ] ) 
			{
				AlreadyUsed( id );
				return PLUGIN_HANDLED;
			}
			
			if( iPoints[ id ] >= get_pcvar_num( deagle_cost ) )
			{
				if( !user_has_weapon( id, CSW_DEAGLE ) )
				{
					give_item( id, "weapon_deagle" );
					cs_set_weapon_ammo( find_ent_by_owner( 1, "weapon_deagle", id ), get_pcvar_num( deagle_ammo ) );	
					
					iPoints[ id ] -= get_pcvar_num( deagle_cost );
					deagle[ id ] = true;
					
					shopused[ id ]--;
					LeftItems( id );
					
					ColorChat( id, GREEN, "%s^3 You^1 bought^4 Deagle^1 witch^3 %d^4 bullet%s^1.", PREFIX, get_pcvar_num( deagle_ammo ), get_pcvar_num( deagle_ammo ) == 1 ? "" : "s" );
					SavePoints( id );
				}
			}
			else
			{
				NoPoints( id );
				return PLUGIN_HANDLED;
			}
		}
		case 9:
		{
			if( health[ id ] ) 
			{
				AlreadyUsed( id );
				return PLUGIN_HANDLED;
			}
			
			if( iPoints[ id ] >= get_pcvar_num( health_cost ) )
			{
				if( get_user_health( id ) < 255 )
				{
					new hp = iAdmin[ id ] ? get_pcvar_num( health_amount ) * 2 : get_pcvar_num( health_amount );
					
					set_user_health( id, get_user_health( id ) + hp );
					client_cmd( id, "spk items/smallmedkit1.wav" );
					
					iPoints[ id ] -= get_pcvar_num( health_cost );
					health[ id ] = true;
					
					shopused[ id ]--;
					LeftItems( id );
					
					ColorChat( id, GREEN, "%s^3 You^1 bought^4 +%d Health!", PREFIX, hp );
					SavePoints( id );
				}
			}
			else
			{
				NoPoints( id );
				return PLUGIN_HANDLED;
			}
		}
		case 10:
		{
			if( armor[ id ] ) 
			{
				AlreadyUsed( id );
				return PLUGIN_HANDLED;
			}
			
			if( iPoints[ id ] >= get_pcvar_num( armor_cost ) )
			{
				if( get_user_armor( id ) < 300 )
				{
					new ap = iAdmin[ id ] ? get_pcvar_num( armor_amount ) * 2 : get_pcvar_num( armor_amount );
					
					cs_set_user_armor( id, get_user_armor( id ) + ap, ap <= 100 ? CS_ARMOR_KEVLAR : CS_ARMOR_VESTHELM ); 
					client_cmd( id, "spk items/ammopickup2.wav" );
					
					iPoints[ id ] -= get_pcvar_num( armor_cost );
					armor[ id ] = true;
					
					shopused[ id ]--;
					LeftItems( id );
					
					ColorChat( id, GREEN, "%s^3 You^1 bought^4 +%d Armor!", PREFIX, ap );
					SavePoints( id );
				}
			}
			else
			{
				NoPoints( id );
				return PLUGIN_HANDLED;
			}
		}
		case 11:
		{
			if( gravity[ id ] ) 
			{
				AlreadyUsed( id );
				return PLUGIN_HANDLED;
			}
			
			if( iPoints[ id ] >= get_pcvar_num( gravity_cost ) )
			{
				set_user_gravity( id, 0.4 );
				
				iPoints[ id ] -= get_pcvar_num( gravity_cost );
				gravity[ id ] = true;
				
				shopused[ id ]--;
				LeftItems( id );
				
				if( get_pcvar_num( gravity_time ) != 0 )
				{
					gravity_counter[ id ] = get_pcvar_num( gravity_time );
					GravityCounter( id );
					
					ColorChat( id, GREEN, "%s^3 You^1 bought^4 Gravity^3 for^4 %d^1 second%s.", PREFIX, get_pcvar_num( gravity_time ), get_pcvar_num( gravity_time ) > 1 ? "s" : "" );
				}
				else
				{
					ColorChat( id, GREEN, "%s^3 You^1 bought^4 Gravity^3 for^4 1^1 round.", PREFIX );		
				}
				
				SavePoints( id );
			}
			else
			{
				NoPoints( id );
				return PLUGIN_HANDLED;
			}
		}
		case 12:
		{
			if( xp[ id ] ) 
			{
				AlreadyUsed( id );
				return PLUGIN_HANDLED;
			}
			
			if( iPoints[ id ] >= get_pcvar_num( xp_cost ) )
			{
				hnsxp_set_user_xp( id, hnsxp_get_user_xp( id ) + get_pcvar_num( xp_amount ) );
				
				iPoints[ id ] -= get_pcvar_num( xp_cost );
				xp[ id ] = true;
				
				shopused[ id ]--;
				LeftItems( id );
				
				ColorChat( 0, GREEN, "%s^3 %s^1 buy^4 %d^3 XP^1!", PREFIX, iUserName, get_pcvar_num( xp_amount ) );
				SavePoints( id );
			}
			else
			{
				NoPoints( id );
				return PLUGIN_HANDLED;
			}
		}
		case 13:
		{
			if( antiflash[ id ] ) 
			{
				AlreadyUsed( id );
				return PLUGIN_HANDLED;
			}
			if( iPoints[ id ] >= get_pcvar_num( antiflash_cost ) )
			{
				iPoints[ id ] -= get_pcvar_num( antiflash_cost );
				antiflash[ id ] = true;
				
				#if defined ADMIN_SCREEN_MENU
				user_flash_immunity( id, 1 );
				#endif
				
				shopused[ id ]--;
				LeftItems( id );
				
				ColorChat( 0, GREEN, "%s^3 %s^1 bought^4 Flash Immunity^1!", PREFIX, iUserName );
				SavePoints( id );
			}
			else
			{
				NoPoints( id );
				return PLUGIN_HANDLED;
			}
		}
		case 14:
		{
			if( antihe[ id ] ) 
			{
				AlreadyUsed( id );
				return PLUGIN_HANDLED;
			}
			
			if( iPoints[ id ] >= get_pcvar_num( antihe_cost ) )
			{
				iPoints[ id ] -= get_pcvar_num( antihe_cost );
				antihe[ id ] = true;
				
				shopused[ id ]--;
				LeftItems( id );
				
				ColorChat( 0, GREEN, "%s^3 %s^1 bought^4 He Immunity^1!", PREFIX, iUserName );
				SavePoints( id );
			}
			else
			{
				NoPoints( id );
				return PLUGIN_HANDLED;
			}
		}
		case 15:
		{	
			if( antifrost[ id ] ) 
			{
				AlreadyUsed( id );
				return PLUGIN_HANDLED;
			}
			
			if( iPoints[ id ] >= get_pcvar_num( antifrost_cost ) )
			{
				iPoints[ id ] -= get_pcvar_num( antifrost_cost );
				
				new afn = iAdmin[ id ] ? frost_imm * 2 : frost_imm;
				set_user_nofrost( id, afn );
				
				antifrost[ id ] = true;
				shopused[ id ]--;
				
				LeftItems( id );		
				ColorChat( 0, GREEN, "%s^3 %s^1 bought^4 Frost Immunity^1!", PREFIX, iUserName );
				
				SavePoints( id );
			}
			else
			{
				NoPoints( id );
				return PLUGIN_HANDLED;
			}
		}
	}
	
	menu_destroy( menu );
	CmdMainMenu( id );
	return PLUGIN_HANDLED;
}

public CmdPlayerPointsMenu( id )
{
	new iTitle[ 64 ];
	formatex( iTitle, charsmax( iTitle ), "\yBetterPlay \d- \wHidenSeek BM \rShop^n\yPlayerPoints Menu^n^n\wYour point%s: \y%i", iPoints[ id ] > 1 ? "s" : "", iPoints[ id ] );
	
	new menu = menu_create( iTitle, "CmdPlayerPointsHandler" );
	
	new name[ 33 ], ip[ 33 ];
	for( new i = 1; i <= 32; i++ )
	{
		if( !is_user_connected( i ) ) continue;
		
		get_user_name( i, name, charsmax( name ) );
		get_user_ip( i, ip, charsmax( ip ), 0 );
		
		menu_additem( menu, name, ip );
	}
	
	menu_display( id, menu );
}

public CmdPlayerPointsHandler( id, menu, item )
{
	if( item == MENU_EXIT )
	{
		menu_destroy( menu );
		CmdMainMenu( id );
		return PLUGIN_HANDLED;
	}
	
	static iAccess, iIP[ 33 ], iCallBack;
	menu_item_getinfo( menu, item, iAccess, iIP, charsmax( iIP ), _, _, iCallBack );
	menu_destroy( menu );
	
	new player = find_player( "d", iIP );
	
	if( !is_user_connected( player ) )
	{
		CmdMainMenu( id );
		return PLUGIN_HANDLED;
	}
	
	new name[ 33 ];
	get_user_name( player, name, charsmax( name ) );
	
	static motd[ 2500 ];
	new len = copy( motd, sizeof( motd ) - 1, "<html>");
	
	len += format( motd[ len ], sizeof( motd ) - len - 1, "<b><font size=^"4^">Name:</font></b> %s<br><br>", name );
	len += format( motd[ len ], sizeof( motd ) - len - 1, "<b><font size=^"4^">Point%s:</font></b> %i<br><br>", iPoints[ player ] == 1 ? "" : "s", iPoints[ player ] );
	
	len += format( motd[ len ], sizeof( motd ) - len - 1, "</html>" );
	
	show_motd( id, motd, "Player Points" );
	
	CmdPlayerPointsMenu( id );
	
	return PLUGIN_HANDLED;
}

public CmdGiveMenu( id )
{
	new iTitle[ 64 ];
	formatex( iTitle, charsmax( iTitle ), "\yBetterPlay \d- \wHidenSeek BM \rShop^n\yGive Menu^n^n\wYour point%s: \y%i", iPoints[ id ] > 1 ? "s" : "", iPoints[ id ] );
	
	new menu = menu_create( iTitle, "CmdGiveMenuHandler" );
	
	new iPlayers[ 32 ], iNum, tempid[ 10 ], iName[ 33 ];
	get_players( iPlayers, iNum, "ch" );
	
	for( new i; i < iNum; i++ )
	{
		new plr = iPlayers[ i ];
		
		num_to_str( plr, tempid, charsmax( tempid ) );
		get_user_name( plr, iName, charsmax( iName ) );
		
		menu_additem( menu, iName, tempid, 0 );
	}
	
	menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
	menu_display( id, menu );
}

public CmdGiveMenuHandler( id, menu, item )
{
	if( item == MENU_EXIT )
	{
		menu_destroy( menu );
		CmdMainMenu( id );
		return PLUGIN_HANDLED;
	}
	
	new iData[ 6 ], iName[ 63 ], iAccess, iCallback;
	menu_item_getinfo( menu, item, iAccess, iData, charsmax( iData ), iName, charsmax( iName ), iCallback );
	
	get_user_name( str_to_num( iData ), cacheUserName, charsmax( cacheUserName ) );
	client_cmd( id, "messagemode give" );
	
	menu_destroy( menu );
	return PLUGIN_HANDLED;
}

public CmdRemoveMenu( id )
{
	new iTitle[ 64 ];
	formatex( iTitle, charsmax( iTitle ), "\yBetterPlay \d- \wHidenSeek BM \rShop^n\yRemove Menu^n^n\wYour point%s: \y%i", iPoints[ id ] > 1 ? "s" : "", iPoints[ id ] );
	
	new menu = menu_create( iTitle, "CmdRemoveMenuHandler" );
	
	new iPlayers[ 32 ], iNum, tempid[ 10 ], iName[ 33 ];
	get_players( iPlayers, iNum, "ch" );
	
	for( new i; i < iNum; i++ )
	{
		new plr = iPlayers[ i ];
		
		num_to_str( plr, tempid, charsmax( tempid ) );
		get_user_name( plr, iName, charsmax( iName ) );
		
		menu_additem( menu, iName, tempid, 0 );
	}
	
	menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
	menu_display( id, menu );
}

public CmdRemoveMenuHandler( id, menu, item )
{
	if( item == MENU_EXIT )
	{
		menu_destroy( menu );
		CmdMainMenu( id );
		return PLUGIN_HANDLED;
	}
	
	new iData[ 6 ], iName[ 63 ], iAccess, iCallback;
	menu_item_getinfo( menu, item, iAccess, iData, charsmax( iData ), iName, charsmax( iName ), iCallback );
	
	get_user_name( str_to_num( iData ), cacheUserName, charsmax( cacheUserName ) );
	client_cmd( id, "messagemode remove" );
	
	menu_destroy( menu );
	return PLUGIN_HANDLED;
}

public CmdDonateMenu( id )
{
	new iTitle[ 64 ];
	formatex( iTitle, charsmax( iTitle ), "\rBetterPlay \d- \yHidenSeek BM Shop^nDonate Menu^n^n\wYour point%s: \y%i", iPoints[ id ] > 1 ? "s" : "", iPoints[ id ] );
	
	new menu = menu_create( iTitle, "CmdDonateMenuHandler" );
	
	new iPlayers[ 32 ], iNum, tempid[ 10 ], iName[ 33 ];
	get_players( iPlayers, iNum, "ch" );
	
	for( new i; i < iNum; i++ )
	{
		new plr = iPlayers[ i ];
		
		num_to_str( plr, tempid, charsmax( tempid ) );
		get_user_name( plr, iName, charsmax( iName ) );
		
		menu_additem( menu, iName, tempid, 0 );
	}
	
	menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
	menu_display( id, menu );
}

public CmdDonateMenuHandler( id, menu, item )
{
	if( item == MENU_EXIT )
	{
		menu_destroy( menu );
		CmdMainMenu( id );
		return PLUGIN_HANDLED;
	}
	
	new iData[ 6 ], iName[ 63 ], iAccess, iCallback;
	menu_item_getinfo( menu, item, iAccess, iData, charsmax( iData ), iName, charsmax( iName ), iCallback );
	
	get_user_name( str_to_num( iData ), cacheUserName, charsmax( cacheUserName ) );
	client_cmd( id, "messagemode donate" );
	
	menu_destroy( menu );
	return PLUGIN_HANDLED;
}

public Give( id )
{
	if( !( get_user_flags( id ) & PLUGIN_ACCESS ) ) return PLUGIN_HANDLED;
	
	new arg[ 33 ];
	read_argv( 1, arg, charsmax( arg ) );
	
	if( !is_str_num( arg ) )
	{
		ColorChat( id, GREEN, "%s^1 Invalid input,^3 please try^4 again^1.", PREFIX );
		client_cmd( id, "messagemode give" );
		
		return PLUGIN_HANDLED;
	}
	
	client_cmd( id, "shop_give_points ^"%s^" %d", cacheUserName, str_to_num( arg ) );
	CmdMainMenu( id );
	
	return PLUGIN_HANDLED;
}

public Remove( id )
{
	if( !( get_user_flags( id ) & PLUGIN_ACCESS ) ) return PLUGIN_HANDLED;
	
	new arg[ 33 ];
	read_argv( 1, arg, charsmax( arg ) );
	
	if( !is_str_num( arg ) )
	{
		ColorChat( id, GREEN, "%s^1 Invalid input,^3 please try^4 again^1.", PREFIX );
		client_cmd( id, "messagemode remove" );
		
		return PLUGIN_HANDLED;
	}
	
	client_cmd( id, "shop_remove_points ^"%s^" %d", cacheUserName, str_to_num( arg ) );
	CmdMainMenu( id );
	
	return PLUGIN_HANDLED;
}

public Donate( id )
{
	new arg[ 33 ];
	read_argv( 1, arg, charsmax( arg ) );
	
	if( !is_str_num( arg ) )
	{
		ColorChat( id, GREEN, "%s^1 Invalid input,^3 please try^4 again^1.", PREFIX );
		client_cmd( id, "messagemode donate" );
		
		return PLUGIN_HANDLED;
	}
	
	if( iPoints[ id ] < str_to_num( arg ) ) return PLUGIN_HANDLED;
	
	client_cmd( id, "shop_donate_points ^"%s^" %d", cacheUserName, str_to_num( arg ) );
	CmdMainMenu( id );
	
	return PLUGIN_HANDLED;
}

public ChameleonCounter( id )
{		
	if( is_user_connected( id ) )
	{
		if( chameleon_counter[ id ] == 0 )
		{
			set_hudmessage( 255, 0, 0, -1.0, 0.2, 1, 0.02, 3.0,_,_,-1 );
			show_hudmessage( id,"Chameleon expired." );
			
			if( cs_get_user_team( id ) == CS_TEAM_CT )
			{
				cs_set_user_model( id, ct_models[ random_num( 0, 3 ) ] );
			}
			else if( cs_get_user_team( id ) == CS_TEAM_T )
			{
				cs_set_user_model( id, t_models[ random_num( 0, 3 ) ] );
			}
			
			return PLUGIN_HANDLED;
		}
		else
		{
			set_hudmessage( R, G, B, -1.0, 0.2, 0, 0.02, 0.8,_,_,-1 );
			show_hudmessage( id, "Chameleon expires in %d second%s.", chameleon_counter[ id ], chameleon_counter[ id ] > 1 ? "s" : "" );
		}
		
		chameleon_counter[ id ]--;
		
		if( chameleon_counter[ id ] >= 0 ) set_task( 1.0, "ChameleonCounter", id );
	}
	return PLUGIN_HANDLED;
}

public GodmodeCounter( id )
{		
	if( is_user_connected( id ) )
	{
		if( godmode_counter[ id ] == 0 )
		{
			set_hudmessage( 255, 0, 0, -1.0, 0.23, 1, 0.02, 3.0,_,_,-1 );
			show_hudmessage( id,"Godmode expired." );
			set_user_godmode( id, 0 );
			return PLUGIN_HANDLED;
		}
		else
		{
			set_hudmessage( R, G, B, -1.0, 0.23, 0, 0.02, 0.8,_,_,-1 );
			show_hudmessage( id, "Godmode expires in %d second%s.", godmode_counter[ id ], godmode_counter[ id ] > 1 ? "s" : "" );
		}
		
		godmode_counter[ id ]--;
		
		if( godmode_counter[ id ] >= 0 ) set_task( 1.0, "GodmodeCounter", id );
	}
	return PLUGIN_HANDLED;
}

public SpeedCounter( id )
{		
	if( is_user_connected( id ) )
	{
		if( speed_counter[ id ] == 0 )
		{
			set_hudmessage( 255, 0, 0, -1.0, 0.26, 1, 0.02, 3.0,_,_,-1 );
			show_hudmessage( id,"Speed expired." );
			
			set_user_maxspeed( id, 250.0 );
			client_cmd( id, "cl_forwardspeed 400" );
			speed[ id ] = false;
			
			return PLUGIN_HANDLED;
		}
		else
		{
			set_hudmessage( R, G, B, -1.0, 0.26, 0, 0.02, 0.8,_,_,-1 );
			show_hudmessage( id, "Speed expires in %d second%s.", speed_counter[ id ], speed_counter[ id ] > 1 ? "s" : "" );
		}
		
		speed_counter[ id ]--;
		
		if( speed_counter[ id ] >= 0 ) set_task( 1.0, "SpeedCounter", id );
	}
	return PLUGIN_HANDLED;
}

public GravityCounter( id )
{		
	if( is_user_connected( id ) )
	{
		if( gravity_counter[ id ] == 0 )
		{
			set_hudmessage( 255, 0, 0, -1.0, 0.29, 1, 0.02, 3.0,_,_,-1 );
			show_hudmessage( id,"Gravity expired." );
			set_user_gravity( id );
			return PLUGIN_HANDLED;
		}
		else
		{
			set_hudmessage( R, G, B, -1.0, 0.29, 0, 0.02, 0.8,_,_,-1 );
			show_hudmessage( id, "Gravity expires in %d second%s.", gravity_counter[ id ], gravity_counter[ id ] > 1 ? "s" : "" );
		}
		
		gravity_counter[ id ]--;
		
		if( gravity_counter[ id ] >= 0 ) set_task( 1.0, "GravityCounter", id );
	}
	return PLUGIN_HANDLED;
}

public eCurWeapon( id ) 
{
	if( speed[ id ] ) 
	{
		set_user_maxspeed( id, 700.0 );
	}
}

public LoadPoints( id )
{
	if( !is_user_bot( id ) && !is_user_hltv( id ) )
	{
		new vaultdata[ 256 ], points[ 33 ], UserName[ 33 ];
		get_user_name( id, UserName, charsmax( UserName ) );
		
		format( vaultdata, charsmax( vaultdata ), "%i#", iPoints[ id ] );
		nvault_get( vault, UserName, vaultdata, 255 );
		
		replace_all( vaultdata, 255, "#", " " );
		parse( vaultdata, points, 32 );
		
		iPoints[ id ] = str_to_num( points );
	}
}

public SavePoints( id )
{
	if( !is_user_bot( id ) && !is_user_hltv( id ) )
	{
		new vaultdata[ 256 ], UserName[ 33 ];
		get_user_name( id, UserName, charsmax( UserName ) );
		
		format( vaultdata, charsmax( vaultdata ), "%i#", iPoints[ id ] );
		nvault_set( vault, UserName, vaultdata );
	}
}

AlreadyUsed( id ) 
{ 
ColorChat( id, GREEN, "%s^1 You^3 have^4 already^1 purchased^3 this^4 article^1!", PREFIX );
BlindPlayer( id, 0.8, 0.8, 0, 255, 0, 150 );
} 

NoPoints( id )
{
ColorChat( id, GREEN, "%s^1 You^3 don't^4 have^1 enough^3 points^4 to^1 purchase^3 this^4 article^1!", PREFIX );
BlindPlayer( id, 0.8, 0.8, 255, 0, 0, 150 );
}

LeftItems( id )
{
set_hudmessage( 200, 100, 0, -1.0, 0.35, 0, 4.0, 4.0, 0.1, 0.1, 2 );

if( shopused[ id ] ) 
{
show_hudmessage( id, "You can buy %d item%s.", shopused[ id ], shopused[ id ] == 1 ? "" : "s" );
}
else 
{
show_hudmessage( id, "Please wait for the next round, ^nif you want to buy articles." );
}
}

BlindPlayer( index, Float:fDuration, Float:fHoldTime, cRed, cGreen, cBlue, cAlpha )
{
message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "ScreenFade" ), { 0, 0, 0 }, index );

write_short( floatround( 4096.0 * fDuration, floatround_round ) );
write_short( floatround( 4096.0 * fHoldTime, floatround_round ) );
write_short( 4096 );

write_byte( cRed );
write_byte( cGreen );
write_byte( cBlue );
write_byte( cAlpha );

message_end( );
}

/// NoFlash Blinding - Start
public bad_fix2()
{
new Float:gametime = get_gametime();
if( gametime - g_gametime2 > 2.5 ) for(new i = 0; i < 32; i++) grenade[i] = 0;
}

public eventFlash( id )
{
new Float:gametime = get_gametime();

if(gametime != g_gametime)
{ 
g_owner = get_grenade_owner();
g_gametime = gametime;

for(new i = 0; i < 33; i++) g_track[i] = false;

g_track_enemy = false;
}    

if(is_user_connected(g_owner) && antiflash[ id ] )
{
g_track_enemy = true;

message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id);
write_short(1);
write_short(1);
write_short(1);
write_byte(0);
write_byte(0);
write_byte(0);
write_byte(255);
message_end();
}
}

public flash_delay()
{
if(g_track_enemy == false) 
{
for(new i = 0; i < 33; i++) 
{
if(g_track[i] == true && is_user_connected(i)) 
{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, i);
write_short(1);
write_short(1);
write_short(1);
write_byte(0);
write_byte(0);
write_byte(0);
write_byte(255);
message_end();
}
}
}
}

public grenade_throw() 
{
if(g_sync_check_data == 0) return PLUGIN_CONTINUE;

g_sync_check_data--;

if(read_datanum() < 2) return PLUGIN_HANDLED_MAIN;
if(read_data(1) == 11 && (read_data(2) == 0 || read_data(2) == 1)) add_grenade_owner(last);

return PLUGIN_CONTINUE;
}

public fire_in_the_hole()
{
new name[32];
read_data(3, name, 31);

new temp_last = get_user_index(name);
new junk;

if((temp_last == 0) || (!is_user_connected(temp_last))) return PLUGIN_CONTINUE;

if(get_user_weapon(temp_last,junk,junk) == CSW_FLASHBANG) 
{
last = temp_last;
g_sync_check_data = 2; 
}

return PLUGIN_CONTINUE;
}

public fire_in_the_hole2() 
{
new name[32];
read_data(4, name, 31);

new temp_last = get_user_index(name);
new junk;

if((temp_last == 0) || (!is_user_connected(temp_last))) return PLUGIN_CONTINUE;

if(get_user_weapon(temp_last,junk,junk) == CSW_FLASHBANG) 
{    
last = temp_last;
g_sync_check_data = 2;
}

return PLUGIN_CONTINUE;
}

add_grenade_owner(owner) 
{
new Float:gametime = get_gametime();
g_gametime2 = gametime;

for(new i = 0; i < 32; i++) 
{
if(grenade[i] == 0) 
{
grenade[i] = owner;
return;
}
}
}

get_grenade_owner() 
{
new which = grenade[0];

for(new i = 1; i < 32; i++) grenade[i-1] = grenade[i];

grenade[31] = 0;
return which;
}

// from XxAvalanchexX "Flashbang Dynamic Light"
public fw_emitsound(entity,channel,const sample[],Float:volume,Float:attenuation,fFlags,pitch) {
if(!equali(sample,"weapons/flashbang-1.wav") && !equali(sample,"weapons/flashbang-2.wav"))
return FMRES_IGNORED;

new Float:gametime = get_gametime();

//in case no one got flashed, the sound happens after all the flashes, same game time
if(gametime != g_gametime) {
g_owner = get_grenade_owner();
return FMRES_IGNORED;
}
return FMRES_IGNORED;
}
// NoFlash Blinding - End 

public taskLoadFile( )
{
new file[ 124 ], dir[ 124 ];
get_configsdir( dir, charsmax( dir ) );
formatex( file, charsmax( file ), "%s/HidenSeekShop.cfg", dir );

if( file_exists( file ) )
{
server_cmd( "exec %s", file );
server_exec( );
}
else
{
CreateFile( file );
log_amx( "HidenSeekShop.cfg is not found in configs folder. File is created..." );
}
}

CreateFile( const file[ ] )
{
new i = fopen( file, "wt" );

fprintf( i, "// %s v%s by %s^n^n", PLUGIN, VERSION, AUTHOR );

fprintf( i, "shop_he_cost %i^n", get_pcvar_num( he_cost ) );
fprintf( i, "shop_flash_cost %i^n", get_pcvar_num( flash_cost ) );
fprintf( i, "shop_smoke_cost %i^n", get_pcvar_num( smoke_cost ) );
fprintf( i, "shop_chameleon_cost %i^n", get_pcvar_num( chameleon_cost ) );
fprintf( i, "shop_godmode_cost %i^n", get_pcvar_num( godmode_cost ) );
fprintf( i, "shop_speed_cost %i^n", get_pcvar_num( speed_cost ) );
fprintf( i, "shop_awp_cost %i^n", get_pcvar_num( awp_cost ) );
fprintf( i, "shop_deagle_cost %i^n", get_pcvar_num( deagle_cost ) );
fprintf( i, "shop_health_cost %i^n", get_pcvar_num( health_cost ) );
fprintf( i, "shop_armor_cost %i^n", get_pcvar_num( armor_cost ) );
fprintf( i, "shop_gravity_cost %i^n", get_pcvar_num( gravity_cost ) );
fprintf( i, "shop_xp_cost %i^n", get_pcvar_num( xp_cost ) );
fprintf( i, "shop_antiflash_cost %i^n", get_pcvar_num( antiflash_cost ) );
fprintf( i, "shop_antihe_cost %i^n", get_pcvar_num( antihe_cost ) );
fprintf( i, "shop_antifrost_cost %i^n^n", get_pcvar_num( antifrost_cost ) );

fprintf( i, "shop_chameleon_time %i^n", get_pcvar_num( chameleon_time ) );
fprintf( i, "shop_godmode_time %i^n", get_pcvar_num( godmode_time ) );
fprintf( i, "shop_speed_time %i^n", get_pcvar_num( speed_time ) );
fprintf( i, "shop_gravity_time %i^n^n", get_pcvar_num( gravity_time ) );

fprintf( i, "shop_awp_ammo %i^n", get_pcvar_num( awp_ammo ) );
fprintf( i, "shop_deagle_ammo %i^n^n", get_pcvar_num( deagle_ammo ) );

fprintf( i, "shop_health_amount %i^n", get_pcvar_num( health_amount ) );
fprintf( i, "shop_armor_amount %i^n", get_pcvar_num( armor_amount ) );
fprintf( i, "shop_xp_amount %i^n^n", get_pcvar_num( xp_amount ) );

fprintf( i, "shop_points_kill %i^n", get_pcvar_num( kill_points ) );
fprintf( i, "shop_points_headshot %i^n", get_pcvar_num( headshot_points ) );
fprintf( i, "shop_points_grenade %i^n^n", get_pcvar_num( grenade_points ) );

fprintf( i, "shop_bonuspoints_on %i^n", get_pcvar_num( cvar_bonus_on ) );
fprintf( i, "shop_antihe_max_immunes %i^n^n", get_pcvar_num( antihe_max_immunes ) );

fprintf( i, "shop_hh_start %i^n", get_pcvar_num( hh_start ) );
fprintf( i, "shop_hh_end %i", get_pcvar_num( hh_end ) );

fclose( i );
}





Rest in peace my friend I always will remember you! 🖤👊

Аватар
illusion
Извън линия
Developer
Developer
Мнения: 1796
Регистриран на: 27 Ное 2016, 17:47
Местоположение: CraftVision
Се отблагодари: 151 пъти
Получена благодарност: 358 пъти
Обратна връзка:

Проблем с Shop плъгин

Мнение от illusion » 08 Авг 2018, 13:47

new const AUTHOR[ ] = "Smiley";
..

Пробвай този BM Shop тук - viewtopic.php?f=54&t=1866&p=9391#p9391. По-долу има още 2 плъгина, сложи и тях..

Аватар
atmax
Извън линия
Потребител
Потребител
Мнения: 492
Регистриран на: 22 Мар 2018, 15:06
Се отблагодари: 37 пъти
Получена благодарност: 43 пъти

Проблем с Shop плъгин

Мнение от atmax » 08 Авг 2018, 13:57

Еми сега го сложих пиша /shop обаче нищо не излиза иначе автора го познавам но не мисля че той ще ми помогне вече не се занимава с цс.
Влязох в logs не пише нищо за този плъгин ...
Rest in peace my friend I always will remember you! 🖤👊

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Поддръжка / Помощ”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 5 госта