Всем Привет
Пожалуйста, помогите убрать функцию Кикнуть из этого Vip меню, я пытался сам его убрать, но потом были проблемы с оружием, только с 1-го раунда можно было взять Дигл или Набор граннат. Кароче что-то убрал, или сделал не то что нужно.
Вот код:
Код:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>
new block[33]
new round_number;
new g_maxplayers
// Текущая страница меню
new g_iPlayerMenuPage[33];
// Соотношение пункта к игроку в меню
new g_apPlayerMenuPlayers[33][32];
new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6
new keys_no_admin = MENU_KEY_0
const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
new bool:restr_blocked;
new const restrict_weapons[][] =
{
"awp_india",
"$1000$",
"$2000$",
"35hp_2"
};
public plugin_init()
{
register_plugin("VipMenu", "1.0", "Halyavshik");
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_event("TextMsg", "EventRoundRestart" , "a", "2&#Game_will_restart_in" );
register_event("TextMsg", "EventRoundRestart", "a", "2&#Game_C")
register_menu("Menu", keys, "MenuFunc");
register_clcmd("vipmenu", "showVipMenu");
register_menucmd(register_menuid("Kick Player"), 1023, "MenuKickPlayer");
round_number = 0;
g_maxplayers = get_maxplayers();
new szMapName[64];
get_mapname(szMapName,63);
for(new i = 0; i < sizeof restrict_weapons; i++)
{
if(equal(szMapName, restrict_weapons[i]))
{
restr_blocked = true;
break;
}
else
{
restr_blocked = false;
}
}
}
public EventRoundRestart()
{
for(new id = 1;id <= g_maxplayers; id++)
{
round_number = 0;
block[id] = 1
}
}
public event_round_start()
{
for(new id = 1;id <= g_maxplayers; id++)
{
block[id] = 1
}
round_number++
return PLUGIN_HANDLED;
}
public client_putinserver(id)
{
block[id] = 1
}
public showVipMenu(id)
{
static menu[1024], len
len = 0;
new alivecolor[3][30]
alivecolor[0] = (cs_get_user_team(id) == CS_TEAM_T ? "VipMenu" : "VipMenu")
alivecolor[1] = (cs_get_user_team(id) == CS_TEAM_T ? "Galil" : "Famas")
alivecolor[2] = (cs_get_user_team(id) == CS_TEAM_T ? "AK47 " : "M4A1")
new col[2][6]
col[0] = (!is_user_alive(id) || round_number < 3 || block[id] == 0 || restr_blocked ? "\d" : "\w")
col[1] = (!is_user_alive(id) || block[id] == 0 || restr_blocked ? "\d" : "\w")
//Проверка на админка
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
len = formatex(menu[len], charsmax(menu) - len, "\r[\y%s\r] \wВип Меню^n%s^n", alivecolor[0], restr_blocked ? "\dНа этой карте оружия запрещены!^n" : "");
len += formatex(menu[len], charsmax(menu) - len, "\r1. \dКикнуть^n", alivecolor[1]);
len += formatex(menu[len], charsmax(menu) - len, "\r2. \d%s^n", alivecolor[1]);
len += formatex(menu[len], charsmax(menu) - len, "\r3. \d%s^n", alivecolor[2]);
len += formatex(menu[len], charsmax(menu) - len, "\r4. \dАвп^n");
len += formatex(menu[len], charsmax(menu) - len, "\r5. \dДигл^n");
len += formatex(menu[len], charsmax(menu) - len, "\r6. \dНабор гранат^n^n");
len += formatex(menu[len], charsmax(menu) - len, "\r0. \wВыход");
show_menu(id, keys_no_admin, menu, -1, "Menu");
return PLUGIN_HANDLED;
}
len = formatex(menu[len], charsmax(menu) - len, "\r[\y%s\r] \wВип Меню^n%s^n", alivecolor[0], restr_blocked ? "\dНа этой карте оружия запрещены!^n" : "");
len += formatex(menu[len], charsmax(menu) - len, "\r1. \wКикнуть^n");
len += formatex(menu[len], charsmax(menu) - len, "\r2. %s%s^n", col[0], alivecolor[1]);
len += formatex(menu[len], charsmax(menu) - len, "\r3. %s%s^n", col[0], alivecolor[2]);
len += formatex(menu[len], charsmax(menu) - len, "\r4. %sАвп^n", col[0]);
len += formatex(menu[len], charsmax(menu) - len, "\r5. %sДигл^n", col[1]);
len += formatex(menu[len], charsmax(menu) - len, "\r6. %sНабор гранат^n^n", col[1]);
len += formatex(menu[len], charsmax(menu) - len, "\r0. \wВыход");
//Блокировки
if(!is_user_alive(id) || block[id] == 0 || restr_blocked)
keys &= ~MENU_KEY_2;
else
keys |= MENU_KEY_2;
if(!is_user_alive(id) || block[id] == 0 || restr_blocked)
keys &= ~MENU_KEY_3;
else
keys |= MENU_KEY_3;
if(!is_user_alive(id) || block[id] == 0 || restr_blocked)
keys &= ~MENU_KEY_4;
else
keys |= MENU_KEY_4;
if(!is_user_alive(id) || block[id] == 0 || restr_blocked)
keys &= ~MENU_KEY_5;
else
keys |= MENU_KEY_5;
if(!is_user_alive(id) || block[id] == 0 || restr_blocked)
keys &= ~MENU_KEY_6;
else
keys |= MENU_KEY_6;
//Показ меню
show_menu(id, keys, menu, -1, "Menu");
return PLUGIN_HANDLED;
}
public MenuFunc(id, key)
{
switch(key)
{
case 0:
{
ShowMenuKickPlayer(id,0);
}
case 1:
{
if(round_number >= 3)
{
if(cs_get_user_team(id) == CS_TEAM_T)
{
new name[32]
get_user_name(id, name, 31)
block[id] -=1
drop_weapons_primary(id, 1)
give_item(id, "weapon_galil")
ColorChat(0, "!y[!gVIP!y] !t%s !yВзял !gGalil", name)
cs_set_user_bpammo( id , CSW_GALIL, 95 )
}
if(cs_get_user_team(id) == CS_TEAM_CT)
{
new name[32]
get_user_name(id, name, 31)
block[id] -=1
drop_weapons_primary(id, 1)
give_item(id, "weapon_famas")
ColorChat(0, "!y[!gVIP!y] !t%s !yВзял !gFamas", name)
cs_set_user_bpammo( id , CSW_FAMAS, 90 )
}
}
showVipMenu(id)
}
case 2:
{
if(round_number >= 3)
{
if(cs_get_user_team(id) == CS_TEAM_T)
{
new name[32]
get_user_name(id, name, 31)
block[id] -=1
drop_weapons_primary(id, 1)
give_item(id, "weapon_ak47")
ColorChat(0, "!y[!gVIP!y] !t%s !yВзял !gAK-47", name)
cs_set_user_bpammo( id , CSW_AK47, 90 )
}
if(cs_get_user_team(id) == CS_TEAM_CT)
{
new name[32]
get_user_name(id, name, 31)
block[id] -=1
drop_weapons_primary(id, 1)
give_item(id, "weapon_m4a1")
ColorChat(0, "!y[!gVIP!y] !t%s !yВзял !gM4A1", name)
cs_set_user_bpammo( id , CSW_M4A1, 90 )
}
}
showVipMenu(id)
}
case 3:
{
if(round_number >= 3)
{
new name[32]
get_user_name(id, name, 31)
block[id] -=1
drop_weapons_primary(id, 1)
give_item(id, "weapon_awp")
ColorChat(0, "!y[!gVIP!y] !t%s !yВзял !gAWP", name)
cs_set_user_bpammo( id , CSW_AWP, 30 )
}
showVipMenu(id)
}
case 4:
{
new name[32]
get_user_name(id, name, 31)
block[id] -=1
drop_weapons_secondary(id, 2)
give_item(id,"weapon_deagle")
ColorChat(0, "!y[!gVIP!y] !t%s !yВзял !gDeagle", name)
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
give_item(id, "ammo_50ae")
showVipMenu(id)
}
case 5:
{
block[id] -=1
give_secondary_weapon(id)
showVipMenu(id)
}
}
return PLUGIN_HANDLED;
}
public give_secondary_weapon(id)
{
new name[32]
get_user_name(id, name, 31)
give_item(id,"weapon_hegrenade")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_flashbang")
give_item(id,"weapon_smokegrenade")
give_item(id,"item_assaultsuit")
give_item(id,"item_thighpack")
ColorChat(0, "!y[!gVIP!y] !t%s !yВзял !gНабор гранат!", name)
}
public ShowMenuKickPlayer(pId, iPage)
{
if (iPage < 0)
return PLUGIN_HANDLED;
new apPlayers[32];
new iPlayers;
new szMenu[512], szName[32];
new pPlayer;
get_players(apPlayers, iPlayers);
new i = min(iPage * 8, iPlayers);
new iStart = i - (i % 8);
new iEnd = min(iStart + 8, iPlayers);
iPage = iStart / 8;
g_apPlayerMenuPlayers[pId] = apPlayers;
g_iPlayerMenuPage[pId] = iPage;
new iLen = formatex(szMenu, 511, "\yКик меню^n^n", iPage + 1, ((iPlayers - 1) / 8) + 1);
new bitsKeys = MENU_KEY_0;
new iItem;
new bitsFlags;
for (i = iStart; i < iEnd; i++)
{
pPlayer = apPlayers[i];
get_user_name(pPlayer, szName, 31);
if (pId == pPlayer) //это вы
{
iLen += formatex(szMenu[iLen], 511 - iLen, "\d%d. \d%s \d(\rЭто вы\d)^n", ++iItem, szName);
}
else if(is_user_bot(pPlayer))
{
iLen += formatex(szMenu[iLen], 511 - iLen, "\r%d. \d%s (\rБот\d])^n", ++iItem, szName);
}
else
{
bitsFlags = get_user_flags(pPlayer);
if(bitsFlags & ADMIN_BAN)
{
iLen += formatex(szMenu[iLen], 511 - iLen, "\d%d. \d%s (\rАдмин\d)^n", ++iItem, szName);
}
else
{
bitsKeys |= (1 << iItem);
iLen += formatex(szMenu[iLen], 511 - iLen, "\r%d. \w%s^n", ++iItem, szName);
}
}
}
// Если последний игрок меньше всех игроков, добавляем пункт далее
if (iEnd < iPlayers)
{
// Добавляем к кнопкам 9
bitsKeys |= MENU_KEY_9;
// Форматируем пункты
formatex(szMenu[iLen], 511 - iLen, "^n\r9. \wДалее^n\r0. \w%s",iPage ? "Назад" : "Выход");
}
else
formatex(szMenu[iLen], 511 - iLen, "^n\r0. \w%s",iPage ? "Назад" : "Выход");
// Показываем меню
return show_menu(pId, bitsKeys, szMenu, -1, "Kick Player");
}
// Игрок нажал кнопку
public MenuKickPlayer(pId, iKey)
{
switch (iKey)
{
// (9) Далее
case 8:
{
ShowMenuKickPlayer(pId, ++g_iPlayerMenuPage[pId]); // Сразу прибавляем страницу
}
// (0) Назад/Выход
case 9:
{
ShowMenuKickPlayer(pId, --g_iPlayerMenuPage[pId]); // Сразу уменьшаем страницу, если страница будет меньше нуля, то иеню закроется
}
// Выбрали игрока
default:
{
new pPlayer = g_apPlayerMenuPlayers[pId][(g_iPlayerMenuPage[pId] * 8) + iKey];
new szName[32];
get_user_name(pId, szName, 31);
new szName2[32];
get_user_name(pPlayer, szName2, 31);
// Если игрок вышел
if (!is_user_connected(pPlayer))
{
ColorChat(pId,"!yИгрок !g%s !yвышел.", szName2);
ShowMenuKickPlayer(pId, g_iPlayerMenuPage[pId]);
return PLUGIN_HANDLED;
}
// Если игрок получил иммунитет
if (pId != pPlayer && (get_user_flags(pPlayer) & ADMIN_LEVEL_H))
{
ColorChat(pId,"!y[!gVIP!y] !t%s !yимеет имунитет!", szName2);
ShowMenuKickPlayer(pId, g_iPlayerMenuPage[pId]);
return PLUGIN_HANDLED;
}
new authid[32], name2[32], authid2[32], name[32];
get_user_authid(pId, authid, 31);
get_user_name(pId, name, 31);
get_user_authid(pPlayer, authid2, 31);
get_user_name(pPlayer, name2, 31);
log_amx("Cmd: ^"%s<%d><%s><>^" kicked ^"%s<%d><%s><>^"", name, get_user_userid(pId), authid, name2, get_user_userid(pPlayer), authid2)
ColorChat(0,"!y[!gВип!y] !t%s !yкикнул игрока !g%s",szName, szName2);
server_cmd("kick #%d ^"Вас кикнул VIP игрок: %s^"", get_user_userid(pPlayer), szName);
set_task(0.1,"kickmenu",pId);
}
}
return PLUGIN_HANDLED;
}
public kickmenu(pId)
{
ShowMenuKickPlayer(pId, g_iPlayerMenuPage[pId]);
}
stock drop_weapons_primary(id, dropwhat)
{
static weapons[32], num, i, weaponid
num = 0
get_user_weapons(id, weapons, num)
for (i = 0; i < num; i++)
{
weaponid = weapons[i]
if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)))
{
static wname[32]
get_weaponname(weaponid, wname, charsmax(wname))
engclient_cmd(id, "drop", wname)
}
}
}
stock drop_weapons_secondary(id, dropwhat)
{
static weapons[32], num, i, weaponid
num = 0
get_user_weapons(id, weapons, num)
for (i = 0; i < num; i++)
{
weaponid = weapons[i]
if (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM))
{
static wname[32]
get_weaponname(weaponid, wname, sizeof wname - 1)
engclient_cmd(id, "drop", wname)
}
}
}
stock ColorChat(id, const szMessage[], any:...)
{
new szBuffer[190];
if(numargs() > 2) vformat(szBuffer, charsmax(szBuffer), szMessage, 3);
else copy(szBuffer, charsmax(szBuffer), szMessage);
while(replace(szBuffer, charsmax(szBuffer), "!y", "^1")) {}
while(replace(szBuffer, charsmax(szBuffer), "!t", "^3")) {}
while(replace(szBuffer, charsmax(szBuffer), "!g", "^4")) {}
switch(id)
{
case 0:
{
for(new i = 1; i <= g_maxplayers; i++)
{
if(!is_user_connected(i)) continue;
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, i);
write_byte(i);
write_string(szBuffer);
message_end();
}
}
default:
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, id);
write_byte(id);
write_string(szBuffer);
message_end();
}
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1058\\ f0\\ fs16 \n\\ par }
*/