Инфо из messages.inc:
/* Lets you directly hook a message in the engine!
* You can overwrite the message before anything happens and either let the message continue
* or fully block it. Here is how it works:
* If you hook a message, the message is stored but not sent. You have the opportunity to
* not only execute code, but to get/set the contents of the message, before you choose to
* either block it or let it go on its way. The hooked function will be passed a msg_id, msg_dest, and entity index.
* The return value can be passed to unregister_message() to stop the message from being hooked */
native register_message(iMsgId, const szFunction[]);
Синтаксис:
register_message(iMsgId, const szFunction[])
- iMsgId - id сообщения
- const szFunction[] - Функция которая будет вызываться при посылки зарегистрированного сообщения.
- msg_id - Айди сообщения
- msg_dest - Кому должно быть доставлено ( всем или только одному и т.п. (возможно ошибаюсь))
- entity index - То что нам нужно - индекс объекта кому доставлено, в большинстве случаев использования это айди игрока
Тип функции:
Native
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "[messages.inc] register_message"
#define VERSION "1.0"
#define AUTHOR "Admin"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_message(get_user_msgid("Money"),"message_money")
}
public message_money(msg_id,msg_dest,msg_entity){
console_print(0,"msg_id[%d]",msg_id)
console_print(0,"msg_dest[%d]",msg_dest)
console_print(0,"msg_entity[%d]",msg_entity)
}
Описание:
Для примера использования функции я выбрал сообщение о деньгах игрока, это сообщение вызывается каждый раз когда обновляется hud с его наличностью.
Как уже понятно из синтаксиса, нам нужно взять айди сообщения и назначить функцию, айди события мы получаем с помощью функции get_user_msgid
get_user_msgid("Money")используемую при наступлении такого события называем как хотим message_money
Далее сама функция message_money, нас в ней интересует только третий аргумент, так как это айди объекта, кому это сообщение было показано.
Просто запомните, что тут вам нужен только третий аргумент и можно записать так:
public message_money(n,a,id){или написать любые значение которые бы вас не отвлекали.
Результат будет виден в консоли сервера.