Yes its really weird.
PHP Code:
/* Plugin created by .l00ka*/
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#define PLUGIN "VIP Menu by .l00ka"
#define VERSION "1.0"
#define AUTHOR ".l00ka"
new mVIPmenu; // Menu
new mcbVIPMenu; // Menu Callback
new VipUsed[33];
new const PREFIX[] = { "!g[VIP-MENU]!n" };
new nSelectedItem = 0;
new pHeadShot;
new pKill;
new pMaxHp;
new checkReceiveBonusHP;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_event("DeathMsg", "add_bonus_hp", "a", "1>0");
RegisterHam(Ham_Spawn, "player", "FwdHamSpawn_Post", 1);
register_clcmd("say vm", "showVIPmenu", ADMIN_LEVEL_H);
register_clcmd("say /vm", "showVIPmenu", ADMIN_LEVEL_H);
register_clcmd("say vipmenu", "showVIPmenu", ADMIN_LEVEL_H);
register_clcmd("say /vipmenu", "showVIPmenu", ADMIN_LEVEL_H);
// Features
pHeadShot = register_cvar("vipmenu_hp_hs", "30");
pKill = register_cvar("vipmenu_hp", "15");
pMaxHp = register_cvar("vipmenu_max_hp", "100");
checkReceiveBonusHP = false;
}
public FwdHamSpawn_Post(id)
{
if (is_user_alive(id)) {
execOnNextRound(id);
// Restrict menu for one time per round
VipUsed[id] = false;
}
}
public showVIPmenu(id, level)
{
if( !( get_user_flags( id ) & level ) )
{
console_print( id, "You have no access to this command." );
return PLUGIN_HANDLED;
}
if(!VipUsed[id])
{
/* Menu Choose VIP Feature: */
mVIPmenu = menu_create("\yChoose VIP Feature: ^n\rby .l00ka", "mh_VipMenuHandler");
mcbVIPMenu = menu_makecallback("mcb_VIPMenu")
switch(nSelectedItem) {
case 0:
{
menu_additem(mVIPmenu, "Kevler + Helm", "1", ADMIN_LEVEL_H, 0);
menu_additem(mVIPmenu, "Grenade Pack", "2", ADMIN_LEVEL_H, 0);
menu_additem(mVIPmenu, "HP Bonus on Kill", "3", ADMIN_LEVEL_H, 0);
}
case 1:
{
menu_additem(mVIPmenu, "Kevler + Helm \r*", "1", ADMIN_LEVEL_H, mcbVIPMenu);
menu_additem(mVIPmenu, "Grenade Pack", "2", ADMIN_LEVEL_H, 0);
menu_additem(mVIPmenu, "HP Bonus on Kill", "3", ADMIN_LEVEL_H, 0);
}
case 2:
{
menu_additem(mVIPmenu, "Kevler + Helm", "1", ADMIN_LEVEL_H, 0);
menu_additem(mVIPmenu, "Grenade Pack \r*", "2", ADMIN_LEVEL_H, mcbVIPMenu);
menu_additem(mVIPmenu, "HP Bonus on Kill", "3", ADMIN_LEVEL_H, 0);
}
case 3:
{
menu_additem(mVIPmenu, "Kevler + Helm", "1", ADMIN_LEVEL_H, 0);
menu_additem(mVIPmenu, "Grenade Pack", "2", ADMIN_LEVEL_H, 0);
menu_additem(mVIPmenu, "HP Bonus on Kill \r*", "3", ADMIN_LEVEL_H, mcbVIPMenu);
}
}
menu_setprop(mVIPmenu, MPROP_EXIT, MEXIT_ALL);
/* Menu End */
menu_display(id, mVIPmenu, 0);
return PLUGIN_HANDLED;
}
else if(VipUsed[id])
{
client_printc(id, "%s You Already used !gVIP Menu!n this round. Please wait until next round!", PREFIX);
}
else
{
client_printc(id, "%s Only !gAdmins!n and !gVIPs!n may use the VIP Menu", PREFIX);
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
/* Menu Choose VIP Feature: */
public mh_VipMenuHandler(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:
{
if(nSelectedItem != key) {
VipUsed[id] = true;
nSelectedItem = key;
client_printc(id, "%s !gKevler!n and !gHelm!n will be added next round.", PREFIX);
}
}
case 2:
{
if(nSelectedItem != key) {
VipUsed[id] = true;
nSelectedItem = key;
client_printc(id, "%s !gGranade Pack!n will be added next round.", PREFIX);
}
}
case 3:
{
if(nSelectedItem != key) {
VipUsed[id] = true;
nSelectedItem = key;
client_printc(id, "%s !gHP Bonus!n will be added next round.", PREFIX);
}
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
/* Methode that will be called at next round start. */
public execOnNextRound(id) {
switch(nSelectedItem) {
case 1:
{
give_item(id, "item_assaultsuit");
set_user_armor(id, 100);
checkReceiveBonusHP = false;
}
case 2:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
checkReceiveBonusHP = false;
}
case 3:
{
checkReceiveBonusHP = true;
}
}
}
// 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();
}
}
}
}
public mcb_VIPMenu(id, menu, item) {
/* This is the callback-event, here you can set items enabled or disabled. */
/* If you want to enable an item, use: return ITEM_ENABLED */
/* If you want to disable an item, use: return ITEM_DISABLED */
return ITEM_DISABLED;
}
public add_bonus_hp()
{
if(checkReceiveBonusHP) {
// Save our info.
new iAttacker = read_data(1);
new iVictim = read_data(2);
if(is_user_alive(iAttacker) && iAttacker != iVictim && iAttacker != 0 && get_user_team(iAttacker) != get_user_team(iVictim))
{
new iMaxHp = get_pcvar_num(pMaxHp);
new iHeadShot = read_data(3);
if(iHeadShot)
{
set_user_health(iAttacker, clamp(get_user_health(iAttacker) + get_pcvar_num(pHeadShot), 0, iMaxHp));
}
else
{
set_user_health(iAttacker, clamp(get_user_health(iAttacker) + get_pcvar_num(pKill), 0, iMaxHp));
}
}
}
}