Использование Кнопочные константы обычно используются для того, чтобы "поймать" момент, когда entity совершает какое либо действие, такое как прыжки, передвижение или атака. Метод используется из-за того, что жвижок ХЛ не может "поймать" +/- команды Например, Это будет работать: <pre> register_concmd("+explode","explode"); </pre> А это - нет: <pre> register_concmd("+attack","hook_attack"); </pre> Константы Полный список всех констант вы можете найти здесь: http://amxmodx.org/funcwiki.php?go=module&id=3#const_buttons Как все это замутить? Вот, например, один из вариантов, как "поймать" момент, когда игрок атакует: <pre> #include <amxmodx> #include <engine> public plugin_init() { register_plugin("Attack Test","1.0","Hawk552"); } public client_PreThink(id) { if(entity_get_int(id,EV_INT_BUTTON) & IN_ATTACK) { // do something } } </pre> Обратите внимание, что используется оператор & , в отличии от оператора &&. Оператор & проверяет, содержится ли бит после оператора в бите до него, т.е. в данном случае проверяется, есть ли среди нажатых кнопок игрока кнопка IN_ATTACK Чтобы заставить энтити эмулировать нажатие кнопки можно поступить следующим образом: <pre> #include <amxmodx> #include <engine> public plugin_init() { register_plugin("Attack Test","1.0","Hawk552"); } public client_PreThink(id) { entity_set_int(id,EV_INT_button,IN_ATTACK); } </pre> Этот пример будет ставить флаг кнопки атаки в положение "ВКЛ" каждый раз, когда рендерится кадр. Чтобы "поймать" кнопки энтити, а потом "вычесть" какую либо кнопку, можно использовать следующий метод: <pre> #include <amxmodx> #include <engine> public plugin_init() { register_plugin("Attack Test","1.0","Hawk552"); } public client_PreThink(id) { entity_set_int(id,EV_INT_button,entity_get_int(id,EV_INT_button) & ~IN_ATTACK); } </pre> Все же поясню, что имелось ввиду. Например, клиент прыгает (IN_JUMP) и атакует (IN_ATTACK) одновременно. В этом случае, функция entity_get_int(id,EV_INT_button) будет возвращать значения IN_ATTACK и IN_JUMP. Используя оператор ~ будет удаляться конкретное значение бита, в данном случае IN_ATTACK. Таким образом, функция (из примера) будет возвращать только IN_JUMP. Этим можно не ограничиватся и придумать что-то свое, ведь хороший кодер тем и отличается от плохого, что может чтото придумать и реализовать. Переведено by AlMod © 2006
Источник: http://wiki.amxmodx.org/index.php/Button_constants_%28AMX_Mod_X%29 |