PHP Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <colorchat>
#include <cstrike>
#include <fakemeta>
#include <engine>
#define PLUGIN "VIP-Menu"
#define VERSION "1.0"
#define AUTHOR "NapoleoN#"
#define VIP_LEVEL ADMIN_LEVEL_B
new bool:bUsedMenu[33];
new bool:bHasWeapon[33];
new bool:bDoJump[33];
new iJumpNum[33];
new const szMotd[] = "addons/amxmodx/configs/vip.html";
new const szMenuItems[][] =
{
"Deadly AK47 + Deadly Deagle",
"Deadly M4A1 + Deadly Deagle",
"Deadly AWP + Deadly Deagle"
};
new const iWeapons[] =
{
CSW_AK47,
CSW_M4A1,
CSW_AWP
};
new const szWeapons[][] =
{
"weapon_ak47",
"weapon_m4a1",
"weapon_awp"
};
new const szWeaponModels[][] =
{
"models/vmenu/v_deadly_ak47.mdl",
"models/vmenu/v_deadly_m4a1.mdl",
"models/vmenu/v_deadly_awp.mdl",
"models/vmenu/v_deadly_deagle.mdl"
};
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /vips", "VipsOnline");
register_clcmd("say /vip", "VipMotd");
register_clcmd("say /vmenu", "VipMenu");
RegisterHam(Ham_Spawn, "player", "PostSpawn", 1);
RegisterHam(Ham_TakeDamage, "player", "PreDoubleDamage");
RegisterHam(Ham_Killed, "player", "PostPlayerKilled", 1);
register_event("HLTV", "NewRound", "a", "1=0", "2=0");
register_event("CurWeapon", "WeaponChange", "be", "1=1");
register_message(get_user_msgid("ScoreAttrib"), "MsgScoreAttrib");
}
public plugin_precache()
{
for(new i; i < sizeof(szWeaponModels); i++)
{
precache_model(szWeaponModels[i]);
}
}
public NewRound()
{
new szPlayers[32], iNum;
get_players(szPlayers, iNum);
for(new i; i < iNum; i++)
{
if(get_user_flags(szPlayers[i]) & VIP_LEVEL)
{
bUsedMenu[szPlayers[i]] = false;
}
}
}
public WeaponChange(id)
{
new iAmmo, iClip, iWeapon = get_user_weapon(id, iAmmo, iClip);
if(bHasWeapon[id])
{
for(new i; i < sizeof(iWeapons); i++)
{
if(iWeapon == iWeapons[i])
{
set_pev(id, pev_viewmodel2, szWeaponModels[i]);
break;
}
}
if(iWeapon == CSW_DEAGLE)
{
set_pev(id, pev_viewmodel2, szWeaponModels[3]);
}
}
}
public VipsOnline(id) {
new bool:IsFirst = true;
new szMessage[256], iLen, szPlayers[32], iNum;
get_players(szPlayers, iNum);
for(new i; i < iNum; i++)
{
if(!is_user_connected(szPlayers[i]) || !(get_user_flags(szPlayers[i]) & VIP_LEVEL))
{
continue;
}
if(!IsFirst)
{
szMessage[iLen++] = ' ';
szMessage[iLen++] = '|';
szMessage[iLen++] = ' ';
}
szMessage[iLen++] = '^x04';
szMessage[iLen] = EOS;
iLen += get_user_name(szPlayers[i], szMessage[iLen], charsmax(szMessage) - iLen);
szMessage[iLen++] = '^x01';
szMessage[iLen] = EOS;
IsFirst = false;
}
if(IsFirst)
{
ColorChat(id, GREEN, "There are no vips online.");
return PLUGIN_HANDLED;
}
else
{
ColorChat(id, TEAM_COLOR, "Online Vips: %s", szMessage);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public VipMotd(id)
{
show_motd(id, szMotd, "VIP");
}
public VipMenu(id)
{
if(!(get_user_flags(id) & VIP_LEVEL))
{
ColorChat(id, GREEN, "[Vip-Menu]^3 Only vips can use this command!");
return PLUGIN_HANDLED;
}
if(cs_get_user_team(id) != CS_TEAM_CT)
{
ColorChat(id, GREEN, "[Vip-Menu]^3 Only CT's can use the Vip-Menu!");
return PLUGIN_HANDLED;
}
if(bUsedMenu[id])
{
ColorChat(id, GREEN, "[Vip-Menu] You can only use this 1 time per round.");
return PLUGIN_HANDLED;
}
new menu = menu_create("[Vip-Menu]:", "VipMenuHandler");
for(new i; i < sizeof(szMenuItems); i++)
{
menu_additem(menu, szMenuItems[i]);
}
menu_display(id, menu);
return PLUGIN_HANDLED;
}
public VipMenuHandler(id, menu, item)
{
if(!is_user_alive(id))
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
bUsedMenu[id] = true;
bHasWeapon[id] = true;
strip_user_weapons(id);
give_item(id, "weapon_knife");
give_item(id, szWeapons[item]);
give_item(id, "weapon_deagle");
cs_set_user_bpammo(id, iWeapons[item], 255);
cs_set_user_bpammo(id, CSW_DEAGLE, 255);
set_pev(id, pev_viewmodel2, szWeaponModels[item]);
ColorChat(id, GREEN, "[Vip-Menu]:^3 You took: %s", szMenuItems[item]);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public PostSpawn(id)
{
if(get_user_flags(id) & VIP_LEVEL && is_user_alive(id))
{
if(cs_get_user_team(id) == CS_TEAM_CT || cs_get_user_team(id) == CS_TEAM_T)
{
set_user_health(id, 150);
set_user_armor(id, 150);
new iAmmo, iClip, iWeapon = get_user_weapon(id, iAmmo, iClip);
for(new i; i < sizeof(iWeapons); i++)
{
if(iWeapon != iWeapons[i])
{
bHasWeapon[id] = false;
}
}
}
}
}
public PostPlayerKilled(iVictim, iAttacker, iShouldGib)
{
if(is_user_connected(iVictim) && bHasWeapon[iVictim])
{
bHasWeapon[iVictim] = false;
}
}
public PreDoubleDamage(id, iInflictor, iAttacker, Float:iDamage, iDamagebits)
{
if(!is_user_connected(iAttacker) || iAttacker != iInflictor || !bHasWeapon[iAttacker])
{
return HAM_IGNORED;
}
new iWeapon = get_user_weapon(iAttacker);
for(new i; i < sizeof(iWeapons); i++)
{
if(iWeapon == iWeapons[i] || iWeapon == CSW_DEAGLE)
{
SetHamParamFloat(4, iDamage * 2);
break;
}
}
return HAM_HANDLED;
}
public client_PreThink(id)
{
if(is_user_alive(id) && get_user_flags(id) & VIP_LEVEL)
{
new iNewButton = get_user_button(id);
new iOldButton = get_user_oldbutton(id);
if((iNewButton & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(iOldButton & IN_JUMP))
{
if(iJumpNum[id] < 1)
{
bDoJump[id] = true;
iJumpNum[id]++;
return PLUGIN_CONTINUE;
}
}
if((iNewButton & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
{
iJumpNum[id] = 0;
return PLUGIN_CONTINUE;
}
}
return PLUGIN_CONTINUE;
}
public client_PostThink(id)
{
if(is_user_alive(id) && get_user_flags(id) & VIP_LEVEL)
{
if(bDoJump[id] == true)
{
new Float:fVelocity[3];
entity_get_vector(id, EV_VEC_velocity, fVelocity);
fVelocity[2] = random_float(265.0, 285.0);
entity_set_vector(id, EV_VEC_velocity, fVelocity);
bDoJump[id] = false;
return PLUGIN_CONTINUE;
}
}
return PLUGIN_CONTINUE;
}
public client_putinserver(id)
{
if(get_user_flags(id) & VIP_LEVEL)
{
bUsedMenu[id] = false;
bHasWeapon[id] = false;
iJumpNum[id] = 0;
bDoJump[id] =false;
}
}
public client_disconnect(id)
{
if(get_user_flags(id) & VIP_LEVEL)
{
bUsedMenu[id] = false;
bHasWeapon[id] = false;
iJumpNum[id] = 0;
bDoJump[id] =false;
}
}
public MsgScoreAttrib(const MsgId, const MsgType, const MsgDest)
{
static id;
id = get_msg_arg_int(1);
if((get_user_flags(id) & VIP_LEVEL) && !get_msg_arg_int(2))
{
set_msg_arg_int(2, ARG_BYTE, (1 << 2));
}
}