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

VIP Plugin problem


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
RenuaR
New Member
Join Date: Mar 2020
Old 03-31-2020 , 07:17   VIP Plugin problem
Reply With Quote #1

Hello guys, i have a VIP plugin on my server and everthing is amazing, but i have a error in server console. The error is:
Quote:
L 03/31/2020 - 14:15:29: Start of error session.
L 03/31/2020 - 14:15:29: Info (map "de_inferno") (file "addons/amxmodx/logs/error_20200331.log")
L 03/31/2020 - 14:15:29: String formatted incorrectly - parameter 6 (total 5)
L 03/31/2020 - 14:15:29: [AMXX] Displaying debug trace (plugin "VIP.amxx")
L 03/31/2020 - 14:15:29: [AMXX] Run time error 25: parameter error
L 03/31/2020 - 14:15:29: [AMXX] [0] e616e140a96dc40012fa195394174b17.sma::hook_de ath (line 313)
L 03/31/2020 - 14:154: String formatted incorrectly - parameter 6 (total 5)
L 03/31/2020 - 14:154: [AMXX] Displaying debug trace (plugin "VIP.amxx")
L 03/31/2020 - 14:154: [AMXX] Run time error 25: parameter error
The sma of the plugins is this:

HTML Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <fun>

#define PLUGIN "VIP Plugin"
#define VERSION "2.0"
#define AUTHOR "RenuaR"

#define VIP_FLAG ADMIN_LEVEL_F
#define MAXPLAYERS 32 + 1
#define ALPHA_FULLBLINDED 255
#define g_Buffer 1536
#define find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2)

static const COLOR[] = "^x04" //green
const m_flFlashedUntil = 514;
const m_flFlashedAt = 515;
const m_flFlashHoldTime = 516;
const m_flFlashDuration = 517;
const m_iFlashAlpha = 518;
const m_flFlashDuration = 517;
new gMenuUsed[33];
new money_per_damage, money_kill_bonus, money_headshot_bonus;
new health_add, health_hs_add, health_max;
new nKiller, nKiller_hp, nHp_add, nHp_max;
new g_sniper_active, g_menu_active, g_map_active, g_awp_active, awp_active;
new g_menu_uses, g_awp_ct, g_awp_tr, g_menu_round, g_awp_menu_round, g_sniper_pickup;
new map_active, CT, TR, menu_round, awp_menu_round, menu_uses;
new CurrentRound;
new bool:g_bHasBombSite;
new bool:g_freezetime;
new bool:bAwpMap = false;
new bool:g_bCurrentMapIsInList = false; 
new bool:g_bCurrentAWPMapIsInList = false;
new bool:g_bRoundEnd;
new iTCount, iCTCount;
new g_type, g_enabled, g_recieved, bool:g_showrecieved, g_hudmsg1, g_hudmsg2;
new g_models_enabled, models_enabled;
new const VIP_CT[] = "vip_ct";
new const VIP_CT_MODEL[] = "models/player/vip_ct/vip_ct.mdl";
new const VIP_TR[] = "vip_tr";
new const VIP_TR_MODEL[] = "models/player/vip_tr/vip_tr.mdl";
new player_model[33][32];
new bool:g_model[33];
new g_color_msg, color_msg, g_menu_number_color, menu_number_color;
new g_vips_list, vips_list;

new const vipmenu[][] =
{
	//Commands to call VIP menu
	"say /vipmenu", "say vipmenu", "say_team /vipmenu", "say_team vipmenu", "say vmenu", "say_team vmenu"
} 

new const VIPweapons[][] =
{
	//Weapons which normal players can't pick up.
	"awp", "sg550", "g3sg1"
}

new const wantvip[][] =
{
	//Command to call wantvip.txt motd window
	"say /wantvip", "say wantvip", "say_team /wantvip", "say_team wantvip",
	"say /noriuvip", "say noriuvip", "say_team /noriuvip", "say_team noriuvip",
	"say /chciecvip", "say chciecvip", "say_team /chciecvip", "say_team chciecvip",
	"say /willenvip", "say willenvip", "say_team /willenvip", "say_team willenvip",
	"say /vouloirvip", "say vouloirvip", "say_team /vouloirvip", "say_team vouloirvip"
}

new const vipguns[][] =
{
	"weapon_awp", "weaopn_g3sg1", "weapon_sg550"
}

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_event("HLTV", "event_new_round", "a", "1=0", "2=0");
	register_logevent("LogEvent_RoundStart", 2, "1=Round_Start" );
	register_logevent("LogEvent_RoundEnd", 2, "1=Round_End");
	register_logevent("LogEvent_GameCommencing", 2, "0=World triggered", "1=Game_Commencing");
	register_event("TextMsg","Event_RoundRestart","a","2&#Game_w");
	register_event("DeathMsg", "hook_death", "a", "1>0");
	register_event("DeathMsg","death_msg","a");
	register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0");
	register_event("Damage","Damage","b");
	RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1);
	RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon");
	RegisterHam(Ham_Touch, "armoury_entity", "fw_TouchWeapon");
	register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue");
	register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged");
	
	for(new i = 0; i < sizeof vipmenu; i++)
	register_clcmd(vipmenu[i], "cmdvipmenu") //Checks const vipmenu, that is above plugin_init
	for(new i = 0; i < sizeof VIPweapons; i++)
	register_clcmd(VIPweapons[i], "HandleCmd") //Checks const VIPweapons, that is above plugin_init
	for(new i = 0; i < sizeof wantvip; i++)
	register_clcmd(wantvip[i], "ShowMotd")
	
	register_clcmd("say /vips","print_adminlist") //If someone says /vips it starts the function print_adminlist
	
	register_cvar("vip_contactinfo", "contact info here", FCVAR_SERVER)
	register_cvar("vip_price", "your price here", FCVAR_SERVER)
	
	money_per_damage 	= register_cvar("vip_money_per_damage","5") //How many $ VIP will get per 1 damage 
	money_kill_bonus 	= register_cvar("vip_money_kill_bonus","500") //How many $ VIP will get per kill
	money_headshot_bonus 	= register_cvar("vip_money_hs_bonus","750") //How many $ VIP will get per head shot kill 
	health_add 		= register_cvar("vip_hp", "15") //How many hp VIP will get per kill 
	health_hs_add 		= register_cvar("vip_hp_hs", "30") //How many hp VIP will get per head shot kill 
	health_max 		= register_cvar("vip_max_hp", "100") //How many hp VIP can have in total 
	g_sniper_active 	= register_cvar("vip_sniper_active", "0") //Who can buy SNIPERS? 0 - everyone, 1 - only VIP
	g_menu_active 		= register_cvar("vip_menu_active", "1") //Will VIP get VIP menu? 0 - won't get the menu, 1 - will get the menu.
	g_map_active 		= register_cvar("vip_map_active", "1") //VIP menu works on the maps in mapnames.ini? 0 - Yes (VIP will get VIP menu), 1 - No
	g_awp_active 		= register_cvar("vip_awp_active", "1") // 1 - VIP can get AWP choice; 0 - cann't
	g_menu_uses 		= register_cvar("vip_menu_uses", "1") // How many times VIP can use VIP menu per round?
	g_awp_ct 		= register_cvar("vip_awp_ct", "5") //How many counter terrorist must be in a team to AWP choice show up
	g_awp_tr 		= register_cvar("vip_awp_tr", "5") //How many terrorist must be in a team to AWP choice show up
	g_menu_round 		= register_cvar("vip_menu_round", "3") //Round from which VIP will get VIP menu
	g_awp_menu_round 	= register_cvar("vip_awp_menu_round", "3") //Round from which VIP will get AWP choice
	g_sniper_pickup 	= register_cvar("vip_sniper_pickup", "0") //0 - everyone can pickup snipers, 1 - only VIP
	g_recieved 		= register_cvar("vip_bulletdamage_recieved","1") //0 - bullet damage disabled, 1 - show damage done, 2 - show damage done, but not via wall
	g_type 			= register_cvar("vip_bulletdamage","1") // Enable or disable showing recieved damage
	g_models_enabled 	= register_cvar("vip_models", "1") //0 - VIP models disabled, 1 - enabled.
	g_color_msg 		= register_cvar("vip_colored_text_message", "1")// Print /vips and info about vip text. 1 - colored, 0 - normal
	g_menu_number_color 	= register_cvar("vip_menu_number_color", "0") //0 - red, 1 - yellow, 2 - white, 3 - grey.
	g_vips_list 		= register_cvar("vip_show_list", "3") // /vips show. 0 - off, 1 - chat message, 2 - motd window.

	g_hudmsg1 		= CreateHudSyncObj()
	g_hudmsg2 		= CreateHudSyncObj()
	
	if( find_ent_by_class(-1, "func_bomb_target") || find_ent_by_class(-1, "info_bomb_target") ) //Checks if the map has bombsite
	{
		g_bHasBombSite = true; //If the map has bombsite it is set to true
	}
	
	get_user_msgid("ScreenFade")
	
	register_dictionary( "vip.txt" );
}

public plugin_cfg()
{
	map_active = get_pcvar_num (g_map_active); //Gets the value of g_map_active 
	awp_active = get_pcvar_num (g_awp_active); //Gets the value of g_awp_active 
	CT = get_pcvar_num (g_awp_ct); //Gets the value of g_awp_ct
	TR = get_pcvar_num (g_awp_tr); //Gets the value of g_awp_tr
	menu_round = get_pcvar_num (g_menu_round);
	awp_menu_round = get_pcvar_num (g_awp_menu_round);
	menu_uses = get_pcvar_num (g_menu_uses);
	models_enabled = get_pcvar_num(g_models_enabled);
	color_msg = get_pcvar_num(g_color_msg);
	menu_number_color = get_pcvar_num(g_menu_number_color);
	vips_list = get_pcvar_num(g_vips_list)
	
	new szmapnames[128], szData[32], szCurrentMap[32], szawpmapnames[128];
	format( szmapnames, 128, "addons/amxmodx/configs/mapnames.ini" )
	if(!file_exists(szmapnames))
	{
		server_print("[VIP] File %s is missing!", szmapnames);
		server_print("[VIP] File %s is created.", szmapnames);
		write_file(szmapnames, "awp_")
		write_file(szmapnames, "cs_deagle")
		write_file(szmapnames, "knf_")
		write_file(szmapnames, "1hp_")
		write_file(szmapnames, "aim")
	}
	if(file_exists(szmapnames)) 
	{
		get_configsdir(szmapnames, charsmax(szmapnames)); // Get the AMX Mod X configs directory (folder). 
		add(szmapnames, charsmax(szmapnames), "/mapnames.ini"); // Add your filename to the filepath. 
		get_mapname(szCurrentMap, charsmax(szCurrentMap)); // Get the current map. 
	     
		new f = fopen(szmapnames, "rt"); // Open the file. 
		while( !feof(f) ) // Loop until it finds the End Of the File (aka EOF). 
		{ 
			fgets(f, szData, charsmax(szData)); // Get all text from current line.
			trim(szData); // Trim off the new line and carriage return characters.
			if( containi(szCurrentMap, szData) != -1 )   // Check if the current map is equal to the map listed on this line. 
			{ 
				g_bCurrentMapIsInList = true; // Set boolean to true so that you know if the map was in the file. 
				break; // Stop looping (reading the file) because you found what you came for. 
			} 
		} 
		fclose(f); // Close the file.
	}
	
	format( szawpmapnames, 128, "addons/amxmodx/configs/awpmapnames.ini" )
	if(!file_exists(szawpmapnames))
	{
		server_print("[VIP] File %s is missing!", szawpmapnames);
		server_print("[VIP] File %s is created.", szawpmapnames);
		write_file(szawpmapnames, "2x2")
		write_file(szawpmapnames, "3x3")
		write_file(szawpmapnames, "4x4")
		write_file(szawpmapnames, "cs_max")
		write_file(szawpmapnames, "aim")
	}
	if(file_exists(szawpmapnames))
	{
		//Now lets check if current map is in awpmapnames.ini
		get_configsdir(szawpmapnames, charsmax(szawpmapnames)); // Get the AMX Mod X configs directory (folder). 
		add(szawpmapnames, charsmax(szawpmapnames), "awpmapnames.ini"); // Add your filename to the filepath. 
		get_mapname(szCurrentMap, charsmax(szCurrentMap)); // Get the current map. 
		
		new f = fopen(szawpmapnames, "rt"); // Open the file. 
		while( !feof(f) ) // Loop until it finds the End Of the File (aka EOF). 
		{ 
			fgets(f, szData, charsmax(szData)); // Get all text from current line. 
			trim(szData); // Trim off the new line and carriage return characters. 
			if( containi(szCurrentMap, szData) != -1 )   // Check if the current map is equal to the map listed on this line. 
			{ 
				g_bCurrentAWPMapIsInList = true; // Set boolean to true so that you know if the map was in the file. 
				break; // Stop looping (reading the file) because you found what you came for. 
			} 
		} 
		fclose(f); // Close the file.
	}
}

public plugin_precache() 
{
	if(models_enabled == 1)
	{
		precache_model(VIP_TR_MODEL) 
		precache_model(VIP_CT_MODEL)
	}
} 

public event_new_round(id)
{
	g_freezetime = false; // Freeze time has ended, so lets set it to false
	g_enabled = get_pcvar_num(g_type)
	if(get_pcvar_num(g_recieved)) g_showrecieved = true
}

public LogEvent_RoundStart(id)
{
	g_freezetime = true;
	g_bRoundEnd = false;
	gMenuUsed[id] = 0;
	iTCount = 0;
	iCTCount = 0;
	CurrentRound++;
	new players[32], player, pnum; 
	get_players(players, pnum, "a");
	for ( new i; i < pnum; i++ )
	{
		switch( cs_get_user_team( players[i] ) )
		{
			case CS_TEAM_T: iTCount++;
			case CS_TEAM_CT: iCTCount++;
		}
	}
	for(new i = 0; i < pnum; i++)
	{
		player = players[i];
		if (!get_pcvar_num(g_menu_active))
			return PLUGIN_CONTINUE
		
		if( CurrentRound >= menu_round && get_user_flags(id) & VIP_FLAG )
		{
			Showrod(player);
		}
	}
	return PLUGIN_CONTINUE
}

public LogEvent_RoundEnd()
{
	g_bRoundEnd = true;
}

public Event_RoundRestart(id)
{
	CurrentRound=0;
}

public LogEvent_GameCommencing(id)
{
	CurrentRound=0;
}

public hook_death()
{
	new hp_added[64];
	// Killer id
	nKiller = read_data(1)
	if(is_user_alive(nKiller)) 
	{
		if ( (read_data(3) == 1) && (read_data(5) == 0) )
		{
			nHp_add = get_pcvar_num (health_hs_add)
		}
		else
		nHp_add = get_pcvar_num (health_add)
		nHp_max = get_pcvar_num (health_max)
		// Updating Killer HP
		if(!(get_user_flags(nKiller) & VIP_FLAG))
		return;
	
		nKiller_hp = get_user_health(nKiller)
		nKiller_hp += nHp_add
		// Maximum HP check
		if (nKiller_hp > nHp_max) nKiller_hp = nHp_max
		set_user_health(nKiller, nKiller_hp)
		// Hud message "Healed +15/+30 hp"
		if(nKiller_hp < nHp_max)
		{
			format(hp_added, sizeof(hp_added), "%L", nKiller, "HP_ADDED")
			set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)
			show_hudmessage(nKiller, hp_added, nHp_add)
		}
		// Screen fading
		if(!get_user_flashed(nKiller)) //Checks if user is not flashed
		{
			message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, nKiller)
			write_short(1<<10)
			write_short(1<<10)
			write_short(0x0000)
			write_byte(0)
			write_byte(0)
			write_byte(200)
			write_byte(75)
			message_end()
		}
	}
}

public death_msg()
{
	if(read_data(1)<=MAXPLAYERS && read_data(1) && read_data(1)!=read_data(2)) cs_set_user_money(read_data(1),cs_get_user_money(read_data(1)) + get_pcvar_num(money_kill_bonus) - 300)
}

public on_damage(id)
{
	if(g_enabled)
	{		
		static attacker; attacker = get_user_attacker(id)
		static damage; damage = read_data(2)		
		if(g_showrecieved)
		{			
			set_hudmessage(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1)
			ShowSyncHudMsg(id, g_hudmsg2, "%i^n", damage)		
		}
		if(is_user_connected(attacker))
		{
			switch(g_enabled)
			{
				case 1: {
					set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
					ShowSyncHudMsg(attacker, g_hudmsg1, "%i^n", damage)				
				}
				case 2: {
					if(fm_is_ent_visible(attacker,id))
					{
						set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
						ShowSyncHudMsg(attacker, g_hudmsg1, "%i^n", damage)				
					}
				}
			}
		}
	}
}

public Damage(id)
{
	new weapon, hitpoint, attacker = get_user_attacker(id,weapon,hitpoint)
	if(attacker<=MAXPLAYERS && is_user_alive(attacker) && attacker!=id)
	if(get_user_flags(id) & VIP_FLAG) 
	{
		new money = read_data(2) * get_pcvar_num(money_per_damage)
		if(hitpoint==1) money += get_pcvar_num(money_headshot_bonus)
		cs_set_user_money(attacker,cs_get_user_money(attacker) + money)
	}
}

public fwHamPlayerSpawnPost(id)
{
	gMenuUsed[id] = 0; //Make sure that VIP didn't use VIP menu on his spawn
	if(is_user_alive(id))
	{
		if(get_user_flags(id) & VIP_FLAG)
		{
			if(!g_bCurrentMapIsInList) //Checks if map is not the one written in mapnames.ini, if user is alive and if e has flag H
			{
				give_item(id, "weapon_hegrenade"); //Gives HE grenade
				give_item(id, "weapon_flashbang"); //Gives FB grenade
				give_item(id, "weapon_flashbang"); //Gives BF grenade
				give_item(id, "weapon_smokegrenade"); //Gives SG grenade
				give_item(id, "item_assaultsuit"); //Gives armor
				if(g_bHasBombSite && cs_get_user_team(id) == CS_TEAM_CT) //Checks if current map has bombsite
				{
					give_item(id, "item_thighpack"); //Gives defuse kit
				}
			}
		
			if(models_enabled == 1)
			{
				if(cs_get_user_team(id) & CS_TEAM_T)
				{
					copy(player_model[id], sizeof(player_model), VIP_TR)
		
					new currentmodel[32];
					fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);
			
					if(!equal(currentmodel, player_model[id]))
					{
						fm_set_user_model(id, player_model[id])
					}
				}
				else if(cs_get_user_team(id) & CS_TEAM_CT)
				{
					copy(player_model[id], sizeof(player_model), VIP_CT)
		
					new currentmodel[32];
					fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);
			
					if(!equal(currentmodel, player_model[id]))
					{
						fm_set_user_model(id, player_model[id])
					}
				}
			}
		}
	}
}

public fw_TouchWeapon(weapon, id) 
{
	if (!get_pcvar_num(g_sniper_pickup)) //Checks if g_sniper_pickup is disactivated (set to 0)
		return PLUGIN_CONTINUE //If it is, let players pick up snipers
		
	if (!is_user_alive(id) || get_user_flags(id) & VIP_FLAG) 
	{
		return HAM_IGNORED
	}
   
	static classname[32]
	pev(weapon, pev_classname, classname, charsmax(classname))
 
	for(new i = 0; i < sizeof vipguns; i++)
	if (g_bCurrentMapIsInList && equal(classname, vipguns[i])) 
	{
		//Sends a message that snipers are only for VIP
		client_print(id, print_center, "%L", id, "SNIPER_ONLY_FOR_VIP")
		return HAM_SUPERCEDE
	}
	return HAM_IGNORED
} 

public fw_SetClientKeyValue(id, infobuffer, key[], value[])
{   
	if (g_model[id] && equal(key, "model"))
		return FMRES_SUPERCEDE
	
	return FMRES_IGNORED
}

public fw_ClientUserInfoChanged(id, infobuffer)
{   
	if (!g_model[id])
		return FMRES_IGNORED
	
	new currentmodel[32]; 
	fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);
	
	if(!equal(currentmodel, player_model[id]))
		fm_set_user_model(id, player_model[id]) 
	
	return FMRES_IGNORED
}

public cmdvipmenu(id) 
{
	if ( is_user_alive(id) )
	{
		if( get_user_flags(id) & VIP_FLAG )
		{
			if ( CurrentRound < menu_round )
			{
				client_print( id, print_center, "%L", id, "VIP_MENU_ROUND", menu_round ); //Sends a message that VIP can use VIP menu only from specific round
			}
			if ( map_active == 1 ) //Checks if map_active is 1
			{
				if( g_bCurrentMapIsInList ) //Checks if current map is in mapnames list
				{
					client_print( id, print_center, "%L", id, "VIP_MENU_WRONG_MAP" ); //Sends a message that VIP can't use VIP menu on that map
				}
			}
			if ( gMenuUsed[id] >= menu_uses )
			{
				client_print( id, print_center, "%L", id, "VIP_MENU_PER_ROUND", menu_uses ); //Message that VIP can only take VIP menu few time that is set as VIPUsed
			}
			if ( !g_freezetime ) //Checks if freezetime is not over yet and if user is alive and he has flag H
			{
				client_print( id, print_center, "%L", id, "VIP_MENU_ONLY_FROM_ROUND_START" ); //Message that's set in vipplugin.txt as VIP_MENU_ONLY_FROM_ROUND_START
			}
			if(g_freezetime) //Checks if freezetime is over
			{
				if ( gMenuUsed[id] < menu_uses ) //Checks if VIP has already used VIP menu before, the amount of times we set as VIPUsed 
				{
					if( CurrentRound >= menu_round ) //Checks if current round is more or equal to the round that is set as VIPMenuRound
					{	
						if (!get_pcvar_num(g_menu_active)) //Checks if g_menu_active is disactivated (set to 0)
							return PLUGIN_CONTINUE //If so, VIP won't get VIP menu
						Showrod(id) //Shows VIP menu
					}
				}
			}
		}
		else // If user doesn't have VIP_FLAG
		{
			PrintText(id) //Sets a task in 0.1 seconds and starts PrintTect
		}
	}
	else if( get_user_flags(id) & VIP_FLAG ) //Checks if user is death and he have VIP_FLAG
	{
		client_print( id, print_center, "%L", id, "VIP_MENU_MUST_BE_ALIVE" ); //Sends a message that VIP must be alive to use VIP menu
	}
	else //If user is death and doesn't have VIP_FLAG
	{
		PrintText(id) //Prints PrintText
	}
	return PLUGIN_HANDLED;
}

public Showrod(id)
{
	if (get_user_flags(id) & VIP_FLAG) //Checks if player has flag H
	{
		if (map_active) //Checks if map_active is 1
		{
			if( g_bCurrentMapIsInList ) //Checks if current map is in mapnames.ini, if so print the message and cancels the menu showup
			{
				client_print( id, print_center, "%L", id, "VIP_MENU_WRONG_MAP" ); //Sends a message that VIP can't use VIP menu on that map
				return; //Stop VIP from getting the VIP menu
			}
		}
		if( g_bCurrentAWPMapIsInList ) //Checks if map is in awpmapnames.ini
		{
			bAwpMap = true //If so sets bAwpMap to true, so AWP choice would work in maps that are in awpmapnames.ini
		}
		new newmenu[64], choice_1[64], choice_2[64], choice_3[64] 
		format(newmenu, sizeof(newmenu), "%L", id, "NEW_MENU"); //Shows a menu message that's set in vipplugin.txt as NEW_MENU_PRIMARY
		new menu = menu_create(newmenu, "Pressedrod"); //Creates menu that's in Pressedrod
		
		format(choice_1, sizeof(choice_1), "%L", id, "MENU_CHOICE_1"); //Shows a menu message that's set in vipplugin.txt as MENU_CHOICE_PRIMARY_1
		menu_additem(menu, choice_1, "1", 0); //Menu choice/case 1
		format(choice_2, sizeof(choice_2), "%L", id, "MENU_CHOICE_2"); //Shows a menu message that's set in vipplugin.txt as MENU_CHOICE_PRIMARY_2
		menu_additem(menu, choice_2, "2", 0); //Menu choice/case 2
		if ( iTCount >= TR && iCTCount >= CT ) //Checks that each team has 5 or more people to AWP choice appear in the menu
		{
			if (awp_active == 1) //Checks if vips can get awp choice, 0 - no; 1 - yes
			{
				if ( CurrentRound >= awp_menu_round ) //Checks if current round is more or equal to 3, so AWP choice would come out
				{
					if( !bAwpMap ) //Checks if map is not one in awpmapnames.xfg, if so shows the fifth menu item
					{
						format(choice_3, sizeof(choice_3), "%L", id, "MENU_CHOICE_3"); //Shows a menu message that's set in vipplugin.txt as MENU_CHOICE_PRIMARY_5
						menu_additem(menu, choice_3, "3", 0); //Menu choice/case 5
					}
				}
			}
		}		
		new menu_exit_name[64];
		format(menu_exit_name, sizeof(menu_exit_name), "%L", id, "MENU_EXIT_NAME")
		menu_setprop(menu, MPROP_EXITNAME, menu_exit_name)
		menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
		if(menu_number_color == 1) //Checks if menu_number_color is set to 3
		{
			menu_setprop(menu,MPROP_NUMBER_COLOR,"\y"); // ets the number color to yello
		}
		else if(menu_number_color == 2) //Checks if menu_number_color is set to 3
		{
			menu_setprop(menu,MPROP_NUMBER_COLOR,"\w"); //Sets the number color to white
		}
		else if(menu_number_color == 3) //Checks if menu_number_color is set to 3
		{
			menu_setprop(menu,MPROP_NUMBER_COLOR,"\d"); //Sets the number color to grey
		}
		else //In any other case the menu_number_color is set to
		{
			menu_setprop(menu,MPROP_NUMBER_COLOR,"\r"); //Sets the number color to red
		}
		menu_display(id, menu, 0)
	}
}

public Pressedrod(id, menu, item)
{
	if( item == MENU_EXIT ) //Checks if player clicks menu exit (0)
	{
		menu_destroy(menu); //If so the menu will be destroyed
		return PLUGIN_HANDLED;
	}
	new iFlashes = cs_get_user_bpammo( id, CSW_FLASHBANG );
	new HasC4[33], HasHE[33], HasSG[33];
	new weapons = pev(id, pev_weapons)
	HasC4[id] = ( weapons & 1<<CSW_C4 )
	HasHE[id] = ( weapons & 1<<CSW_HEGRENADE ) && cs_get_user_bpammo(id, CSW_HEGRENADE)
	HasSG[id] = ( weapons & 1<<CSW_SMOKEGRENADE ) && cs_get_user_bpammo(id, CSW_SMOKEGRENADE)
	new data[6], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	new key = str_to_num(data);
	if(is_user_alive(id) && !g_bRoundEnd)
	{
		strip_user_weapons( id );
		switch(key)
		{
		case 1: {  								
				give_item(id,"weapon_m4a1") //Gives M4A1
				cs_set_user_bpammo(id, CSW_M4A1, 90); //Sets M4A1 back pack ammo to 90
				client_print( id, print_center, "%L", id, "CHOSE_M4A1" ); //Shows a message that's set in vipplugin.txt as CHOSE_M4A1
			}
		case 2: { 	
				give_item(id,"weapon_ak47") //Gives AK47
				cs_set_user_bpammo(id, CSW_AK47, 90); //Sets AK47 back pack ammo to 90
				client_print( id, print_center, "%L", id, "CHOSE_AK47" ); //Shows a message that's set in vipplugin.txt as CHOSE_AK47
			}
		case 3: { 
				give_item(id,"weapon_awp") //Gives AWP
				cs_set_user_bpammo(id, CSW_AWP, 30); //Sets AWP back pack ammo to 30
				client_print( id, print_center, "%L", id, "CHOSE_AWP" ); //Shows a message that's set in vipplugin.txt as CHOSE_AWP
			}
		}
		if (HasC4[id])
		{
			give_item(id, "weapon_c4");
			cs_set_user_plant( id );
			set_pev(id, pev_body, 1);
		}
		if (HasHE[id])
		{
			give_item(id, "weapon_hegrenade")
		}
		if (HasSG[id])
		{
			give_item(id, "weapon_smokegrenade");
		}
		if( iFlashes > 0 ) 
		{ 
			give_item( id, "weapon_flashbang" ); 
			cs_set_user_bpammo( id, CSW_FLASHBANG, iFlashes ); 
		} 
		give_item(id,"weapon_knife") //Gives knife
		give_item(id,"weapon_deagle") //Gives deagle
		cs_set_user_bpammo(id, CSW_DEAGLE, 35); //Sets deagle back pack ammo to 35
		if(g_bHasBombSite && cs_get_user_team(id) == CS_TEAM_CT) //Checks if current map has bombsite
		{
			give_item(id, "item_thighpack"); //Gives defuse kit
		}
		gMenuUsed[id]++ //Makes sure that VIP really made a choice
	}
	menu_destroy(menu); //Destroys menu
	return PLUGIN_CONTINUE
}

public HandleCmd(id)
{
	if (!get_pcvar_num(g_sniper_active)) //Checks if g_awp_active is disactivated (set to 0)
		return PLUGIN_CONTINUE //If it is, let players buy snipers
		
	if(get_user_flags(id) & VIP_FLAG)  //Checks if player has flag H
		return PLUGIN_CONTINUE 
		
	client_print( id, print_center, "%L", id, "SNIPER_ONLY_FOR_VIP" ); //Sends a message that snipers are only for VIP
	
	return PLUGIN_HANDLED
}

public ShowMotd(id)
{
	new contact[112];
	get_cvar_string("vip_contactinfo", contact, 63)
	new price[112];
	get_cvar_string("vip_price", price, 63)
	static MOTD[1501];
	new len = formatex(MOTD, 1500,"<style type=text/css>body{background-color: #000000;font-family:Verdana,Tahoma;}</style>");
	len += formatex(MOTD[len],1500-len,"<font size=2 color=#e0a518><b><center>%L</center></b></font><br /><font size=1 color=#c0c0ff><UL>", id, "MOTD_LINE_01");
	len += formatex(MOTD[len],1500-len,"<LI>%L</LI>", id, "MOTD_LINE_02");
	len += formatex(MOTD[len],1500-len,"<LI>%L</LI>", id, "MOTD_LINE_03");
	len += formatex(MOTD[len],1500-len,"<LI>%L</LI>", id, "MOTD_LINE_04");
	len += formatex(MOTD[len],1500-len,"<LI>%L</LI>", id, "MOTD_LINE_05");
	len += formatex(MOTD[len],1500-len,"<LI>%L</LI>", id, "MOTD_LINE_06");
	len += formatex(MOTD[len],1500-len,"<LI>%L</LI>", id, "MOTD_LINE_07");
	len += formatex(MOTD[len],1500-len,"<LI>%L</LI>", id, "MOTD_LINE_08");
	len += formatex(MOTD[len],1500-len,"<LI>%L</LI>", id, "MOTD_LINE_09");
	len += formatex(MOTD[len],1500-len,"%L", id, "MOTD_LINE_10");
	len += formatex(MOTD[len],1500-len,"<br>%L", id, "MOTD_LINE_11");
	len += formatex(MOTD[len],1500-len,"<br>%L", id, "MOTD_LINE_12");
	len += formatex(MOTD[len],1500-len,"<LI>%L</LI><br>", id, "MOTD_LINE_13");
	len += formatex(MOTD[len],1500-len,"<font size=1 color=#00c000><strong>%L</strong></font>", id, "MOTD_LINE_14")
	len += formatex(MOTD[len],1500-len,"<br>%L %s", id, "MOTD_LINE_15", price)
	len += formatex(MOTD[len],1500-len,"<br>%L <font color=#FF6600>%s</font>", id, "MOTD_LINE_16", contact);

	new motd_name[64];
	format(motd_name, 64, "%L", id, "WANTVIP_MOTD_NAME");
	show_motd(id,MOTD, motd_name);	
	return PLUGIN_HANDLED
}

public client_putinserver(id)
{
	if (!task_exists(id + 1000)) set_task(30.0, "PrintText", id + 1000) //Checks if task already exist, if not print text set in public PrintText
}

public PrintText(id)
{
	if(color_msg == 1)
	{
		client_print_color( id, "%L", id, "PRINT_TEXT_COLORED" ); //Message which is sent
	}
	else
	{
		client_print_color( id, "%L", id, "PRINT_TEXT" ); //Message which is sent
	}
}

public print_adminlist(user) 
{
	new id, count, x, len, adminnames[33][32];
	for(id = 1 ; id <= MAXPLAYERS ; id++)
			if(is_user_connected(id))
				if(get_user_flags(id) & VIP_FLAG)
					get_user_name(id, adminnames[count++], 31)
					
	if(vips_list == 2 || vips_list == 3)
	{					
		new contact[112];
		get_cvar_string("vip_contactinfo", contact, 63)
		new price[112];
		get_cvar_string("vip_price", price, 63)
		new Data[g_Buffer];
    
		len = formatex(Data[len], g_Buffer - len, "<html><center><font color=yellow>%L <font color=green>%s.<font color=yellow> %L <font color=green>%s</font><body bgcolor=Black>", user, "CONTACT", contact, user, "MOTD_LINE_15", price);
		len += formatex(Data[len], g_Buffer - len, "<br><table border=1 width=300 cellspacing=0 bordercolor=#4A4344 style=color:#56A5EC;text-align:center;>");
		len += formatex(Data[len], g_Buffer- len, "<tr><td><b>#</b></td><td><b>%L</b></td></tr>", user, "VIPS_ONLINE");
    
		if(count > 0)
		{
			for(x = 0 ; x < count ; x++) 
			{
				len += formatex(Data[len], g_Buffer - len, "<tr><td><font color=Red>%d</font></td>", x + 1);
				len += formatex(Data[len], g_Buffer - len, "<td>%s</td></tr>", adminnames[x]);
			}
		}
		len += formatex(Data[len],g_Buffer - len,"</center></body></html>");
		new motd_name[64];
		format(motd_name, 64, "%L", user, "WANTVIP_MOTD_NAME");
		show_motd(user, Data, motd_name);
		
		
	}
	if(vips_list == 1 || vips_list == 3)
	{
		new message[256], contact[112]
		
		if(color_msg == 1)
		{
			len = format(message, 255, "%L", user, "VIPS_ONLINE_COLORED", COLOR)
		}
		else
		{
			len = format(message, 255, "%L", user, "VIPS_ONLINE")
		}
		if(count > 0)
		{
			for(x = 0 ; x < count ; x++) 
			{
				len += format(message[len], 255-len, " %s%s ", adminnames[x], x < (count-1) ? ", ":"")
				if(len > 96 ) 
				{
					client_print_color(user, message)
					if(color_msg == 1)
					{
						len = format(message, 255, "%s",COLOR)
					}
					else
					{
						len = format(message, 255, "")
					}
				}
			}
			client_print_color(user, message)
		}
		else 
		{
			len += format(message[len], 255-len, " %L", id, "NO_VIPS_ONLINE")
			client_print_color(user, message)
		}
		
		get_cvar_string("vip_contactinfo", contact, charsmax(contact))
		if(contact[0]) 
		{
			if(color_msg == 1)
			{
				client_print_color(user, "%L %s", user, "CONTACT_COLORED", contact)
			}
			else
			{
				client_print_color(user, "%L %s", user, "CONTACT", contact)
			}
		}
	}
}

stock fm_set_user_model(player, modelname[])
{   
	engfunc(EngFunc_SetClientKeyValue, player, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", modelname)
	
	g_model[player] = true
}

stock fm_get_user_model(player, model[], len)
{   
	engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", model, len)
}

stock fm_reset_user_model(player)
{         
	g_model[player] = false
	
	dllfunc(DLLFunc_ClientUserInfoChanged, player, engfunc(EngFunc_GetInfoKeyBuffer, player))
}

get_user_flashed(id, &iPercent=0) 
{ 
	new Float:flFlashedAt = get_pdata_float(id, m_flFlashedAt) 

	if( !flFlashedAt ) 
	{ 
		return 0 
	} 
	
	new Float:flGameTime = get_gametime() 
	new Float:flTimeLeft = flGameTime - flFlashedAt 
	new Float:flFlashDuration = get_pdata_float(id, m_flFlashDuration) 
	new Float:flFlashHoldTime = get_pdata_float(id, m_flFlashHoldTime) 
	new Float:flTotalTime = flFlashHoldTime + flFlashDuration 
	
	if( flTimeLeft > flTotalTime ) 
	{ 
		return 0 
	} 
	
	new iFlashAlpha = get_pdata_int(id, m_iFlashAlpha) 

	if( iFlashAlpha == ALPHA_FULLBLINDED ) 
	{ 
		if( get_pdata_float(id, m_flFlashedUntil) - flGameTime > 0.0 ) 
		{ 
			iPercent = 100 
		} 
		else 
		{ 
			iPercent = 100-floatround(((flGameTime - (flFlashedAt + flFlashHoldTime))*100.0)/flFlashDuration) 
		} 
	} 
	else 
	{ 
		iPercent = 100-floatround(((flGameTime - flFlashedAt)*100.0)/flTotalTime) 
	} 

	return iFlashAlpha 
}

stock client_print_color(const id, const input[], any:...) 
{ 
	new count = 1, players[32]; 
	static msg[191]; 
	vformat(msg, 190, input, 3); 

	replace_all(msg, 190, "!g", "^x04"); // Green Color 
	replace_all(msg, 190, "!n", "^x01"); // Default Color 
	replace_all(msg, 190, "!t", "^x03"); // Team Color 

	if (id) players[0] = id; else get_players(players, count, "ch"); 
	{ 
		for (new i = 0; i < count; i++) 
		{ 
			if (is_user_connected(players[i])) 
			{ 
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]); 
				write_byte(players[i]); 
				write_string(msg); 
				message_end(); 
			} 
		} 
	} 
}

Can you help me?
RenuaR is offline
Napoleon_be
Veteran Member
Join Date: Jul 2011
Location: Belgium
Old 03-31-2020 , 08:30   Re: VIP Plugin problem
Reply With Quote #2

try replacing line 313 with this

PHP Code:
format(hp_addedsizeof(hp_added), "%L"LANG_PLAYER"HP_ADDED"nKiller); 
__________________
Napoleon_be is offline
Send a message via Skype™ to Napoleon_be
RenuaR
New Member
Join Date: Mar 2020
Old 03-31-2020 , 12:31   Re: VIP Plugin problem
Reply With Quote #3

Quote:
Originally Posted by Napoleon_be View Post
try replacing line 313 with this

PHP Code:
format(hp_addedsizeof(hp_added), "%L"LANG_PLAYER"HP_ADDED"nKiller); 
And the 313 line is???
RenuaR is offline
Napoleon_be
Veteran Member
Join Date: Jul 2011
Location: Belgium
Old 03-31-2020 , 13:30   Re: VIP Plugin problem
Reply With Quote #4

Here try this, next time post in suggestions/requests as you have no idea how to script.

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <fun>

#define PLUGIN "VIP Plugin"
#define VERSION "2.0"
#define AUTHOR "RenuaR"

#define VIP_FLAG ADMIN_LEVEL_F
#define MAXPLAYERS 32 + 1
#define ALPHA_FULLBLINDED 255
#define g_Buffer 1536
#define find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2)

static const COLOR[] = "^x04" //green
const m_flFlashedUntil 514;
const 
m_flFlashedAt 515;
const 
m_flFlashHoldTime 516;
const 
m_flFlashDuration 517;
const 
m_iFlashAlpha 518;
const 
m_flFlashDuration 517;
new 
gMenuUsed[33];
new 
money_per_damagemoney_kill_bonusmoney_headshot_bonus;
new 
health_addhealth_hs_addhealth_max;
new 
nKillernKiller_hpnHp_addnHp_max;
new 
g_sniper_activeg_menu_activeg_map_activeg_awp_activeawp_active;
new 
g_menu_usesg_awp_ctg_awp_trg_menu_roundg_awp_menu_roundg_sniper_pickup;
new 
map_activeCTTRmenu_roundawp_menu_roundmenu_uses;
new 
CurrentRound;
new 
bool:g_bHasBombSite;
new 
bool:g_freezetime;
new 
bool:bAwpMap false;
new 
bool:g_bCurrentMapIsInList false
new 
bool:g_bCurrentAWPMapIsInList false;
new 
bool:g_bRoundEnd;
new 
iTCountiCTCount;
new 
g_typeg_enabledg_recievedbool:g_showrecievedg_hudmsg1g_hudmsg2;
new 
g_models_enabledmodels_enabled;
new const 
VIP_CT[] = "vip_ct";
new const 
VIP_CT_MODEL[] = "models/player/vip_ct/vip_ct.mdl";
new const 
VIP_TR[] = "vip_tr";
new const 
VIP_TR_MODEL[] = "models/player/vip_tr/vip_tr.mdl";
new 
player_model[33][32];
new 
bool:g_model[33];
new 
g_color_msgcolor_msgg_menu_number_colormenu_number_color;
new 
g_vips_listvips_list;

new const 
vipmenu[][] =
{
    
//Commands to call VIP menu
    
"say /vipmenu""say vipmenu""say_team /vipmenu""say_team vipmenu""say vmenu""say_team vmenu"


new const 
VIPweapons[][] =
{
    
//Weapons which normal players can't pick up.
    
"awp""sg550""g3sg1"
}

new const 
wantvip[][] =
{
    
//Command to call wantvip.txt motd window
    
"say /wantvip""say wantvip""say_team /wantvip""say_team wantvip",
    
"say /noriuvip""say noriuvip""say_team /noriuvip""say_team noriuvip",
    
"say /chciecvip""say chciecvip""say_team /chciecvip""say_team chciecvip",
    
"say /willenvip""say willenvip""say_team /willenvip""say_team willenvip",
    
"say /vouloirvip""say vouloirvip""say_team /vouloirvip""say_team vouloirvip"
}

new const 
vipguns[][] =
{
    
"weapon_awp""weaopn_g3sg1""weapon_sg550"
}

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_event("HLTV""event_new_round""a""1=0""2=0");
    
register_logevent("LogEvent_RoundStart"2"1=Round_Start" );
    
register_logevent("LogEvent_RoundEnd"2"1=Round_End");
    
register_logevent("LogEvent_GameCommencing"2"0=World triggered""1=Game_Commencing");
    
register_event("TextMsg","Event_RoundRestart","a","2&#Game_w");
    
register_event("DeathMsg""hook_death""a""1>0");
    
register_event("DeathMsg","death_msg","a");
    
register_event("Damage""on_damage""b""2!0""3=0""4!0");
    
register_event("Damage","Damage","b");
    
RegisterHam(Ham_Spawn"player""fwHamPlayerSpawnPost"1);
    
RegisterHam(Ham_Touch"weaponbox""fw_TouchWeapon");
    
RegisterHam(Ham_Touch"armoury_entity""fw_TouchWeapon");
    
register_forward(FM_SetClientKeyValue"fw_SetClientKeyValue");
    
register_forward(FM_ClientUserInfoChanged"fw_ClientUserInfoChanged");
    
    for(new 
0sizeof vipmenui++)
    
register_clcmd(vipmenu[i], "cmdvipmenu"//Checks const vipmenu, that is above plugin_init
    
for(new 0sizeof VIPweaponsi++)
    
register_clcmd(VIPweapons[i], "HandleCmd"//Checks const VIPweapons, that is above plugin_init
    
for(new 0sizeof wantvipi++)
    
register_clcmd(wantvip[i], "ShowMotd")
    
    
register_clcmd("say /vips","print_adminlist"//If someone says /vips it starts the function print_adminlist
    
    
register_cvar("vip_contactinfo""contact info here"FCVAR_SERVER)
    
register_cvar("vip_price""your price here"FCVAR_SERVER)
    
    
money_per_damage     register_cvar("vip_money_per_damage","5"//How many $ VIP will get per 1 damage 
    
money_kill_bonus     register_cvar("vip_money_kill_bonus","500"//How many $ VIP will get per kill
    
money_headshot_bonus     register_cvar("vip_money_hs_bonus","750"//How many $ VIP will get per head shot kill 
    
health_add         register_cvar("vip_hp""15"//How many hp VIP will get per kill 
    
health_hs_add         register_cvar("vip_hp_hs""30"//How many hp VIP will get per head shot kill 
    
health_max         register_cvar("vip_max_hp""100"//How many hp VIP can have in total 
    
g_sniper_active     register_cvar("vip_sniper_active""0"//Who can buy SNIPERS? 0 - everyone, 1 - only VIP
    
g_menu_active         register_cvar("vip_menu_active""1"//Will VIP get VIP menu? 0 - won't get the menu, 1 - will get the menu.
    
g_map_active         register_cvar("vip_map_active""1"//VIP menu works on the maps in mapnames.ini? 0 - Yes (VIP will get VIP menu), 1 - No
    
g_awp_active         register_cvar("vip_awp_active""1"// 1 - VIP can get AWP choice; 0 - cann't
    
g_menu_uses         register_cvar("vip_menu_uses""1"// How many times VIP can use VIP menu per round?
    
g_awp_ct         register_cvar("vip_awp_ct""5"//How many counter terrorist must be in a team to AWP choice show up
    
g_awp_tr         register_cvar("vip_awp_tr""5"//How many terrorist must be in a team to AWP choice show up
    
g_menu_round         register_cvar("vip_menu_round""3"//Round from which VIP will get VIP menu
    
g_awp_menu_round     register_cvar("vip_awp_menu_round""3"//Round from which VIP will get AWP choice
    
g_sniper_pickup     register_cvar("vip_sniper_pickup""0"//0 - everyone can pickup snipers, 1 - only VIP
    
g_recieved         register_cvar("vip_bulletdamage_recieved","1"//0 - bullet damage disabled, 1 - show damage done, 2 - show damage done, but not via wall
    
g_type             register_cvar("vip_bulletdamage","1"// Enable or disable showing recieved damage
    
g_models_enabled     register_cvar("vip_models""1"//0 - VIP models disabled, 1 - enabled.
    
g_color_msg         register_cvar("vip_colored_text_message""1")// Print /vips and info about vip text. 1 - colored, 0 - normal
    
g_menu_number_color     register_cvar("vip_menu_number_color""0"//0 - red, 1 - yellow, 2 - white, 3 - grey.
    
g_vips_list         register_cvar("vip_show_list""3"// /vips show. 0 - off, 1 - chat message, 2 - motd window.

    
g_hudmsg1         CreateHudSyncObj()
    
g_hudmsg2         CreateHudSyncObj()
    
    if( 
find_ent_by_class(-1"func_bomb_target") || find_ent_by_class(-1"info_bomb_target") ) //Checks if the map has bombsite
    
{
        
g_bHasBombSite true//If the map has bombsite it is set to true
    
}
    
    
get_user_msgid("ScreenFade")
    
    
register_dictionary"vip.txt" );
}

public 
plugin_cfg()
{
    
map_active get_pcvar_num (g_map_active); //Gets the value of g_map_active 
    
awp_active get_pcvar_num (g_awp_active); //Gets the value of g_awp_active 
    
CT get_pcvar_num (g_awp_ct); //Gets the value of g_awp_ct
    
TR get_pcvar_num (g_awp_tr); //Gets the value of g_awp_tr
    
menu_round get_pcvar_num (g_menu_round);
    
awp_menu_round get_pcvar_num (g_awp_menu_round);
    
menu_uses get_pcvar_num (g_menu_uses);
    
models_enabled get_pcvar_num(g_models_enabled);
    
color_msg get_pcvar_num(g_color_msg);
    
menu_number_color get_pcvar_num(g_menu_number_color);
    
vips_list get_pcvar_num(g_vips_list)
    
    new 
szmapnames[128], szData[32], szCurrentMap[32], szawpmapnames[128];
    
formatszmapnames128"addons/amxmodx/configs/mapnames.ini" )
    if(!
file_exists(szmapnames))
    {
        
server_print("[VIP] File %s is missing!"szmapnames);
        
server_print("[VIP] File %s is created."szmapnames);
        
write_file(szmapnames"awp_")
        
write_file(szmapnames"cs_deagle")
        
write_file(szmapnames"knf_")
        
write_file(szmapnames"1hp_")
        
write_file(szmapnames"aim")
    }
    if(
file_exists(szmapnames)) 
    {
        
get_configsdir(szmapnamescharsmax(szmapnames)); // Get the AMX Mod X configs directory (folder). 
        
add(szmapnamescharsmax(szmapnames), "/mapnames.ini"); // Add your filename to the filepath. 
        
get_mapname(szCurrentMapcharsmax(szCurrentMap)); // Get the current map. 
         
        
new fopen(szmapnames"rt"); // Open the file. 
        
while( !feof(f) ) // Loop until it finds the End Of the File (aka EOF). 
        

            
fgets(fszDatacharsmax(szData)); // Get all text from current line.
            
trim(szData); // Trim off the new line and carriage return characters.
            
if( containi(szCurrentMapszData) != -)   // Check if the current map is equal to the map listed on this line. 
            

                
g_bCurrentMapIsInList true// Set boolean to true so that you know if the map was in the file. 
                
break; // Stop looping (reading the file) because you found what you came for. 
            

        } 
        
fclose(f); // Close the file.
    
}
    
    
formatszawpmapnames128"addons/amxmodx/configs/awpmapnames.ini" )
    if(!
file_exists(szawpmapnames))
    {
        
server_print("[VIP] File %s is missing!"szawpmapnames);
        
server_print("[VIP] File %s is created."szawpmapnames);
        
write_file(szawpmapnames"2x2")
        
write_file(szawpmapnames"3x3")
        
write_file(szawpmapnames"4x4")
        
write_file(szawpmapnames"cs_max")
        
write_file(szawpmapnames"aim")
    }
    if(
file_exists(szawpmapnames))
    {
        
//Now lets check if current map is in awpmapnames.ini
        
get_configsdir(szawpmapnamescharsmax(szawpmapnames)); // Get the AMX Mod X configs directory (folder). 
        
add(szawpmapnamescharsmax(szawpmapnames), "awpmapnames.ini"); // Add your filename to the filepath. 
        
get_mapname(szCurrentMapcharsmax(szCurrentMap)); // Get the current map. 
        
        
new fopen(szawpmapnames"rt"); // Open the file. 
        
while( !feof(f) ) // Loop until it finds the End Of the File (aka EOF). 
        

            
fgets(fszDatacharsmax(szData)); // Get all text from current line. 
            
trim(szData); // Trim off the new line and carriage return characters. 
            
if( containi(szCurrentMapszData) != -)   // Check if the current map is equal to the map listed on this line. 
            

                
g_bCurrentAWPMapIsInList true// Set boolean to true so that you know if the map was in the file. 
                
break; // Stop looping (reading the file) because you found what you came for. 
            

        } 
        
fclose(f); // Close the file.
    
}
}

public 
plugin_precache() 
{
    if(
models_enabled == 1)
    {
        
precache_model(VIP_TR_MODEL
        
precache_model(VIP_CT_MODEL)
    }


public 
event_new_round(id)
{
    
g_freezetime false// Freeze time has ended, so lets set it to false
    
g_enabled get_pcvar_num(g_type)
    if(
get_pcvar_num(g_recieved)) g_showrecieved true
}

public 
LogEvent_RoundStart(id)
{
    
g_freezetime true;
    
g_bRoundEnd false;
    
gMenuUsed[id] = 0;
    
iTCount 0;
    
iCTCount 0;
    
CurrentRound++;
    new 
players[32], playerpnum
    
get_players(playerspnum"a");
    for ( new 
ipnumi++ )
    {
        switch( 
cs_get_user_teamplayers[i] ) )
        {
            case 
CS_TEAM_TiTCount++;
            case 
CS_TEAM_CTiCTCount++;
        }
    }
    for(new 
0pnumi++)
    {
        
player players[i];
        if (!
get_pcvar_num(g_menu_active))
            return 
PLUGIN_CONTINUE
        
        
if( CurrentRound >= menu_round && get_user_flags(id) & VIP_FLAG )
        {
            
Showrod(player);
        }
    }
    return 
PLUGIN_CONTINUE
}

public 
LogEvent_RoundEnd()
{
    
g_bRoundEnd true;
}

public 
Event_RoundRestart(id)
{
    
CurrentRound=0;
}

public 
LogEvent_GameCommencing(id)
{
    
CurrentRound=0;
}

public 
hook_death()
{
    new 
hp_added[64];
    
// Killer id
    
nKiller read_data(1)
    if(
is_user_alive(nKiller)) 
    {
        if ( (
read_data(3) == 1) && (read_data(5) == 0) )
        {
            
nHp_add get_pcvar_num (health_hs_add)
        }
        else
        
nHp_add get_pcvar_num (health_add)
        
nHp_max get_pcvar_num (health_max)
        
// Updating Killer HP
        
if(!(get_user_flags(nKiller) & VIP_FLAG))
        return;
    
        
nKiller_hp get_user_health(nKiller)
        
nKiller_hp += nHp_add
        
// Maximum HP check
        
if (nKiller_hp nHp_maxnKiller_hp nHp_max
        set_user_health
(nKillernKiller_hp)
        
// Hud message "Healed +15/+30 hp"
        
if(nKiller_hp nHp_max)
        {
            
format(hp_addedsizeof(hp_added), "%L"LANG_PLAYER"HP_ADDED"nKiller);  
            
set_hudmessage(02550, -1.00.1501.01.00.10.1, -1)
            
show_hudmessage(nKillerhp_addednHp_add)
        }
        
// Screen fading
        
if(!get_user_flashed(nKiller)) //Checks if user is not flashed
        
{
            
message_begin(MSG_ONEget_user_msgid("ScreenFade"), {0,0,0}, nKiller)
            
write_short(1<<10)
            
write_short(1<<10)
            
write_short(0x0000)
            
write_byte(0)
            
write_byte(0)
            
write_byte(200)
            
write_byte(75)
            
message_end()
        }
    }
}

public 
death_msg()
{
    if(
read_data(1)<=MAXPLAYERS && read_data(1) && read_data(1)!=read_data(2)) cs_set_user_money(read_data(1),cs_get_user_money(read_data(1)) + get_pcvar_num(money_kill_bonus) - 300)
}

public 
on_damage(id)
{
    if(
g_enabled)
    {        
        static 
attackerattacker get_user_attacker(id)
        static 
damagedamage read_data(2)        
        if(
g_showrecieved)
        {            
            
set_hudmessage(255000.450.5020.14.00.10.1, -1)
            
ShowSyncHudMsg(idg_hudmsg2"%i^n"damage)        
        }
        if(
is_user_connected(attacker))
        {
            switch(
g_enabled)
            {
                case 
1: {
                    
set_hudmessage(0100200, -1.00.5520.14.00.020.02, -1)
                    
ShowSyncHudMsg(attackerg_hudmsg1"%i^n"damage)                
                }
                case 
2: {
                    if(
fm_is_ent_visible(attacker,id))
                    {
                        
set_hudmessage(0100200, -1.00.5520.14.00.020.02, -1)
                        
ShowSyncHudMsg(attackerg_hudmsg1"%i^n"damage)                
                    }
                }
            }
        }
    }
}

public 
Damage(id)
{
    new 
weaponhitpointattacker get_user_attacker(id,weapon,hitpoint)
    if(
attacker<=MAXPLAYERS && is_user_alive(attacker) && attacker!=id)
    if(
get_user_flags(id) & VIP_FLAG
    {
        new 
money read_data(2) * get_pcvar_num(money_per_damage)
        if(
hitpoint==1money += get_pcvar_num(money_headshot_bonus)
        
cs_set_user_money(attacker,cs_get_user_money(attacker) + money)
    }
}

public 
fwHamPlayerSpawnPost(id)
{
    
gMenuUsed[id] = 0//Make sure that VIP didn't use VIP menu on his spawn
    
if(is_user_alive(id))
    {
        if(
get_user_flags(id) & VIP_FLAG)
        {
            if(!
g_bCurrentMapIsInList//Checks if map is not the one written in mapnames.ini, if user is alive and if e has flag H
            
{
                
give_item(id"weapon_hegrenade"); //Gives HE grenade
                
give_item(id"weapon_flashbang"); //Gives FB grenade
                
give_item(id"weapon_flashbang"); //Gives BF grenade
                
give_item(id"weapon_smokegrenade"); //Gives SG grenade
                
give_item(id"item_assaultsuit"); //Gives armor
                
if(g_bHasBombSite && cs_get_user_team(id) == CS_TEAM_CT//Checks if current map has bombsite
                
{
                    
give_item(id"item_thighpack"); //Gives defuse kit
                
}
            }
        
            if(
models_enabled == 1)
            {
                if(
cs_get_user_team(id) & CS_TEAM_T)
                {
                    
copy(player_model[id], sizeof(player_model), VIP_TR)
        
                    new 
currentmodel[32];
                    
fm_get_user_model(idcurrentmodelsizeof currentmodel 1);
            
                    if(!
equal(currentmodelplayer_model[id]))
                    {
                        
fm_set_user_model(idplayer_model[id])
                    }
                }
                else if(
cs_get_user_team(id) & CS_TEAM_CT)
                {
                    
copy(player_model[id], sizeof(player_model), VIP_CT)
        
                    new 
currentmodel[32];
                    
fm_get_user_model(idcurrentmodelsizeof currentmodel 1);
            
                    if(!
equal(currentmodelplayer_model[id]))
                    {
                        
fm_set_user_model(idplayer_model[id])
                    }
                }
            }
        }
    }
}

public 
fw_TouchWeapon(weaponid
{
    if (!
get_pcvar_num(g_sniper_pickup)) //Checks if g_sniper_pickup is disactivated (set to 0)
        
return PLUGIN_CONTINUE //If it is, let players pick up snipers
        
    
if (!is_user_alive(id) || get_user_flags(id) & VIP_FLAG
    {
        return 
HAM_IGNORED
    
}
   
    static 
classname[32]
    
pev(weaponpev_classnameclassnamecharsmax(classname))
 
    for(new 
0sizeof vipgunsi++)
    if (
g_bCurrentMapIsInList && equal(classnamevipguns[i])) 
    {
        
//Sends a message that snipers are only for VIP
        
client_print(idprint_center"%L"id"SNIPER_ONLY_FOR_VIP")
        return 
HAM_SUPERCEDE
    
}
    return 
HAM_IGNORED


public 
fw_SetClientKeyValue(idinfobufferkey[], value[])
{   
    if (
g_model[id] && equal(key"model"))
        return 
FMRES_SUPERCEDE
    
    
return FMRES_IGNORED
}

public 
fw_ClientUserInfoChanged(idinfobuffer)
{   
    if (!
g_model[id])
        return 
FMRES_IGNORED
    
    
new currentmodel[32]; 
    
fm_get_user_model(idcurrentmodelsizeof currentmodel 1);
    
    if(!
equal(currentmodelplayer_model[id]))
        
fm_set_user_model(idplayer_model[id]) 
    
    return 
FMRES_IGNORED
}

public 
cmdvipmenu(id
{
    if ( 
is_user_alive(id) )
    {
        if( 
get_user_flags(id) & VIP_FLAG )
        {
            if ( 
CurrentRound menu_round )
            {
                
client_printidprint_center"%L"id"VIP_MENU_ROUND"menu_round ); //Sends a message that VIP can use VIP menu only from specific round
            
}
            if ( 
map_active == //Checks if map_active is 1
            
{
                if( 
g_bCurrentMapIsInList //Checks if current map is in mapnames list
                
{
                    
client_printidprint_center"%L"id"VIP_MENU_WRONG_MAP" ); //Sends a message that VIP can't use VIP menu on that map
                
}
            }
            if ( 
gMenuUsed[id] >= menu_uses )
            {
                
client_printidprint_center"%L"id"VIP_MENU_PER_ROUND"menu_uses ); //Message that VIP can only take VIP menu few time that is set as VIPUsed
            
}
            if ( !
g_freezetime //Checks if freezetime is not over yet and if user is alive and he has flag H
            
{
                
client_printidprint_center"%L"id"VIP_MENU_ONLY_FROM_ROUND_START" ); //Message that's set in vipplugin.txt as VIP_MENU_ONLY_FROM_ROUND_START
            
}
            if(
g_freezetime//Checks if freezetime is over
            
{
                if ( 
gMenuUsed[id] < menu_uses //Checks if VIP has already used VIP menu before, the amount of times we set as VIPUsed 
                
{
                    if( 
CurrentRound >= menu_round //Checks if current round is more or equal to the round that is set as VIPMenuRound
                    
{    
                        if (!
get_pcvar_num(g_menu_active)) //Checks if g_menu_active is disactivated (set to 0)
                            
return PLUGIN_CONTINUE //If so, VIP won't get VIP menu
                        
Showrod(id//Shows VIP menu
                    
}
                }
            }
        }
        else 
// If user doesn't have VIP_FLAG
        
{
            
PrintText(id//Sets a task in 0.1 seconds and starts PrintTect
        
}
    }
    else if( 
get_user_flags(id) & VIP_FLAG //Checks if user is death and he have VIP_FLAG
    
{
        
client_printidprint_center"%L"id"VIP_MENU_MUST_BE_ALIVE" ); //Sends a message that VIP must be alive to use VIP menu
    
}
    else 
//If user is death and doesn't have VIP_FLAG
    
{
        
PrintText(id//Prints PrintText
    
}
    return 
PLUGIN_HANDLED;
}

public 
Showrod(id)
{
    if (
get_user_flags(id) & VIP_FLAG//Checks if player has flag H
    
{
        if (
map_active//Checks if map_active is 1
        
{
            if( 
g_bCurrentMapIsInList //Checks if current map is in mapnames.ini, if so print the message and cancels the menu showup
            
{
                
client_printidprint_center"%L"id"VIP_MENU_WRONG_MAP" ); //Sends a message that VIP can't use VIP menu on that map
                
return; //Stop VIP from getting the VIP menu
            
}
        }
        if( 
g_bCurrentAWPMapIsInList //Checks if map is in awpmapnames.ini
        
{
            
bAwpMap true //If so sets bAwpMap to true, so AWP choice would work in maps that are in awpmapnames.ini
        
}
        new 
newmenu[64], choice_1[64], choice_2[64], choice_3[64
        
format(newmenusizeof(newmenu), "%L"id"NEW_MENU"); //Shows a menu message that's set in vipplugin.txt as NEW_MENU_PRIMARY
        
new menu menu_create(newmenu"Pressedrod"); //Creates menu that's in Pressedrod
        
        
format(choice_1sizeof(choice_1), "%L"id"MENU_CHOICE_1"); //Shows a menu message that's set in vipplugin.txt as MENU_CHOICE_PRIMARY_1
        
menu_additem(menuchoice_1"1"0); //Menu choice/case 1
        
format(choice_2sizeof(choice_2), "%L"id"MENU_CHOICE_2"); //Shows a menu message that's set in vipplugin.txt as MENU_CHOICE_PRIMARY_2
        
menu_additem(menuchoice_2"2"0); //Menu choice/case 2
        
if ( iTCount >= TR && iCTCount >= CT //Checks that each team has 5 or more people to AWP choice appear in the menu
        
{
            if (
awp_active == 1//Checks if vips can get awp choice, 0 - no; 1 - yes
            
{
                if ( 
CurrentRound >= awp_menu_round //Checks if current round is more or equal to 3, so AWP choice would come out
                
{
                    if( !
bAwpMap //Checks if map is not one in awpmapnames.xfg, if so shows the fifth menu item
                    
{
                        
format(choice_3sizeof(choice_3), "%L"id"MENU_CHOICE_3"); //Shows a menu message that's set in vipplugin.txt as MENU_CHOICE_PRIMARY_5
                        
menu_additem(menuchoice_3"3"0); //Menu choice/case 5
                    
}
                }
            }
        }        
        new 
menu_exit_name[64];
        
format(menu_exit_namesizeof(menu_exit_name), "%L"id"MENU_EXIT_NAME")
        
menu_setprop(menuMPROP_EXITNAMEmenu_exit_name)
        
menu_setprop(menuMPROP_EXITMEXIT_ALL);
        if(
menu_number_color == 1//Checks if menu_number_color is set to 3
        
{
            
menu_setprop(menu,MPROP_NUMBER_COLOR,"\y"); // ets the number color to yello
        
}
        else if(
menu_number_color == 2//Checks if menu_number_color is set to 3
        
{
            
menu_setprop(menu,MPROP_NUMBER_COLOR,"\w"); //Sets the number color to white
        
}
        else if(
menu_number_color == 3//Checks if menu_number_color is set to 3
        
{
            
menu_setprop(menu,MPROP_NUMBER_COLOR,"\d"); //Sets the number color to grey
        
}
        else 
//In any other case the menu_number_color is set to
        
{
            
menu_setprop(menu,MPROP_NUMBER_COLOR,"\r"); //Sets the number color to red
        
}
        
menu_display(idmenu0)
    }
}

public 
Pressedrod(idmenuitem)
{
    if( 
item == MENU_EXIT //Checks if player clicks menu exit (0)
    
{
        
menu_destroy(menu); //If so the menu will be destroyed
        
return PLUGIN_HANDLED;
    }
    new 
iFlashes cs_get_user_bpammoidCSW_FLASHBANG );
    new 
HasC4[33], HasHE[33], HasSG[33];
    new 
weapons pev(idpev_weapons)
    
HasC4[id] = ( weapons 1<<CSW_C4 )
    
HasHE[id] = ( weapons 1<<CSW_HEGRENADE ) && cs_get_user_bpammo(idCSW_HEGRENADE)
    
HasSG[id] = ( weapons 1<<CSW_SMOKEGRENADE ) && cs_get_user_bpammo(idCSW_SMOKEGRENADE)
    new 
data[6], szName[64];
    new 
accesscallback;
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), szName,charsmax(szName), callback);
    new 
key str_to_num(data);
    if(
is_user_alive(id) && !g_bRoundEnd)
    {
        
strip_user_weaponsid );
        switch(
key)
        {
        case 
1: {                                  
                
give_item(id,"weapon_m4a1"//Gives M4A1
                
cs_set_user_bpammo(idCSW_M4A190); //Sets M4A1 back pack ammo to 90
                
client_printidprint_center"%L"id"CHOSE_M4A1" ); //Shows a message that's set in vipplugin.txt as CHOSE_M4A1
            
}
        case 
2: {     
                
give_item(id,"weapon_ak47"//Gives AK47
                
cs_set_user_bpammo(idCSW_AK4790); //Sets AK47 back pack ammo to 90
                
client_printidprint_center"%L"id"CHOSE_AK47" ); //Shows a message that's set in vipplugin.txt as CHOSE_AK47
            
}
        case 
3: { 
                
give_item(id,"weapon_awp"//Gives AWP
                
cs_set_user_bpammo(idCSW_AWP30); //Sets AWP back pack ammo to 30
                
client_printidprint_center"%L"id"CHOSE_AWP" ); //Shows a message that's set in vipplugin.txt as CHOSE_AWP
            
}
        }
        if (
HasC4[id])
        {
            
give_item(id"weapon_c4");
            
cs_set_user_plantid );
            
set_pev(idpev_body1);
        }
        if (
HasHE[id])
        {
            
give_item(id"weapon_hegrenade")
        }
        if (
HasSG[id])
        {
            
give_item(id"weapon_smokegrenade");
        }
        if( 
iFlashes 
        { 
            
give_itemid"weapon_flashbang" ); 
            
cs_set_user_bpammoidCSW_FLASHBANGiFlashes ); 
        } 
        
give_item(id,"weapon_knife"//Gives knife
        
give_item(id,"weapon_deagle"//Gives deagle
        
cs_set_user_bpammo(idCSW_DEAGLE35); //Sets deagle back pack ammo to 35
        
if(g_bHasBombSite && cs_get_user_team(id) == CS_TEAM_CT//Checks if current map has bombsite
        
{
            
give_item(id"item_thighpack"); //Gives defuse kit
        
}
        
gMenuUsed[id]++ //Makes sure that VIP really made a choice
    
}
    
menu_destroy(menu); //Destroys menu
    
return PLUGIN_CONTINUE
}

public 
HandleCmd(id)
{
    if (!
get_pcvar_num(g_sniper_active)) //Checks if g_awp_active is disactivated (set to 0)
        
return PLUGIN_CONTINUE //If it is, let players buy snipers
        
    
if(get_user_flags(id) & VIP_FLAG)  //Checks if player has flag H
        
return PLUGIN_CONTINUE 
        
    client_print
idprint_center"%L"id"SNIPER_ONLY_FOR_VIP" ); //Sends a message that snipers are only for VIP
    
    
return PLUGIN_HANDLED
}

public 
ShowMotd(id)
{
    new 
contact[112];
    
get_cvar_string("vip_contactinfo"contact63)
    new 
price[112];
    
get_cvar_string("vip_price"price63)
    static 
MOTD[1501];
    new 
len formatex(MOTD1500,"<style type=text/css>body{background-color: #000000;font-family:Verdana,Tahoma;}</style>");
    
len += formatex(MOTD[len],1500-len,"<font size=2 color=#e0a518><b><center>%L</center></b></font><br /><font size=1 color=#c0c0ff><UL>"id"MOTD_LINE_01");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI>"id"MOTD_LINE_02");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI>"id"MOTD_LINE_03");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI>"id"MOTD_LINE_04");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI>"id"MOTD_LINE_05");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI>"id"MOTD_LINE_06");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI>"id"MOTD_LINE_07");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI>"id"MOTD_LINE_08");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI>"id"MOTD_LINE_09");
    
len += formatex(MOTD[len],1500-len,"%L"id"MOTD_LINE_10");
    
len += formatex(MOTD[len],1500-len,"<br>%L"id"MOTD_LINE_11");
    
len += formatex(MOTD[len],1500-len,"<br>%L"id"MOTD_LINE_12");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI><br>"id"MOTD_LINE_13");
    
len += formatex(MOTD[len],1500-len,"<font size=1 color=#00c000><strong>%L</strong></font>"id"MOTD_LINE_14")
    
len += formatex(MOTD[len],1500-len,"<br>%L %s"id"MOTD_LINE_15"price)
    
len += formatex(MOTD[len],1500-len,"<br>%L <font color=#FF6600>%s</font>"id"MOTD_LINE_16"contact);

    new 
motd_name[64];
    
format(motd_name64"%L"id"WANTVIP_MOTD_NAME");
    
show_motd(id,MOTDmotd_name);    
    return 
PLUGIN_HANDLED
}

public 
client_putinserver(id)
{
    if (!
task_exists(id 1000)) set_task(30.0"PrintText"id 1000//Checks if task already exist, if not print text set in public PrintText
}

public 
PrintText(id)
{
    if(
color_msg == 1)
    {
        
client_print_colorid"%L"id"PRINT_TEXT_COLORED" ); //Message which is sent
    
}
    else
    {
        
client_print_colorid"%L"id"PRINT_TEXT" ); //Message which is sent
    
}
}

public 
print_adminlist(user
{
    new 
idcountxlenadminnames[33][32];
    for(
id id <= MAXPLAYERS id++)
            if(
is_user_connected(id))
                if(
get_user_flags(id) & VIP_FLAG)
                    
get_user_name(idadminnames[count++], 31)
                    
    if(
vips_list == || vips_list == 3)
    {                    
        new 
contact[112];
        
get_cvar_string("vip_contactinfo"contact63)
        new 
price[112];
        
get_cvar_string("vip_price"price63)
        new 
Data[g_Buffer];
    
        
len formatex(Data[len], g_Buffer len"<html><center><font color=yellow>%L <font color=green>%s.<font color=yellow> %L <font color=green>%s</font><body bgcolor=Black>"user"CONTACT"contactuser"MOTD_LINE_15"price);
        
len += formatex(Data[len], g_Buffer len"<br><table border=1 width=300 cellspacing=0 bordercolor=#4A4344 style=color:#56A5EC;text-align:center;>");
        
len += formatex(Data[len], g_Bufferlen"<tr><td><b>#</b></td><td><b>%L</b></td></tr>"user"VIPS_ONLINE");
    
        if(
count 0)
        {
            for(
count x++) 
            {
                
len += formatex(Data[len], g_Buffer len"<tr><td><font color=Red>%d</font></td>"1);
                
len += formatex(Data[len], g_Buffer len"<td>%s</td></tr>"adminnames[x]);
            }
        }
        
len += formatex(Data[len],g_Buffer len,"</center></body></html>");
        new 
motd_name[64];
        
format(motd_name64"%L"user"WANTVIP_MOTD_NAME");
        
show_motd(userDatamotd_name);
        
        
    }
    if(
vips_list == || vips_list == 3)
    {
        new 
message[256], contact[112]
        
        if(
color_msg == 1)
        {
            
len format(message255"%L"user"VIPS_ONLINE_COLORED"COLOR)
        }
        else
        {
            
len format(message255"%L"user"VIPS_ONLINE")
        }
        if(
count 0)
        {
            for(
count x++) 
            {
                
len += format(message[len], 255-len" %s%s "adminnames[x], < (count-1) ? ", ":"")
                if(
len 96 
                {
                    
client_print_color(usermessage)
                    if(
color_msg == 1)
                    {
                        
len format(message255"%s",COLOR)
                    }
                    else
                    {
                        
len format(message255"")
                    }
                }
            }
            
client_print_color(usermessage)
        }
        else 
        {
            
len += format(message[len], 255-len" %L"id"NO_VIPS_ONLINE")
            
client_print_color(usermessage)
        }
        
        
get_cvar_string("vip_contactinfo"contactcharsmax(contact))
        if(
contact[0]) 
        {
            if(
color_msg == 1)
            {
                
client_print_color(user"%L %s"user"CONTACT_COLORED"contact)
            }
            else
            {
                
client_print_color(user"%L %s"user"CONTACT"contact)
            }
        }
    }
}

stock fm_set_user_model(playermodelname[])
{   
    
engfunc(EngFunc_SetClientKeyValueplayerengfunc(EngFunc_GetInfoKeyBufferplayer), "model"modelname)
    
    
g_model[player] = true
}

stock fm_get_user_model(playermodel[], len)
{   
    
engfunc(EngFunc_InfoKeyValueengfunc(EngFunc_GetInfoKeyBufferplayer), "model"modellen)
}

stock fm_reset_user_model(player)
{         
    
g_model[player] = false
    
    dllfunc
(DLLFunc_ClientUserInfoChangedplayerengfunc(EngFunc_GetInfoKeyBufferplayer))
}

get_user_flashed(id, &iPercent=0

    new 
Float:flFlashedAt get_pdata_float(idm_flFlashedAt

    if( !
flFlashedAt 
    { 
        return 

    

    
    new 
Float:flGameTime get_gametime() 
    new 
Float:flTimeLeft flGameTime flFlashedAt 
    
new Float:flFlashDuration get_pdata_float(idm_flFlashDuration
    new 
Float:flFlashHoldTime get_pdata_float(idm_flFlashHoldTime
    new 
Float:flTotalTime flFlashHoldTime flFlashDuration 
    
    
if( flTimeLeft flTotalTime 
    { 
        return 

    

    
    new 
iFlashAlpha get_pdata_int(idm_iFlashAlpha

    if( 
iFlashAlpha == ALPHA_FULLBLINDED 
    { 
        if( 
get_pdata_float(idm_flFlashedUntil) - flGameTime 0.0 
        { 
            
iPercent 100 
        

        else 
        { 
            
iPercent 100-floatround(((flGameTime - (flFlashedAt flFlashHoldTime))*100.0)/flFlashDuration
        } 
    } 
    else 
    { 
        
iPercent 100-floatround(((flGameTime flFlashedAt)*100.0)/flTotalTime
    } 

    return 
iFlashAlpha 
}

stock client_print_color(const id, const input[], any:...) 

    new 
count 1players[32]; 
    static 
msg[191]; 
    
vformat(msg190input3); 

    
replace_all(msg190"!g""^x04"); // Green Color 
    
replace_all(msg190"!n""^x01"); // Default Color 
    
replace_all(msg190"!t""^x03"); // Team Color 

    
if (idplayers[0] = id; else get_players(playerscount"ch"); 
    { 
        for (new 
0counti++) 
        { 
            if (
is_user_connected(players[i])) 
            { 
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i]); 
                
write_byte(players[i]); 
                
write_string(msg); 
                
message_end(); 
            } 
        } 
    } 

__________________
Napoleon_be is offline
Send a message via Skype™ to Napoleon_be
RenuaR
New Member
Join Date: Mar 2020
Old 04-03-2020 , 11:31   Re: VIP Plugin problem
Reply With Quote #5

Quote:
Originally Posted by Napoleon_be View Post
Here try this, next time post in suggestions/requests as you have no idea how to script.

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <fun>

#define PLUGIN "VIP Plugin"
#define VERSION "2.0"
#define AUTHOR "RenuaR"

#define VIP_FLAG ADMIN_LEVEL_F
#define MAXPLAYERS 32 + 1
#define ALPHA_FULLBLINDED 255
#define g_Buffer 1536
#define find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2)

static const COLOR[] = "^x04" //green
const m_flFlashedUntil 514;
const 
m_flFlashedAt 515;
const 
m_flFlashHoldTime 516;
const 
m_flFlashDuration 517;
const 
m_iFlashAlpha 518;
const 
m_flFlashDuration 517;
new 
gMenuUsed[33];
new 
money_per_damagemoney_kill_bonusmoney_headshot_bonus;
new 
health_addhealth_hs_addhealth_max;
new 
nKillernKiller_hpnHp_addnHp_max;
new 
g_sniper_activeg_menu_activeg_map_activeg_awp_activeawp_active;
new 
g_menu_usesg_awp_ctg_awp_trg_menu_roundg_awp_menu_roundg_sniper_pickup;
new 
map_activeCTTRmenu_roundawp_menu_roundmenu_uses;
new 
CurrentRound;
new 
bool:g_bHasBombSite;
new 
bool:g_freezetime;
new 
bool:bAwpMap false;
new 
bool:g_bCurrentMapIsInList false
new 
bool:g_bCurrentAWPMapIsInList false;
new 
bool:g_bRoundEnd;
new 
iTCountiCTCount;
new 
g_typeg_enabledg_recievedbool:g_showrecievedg_hudmsg1g_hudmsg2;
new 
g_models_enabledmodels_enabled;
new const 
VIP_CT[] = "vip_ct";
new const 
VIP_CT_MODEL[] = "models/player/vip_ct/vip_ct.mdl";
new const 
VIP_TR[] = "vip_tr";
new const 
VIP_TR_MODEL[] = "models/player/vip_tr/vip_tr.mdl";
new 
player_model[33][32];
new 
bool:g_model[33];
new 
g_color_msgcolor_msgg_menu_number_colormenu_number_color;
new 
g_vips_listvips_list;

new const 
vipmenu[][] =
{
    
//Commands to call VIP menu
    
"say /vipmenu""say vipmenu""say_team /vipmenu""say_team vipmenu""say vmenu""say_team vmenu"


new const 
VIPweapons[][] =
{
    
//Weapons which normal players can't pick up.
    
"awp""sg550""g3sg1"
}

new const 
wantvip[][] =
{
    
//Command to call wantvip.txt motd window
    
"say /wantvip""say wantvip""say_team /wantvip""say_team wantvip",
    
"say /noriuvip""say noriuvip""say_team /noriuvip""say_team noriuvip",
    
"say /chciecvip""say chciecvip""say_team /chciecvip""say_team chciecvip",
    
"say /willenvip""say willenvip""say_team /willenvip""say_team willenvip",
    
"say /vouloirvip""say vouloirvip""say_team /vouloirvip""say_team vouloirvip"
}

new const 
vipguns[][] =
{
    
"weapon_awp""weaopn_g3sg1""weapon_sg550"
}

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_event("HLTV""event_new_round""a""1=0""2=0");
    
register_logevent("LogEvent_RoundStart"2"1=Round_Start" );
    
register_logevent("LogEvent_RoundEnd"2"1=Round_End");
    
register_logevent("LogEvent_GameCommencing"2"0=World triggered""1=Game_Commencing");
    
register_event("TextMsg","Event_RoundRestart","a","2&#Game_w");
    
register_event("DeathMsg""hook_death""a""1>0");
    
register_event("DeathMsg","death_msg","a");
    
register_event("Damage""on_damage""b""2!0""3=0""4!0");
    
register_event("Damage","Damage","b");
    
RegisterHam(Ham_Spawn"player""fwHamPlayerSpawnPost"1);
    
RegisterHam(Ham_Touch"weaponbox""fw_TouchWeapon");
    
RegisterHam(Ham_Touch"armoury_entity""fw_TouchWeapon");
    
register_forward(FM_SetClientKeyValue"fw_SetClientKeyValue");
    
register_forward(FM_ClientUserInfoChanged"fw_ClientUserInfoChanged");
    
    for(new 
0sizeof vipmenui++)
    
register_clcmd(vipmenu[i], "cmdvipmenu"//Checks const vipmenu, that is above plugin_init
    
for(new 0sizeof VIPweaponsi++)
    
register_clcmd(VIPweapons[i], "HandleCmd"//Checks const VIPweapons, that is above plugin_init
    
for(new 0sizeof wantvipi++)
    
register_clcmd(wantvip[i], "ShowMotd")
    
    
register_clcmd("say /vips","print_adminlist"//If someone says /vips it starts the function print_adminlist
    
    
register_cvar("vip_contactinfo""contact info here"FCVAR_SERVER)
    
register_cvar("vip_price""your price here"FCVAR_SERVER)
    
    
money_per_damage     register_cvar("vip_money_per_damage","5"//How many $ VIP will get per 1 damage 
    
money_kill_bonus     register_cvar("vip_money_kill_bonus","500"//How many $ VIP will get per kill
    
money_headshot_bonus     register_cvar("vip_money_hs_bonus","750"//How many $ VIP will get per head shot kill 
    
health_add         register_cvar("vip_hp""15"//How many hp VIP will get per kill 
    
health_hs_add         register_cvar("vip_hp_hs""30"//How many hp VIP will get per head shot kill 
    
health_max         register_cvar("vip_max_hp""100"//How many hp VIP can have in total 
    
g_sniper_active     register_cvar("vip_sniper_active""0"//Who can buy SNIPERS? 0 - everyone, 1 - only VIP
    
g_menu_active         register_cvar("vip_menu_active""1"//Will VIP get VIP menu? 0 - won't get the menu, 1 - will get the menu.
    
g_map_active         register_cvar("vip_map_active""1"//VIP menu works on the maps in mapnames.ini? 0 - Yes (VIP will get VIP menu), 1 - No
    
g_awp_active         register_cvar("vip_awp_active""1"// 1 - VIP can get AWP choice; 0 - cann't
    
g_menu_uses         register_cvar("vip_menu_uses""1"// How many times VIP can use VIP menu per round?
    
g_awp_ct         register_cvar("vip_awp_ct""5"//How many counter terrorist must be in a team to AWP choice show up
    
g_awp_tr         register_cvar("vip_awp_tr""5"//How many terrorist must be in a team to AWP choice show up
    
g_menu_round         register_cvar("vip_menu_round""3"//Round from which VIP will get VIP menu
    
g_awp_menu_round     register_cvar("vip_awp_menu_round""3"//Round from which VIP will get AWP choice
    
g_sniper_pickup     register_cvar("vip_sniper_pickup""0"//0 - everyone can pickup snipers, 1 - only VIP
    
g_recieved         register_cvar("vip_bulletdamage_recieved","1"//0 - bullet damage disabled, 1 - show damage done, 2 - show damage done, but not via wall
    
g_type             register_cvar("vip_bulletdamage","1"// Enable or disable showing recieved damage
    
g_models_enabled     register_cvar("vip_models""1"//0 - VIP models disabled, 1 - enabled.
    
g_color_msg         register_cvar("vip_colored_text_message""1")// Print /vips and info about vip text. 1 - colored, 0 - normal
    
g_menu_number_color     register_cvar("vip_menu_number_color""0"//0 - red, 1 - yellow, 2 - white, 3 - grey.
    
g_vips_list         register_cvar("vip_show_list""3"// /vips show. 0 - off, 1 - chat message, 2 - motd window.

    
g_hudmsg1         CreateHudSyncObj()
    
g_hudmsg2         CreateHudSyncObj()
    
    if( 
find_ent_by_class(-1"func_bomb_target") || find_ent_by_class(-1"info_bomb_target") ) //Checks if the map has bombsite
    
{
        
g_bHasBombSite true//If the map has bombsite it is set to true
    
}
    
    
get_user_msgid("ScreenFade")
    
    
register_dictionary"vip.txt" );
}

public 
plugin_cfg()
{
    
map_active get_pcvar_num (g_map_active); //Gets the value of g_map_active 
    
awp_active get_pcvar_num (g_awp_active); //Gets the value of g_awp_active 
    
CT get_pcvar_num (g_awp_ct); //Gets the value of g_awp_ct
    
TR get_pcvar_num (g_awp_tr); //Gets the value of g_awp_tr
    
menu_round get_pcvar_num (g_menu_round);
    
awp_menu_round get_pcvar_num (g_awp_menu_round);
    
menu_uses get_pcvar_num (g_menu_uses);
    
models_enabled get_pcvar_num(g_models_enabled);
    
color_msg get_pcvar_num(g_color_msg);
    
menu_number_color get_pcvar_num(g_menu_number_color);
    
vips_list get_pcvar_num(g_vips_list)
    
    new 
szmapnames[128], szData[32], szCurrentMap[32], szawpmapnames[128];
    
formatszmapnames128"addons/amxmodx/configs/mapnames.ini" )
    if(!
file_exists(szmapnames))
    {
        
server_print("[VIP] File %s is missing!"szmapnames);
        
server_print("[VIP] File %s is created."szmapnames);
        
write_file(szmapnames"awp_")
        
write_file(szmapnames"cs_deagle")
        
write_file(szmapnames"knf_")
        
write_file(szmapnames"1hp_")
        
write_file(szmapnames"aim")
    }
    if(
file_exists(szmapnames)) 
    {
        
get_configsdir(szmapnamescharsmax(szmapnames)); // Get the AMX Mod X configs directory (folder). 
        
add(szmapnamescharsmax(szmapnames), "/mapnames.ini"); // Add your filename to the filepath. 
        
get_mapname(szCurrentMapcharsmax(szCurrentMap)); // Get the current map. 
         
        
new fopen(szmapnames"rt"); // Open the file. 
        
while( !feof(f) ) // Loop until it finds the End Of the File (aka EOF). 
        

            
fgets(fszDatacharsmax(szData)); // Get all text from current line.
            
trim(szData); // Trim off the new line and carriage return characters.
            
if( containi(szCurrentMapszData) != -)   // Check if the current map is equal to the map listed on this line. 
            

                
g_bCurrentMapIsInList true// Set boolean to true so that you know if the map was in the file. 
                
break; // Stop looping (reading the file) because you found what you came for. 
            

        } 
        
fclose(f); // Close the file.
    
}
    
    
formatszawpmapnames128"addons/amxmodx/configs/awpmapnames.ini" )
    if(!
file_exists(szawpmapnames))
    {
        
server_print("[VIP] File %s is missing!"szawpmapnames);
        
server_print("[VIP] File %s is created."szawpmapnames);
        
write_file(szawpmapnames"2x2")
        
write_file(szawpmapnames"3x3")
        
write_file(szawpmapnames"4x4")
        
write_file(szawpmapnames"cs_max")
        
write_file(szawpmapnames"aim")
    }
    if(
file_exists(szawpmapnames))
    {
        
//Now lets check if current map is in awpmapnames.ini
        
get_configsdir(szawpmapnamescharsmax(szawpmapnames)); // Get the AMX Mod X configs directory (folder). 
        
add(szawpmapnamescharsmax(szawpmapnames), "awpmapnames.ini"); // Add your filename to the filepath. 
        
get_mapname(szCurrentMapcharsmax(szCurrentMap)); // Get the current map. 
        
        
new fopen(szawpmapnames"rt"); // Open the file. 
        
while( !feof(f) ) // Loop until it finds the End Of the File (aka EOF). 
        

            
fgets(fszDatacharsmax(szData)); // Get all text from current line. 
            
trim(szData); // Trim off the new line and carriage return characters. 
            
if( containi(szCurrentMapszData) != -)   // Check if the current map is equal to the map listed on this line. 
            

                
g_bCurrentAWPMapIsInList true// Set boolean to true so that you know if the map was in the file. 
                
break; // Stop looping (reading the file) because you found what you came for. 
            

        } 
        
fclose(f); // Close the file.
    
}
}

public 
plugin_precache() 
{
    if(
models_enabled == 1)
    {
        
precache_model(VIP_TR_MODEL
        
precache_model(VIP_CT_MODEL)
    }


public 
event_new_round(id)
{
    
g_freezetime false// Freeze time has ended, so lets set it to false
    
g_enabled get_pcvar_num(g_type)
    if(
get_pcvar_num(g_recieved)) g_showrecieved true
}

public 
LogEvent_RoundStart(id)
{
    
g_freezetime true;
    
g_bRoundEnd false;
    
gMenuUsed[id] = 0;
    
iTCount 0;
    
iCTCount 0;
    
CurrentRound++;
    new 
players[32], playerpnum
    
get_players(playerspnum"a");
    for ( new 
ipnumi++ )
    {
        switch( 
cs_get_user_teamplayers[i] ) )
        {
            case 
CS_TEAM_TiTCount++;
            case 
CS_TEAM_CTiCTCount++;
        }
    }
    for(new 
0pnumi++)
    {
        
player players[i];
        if (!
get_pcvar_num(g_menu_active))
            return 
PLUGIN_CONTINUE
        
        
if( CurrentRound >= menu_round && get_user_flags(id) & VIP_FLAG )
        {
            
Showrod(player);
        }
    }
    return 
PLUGIN_CONTINUE
}

public 
LogEvent_RoundEnd()
{
    
g_bRoundEnd true;
}

public 
Event_RoundRestart(id)
{
    
CurrentRound=0;
}

public 
LogEvent_GameCommencing(id)
{
    
CurrentRound=0;
}

public 
hook_death()
{
    new 
hp_added[64];
    
// Killer id
    
nKiller read_data(1)
    if(
is_user_alive(nKiller)) 
    {
        if ( (
read_data(3) == 1) && (read_data(5) == 0) )
        {
            
nHp_add get_pcvar_num (health_hs_add)
        }
        else
        
nHp_add get_pcvar_num (health_add)
        
nHp_max get_pcvar_num (health_max)
        
// Updating Killer HP
        
if(!(get_user_flags(nKiller) & VIP_FLAG))
        return;
    
        
nKiller_hp get_user_health(nKiller)
        
nKiller_hp += nHp_add
        
// Maximum HP check
        
if (nKiller_hp nHp_maxnKiller_hp nHp_max
        set_user_health
(nKillernKiller_hp)
        
// Hud message "Healed +15/+30 hp"
        
if(nKiller_hp nHp_max)
        {
            
format(hp_addedsizeof(hp_added), "%L"LANG_PLAYER"HP_ADDED"nKiller);  
            
set_hudmessage(02550, -1.00.1501.01.00.10.1, -1)
            
show_hudmessage(nKillerhp_addednHp_add)
        }
        
// Screen fading
        
if(!get_user_flashed(nKiller)) //Checks if user is not flashed
        
{
            
message_begin(MSG_ONEget_user_msgid("ScreenFade"), {0,0,0}, nKiller)
            
write_short(1<<10)
            
write_short(1<<10)
            
write_short(0x0000)
            
write_byte(0)
            
write_byte(0)
            
write_byte(200)
            
write_byte(75)
            
message_end()
        }
    }
}

public 
death_msg()
{
    if(
read_data(1)<=MAXPLAYERS && read_data(1) && read_data(1)!=read_data(2)) cs_set_user_money(read_data(1),cs_get_user_money(read_data(1)) + get_pcvar_num(money_kill_bonus) - 300)
}

public 
on_damage(id)
{
    if(
g_enabled)
    {        
        static 
attackerattacker get_user_attacker(id)
        static 
damagedamage read_data(2)        
        if(
g_showrecieved)
        {            
            
set_hudmessage(255000.450.5020.14.00.10.1, -1)
            
ShowSyncHudMsg(idg_hudmsg2"%i^n"damage)        
        }
        if(
is_user_connected(attacker))
        {
            switch(
g_enabled)
            {
                case 
1: {
                    
set_hudmessage(0100200, -1.00.5520.14.00.020.02, -1)
                    
ShowSyncHudMsg(attackerg_hudmsg1"%i^n"damage)                
                }
                case 
2: {
                    if(
fm_is_ent_visible(attacker,id))
                    {
                        
set_hudmessage(0100200, -1.00.5520.14.00.020.02, -1)
                        
ShowSyncHudMsg(attackerg_hudmsg1"%i^n"damage)                
                    }
                }
            }
        }
    }
}

public 
Damage(id)
{
    new 
weaponhitpointattacker get_user_attacker(id,weapon,hitpoint)
    if(
attacker<=MAXPLAYERS && is_user_alive(attacker) && attacker!=id)
    if(
get_user_flags(id) & VIP_FLAG
    {
        new 
money read_data(2) * get_pcvar_num(money_per_damage)
        if(
hitpoint==1money += get_pcvar_num(money_headshot_bonus)
        
cs_set_user_money(attacker,cs_get_user_money(attacker) + money)
    }
}

public 
fwHamPlayerSpawnPost(id)
{
    
gMenuUsed[id] = 0//Make sure that VIP didn't use VIP menu on his spawn
    
if(is_user_alive(id))
    {
        if(
get_user_flags(id) & VIP_FLAG)
        {
            if(!
g_bCurrentMapIsInList//Checks if map is not the one written in mapnames.ini, if user is alive and if e has flag H
            
{
                
give_item(id"weapon_hegrenade"); //Gives HE grenade
                
give_item(id"weapon_flashbang"); //Gives FB grenade
                
give_item(id"weapon_flashbang"); //Gives BF grenade
                
give_item(id"weapon_smokegrenade"); //Gives SG grenade
                
give_item(id"item_assaultsuit"); //Gives armor
                
if(g_bHasBombSite && cs_get_user_team(id) == CS_TEAM_CT//Checks if current map has bombsite
                
{
                    
give_item(id"item_thighpack"); //Gives defuse kit
                
}
            }
        
            if(
models_enabled == 1)
            {
                if(
cs_get_user_team(id) & CS_TEAM_T)
                {
                    
copy(player_model[id], sizeof(player_model), VIP_TR)
        
                    new 
currentmodel[32];
                    
fm_get_user_model(idcurrentmodelsizeof currentmodel 1);
            
                    if(!
equal(currentmodelplayer_model[id]))
                    {
                        
fm_set_user_model(idplayer_model[id])
                    }
                }
                else if(
cs_get_user_team(id) & CS_TEAM_CT)
                {
                    
copy(player_model[id], sizeof(player_model), VIP_CT)
        
                    new 
currentmodel[32];
                    
fm_get_user_model(idcurrentmodelsizeof currentmodel 1);
            
                    if(!
equal(currentmodelplayer_model[id]))
                    {
                        
fm_set_user_model(idplayer_model[id])
                    }
                }
            }
        }
    }
}

public 
fw_TouchWeapon(weaponid
{
    if (!
get_pcvar_num(g_sniper_pickup)) //Checks if g_sniper_pickup is disactivated (set to 0)
        
return PLUGIN_CONTINUE //If it is, let players pick up snipers
        
    
if (!is_user_alive(id) || get_user_flags(id) & VIP_FLAG
    {
        return 
HAM_IGNORED
    
}
   
    static 
classname[32]
    
pev(weaponpev_classnameclassnamecharsmax(classname))
 
    for(new 
0sizeof vipgunsi++)
    if (
g_bCurrentMapIsInList && equal(classnamevipguns[i])) 
    {
        
//Sends a message that snipers are only for VIP
        
client_print(idprint_center"%L"id"SNIPER_ONLY_FOR_VIP")
        return 
HAM_SUPERCEDE
    
}
    return 
HAM_IGNORED


public 
fw_SetClientKeyValue(idinfobufferkey[], value[])
{   
    if (
g_model[id] && equal(key"model"))
        return 
FMRES_SUPERCEDE
    
    
return FMRES_IGNORED
}

public 
fw_ClientUserInfoChanged(idinfobuffer)
{   
    if (!
g_model[id])
        return 
FMRES_IGNORED
    
    
new currentmodel[32]; 
    
fm_get_user_model(idcurrentmodelsizeof currentmodel 1);
    
    if(!
equal(currentmodelplayer_model[id]))
        
fm_set_user_model(idplayer_model[id]) 
    
    return 
FMRES_IGNORED
}

public 
cmdvipmenu(id
{
    if ( 
is_user_alive(id) )
    {
        if( 
get_user_flags(id) & VIP_FLAG )
        {
            if ( 
CurrentRound menu_round )
            {
                
client_printidprint_center"%L"id"VIP_MENU_ROUND"menu_round ); //Sends a message that VIP can use VIP menu only from specific round
            
}
            if ( 
map_active == //Checks if map_active is 1
            
{
                if( 
g_bCurrentMapIsInList //Checks if current map is in mapnames list
                
{
                    
client_printidprint_center"%L"id"VIP_MENU_WRONG_MAP" ); //Sends a message that VIP can't use VIP menu on that map
                
}
            }
            if ( 
gMenuUsed[id] >= menu_uses )
            {
                
client_printidprint_center"%L"id"VIP_MENU_PER_ROUND"menu_uses ); //Message that VIP can only take VIP menu few time that is set as VIPUsed
            
}
            if ( !
g_freezetime //Checks if freezetime is not over yet and if user is alive and he has flag H
            
{
                
client_printidprint_center"%L"id"VIP_MENU_ONLY_FROM_ROUND_START" ); //Message that's set in vipplugin.txt as VIP_MENU_ONLY_FROM_ROUND_START
            
}
            if(
g_freezetime//Checks if freezetime is over
            
{
                if ( 
gMenuUsed[id] < menu_uses //Checks if VIP has already used VIP menu before, the amount of times we set as VIPUsed 
                
{
                    if( 
CurrentRound >= menu_round //Checks if current round is more or equal to the round that is set as VIPMenuRound
                    
{    
                        if (!
get_pcvar_num(g_menu_active)) //Checks if g_menu_active is disactivated (set to 0)
                            
return PLUGIN_CONTINUE //If so, VIP won't get VIP menu
                        
Showrod(id//Shows VIP menu
                    
}
                }
            }
        }
        else 
// If user doesn't have VIP_FLAG
        
{
            
PrintText(id//Sets a task in 0.1 seconds and starts PrintTect
        
}
    }
    else if( 
get_user_flags(id) & VIP_FLAG //Checks if user is death and he have VIP_FLAG
    
{
        
client_printidprint_center"%L"id"VIP_MENU_MUST_BE_ALIVE" ); //Sends a message that VIP must be alive to use VIP menu
    
}
    else 
//If user is death and doesn't have VIP_FLAG
    
{
        
PrintText(id//Prints PrintText
    
}
    return 
PLUGIN_HANDLED;
}

public 
Showrod(id)
{
    if (
get_user_flags(id) & VIP_FLAG//Checks if player has flag H
    
{
        if (
map_active//Checks if map_active is 1
        
{
            if( 
g_bCurrentMapIsInList //Checks if current map is in mapnames.ini, if so print the message and cancels the menu showup
            
{
                
client_printidprint_center"%L"id"VIP_MENU_WRONG_MAP" ); //Sends a message that VIP can't use VIP menu on that map
                
return; //Stop VIP from getting the VIP menu
            
}
        }
        if( 
g_bCurrentAWPMapIsInList //Checks if map is in awpmapnames.ini
        
{
            
bAwpMap true //If so sets bAwpMap to true, so AWP choice would work in maps that are in awpmapnames.ini
        
}
        new 
newmenu[64], choice_1[64], choice_2[64], choice_3[64
        
format(newmenusizeof(newmenu), "%L"id"NEW_MENU"); //Shows a menu message that's set in vipplugin.txt as NEW_MENU_PRIMARY
        
new menu menu_create(newmenu"Pressedrod"); //Creates menu that's in Pressedrod
        
        
format(choice_1sizeof(choice_1), "%L"id"MENU_CHOICE_1"); //Shows a menu message that's set in vipplugin.txt as MENU_CHOICE_PRIMARY_1
        
menu_additem(menuchoice_1"1"0); //Menu choice/case 1
        
format(choice_2sizeof(choice_2), "%L"id"MENU_CHOICE_2"); //Shows a menu message that's set in vipplugin.txt as MENU_CHOICE_PRIMARY_2
        
menu_additem(menuchoice_2"2"0); //Menu choice/case 2
        
if ( iTCount >= TR && iCTCount >= CT //Checks that each team has 5 or more people to AWP choice appear in the menu
        
{
            if (
awp_active == 1//Checks if vips can get awp choice, 0 - no; 1 - yes
            
{
                if ( 
CurrentRound >= awp_menu_round //Checks if current round is more or equal to 3, so AWP choice would come out
                
{
                    if( !
bAwpMap //Checks if map is not one in awpmapnames.xfg, if so shows the fifth menu item
                    
{
                        
format(choice_3sizeof(choice_3), "%L"id"MENU_CHOICE_3"); //Shows a menu message that's set in vipplugin.txt as MENU_CHOICE_PRIMARY_5
                        
menu_additem(menuchoice_3"3"0); //Menu choice/case 5
                    
}
                }
            }
        }        
        new 
menu_exit_name[64];
        
format(menu_exit_namesizeof(menu_exit_name), "%L"id"MENU_EXIT_NAME")
        
menu_setprop(menuMPROP_EXITNAMEmenu_exit_name)
        
menu_setprop(menuMPROP_EXITMEXIT_ALL);
        if(
menu_number_color == 1//Checks if menu_number_color is set to 3
        
{
            
menu_setprop(menu,MPROP_NUMBER_COLOR,"\y"); // ets the number color to yello
        
}
        else if(
menu_number_color == 2//Checks if menu_number_color is set to 3
        
{
            
menu_setprop(menu,MPROP_NUMBER_COLOR,"\w"); //Sets the number color to white
        
}
        else if(
menu_number_color == 3//Checks if menu_number_color is set to 3
        
{
            
menu_setprop(menu,MPROP_NUMBER_COLOR,"\d"); //Sets the number color to grey
        
}
        else 
//In any other case the menu_number_color is set to
        
{
            
menu_setprop(menu,MPROP_NUMBER_COLOR,"\r"); //Sets the number color to red
        
}
        
menu_display(idmenu0)
    }
}

public 
Pressedrod(idmenuitem)
{
    if( 
item == MENU_EXIT //Checks if player clicks menu exit (0)
    
{
        
menu_destroy(menu); //If so the menu will be destroyed
        
return PLUGIN_HANDLED;
    }
    new 
iFlashes cs_get_user_bpammoidCSW_FLASHBANG );
    new 
HasC4[33], HasHE[33], HasSG[33];
    new 
weapons pev(idpev_weapons)
    
HasC4[id] = ( weapons 1<<CSW_C4 )
    
HasHE[id] = ( weapons 1<<CSW_HEGRENADE ) && cs_get_user_bpammo(idCSW_HEGRENADE)
    
HasSG[id] = ( weapons 1<<CSW_SMOKEGRENADE ) && cs_get_user_bpammo(idCSW_SMOKEGRENADE)
    new 
data[6], szName[64];
    new 
accesscallback;
    
menu_item_getinfo(menuitemaccessdata,charsmax(data), szName,charsmax(szName), callback);
    new 
key str_to_num(data);
    if(
is_user_alive(id) && !g_bRoundEnd)
    {
        
strip_user_weaponsid );
        switch(
key)
        {
        case 
1: {                                  
                
give_item(id,"weapon_m4a1"//Gives M4A1
                
cs_set_user_bpammo(idCSW_M4A190); //Sets M4A1 back pack ammo to 90
                
client_printidprint_center"%L"id"CHOSE_M4A1" ); //Shows a message that's set in vipplugin.txt as CHOSE_M4A1
            
}
        case 
2: {     
                
give_item(id,"weapon_ak47"//Gives AK47
                
cs_set_user_bpammo(idCSW_AK4790); //Sets AK47 back pack ammo to 90
                
client_printidprint_center"%L"id"CHOSE_AK47" ); //Shows a message that's set in vipplugin.txt as CHOSE_AK47
            
}
        case 
3: { 
                
give_item(id,"weapon_awp"//Gives AWP
                
cs_set_user_bpammo(idCSW_AWP30); //Sets AWP back pack ammo to 30
                
client_printidprint_center"%L"id"CHOSE_AWP" ); //Shows a message that's set in vipplugin.txt as CHOSE_AWP
            
}
        }
        if (
HasC4[id])
        {
            
give_item(id"weapon_c4");
            
cs_set_user_plantid );
            
set_pev(idpev_body1);
        }
        if (
HasHE[id])
        {
            
give_item(id"weapon_hegrenade")
        }
        if (
HasSG[id])
        {
            
give_item(id"weapon_smokegrenade");
        }
        if( 
iFlashes 
        { 
            
give_itemid"weapon_flashbang" ); 
            
cs_set_user_bpammoidCSW_FLASHBANGiFlashes ); 
        } 
        
give_item(id,"weapon_knife"//Gives knife
        
give_item(id,"weapon_deagle"//Gives deagle
        
cs_set_user_bpammo(idCSW_DEAGLE35); //Sets deagle back pack ammo to 35
        
if(g_bHasBombSite && cs_get_user_team(id) == CS_TEAM_CT//Checks if current map has bombsite
        
{
            
give_item(id"item_thighpack"); //Gives defuse kit
        
}
        
gMenuUsed[id]++ //Makes sure that VIP really made a choice
    
}
    
menu_destroy(menu); //Destroys menu
    
return PLUGIN_CONTINUE
}

public 
HandleCmd(id)
{
    if (!
get_pcvar_num(g_sniper_active)) //Checks if g_awp_active is disactivated (set to 0)
        
return PLUGIN_CONTINUE //If it is, let players buy snipers
        
    
if(get_user_flags(id) & VIP_FLAG)  //Checks if player has flag H
        
return PLUGIN_CONTINUE 
        
    client_print
idprint_center"%L"id"SNIPER_ONLY_FOR_VIP" ); //Sends a message that snipers are only for VIP
    
    
return PLUGIN_HANDLED
}

public 
ShowMotd(id)
{
    new 
contact[112];
    
get_cvar_string("vip_contactinfo"contact63)
    new 
price[112];
    
get_cvar_string("vip_price"price63)
    static 
MOTD[1501];
    new 
len formatex(MOTD1500,"<style type=text/css>body{background-color: #000000;font-family:Verdana,Tahoma;}</style>");
    
len += formatex(MOTD[len],1500-len,"<font size=2 color=#e0a518><b><center>%L</center></b></font><br /><font size=1 color=#c0c0ff><UL>"id"MOTD_LINE_01");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI>"id"MOTD_LINE_02");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI>"id"MOTD_LINE_03");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI>"id"MOTD_LINE_04");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI>"id"MOTD_LINE_05");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI>"id"MOTD_LINE_06");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI>"id"MOTD_LINE_07");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI>"id"MOTD_LINE_08");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI>"id"MOTD_LINE_09");
    
len += formatex(MOTD[len],1500-len,"%L"id"MOTD_LINE_10");
    
len += formatex(MOTD[len],1500-len,"<br>%L"id"MOTD_LINE_11");
    
len += formatex(MOTD[len],1500-len,"<br>%L"id"MOTD_LINE_12");
    
len += formatex(MOTD[len],1500-len,"<LI>%L</LI><br>"id"MOTD_LINE_13");
    
len += formatex(MOTD[len],1500-len,"<font size=1 color=#00c000><strong>%L</strong></font>"id"MOTD_LINE_14")
    
len += formatex(MOTD[len],1500-len,"<br>%L %s"id"MOTD_LINE_15"price)
    
len += formatex(MOTD[len],1500-len,"<br>%L <font color=#FF6600>%s</font>"id"MOTD_LINE_16"contact);

    new 
motd_name[64];
    
format(motd_name64"%L"id"WANTVIP_MOTD_NAME");
    
show_motd(id,MOTDmotd_name);    
    return 
PLUGIN_HANDLED
}

public 
client_putinserver(id)
{
    if (!
task_exists(id 1000)) set_task(30.0"PrintText"id 1000//Checks if task already exist, if not print text set in public PrintText
}

public 
PrintText(id)
{
    if(
color_msg == 1)
    {
        
client_print_colorid"%L"id"PRINT_TEXT_COLORED" ); //Message which is sent
    
}
    else
    {
        
client_print_colorid"%L"id"PRINT_TEXT" ); //Message which is sent
    
}
}

public 
print_adminlist(user
{
    new 
idcountxlenadminnames[33][32];
    for(
id id <= MAXPLAYERS id++)
            if(
is_user_connected(id))
                if(
get_user_flags(id) & VIP_FLAG)
                    
get_user_name(idadminnames[count++], 31)
                    
    if(
vips_list == || vips_list == 3)
    {                    
        new 
contact[112];
        
get_cvar_string("vip_contactinfo"contact63)
        new 
price[112];
        
get_cvar_string("vip_price"price63)
        new 
Data[g_Buffer];
    
        
len formatex(Data[len], g_Buffer len"<html><center><font color=yellow>%L <font color=green>%s.<font color=yellow> %L <font color=green>%s</font><body bgcolor=Black>"user"CONTACT"contactuser"MOTD_LINE_15"price);
        
len += formatex(Data[len], g_Buffer len"<br><table border=1 width=300 cellspacing=0 bordercolor=#4A4344 style=color:#56A5EC;text-align:center;>");
        
len += formatex(Data[len], g_Bufferlen"<tr><td><b>#</b></td><td><b>%L</b></td></tr>"user"VIPS_ONLINE");
    
        if(
count 0)
        {
            for(
count x++) 
            {
                
len += formatex(Data[len], g_Buffer len"<tr><td><font color=Red>%d</font></td>"1);
                
len += formatex(Data[len], g_Buffer len"<td>%s</td></tr>"adminnames[x]);
            }
        }
        
len += formatex(Data[len],g_Buffer len,"</center></body></html>");
        new 
motd_name[64];
        
format(motd_name64"%L"user"WANTVIP_MOTD_NAME");
        
show_motd(userDatamotd_name);
        
        
    }
    if(
vips_list == || vips_list == 3)
    {
        new 
message[256], contact[112]
        
        if(
color_msg == 1)
        {
            
len format(message255"%L"user"VIPS_ONLINE_COLORED"COLOR)
        }
        else
        {
            
len format(message255"%L"user"VIPS_ONLINE")
        }
        if(
count 0)
        {
            for(
count x++) 
            {
                
len += format(message[len], 255-len" %s%s "adminnames[x], < (count-1) ? ", ":"")
                if(
len 96 
                {
                    
client_print_color(usermessage)
                    if(
color_msg == 1)
                    {
                        
len format(message255"%s",COLOR)
                    }
                    else
                    {
                        
len format(message255"")
                    }
                }
            }
            
client_print_color(usermessage)
        }
        else 
        {
            
len += format(message[len], 255-len" %L"id"NO_VIPS_ONLINE")
            
client_print_color(usermessage)
        }
        
        
get_cvar_string("vip_contactinfo"contactcharsmax(contact))
        if(
contact[0]) 
        {
            if(
color_msg == 1)
            {
                
client_print_color(user"%L %s"user"CONTACT_COLORED"contact)
            }
            else
            {
                
client_print_color(user"%L %s"user"CONTACT"contact)
            }
        }
    }
}

stock fm_set_user_model(playermodelname[])
{   
    
engfunc(EngFunc_SetClientKeyValueplayerengfunc(EngFunc_GetInfoKeyBufferplayer), "model"modelname)
    
    
g_model[player] = true
}

stock fm_get_user_model(playermodel[], len)
{   
    
engfunc(EngFunc_InfoKeyValueengfunc(EngFunc_GetInfoKeyBufferplayer), "model"modellen)
}

stock fm_reset_user_model(player)
{         
    
g_model[player] = false
    
    dllfunc
(DLLFunc_ClientUserInfoChangedplayerengfunc(EngFunc_GetInfoKeyBufferplayer))
}

get_user_flashed(id, &iPercent=0

    new 
Float:flFlashedAt get_pdata_float(idm_flFlashedAt

    if( !
flFlashedAt 
    { 
        return 

    

    
    new 
Float:flGameTime get_gametime() 
    new 
Float:flTimeLeft flGameTime flFlashedAt 
    
new Float:flFlashDuration get_pdata_float(idm_flFlashDuration
    new 
Float:flFlashHoldTime get_pdata_float(idm_flFlashHoldTime
    new 
Float:flTotalTime flFlashHoldTime flFlashDuration 
    
    
if( flTimeLeft flTotalTime 
    { 
        return 

    

    
    new 
iFlashAlpha get_pdata_int(idm_iFlashAlpha

    if( 
iFlashAlpha == ALPHA_FULLBLINDED 
    { 
        if( 
get_pdata_float(idm_flFlashedUntil) - flGameTime 0.0 
        { 
            
iPercent 100 
        

        else 
        { 
            
iPercent 100-floatround(((flGameTime - (flFlashedAt flFlashHoldTime))*100.0)/flFlashDuration
        } 
    } 
    else 
    { 
        
iPercent 100-floatround(((flGameTime flFlashedAt)*100.0)/flTotalTime
    } 

    return 
iFlashAlpha 
}

stock client_print_color(const id, const input[], any:...) 

    new 
count 1players[32]; 
    static 
msg[191]; 
    
vformat(msg190input3); 

    
replace_all(msg190"!g""^x04"); // Green Color 
    
replace_all(msg190"!n""^x01"); // Default Color 
    
replace_all(msg190"!t""^x03"); // Team Color 

    
if (idplayers[0] = id; else get_players(playerscount"ch"); 
    { 
        for (new 
0counti++) 
        { 
            if (
is_user_connected(players[i])) 
            { 
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i]); 
                
write_byte(players[i]); 
                
write_string(msg); 
                
message_end(); 
            } 
        } 
    } 



SOLVED, thanks man.
RenuaR is offline
Reply


Thread Tools
Display Modes

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

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

Forum Jump


All times are GMT -4. The time now is 11:39.


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