PHP:public Action:CS_OnBuyCommand(client, const String:weapon[]) { return Plugin_Handled; }
нажимаешь b, а в ответ не чего не происходит?
public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon)
{
if (buttons & IN_ATTACK)
{
return Plugin_Handled;
}
return Plugin_Continue;
}
В доках вот это нащёл и всё(по сути тоже самое):Вместо IN_ATTACK вставить кнопку закупки. К сожалению, не нашёл её:PHP:public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon) { if (buttons & IN_ATTACK) { return Plugin_Handled; } return Plugin_Continue; }
// These defines are for client button presses.
#define IN_ATTACK (1 << 0)
#define IN_JUMP (1 << 1)
#define IN_DUCK (1 << 2)
#define IN_FORWARD (1 << 3)
#define IN_BACK (1 << 4)
#define IN_USE (1 << 5)
#define IN_CANCEL (1 << 6)
#define IN_LEFT (1 << 7)
#define IN_RIGHT (1 << 8)
#define IN_MOVELEFT (1 << 9)
#define IN_MOVERIGHT (1 << 10)
#define IN_ATTACK2 (1 << 11)
#define IN_RUN (1 << 12)
#define IN_RELOAD (1 << 13)
#define IN_ALT1 (1 << 14)
#define IN_ALT2 (1 << 15)
#define IN_SCORE (1 << 16) /**< Used by client.dll for when scoreboard is held down */
#define IN_SPEED (1 << 17) /**< Player is holding the speed key */
#define IN_WALK (1 << 18) /**< Player holding walk key */
#define IN_ZOOM (1 << 19) /**< Zoom key for HUD zoom */
#define IN_WEAPON1 (1 << 20) /**< weapon defines these bits */
#define IN_WEAPON2 (1 << 21) /**< weapon defines these bits */
#define IN_BULLRUSH (1 << 22)
#define IN_GRENADE1 (1 << 23) /**< grenade 1 */
#define IN_GRENADE2 (1 << 24) /**< grenade 2 */
#define IN_ATTACK3 (1 << 25)
AlmazON, не в ту сторону, нужно ловить команду вызова меню закупки. Сейчас с телефона - завтра поищу.
public OnMapStart()
{
new iMaxEntities = GetMaxEntities(), String:eName[64];
for (new i=MaxClients;i<iMaxEntities;i++)
{
if (IsValidEdict(i) && IsValidEntity(i) && GetEdictClassname(i, eName, sizeof(eName)))
{
if(StrContains(eName, "func_buyzone") != -1)
{
AcceptEntityInput(i, "Kill");
}
}
}
}
Как вариант можно вообще удалить байзону.
PHP:public OnMapStart() { new iMaxEntities = GetMaxEntities(), String:eName[64]; for (new i=MaxClients;i<iMaxEntities;i++) { if (IsValidEdict(i) && IsValidEntity(i) && GetEdictClassname(i, eName, sizeof(eName))) { if(StrContains(eName, "func_buyzone") != -1) { AcceptEntityInput(i, "Kill"); } } } }
AMD, да кстати, можно удалить зоны закупки как и все так и для определенной команды.
Ну ты захотел! :-D Можно конечно, но не более чем, как меню голосования или Shop, а не так красиво, как стандартное.Когда юзаеться кнопка закупа открываеться меню(например свой магазин)
Ну ты захотел! :-D Можно конечно, но не более чем, как меню голосования или Shop, а не так красиво, как стандартное.
Берёшьменю допустим админки
Но веть тогда будет писать при попытке закупа что игрок покинул зону закупки, я тут думал, можно ли сделать так:
1 - Удалить зоны закупки у обеих команд, при этом чтобы при попытке закупа не выводилось сообщение "Вы покинули зону закупки"
2 - Когда юзаеться кнопка закупа открываеться меню(например свой магазин)
Сообщение можно заблокировать.
Свой магазин открыть.. можно попробывать ловить
AddCommandListener(Command_Buy, "buy");
#include <sourcemod>
public OnPluginStart()
{
AddCommandListener(Command_Buy, "buy");
}
public OnPluginStart()
{
HookUserMessage(GetUserMessageId("VGUIMenu"), HookHUD, true);
}
public Action:HookHUD(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init)
{
/* Тут делаем нужные проверки и блочим вывод. */
decl String:type[16];
BfReadString(bf, type, sizeof(type));
if (strcmp(type, "buy") == 0) return Plugin_Handled;
return Plugin_Continue;
}
AMD, я нашел как отловить вызов меню покупки)))
В коде я не уверен т.к. не проверял, но все ровно я красавчик что хоть это нарыл. Думаю кому-то этог поможет (ну и всяким барыгам само собой).PHP:public OnPluginStart() { HookUserMessage(GetUserMessageId("VGUIMenu"), HookHUD, true); } public Action:HookHUD(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init) { /* Тут делаем нужные проверки и блочим вывод. */ decl String:type[16]; BfReadString(bf, type, sizeof(type)); if (strcmp(type, "buy", 8) == 0) return Plugin_Handled; }