Добрый вечер у кого есть такой плагин?
Вложения
-
177.2 KB Просмотры: 95
#include <amxmodx>
#include <reapi>
new Trie:g_tReplaceInfoMsg;
new HookChain:HookShowMenuPre;
new VGUIMenu:Menus;
public plugin_init()
{
register_plugin("Buy items", "1.1", "maFFyoZZyk");
g_tReplaceInfoMsg = TrieCreate();
Fill_trie();
register_message(get_user_msgid("TextMsg"), "MessageTextMsg");
RegisterHookChain(RG_ShowVGUIMenu, "BuyShowVGUIMenu_Pre", false);
HookShowMenuPre = RegisterHookChain(RG_ShowMenu, "ShowMenu_Pre", false);
DisableHookChain(HookShowMenuPre);
}
public BuyShowVGUIMenu_Pre(const id, VGUIMenu:menuType, const bitsSlots, szOldMenu[])
{
Menus = menuType;
new szMenu[MAX_MENU_LENGTH], iKeys = MENU_KEY_0;
new TeamName:team = get_member(id, m_iTeam);
if(menuType == VGUI_Menu_Buy)
{
new iLen = formatex(szMenu, charsmax(szMenu), "\r[\yGFS\r]\w Магазин оружия:^n^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wПистолеты^n");
iKeys |= MENU_KEY_1;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2. \wДробовики^n");
iKeys |= MENU_KEY_2;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3. \wПистолеты - Пулеметы^n");
iKeys |= MENU_KEY_3;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \wШтурмовые винтовки^n");
iKeys |= MENU_KEY_4;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \wПулеметы^n^n");
iKeys |= MENU_KEY_5;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r8. \yЭкипировка^n^n^n");
iKeys |= MENU_KEY_8;
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход");
SetHookChainArg(3, ATYPE_INTEGER, iKeys);
SetHookChainArg(4, ATYPE_STRING, szMenu);
if (strlen(szMenu) > 175)
{
EnableHookChain(HookShowMenuPre);
}
}
else if(menuType == VGUI_Menu_Buy_Pistol)
{
new iLen = formatex(szMenu, charsmax(szMenu), "\r[\yGFS\r]\w Пистолеты:^n^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wGlock\R\r$\y400^n");
iKeys |= MENU_KEY_1;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2. \wUsp\R\r$\y500^n");
iKeys |= MENU_KEY_2;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3. \wP228\R\r$\y600^n");
iKeys |= MENU_KEY_3;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \wDeagle\R\r$\y650^n");
iKeys |= MENU_KEY_4;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r5. \wElites\R\r$\y800^n^n^n" : "\r5. \wFiveseven\R\r$\y750^n^n^n");
iKeys |= MENU_KEY_5;
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход");
SetHookChainArg(3, ATYPE_INTEGER, iKeys);
SetHookChainArg(4, ATYPE_STRING, szMenu);
if (strlen(szMenu) > 175)
{
EnableHookChain(HookShowMenuPre);
}
}
else if(menuType == VGUI_Menu_Buy_ShotGun)
{
new iLen = formatex(szMenu, charsmax(szMenu), "\r[\yGFS\r]\w Дробовики:^n^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wM3\R\r$\y1700^n");
iKeys |= MENU_KEY_1;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2. \wXm1014\R\r$\y3000^n^n^n");
iKeys |= MENU_KEY_2;
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход");
SetHookChainArg(3, ATYPE_INTEGER, iKeys);
SetHookChainArg(4, ATYPE_STRING, szMenu);
if (strlen(szMenu) > 175)
{
EnableHookChain(HookShowMenuPre);
}
}
else if(menuType == VGUI_Menu_Buy_SubMachineGun)
{
new iLen = formatex(szMenu, charsmax(szMenu), "\r[\yGFS\r]\w Пистолеты-Пулеметы:^n^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r1. \wMac-10\R\r$\y1400^n" : "\r1. \wTmp\R\r$\y1250^n");
iKeys |= MENU_KEY_1;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2. \wMp5\R\r$\y1500^n");
iKeys |= MENU_KEY_2;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3. \wUmp5\R\r$\y1700^n");
iKeys |= MENU_KEY_3;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \wP90\R\r$\y2350^n^n^n");
iKeys |= MENU_KEY_4;
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход");
SetHookChainArg(3, ATYPE_INTEGER, iKeys);
SetHookChainArg(4, ATYPE_STRING, szMenu);
if (strlen(szMenu) > 175)
{
EnableHookChain(HookShowMenuPre);
}
}
else if(menuType == VGUI_Menu_Buy_Rifle)
{
new iLen = formatex(szMenu, charsmax(szMenu), "\r[\yGFS\r]\w Штурмовые винтовки:^n^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r1. \wGalil\R\r$\y2000^n" : "\r1. \wFamas\R\r$\y2250^n");
iKeys |= MENU_KEY_1;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r2. \wAk-47\R\r$\y2500^n" : "\r2. \wScout\R\r$\y2750^n");
iKeys |= MENU_KEY_2;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r3. \wScout\R\r$\y2750^n" : "\r3. \wM4A1\R\r$\y3100^n");
iKeys |= MENU_KEY_3;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r4. \wSG-552\R\r$\y3500^n" : "\r4. \wAUG\R\r$\y3500^n");
iKeys |= MENU_KEY_4;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r5. \wAwp\R\r$\y47500^n" : "\r5. \wKrieg550\R\r$\y4200^n");
iKeys |= MENU_KEY_5;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r6. \wD3/AU1\R\r$\y5000^n^n^n" : "\r6. \wAwp\R\r$\y4750^n^n^n");
iKeys |= MENU_KEY_6;
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход");
SetHookChainArg(3, ATYPE_INTEGER, iKeys);
SetHookChainArg(4, ATYPE_STRING, szMenu);
if (strlen(szMenu) > 175)
{
EnableHookChain(HookShowMenuPre);
}
}
else if(menuType == VGUI_Menu_Buy_MachineGun)
{
new iLen = formatex(szMenu, charsmax(szMenu), "\r[\yGFS\r]\w Пулеметы:^n^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wM249\R\r$\y5750^n^n^n");
iKeys |= MENU_KEY_1;
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход");
SetHookChainArg(3, ATYPE_INTEGER, iKeys);
SetHookChainArg(4, ATYPE_STRING, szMenu);
if (strlen(szMenu) > 175)
{
EnableHookChain(HookShowMenuPre);
}
}
else if(menuType == VGUI_Menu_Buy_Item)
{
new iLen = formatex(szMenu, charsmax(szMenu), "\r[\yGFS\r]\w Экипировка:^n^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wБронежилет\R\r$\y650^n");
iKeys |= MENU_KEY_1;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2. \wБронежилет и Шлем\R\r$\y1000^n");
iKeys |= MENU_KEY_2;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3. \wОслепляющая граната\R\r$\y200^n");
iKeys |= MENU_KEY_3;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \wОсколочная граната\R\r$\y300^n");
iKeys |= MENU_KEY_4;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \wДымовая граната\R\r$\y300^n");
iKeys |= MENU_KEY_5;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, team == TEAM_TERRORIST ? "\r6. \wНочное видение\R\r$\y1250^n^n^n" : "\r6. \wНочное видение\R\r$\y1250^n");
iKeys |= MENU_KEY_6;
if(team == TEAM_CT)
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r7. \wНабор сапера\R\r$\y200^n");
iKeys |= MENU_KEY_7;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r8. \wЩит\R\r$\y2200^n^n^n");
iKeys |= MENU_KEY_8;
}
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход");
SetHookChainArg(3, ATYPE_INTEGER, iKeys);
SetHookChainArg(4, ATYPE_STRING, szMenu);
if (strlen(szMenu) > 175)
{
EnableHookChain(HookShowMenuPre);
}
}
return HC_CONTINUE;
}
// Fix menu limit in ReGameDLL (https://github.com/s1lentq/ReGameDLL_CS/blob/9d89a347fa22662b716697c97150ddea2bd00d99/regamedll/dlls/client.cpp#L394)
public ShowMenu_Pre(const id, const keys, const time, const needMore, const menu[]) {
DisableHookChain(HookShowMenuPre);
show_menu(id, keys, menu, time);
switch(Menus)
{
case VGUI_Menu_Buy: set_member(id, m_iMenu, Menu_Buy); // AMXX overide m_iMenu after show_menu
case VGUI_Menu_Buy_Pistol: set_member(id, m_iMenu, Menu_BuyPistol); // AMXX overide m_iMenu after show_menu
case VGUI_Menu_Buy_ShotGun: set_member(id, m_iMenu, Menu_BuyShotgun); // AMXX overide m_iMenu after show_menu
case VGUI_Menu_Buy_SubMachineGun: set_member(id, m_iMenu, Menu_BuySubMachineGun); // AMXX overide m_iMenu after show_menu
case VGUI_Menu_Buy_Rifle: set_member(id, m_iMenu, Menu_BuyRifle); // AMXX overide m_iMenu after show_menu
case VGUI_Menu_Buy_Item: set_member(id, m_iMenu, Menu_BuyItem); // AMXX overide m_iMenu after show_menu
}
return HC_SUPERCEDE;
}
public Fill_trie() {
TrieSetString(g_tReplaceInfoMsg, "#C4_Arming_Cancelled", "Бомба может быть установлена только в зоне установки бомбы");
TrieSetString(g_tReplaceInfoMsg, "#C4_Plant_Must_Be_On_Ground", "Для установки бобмы Вы должны находиться на земле");
TrieSetString(g_tReplaceInfoMsg, "#Defusing_Bomb_With_Defuse_Kit", "Обезвреживание бомбы с набором сапёра");
TrieSetString(g_tReplaceInfoMsg, "#Defusing_Bomb_Without_Defuse_Kit", "Обезвреживание бомбы без набора сапёра");
TrieSetString(g_tReplaceInfoMsg, "#Weapon_Cannot_Be_Dropped", "Нельзя выбросить данное оружие");
TrieSetString(g_tReplaceInfoMsg, "#C4_Plant_At_Bomb_Spot", "Бомба может быть установлена только в зоне установки бомбы");
TrieSetString(g_tReplaceInfoMsg, "#Cannot_Carry_Anymore", "Вы не можете взять больше");
TrieSetString(g_tReplaceInfoMsg, "#Already_Have_Kevlar", "У вас уже имеется бронежилет");
TrieSetString(g_tReplaceInfoMsg, "#Already_Have_Kevlar_Helmet", "У вас уже имеется бронежилет и шлем");
TrieSetString(g_tReplaceInfoMsg, "#Switch_To_BurstFire", "Переключен в режим пулеметного огня");
TrieSetString(g_tReplaceInfoMsg, "#Switch_To_FullAuto", "Переключен в автоматический режим");
TrieSetString(g_tReplaceInfoMsg, "#Switch_To_SemiAuto", "Переключен в полуавтоматический режим");
TrieSetString(g_tReplaceInfoMsg, "#Already_Own_Weapon", "У вас уже имеется данное оружие");
TrieSetString(g_tReplaceInfoMsg, "#Command_Not_Available", "Данное действие недоступно в Вашем местонахождении");
TrieSetString(g_tReplaceInfoMsg, "#Got_bomb", "Вы подобрали бомбу");
TrieSetString(g_tReplaceInfoMsg, "#Game_bomb_pickup", "%s подобрал бомбу");
TrieSetString(g_tReplaceInfoMsg, "#Game_bomb_drop", "%s выбросил бомбу");
TrieSetString(g_tReplaceInfoMsg, "#Cant_buy", "%s секунд уже истекли.^rПокупка оружия запрещена");
TrieSetString(g_tReplaceInfoMsg, "#Not_Enough_Money", "У вас не достаточно денег");
TrieSetString(g_tReplaceInfoMsg, "#Alias_Not_Avail", "Вашей команде недоступна покупка «%s».");
}
public MessageTextMsg() {
new szMsg[192], szArg3[32];
get_msg_arg_string(2, szMsg, charsmax(szMsg));
//log_amx("Сообщение %s", szMsg);
if(TrieGetString(g_tReplaceInfoMsg, szMsg, szMsg, charsmax(szMsg))) {
if(get_msg_args() > 2) {
get_msg_arg_string(3, szArg3, charsmax(szArg3));
replace(szMsg, charsmax(szMsg), "%s", szArg3);
}
set_msg_arg_string(2, szMsg);
}
}
public plugin_end() TrieDestroy(g_tReplaceInfoMsg);