Участник
Пользователь
- Сообщения
- 775
- Реакции
- 293
- Помог
- 11 раз(а)
- Ошибка
-
консоль чиста, как лист
- ОС
- Linux
- Amx Mod X
-
AMX Mod X 1.9.0.5263
- Билд
-
Protocol version 48
Exe version 1.1.2.7/Stdio (cstrike)
ReHLDS version: 3.8.0.704-dev
Build date: 13:14:54 Dec 3 2020 (2427)
Build from: https://github.com/dreamstalker/rehlds/commit/83c0b6e
- ReGamedll
-
ReGameDLL version: 5.20.0.492-dev
Build date: 15:26:35 Jan 4 2021
Build from: https://github.com/s1lentq/ReGameDLL_CS/commit/aae507c
- Версия Metamod
-
Metamod-r v1.3.0.128, API (5:13)
Metamod-r build: 17:47:54 Aug 24 2018
Metamod-r from: https://github.com/theAsmodai/metamod-r/commit/0cf2f70
- Список метамодулей
-
Currently loaded plugins:
description stat pend file vers src load unload
[ 1] Reunion RUN - reunion.so v0.1.0.135 ini Start Never
[ 2] AMX Mod X RUN - amxmodx.so v1.9.0.5263 ini Start ANY
[ 3] CStrike RUN - cstrike_amxx_i386.so v1.9.0.5263 pl2 ANY
[ 4] ReAPI RUN - reapi_amxx_i386.so v5.19.0.211-dev pl2 ANY Never
[ 5] FakeMeta RUN - fakemeta_amxx_i386.so v1.9.0.5263 pl2 ANY
[ 6] MySQL RUN - mysql_amxx_i386.so v1.9.0.5263 pl2 ANY
[ 7] Ham Sandwich RUN - hamsandwich_amxx_i386.so v1.9.0.5263 pl2 ANY
[ 8] Engine RUN - engine_amxx_i386.so v1.9.0.5263 pl2 ANY
8 plugins, 8 running
- Список плагинов
-
Currently loaded plugins:
name version author file status
[ 1] Buy items v1.1 maFFyoZZyk buy_items.amxx running
[ 2] Advanced Experience Sy v0.5.9 [REA serfreeman1337/s aes_main.amxx running
[ 3] unknown vunknown unknown aes_statsx.amxx bad load
[ 4] unknown vunknown unknown aes_exp_cstrike bad load
[ 5] AES: Informer v0.5.9 [REA serfreeman1337/s aes_informer.am running
[ 6] AES: Admin Tools v0.5.9 [REA serfreeman1337/s aes_exp_editor. running
[ 7] AES: Bonus System v0.5.9 Vega serfreeman1337/s aes_bonus_syste running
[ 8] AES: Bonus CSTRIKE v0.5.9.1 [R serfreeman1337/s aes_bonus_cstri running
- Автор плагина
- maFFyoZZyk
- Версия плагина
- 1.1
- Исходный код
-
#include <amxmodx>
#include <reapi>
new Trie:g_tReplaceInfoMsg;
new HookChain:HookShowMenuPre;
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[])
{
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");
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);
set_member(id, m_iMenu, Menu_ChooseTeam); // 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);
Всем салют, суть проблемы в том, что 4 и 8 пункт не работают. А именно открывается Choose Team Menu.
Если я включаю VGUI меню используя
А если нет, то в принципе работает все.нажимаю на 4 или 8 пункт и вылазит чус, как фиксануть, ума не дам.
Если я включаю VGUI меню используя
setinfo "_vgui_menus" "1"
, все работает как часики.А если нет, то в принципе работает все.нажимаю на 4 или 8 пункт и вылазит чус, как фиксануть, ума не дам.
P.S. Сервак дефолтный, так для тестов. потому на плохую загрузку аес не смотрите, сути этого не меняет.
P.S.S. Дабы предотвратить "О, а у тебя кусок чужого кода, а ты свое авторство ставишь." объясняю. Этот магазин создан сугубо в личных целях и в массы направляться не собирался.На авторство отлова сообщений и их подмены на свои, я не претендую. Да и в принципе пофиг на авторство, просто бесит unknow (иной раз думаю, что плагин гакнулся). Как-то так
P.S.S. Дабы предотвратить "О, а у тебя кусок чужого кода, а ты свое авторство ставишь." объясняю. Этот магазин создан сугубо в личных целях и в массы направляться не собирался.На авторство отлова сообщений и их подмены на свои, я не претендую. Да и в принципе пофиг на авторство, просто бесит unknow (иной раз думаю, что плагин гакнулся). Как-то так
В этой теме было размещено решение! Перейти к решению.