Инфо из hamsandwich.inc:
/**
* Executes the virtual function on the entity.
* Look at the Ham enum for parameter lists.
*
* @param function The function to call.
* @param id The id of the entity to execute it on.
*/
native ExecuteHam(Ham:function, this, any:...);
Синтаксис:
ExecuteHam ( Ham:function, this, any:... )
- Ham:function - Функция из списка Ham_*
- this - id объекта к кому применяется функция
- any:... - Дополнительные параметры если есть
Тип функции:
Native
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#define PLUGIN "[hamsandwich] ExecuteHamB"
#define VERSION "1.0"
#define AUTHOR "Admin"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /spawn","spawn")
}
public spawn(id){
ExecuteHam( Ham_CS_RoundRespawn, id )
}
Описание:
Для примера работы функции я выбрал самую наглядную - респавн игрока.
Весь пример по большому счету это одна строчка:
ExecuteHam( Ham_CS_RoundRespawn, id )
Все остальное азы павна. Да и в данной строчке ни чего сложного:
- В файле ham_const.inc найти требуемую функцию (в данном варианте это Ham_CS_RoundRespawn)
- Имея описание заполняем функцию ExecuteHam
Обратите внимание, что для респавна игрока и отлова респавна игрока используется одна и та же функция из списка, но вот основная функция будет разумеется другой.
То есть ExecuteHam - выполняет функцию, а вот RegisterHam наоборот ловит. Но если вы хотите что бы инсценированное вами событие можно было так же поймать, то используйте функцию ExecuteHamB. Так как события вызванные с помощью функции ExecuteHam не отлавливаются.