/*
* -----------------
* Coded in 2011,
* by anti-talent or talents
* -----------------
*
* .:: Description ::.
*
* BaseBuilder VIP Menu.
*
* .:: Contacts ::.
*
* Email:
[email protected]
*
* Steam: pijele
*
*/
#pragma semicolon 1
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fun>
#include <hamsandwich>
#include <fakemeta>
#include <vault>
#define ADMIN_BBVIP ADMIN_LEVEL_H
#define is_valid_player(%1) (1 <= %1 <= 32)
// Define the Plugin Version
new const VERSION[] = { "1.0" };
// PREFIX
new const PREFIX[] = { "!g[ BaseBuilder ]!n" };
new const g_szKnifeModel[] = "models/chucky_knife.mdl";
new VipUsed[33];
new HasSpeed;
new bool:g_bHasKnife[33];
new bool:g_HasAk[33];
new g_hasZoom[33];
new Float:fast_speed = 400.0;
new Float:normal_speed = 250.0;
new cvar_dmgmultiplier;
public plugin_init()
{
register_plugin("BaseBuilder: VIP Menu", VERSION, "anti-talent");
RegisterHam(Ham_Spawn, "player", "FwdHamSpawn_Post", 1);
RegisterHam(Ham_Item_PreFrame, "player", "FwdPreFrame_Post", 1);
register_event("CurWeapon","event_curweapon","be","1=1");
register_clcmd("say vmenu", "cmdVmenu");
register_clcmd("say /vmenu", "cmdVmenu");
register_clcmd("say_team vmenu", "cmdVmenu");
register_clcmd("say_team /vmenu", "cmdVmenu");
register_clcmd("say /buyvip", "cmdBuyvip");
register_clcmd("say buyvip", "cmdBuyvip");
register_clcmd("say_team buyvip", "cmdBuyvip");
register_clcmd("say_team /buyvip", "cmdBuyvip");
cvar_dmgmultiplier = register_cvar("zp_goldenak_dmg_multiplier", "2");
// Ham TakeDamage
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");
register_forward( FM_CmdStart, "fw_CmdStart" );
RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1);
}
public plugin_precache()
{
precache_model(g_szKnifeModel);
}
public client_connect(id)
{
g_HasAk[id] = false;
}
public client_disconnect(id)
{
g_HasAk[id] = false;
}
public Death()
{
g_HasAk[read_data(2)] = false;
}
public fwHamPlayerSpawnPost(id)
{
g_HasAk[id] = false;
}
public fw_TakeDamage(victim, attacker, Float:damage)
{
if( is_valid_player( attacker ) && get_user_weapon( attacker ) == CSW_AK47 && g_HasAk[ attacker ] ) {
SetHamParamFloat(4, damage * get_pcvar_float( cvar_dmgmultiplier ) );
}
}
public fw_CmdStart( id, uc_handle, seed )
{
if( !is_user_alive( id ) )
return PLUGIN_HANDLED;
if( (get_uc( uc_handle, UC_Buttons ) & IN_ATTACK2) && !( pev( id, pev_oldbuttons ) & IN_ATTACK2 ) )
{
new szClip, szAmmo;
new szWeapID = get_user_weapon( id, szClip, szAmmo );
if( szWeapID == CSW_AK47 && g_HasAk[id] == true && !g_hasZoom[id] == true)
{
g_hasZoom[id] = true;
cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 0 );
emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 );
}
else if ( szWeapID == CSW_AK47 && g_HasAk[id] == true && g_hasZoom[id])
{
g_hasZoom[ id ] = false;
cs_set_user_zoom( id, CS_RESET_ZOOM, 0 );
}
}
return PLUGIN_HANDLED;
}
public event_curweapon(id)
{
if(read_data(2) == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, g_szKnifeModel);
set_user_gravity(id, 0.5);
}
else
set_user_gravity(id, 1.0);
}
public FwdPreFrame_Post(id)
{
if(!is_user_alive(id))
{
return PLUGIN_HANDLED;
}
if(!HasSpeed)
{
return PLUGIN_HANDLED;
}
else if(HasSpeed)
{
set_user_maxspeed(id, fast_speed);
}
return PLUGIN_HANDLED;
}
public FwdHamSpawn_Post(id)
{
if (!is_user_alive(id))
return PLUGIN_CONTINUE;
HasSpeed = false;
VipUsed[id] = false;
g_bHasKnife[id] = false;
set_user_maxspeed(id, normal_speed);
set_user_rendering( id, _, 0, 0, 0, _, 0 );
return PLUGIN_CONTINUE;
}
public cmdVmenu(id)
{
if(!(get_user_flags(id) & ADMIN_BBVIP))
{
client_printc(id, "%s Only !gVIPs !tmay use the VIP Menu", PREFIX);
return PLUGIN_HANDLED;
}
if(VipUsed[id])
{
client_printc(id, "%s You already used !gVIP Menu!n this round. Please wait till next round", PREFIX);
return PLUGIN_HANDLED;
}
switch(cs_get_user_team(id))
{
case CS_TEAM_T:
VipTMenu(id);
case CS_TEAM_CT:
VipCTMenu(id);
}
return PLUGIN_HANDLED;
}
public VipCTMenu(id)
{
new menu = menu_create("\yBaseBuilder VIP Menu:^n\r", "VipCTMenu_handler");
menu_additem(menu, "\w+150 viata si +100 armura", "1", 0);
menu_additem(menu, "\wViteza mai mare", "2", 0);
menu_additem(menu, "\wM249 si Deagle", "3", 0);
menu_additem(menu, "\wInviere", "4", 0);
menu_additem(menu, "\wGolden Deagle", "5", 0);
menu_display(id, menu);
}
public VipCTMenu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
set_user_health(id, get_user_health(id) + 150);
set_user_armor(id, get_user_armor(id) + 100);
VipUsed[id] = true;
client_printc(id, "%s Tocmai ai primit !g150 Viata!n si !g100 Armura!n", PREFIX);
}
case 2:
{
VipUsed[id] = true;
HasSpeed = true;
set_user_maxspeed(id, fast_speed);
client_printc(id, "%s Tocmai ai primit !gViteza", PREFIX);
}
case 3:
{
give_item(id, "weapon_m249");
give_item(id, "weapon_deagle");
cs_set_user_bpammo(id, CSW_M249, 200);
cs_set_user_bpammo(id, CSW_DEAGLE, 100);
VipUsed[id] = true;
client_printc(id, "%s Tocmai ai primit !gM249!n si !gDeagle!n", PREFIX);
}
case 4:
{
ExecuteHamB(Ham_CS_RoundRespawn, id);
VipUsed[id] = true;
client_printc(id, "%s Tocmai ai fost !ginviat", PREFIX);
}
case 5:
{
give_item(id, "weapon_ak47");
cs_set_user_bpammo(id, CSW_AK47, 200);
g_HasAk[id] = true;
g_hasZoom[id] = true;
VipUsed[id] = true;
client_printc(id, "%s Tocmai ai primit !ggloante infinite", PREFIX);
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public VipTMenu(id)
{
new menu = menu_create("\yBaseBuilder VIP Menu:^n\r", "VipTMenu_handler");
menu_additem(menu, "\wViteza mai mare", "1", 0);
menu_additem(menu, "\w+5000 viata si +5000 armura", "2", 0);
menu_additem(menu, "\wGolden Knife", "3", 0);
menu_display(id, menu);
}
public VipTMenu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
VipUsed[id] = true;
HasSpeed = true;
set_user_maxspeed(id, fast_speed);
client_printc(id, "%s Tocmai ai primit !gViteza", PREFIX);
}
case 2:
{
set_user_health(id, get_user_health(id) + 5000);
set_user_armor(id, get_user_armor(id) + 5000);
VipUsed[id] = true;
client_printc(id, "%s Tocmai ai primit !g5000 Viata!n and !g5000 Armura!n", PREFIX);
}
case 3:
{
set_user_health(id, get_user_health(id) + 2000);
set_user_armor(id, get_user_armor(id) + 2000);
set_user_maxspeed(id, fast_speed);
HasSpeed = true;
set_pev(id, pev_viewmodel2, "models/chucky_knife.mdl");
g_bHasKnife[id] = true;
VipUsed[id] = true;
client_printc(id, "%s Tocmai ai primit un !gGolden Knife", PREFIX);
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public cmdBuyvip(id)
{
show_motd(id, "vip.txt", "VIP");
}
public PrintText(id)
{
client_print(id, print_chat, "!g[VIP] !tWrite !g/buyvip !tand u will see how get !gVIP !tand !gVIP privilegies.");
}
// Colour Chat
stock client_printc(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();
}
}
}
}