Очень часто используется в плагинах для создания собственных функций и изменения геймплея.
То есть функция помогает сцепить события в дивжке с кодом плагина.
Инфо из fakemeta.inc:
/* Registers a forward.
* Returns an id you can pass to unregister_forward
*/
native register_forward(_forwardType,const _function[],_post=0);
Синтаксис:
register_forward ( forwardType, callback[], [ post = 0 ] )
- forwardType - Какое событие отлавливать (Forward Function Constants полный список в файле fakemeta_const.inc )
- callback[] - Какую функцию вызывать при наступлении отлавливаемого события
- [ post = 0 ] - Если 0 то до наступления события вызовется функция, если 1 то после
При использовании данной функции будьте предельно внимательны, так как она взаимодействует с самим движком и ошибки в функции могут вызвать падение сервера.
Тип функции:
Native
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#define PLUGIN "[fakemeta.inc] register_forward fW_touch"
#define VERSION "1.0"
#define AUTHOR "Admin"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_forward(FM_Touch,"fW_touch",0)
}
public fW_touch (entTouched, entOther){
client_print(0,print_chat,"entTouched %d, entOther %d",entTouched, entOther)
}
Описание:
В данном примере с помощью рассматриваемой функции организован отлов события касания двух объектов друг к другу.
Как только вы появитесь и начнете передвигаться по карте, вам в чат будет валиться куча записей о том какой объект коснулся какого.
Так как все что есть на карте это тоже объекты, и что бы исключить касания об стены и другие части пола, если вы хотите отслеживать допустим только касания игроков друг к другу, то необходимо будет делать проверки, что за объекты коснулись друг к другу.
С помощью данной функции можно организовать проход через других игроков.
Проверять если коснулись друг друга 2 игрока, то устанавливать константу pev_solid в положение SOLID_NOT, что даст возможность пройти сквозь друг друга. Правда не забудь те потом вернуть состоянии переменной в прежнее значение, иначе так и будут ходить как призраки.
Новость отредактировал Admin - 19-03-2014, 02:33
Причина: fakemeta_stocks.inc => fakemeta_const.inc