PHP Code:
/* Plugin generated by AMXX-Studio
Original creator: Dunn0
Remade by: Unkolix
Known bugs/glitches:
When you are not fully flashed and you kill someone, due to this plugin you will have
blue fading screen and the flash (not full flashed) effect will disappear.
Shield bug.
Changelog by me, Unkolix:
v5.2.1 - Not using stripweapons include anymore, just to get rid of that shield bug.
v5.2 - Several fixes, optimization. New cvar to control if only VIP's can pick up snipers.
v5.1 - Fixed shield bug.
v5.0 - Multi-lingual added!
v4.9.2 - New cvar, awp_active. 1 - VIP can get AWP choice; 0 - cann't
v4.9.1 - AWP choice improvement. New Cvar, awp_menu_round, set the round from which VIP can see AWP choice.
v4.8 - Fixed VIP menu dilsplay after player death. Thanks to vitorrossi.
v4.7 - Fixed fading bug/glitch that was removing flashbang effect. Thanks to ConnorMcLeod.
v4.6 - Fixed log error. Thanks to wickedd.
v4.5 - OPTIMISATION, thanks to Backstabnoob.
v4.4 - New Cvars awp_ct and awp_tr, how mant counter-terrorists and terrorists must be in each team to get AWP choice in VIP menu
v4.3 - New feature, AWP only from sertain amount of players. Thanks to Emp`.
v4.2 - Added new Cvar, vip_menu_uses. Thanks to Erox902.
v4.1 - mapnames and awpmapnames consts are now readed from 2 files, awpmanames.ini and mapnames.ini. Thanks to fysiks.
v4.0 - New feature, awp an't be used in maps that are mentioned in awpmapnames const. UPDATE: awpmapnames.ini
v3.9 - Added new menu item, AWP.
v3.8 - Improved v3.7 update. Thanks to Bugsy.
v3.7 - New feature, VIP menu can't be shown on maps which are listed in mapnames const. UPDATED: mapnames.ini
v3.6 - Small part is rewrited with drekes help, he made stripweapons.inc
v3.5 - Fixed triple VIP message. Thanks jimaway!
v3.4 - Fixed a bug/glitch which didn't let player to have AWP, even on awp maps! Now, they can't buy it, but if they find it, they can have it.
v3.3 - Completely remade menu
v3.2 - Fixed a bug/glitch when all VIP players was getting defuse kit on all maps. Now only on maps which has bombsites and only for CT. Thanks ConnorMcLeod
v3.1 - Added commands to call VIP menu. Thanks Stereo!
Changelog by original author Dunn0:
Updates on 3.0version
Granates bug fixed, give it when round starts only. Removed hamsandwich module becouse i removed event witch was usualess.
Updates on 2.06version
Fixed C4 Planting just need'ed remove 1 simbol... Remove'd AWP pick up now only VIP can buy awp and non VIP can pick up it from ground. Fixed Bug whit menu was giving in first round I changed some events and it works just fine.
Updates on 2.05version
Was not working /wantvip , /vips command it got fixed. Was removed "pickup_active 1" cvar (couse was to much commands in registrations. Was removed some useless commands. Now changed that Only VIPS can buy awp weapons but normal players can pick up awp if VIPS drop it.
Updates on 2.04version
Menu Fixed now it always shows only from 3rd round. Nades , armor will give when u spawn not from round start. Some small fixes on Event_curweapons.
Add cvar pickup_active 1 so now if u write pickup_active 0 not vips will can pick up AWP weapons just wont be able to buy.
Updated at 2.03version
Repaired C4 bug now u can plant it
Updated at 2.02version
Repaired C4 bug
UPDATE's at 2.01version
Well i add'ed 2 new cvar's becouse people was asking it
First is "menu_active 1" so now u can turn off menu when u will one.
Second is "sniper_active 1" well if u will do it 0 all people will can buy awp.
*/
#define DAMAGE_RECIEVED
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <fun>
#include <colorchat>
#define MAXPLAYERS 32 + 1
static const COLOR[] = "^x04" //green
static const CONTACT[] = ""
const m_flFlashedUntil = 514
new maxplayers
new gmsgSayText
new mpd, mkb, mhb
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 gMenuUsed[33]
new g_iMenu, iNewMenuId
new bool:g_bCurrentMapIsInList = false;
new bool:g_bCurrentAWPMapIsInList = false;
const m_flFlashDuration = 517;
new iTCount, iCTCount;
new g_MsgSync
#if defined DAMAGE_RECIEVED
new g_MsgSync2
#endif
#define find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2)
new const vipmenu[][] =
{
"say /vipmenu", "say vipmenu", "say_team /vipmenu", "say_team vipmenu", "say vmenu", "say_team vmenu" //Commands to call VIP menu
}
new const VIPweapons[][] =
{
"awp", "sg550", "g3sg1" //Weapons which normal players can't pick up.
}
public plugin_init()
{
register_plugin("VIP", "5.2.1", "Unkolix")
mpd = register_cvar("money_per_damage","3") //How many $ VIP will get per 1 damage
mkb = register_cvar("money_kill_bonus","200") //How many $ VIP will get per kill
mhb = register_cvar("money_hs_bonus","500") //How many $ VIP will get per head shot kill
health_add = register_cvar("amx_vip_hp", "15") //How many hp VIP will get per kill
health_hs_add = register_cvar("amx_vip_hp_hs", "30") //How many hp VIP will get per head shot kill
health_max = register_cvar("amx_vip_max_hp", "100") //How many hp VIP can have in total
g_sniper_active = register_cvar("sniper_active", "1") //Who can buy SNIPERS? 0 - everyone, 1 - only VIP
g_menu_active = register_cvar("menu_active", "1") //Will VIP get VIP menu? 0 - won't get the menu, 1 - will get the menu.
g_map_active = register_cvar("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("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("awp_ct", "5") //How many counter terrorist must be in a team to AWP choice show up
g_awp_tr = register_cvar("awp_tr", "5") //How many terrorist must be in a team to AWP choice show up
g_menu_round = register_cvar("menu_round", "2") //Round from which VIP will get VIP menu
g_awp_menu_round = register_cvar("awp_menu_round", "3") //Round from which VIP will get AWP choice
g_sniper_pickup = register_cvar("sniper_pickup", "1") //0 - everyone can pickup snipers, 1 - only VIP
gmsgSayText = get_user_msgid("SayText")
g_MsgSync = CreateHudSyncObj()
#if defined DAMAGE_RECIEVED
g_MsgSync2 = CreateHudSyncObj()
#endif
maxplayers = get_maxplayers() //Gets servers maxplayer slots
RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1) //Player spawn
RegisterHam(Ham_Killed, "player", "PlayerDies", 1) //0 = before death 1 = after
register_logevent("LogEvent_GameCommencing", 2, "0=World triggered", "1=Game_Commencing") //Game commencing event
register_logevent("LogEvent_RoundStart", 2, "1=Round_Start" ); //Round start event
register_logevent( "EventRoundEnd", 2, "1=Round_End" ); //Round end event
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
register_clcmd("say /wantvip", "ENShowMotd") //When player types /wantvip he gets enlish motd
register_clcmd("say /noriuvip", "LTShowMotd") //When player types /wantvip he gets lithuanian motd
register_clcmd("say /volouirvip", "ENShowMotd") //When player types /wantvip he gets english motd
register_clcmd("say /chiechvip", "ENShowMotd") //When player types /wantvip he gets english motd
register_clcmd("say /vips","print_adminlist") //If someone says /vips it starts the function print_adminlist
register_event("HLTV", "event_new_round", "a", "1=0", "2=0") //New round event
register_event("TextMsg","Event_RoundRestart","a","2&#Game_w") //Round restart event
register_event("CurWeapon", "Event_CurSnipers", "be", "1=1") //Drops users snipers if map is not in mapnames.ini and sniper_pickup is 1
register_event("DeathMsg", "hook_death", "a", "1>0")
register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0")
register_event("Damage","Damage","b")
register_event("DeathMsg","death_msg","a")
register_cvar("amx_contactinfo", CONTACT, FCVAR_SERVER)
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_colored( "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)
new szmapnames[128], szData[32], szCurrentMap[32], szawpmapnames[128];
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.
//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.
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 on_damage(id)
{
new attacker = get_user_attacker(id)
#if defined DAMAGE_RECIEVED
if ( is_user_connected(id) && is_user_connected(attacker) )
if (get_user_flags(attacker) & ADMIN_LEVEL_H)
{
new damage = read_data(2)
set_hudmessage(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1)
ShowSyncHudMsg(id, g_MsgSync2, "%i^n", damage)
#else
if ( is_user_connected(attacker) && if (get_user_flags(attacker) & ADMIN_LEVEL_H) )
{
new damage = read_data(2)
#endif
set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
ShowSyncHudMsg(attacker, g_MsgSync, "%i^n", damage)
}
}
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(mkb) - 300)
}
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(attacker) & ADMIN_LEVEL_H)
{
new money = read_data(2) * get_pcvar_num(mpd)
if(hitpoint==1) money += get_pcvar_num(mhb)
cs_set_user_money(attacker,cs_get_user_money(attacker) + money)
}
}
public event_new_round(id)
{
g_freezetime = false;
}
is_user_flashed( id )
{
return get_gametime() < get_pdata_float(id, m_flFlashedUntil)
}
public LogEvent_RoundStart(id)
{
g_freezetime = true;
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) & ADMIN_LEVEL_H )
{
Showrod(player);
}
}
return PLUGIN_CONTINUE
}
public fwHamPlayerSpawnPost(id)
{
gMenuUsed[id] = 0; //Make sure that VIP didn't use VIP menu on his spawn
if(!g_bCurrentMapIsInList && is_user_alive(id) && get_user_flags(id) & ADMIN_LEVEL_H) //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) //Checks if current map has bombsite
{
give_item(id, "item_thighpack"); //Gives defuse kit
}
}
}
public Event_RoundRestart(id)
{
CurrentRound=0;
player_menu_info(id, g_iMenu, iNewMenuId)
if( g_iMenu> 0 || iNewMenuId!= -1 )
{
show_menu(id, 0, "^n", 1);
}
}
public LogEvent_GameCommencing(id)
{
CurrentRound=0;
player_menu_info(id, g_iMenu, iNewMenuId)
if( g_iMenu> 0 || iNewMenuId!= -1 )
{
show_menu(id, 0, "^n", 1);
}
}
public EventRoundEnd(id)
{
player_menu_info(id, g_iMenu, iNewMenuId)
if( g_iMenu> 0 || iNewMenuId!= -1 )
{
show_menu(id, 0, "^n", 1);
}
}
public PlayerDies(id)
{
player_menu_info(id, g_iMenu, iNewMenuId)
if( g_iMenu> 0 || iNewMenuId!= -1 )
{
show_menu(id, 0, "^n", 1);
}
}
public cmdvipmenu(id)
{
if ( is_user_alive(id) )
{
if (get_user_flags(id) & ADMIN_LEVEL_H) //Checks if player has flag H
{
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
}
}
}
}
if (!(get_user_flags(id) & ADMIN_LEVEL_H)) //Checks if user doesn't has flag H
{
PrintText(id) //Sets a task in 0.1 seconds and starts PrintTect
}
}
if ( !is_user_alive(id) && get_user_flags(id) & ADMIN_LEVEL_H ) //Checks if user is death and he has admin flag H
{
client_print( id, print_center, "%L", id, "VIP_MENU_MUST_BE_ALIVE" ); //Sends a message that VIP must be alive to use VIP menu
}
if (!is_user_alive(id) && !(get_user_flags(id) & ADMIN_LEVEL_H)) //Checks if user doesn't has flag H
{
PrintText(id) //Prints PrintText
}
return PLUGIN_HANDLED;
}
public hook_death()
{
// 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) & ADMIN_LEVEL_H))
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)
{
set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)
show_hudmessage(nKiller, "Healed +%d hp")
}
// Screen fading
if(!is_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 Showrod(id)
{
if (get_user_flags(id) & ADMIN_LEVEL_H) //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, 64, "%L", id, "NEW_MENU"); //Shows a menu message that's set in vipplugin.txt as NEW_MENU_PRIMARY
g_iMenu = menu_create(newmenu, "Pressedrod"); //Creates menu that's in Pressedrod
format(choice_1, 64, "%L", id, "MENU_CHOICE_1"); //Shows a menu message that's set in vipplugin.txt as MENU_CHOICE_PRIMARY_1
menu_additem(g_iMenu, choice_1, "1", 0); //Menu choice/case 1
format(choice_2, 64, "%L", id, "MENU_CHOICE_2"); //Shows a menu message that's set in vipplugin.txt as MENU_CHOICE_PRIMARY_2
menu_additem(g_iMenu, 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, 64, "%L", id, "MENU_CHOICE_3"); //Shows a menu message that's set in vipplugin.txt as MENU_CHOICE_PRIMARY_5
menu_additem(g_iMenu, choice_3, "3", 0); //Menu choice/case 5
}
}
}
}
menu_setprop(g_iMenu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, g_iMenu, 0); //Displays the menu
}
}
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 bool:HasC4[33], bool:HasHE[33], bool:HasSG[33]
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);
switch(key)
{
case 1: {
if (user_has_weapon(id, CSW_C4) && get_user_team(id) == 1)
HasC4[id] = true;
else
HasC4[id] = false;
if (user_has_weapon(id, CSW_HEGRENADE))
HasHE[id] = true;
else
HasHE[id] = false;
if (user_has_weapon(id, CSW_SMOKEGRENADE))
HasSG[id] = true;
else
HasSG[id] = false;
strip_user_weapons( id );
give_item(id,"weapon_m4a1") //Gives M4A1
cs_set_user_bpammo(id, CSW_M4A1, 90); //Sets M4A1 back pack ammo to 90
give_item(id,"weapon_knife");
if (HasC4[id])
{
give_item(id, "weapon_c4");
cs_set_user_plant( id );
}
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 );
}
client_print( id, print_center, "%L", id, "CHOSE_M4A1" ); //Shows a message that's set in vipplugin.txt as CHOSE_M4A1
}
case 2: {
if (user_has_weapon(id, CSW_C4) && get_user_team(id) == 1)
HasC4[id] = true;
else
HasC4[id] = false;
if (user_has_weapon(id, CSW_HEGRENADE))
HasHE[id] = true;
else
HasHE[id] = false;
if (user_has_weapon(id, CSW_SMOKEGRENADE))
HasSG[id] = true;
else
HasSG[id] = false;
strip_user_weapons( id );
give_item(id,"weapon_ak47") //Gives AK47
cs_set_user_bpammo(id, CSW_AK47, 90); //Sets AK47 back pack ammo to 90
give_item(id,"weapon_knife");
if (HasC4[id])
{
give_item(id, "weapon_c4");
cs_set_user_plant( id );
}
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 );
}
client_print( id, print_center, "%L", id, "CHOSE_AK47" ); //Shows a message that's set in vipplugin.txt as CHOSE_AK47
}
case 3: {
if (user_has_weapon(id, CSW_C4) && get_user_team(id) == 1)
HasC4[id] = true;
else
HasC4[id] = false;
if (user_has_weapon(id, CSW_HEGRENADE))
HasHE[id] = true;
else
HasHE[id] = false;
if (user_has_weapon(id, CSW_SMOKEGRENADE))
HasSG[id] = true;
else
HasSG[id] = false;
strip_user_weapons( id );
give_item(id,"weapon_awp") //Gives AWP
cs_set_user_bpammo(id, CSW_AWP, 30); //Sets AWP back pack ammo to 30
give_item(id,"weapon_knife");
if (HasC4[id])
{
give_item(id, "weapon_c4");
cs_set_user_plant( id );
}
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 );
}
client_print( id, print_center, "%L", id, "CHOSE_AWP" ); //Shows a message that's set in vipplugin.txt as CHOSE_AWP
}
}
give_item(id,"weapon_deagle") //Gives deagle
cs_set_user_bpammo(id, CSW_DEAGLE, 35); //Sets deagle back pack ammo to 35
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) & ADMIN_LEVEL_H) //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 Event_CurSnipers(id)
{
if(g_sniper_pickup && !g_bCurrentMapIsInList) //Checks if g_sniper_pickup is set to 1 and if current map is in list
{
if(read_data(2) == CSW_AWP)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
client_print( id, print_center, "%L", id, "SNIPER_ONLY_FOR_VIP" ); //Sends a message that snipers are only for VIP
client_cmd(id, "drop") //Drops AWP
}
}
if(read_data(2) == CSW_SG550)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
client_print( id, print_center, "%L", id, "SNIPER_ONLY_FOR_VIP" ); //Sends a message that snipers are only for VIP
client_cmd(id, "drop") //Drops G3SG1
}
}
if(read_data(2) == CSW_G3SG1)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
client_print( id, print_center, "%L", id, "SNIPER_ONLY_FOR_VIP" ); //Sends a message that snipers are only for VIP
client_cmd(id, "drop") //Drops SG550
}
}
}
return PLUGIN_HANDLED
}
public ENShowMotd(id)
{
show_motd(id, "envip.txt") //Shows the envip.txt file in a motd
}
public LTShowMotd(id)
{
show_motd(id, "ltvip.txt") //Shows the ltvip.txt file in a motd
}
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)
{
client_print_color( id, print_chat, "%L", id, "PRINT_TEXT" ); //Message which is sent
}
public print_adminlist(user)
{
new adminnames[33][32]
new message[256]
new contactinfo[256], contact[112]
new id, count, x, len
for(id = 1 ; id <= maxplayers ; id++)
if(is_user_connected(id))
if(get_user_flags(id) & ADMIN_LEVEL_H)
get_user_name(id, adminnames[count++], 31)
len = format(message, 255, "%L", id, "VIPS_ONLINE", COLOR)
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 )
{
print_message(user, message)
len = format(message, 255, "%s ",COLOR)
}
}
print_message(user, message)
}
else {
len += format(message[len], 255-len, "%L", id, "NO_VIPS_ONLINE")
print_message(user, message)
}
get_cvar_string("amx_contactinfo", contact, 63)
if(contact[0])
{
format(contactinfo, 111, "%L", id, "CONTACT_INFO", COLOR, contact)
print_message(user, contactinfo)
}
}
print_message(id, msg[])
{
message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id)
write_byte(id)
write_string(msg)
message_end()
}