Отловить команду buy для Плагина.

Как мы все знаем, обычной регистрацией функции на команду buy сделать нельзя. Есть статьи в интернете ( к примеру — http://amxxmodx.ru/other/576-lovim-komandu-buy.html ). Она работать не будет. Но есть другой способ, 100% рабочий. И сейчас я вам с радостью им поделюсь.

Для начала, добавляем в плагин код, который будет ниже ( вставлять, желательно, перед первым public в плагине ):

new g_szBuyCommands[ ][ ] = {

"usp", "glock", "deagle", "p228", "elites",

"fn57", "m3", "xm1014", "mp5", "tmp", "p90",

"mac10", "ump45", "ak47", "galil", "famas",

"sg552", "m4a1", "aug", "scout", "awp", "g3sg1",

"sg550", "m249", "vest", "vesthelm", "flash",

"hegren", "sgren", "defuser", "nvgs", "shield",

"primammo", "secammo", "km45", "9x19mm", "nighthawk",

"228compact", "fiveseven", "12gauge", "autoshotgun",

"mp", "c90", "cv47", "defender", "clarion", "krieg552",

"bullpup", "magnum", "d3au1", "krieg550",

"buy", "buyequip", "cl_autobuy",

"cl_rebuy", "cl_setautobuy", "cl_setrebuy", "client_buy_open"

}

new g_iMsgID_BuyClose, g_iMsgID_StatusIcon

Далее добавляем код, который ниже в public plugin_init():

g_iMsgID_BuyClose = get_user_msgid( "BuyClose" )

g_iMsgID_StatusIcon = get_user_msgid( "StatusIcon" )

new iBuyCommands

for( iBuyCommands = 0; iBuyCommands < sizeof g_szBuyCommands; iBuyCommands++ )

register_clcmd( g_szBuyCommands[ iBuyCommands ], "Command_BuyMenu" )

Далее добавляем код под public plugin_init() код, который будет ниже:

public Command_BuyMenu( id )

{

Buy_Menu( id )

}

Вместо Buy_Menu( id ) вставляем свое название public'а, которой делает нужную вам функцию ( в моём случае — открытие меню )

Далее, в public, который мы указали в public Command_BuyMenu( id ) вставляем код, который ниже:

message_begin( MSG_ONE, g_iMsgID_BuyClose, _, id )

message_end( )

Желательно его вставить после открытия кода, то есть:

public Buy_Menu( id )

{

message_begin( MSG_ONE, g_iMsgID_BuyClose, _, id )

message_end( )

// дальше ваш код

}

И в конец плагина добавляем следующий код:

public CPlayer__PreThink_Post( iPlayer )

{

if( !is_user_alive( iPlayer ) ) return HAM_IGNORED

UTIL_StatusIcon( iPlayer, 1, "buyzone", 0, 0, 0 )

return HAM_IGNORED

}

stock UTIL_StatusIcon( iPlayer, iStatus, szIcon[ ], iRed, iGreen, iBlue )

{

message_begin( MSG_ONE, g_iMsgID_StatusIcon, _, iPlayer )

write_byte( iStatus )

write_string( szIcon )

write_byte( iRed )

write_byte( iGreen )

write_byte( iBlue )

message_end( )

}

271 views·5 shares