New Member
|
04-03-2020
, 11:31
Re: VIP Plugin problem
|
#5
|
Quote:
Originally Posted by Napoleon_be
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_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", LANG_PLAYER, "HP_ADDED", nKiller);
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();
}
}
}
}
|
SOLVED, thanks man.
|
|