AMX MOD X
Пятница, 27.12.2024, 01:50:02



Приветствую Вас Гость | RSS
[ Главная ] [ Статьи ] [ Регистрация ] [ Вход ]
Меню сайта

Форма входа

Категории раздела
Учебники [4]
Помощь для новичков и не только

Популярные файлы
  • AMXX Russian Language (Загрузок: 7786)
  • AMX Mod X Full Installer v1.8.1 (Загрузок: 5195)
  • Round Non-Stop v0.3.6 (Загрузок: 3077)
  • Loading Music II v1.2.9 (Загрузок: 2880)
  • SuperHero Mod Auto-Installer v1.18e (Загрузок: 2584)
  • Ultimate Ping Control v0.0.4 (Загрузок: 2015)
  • Connect Announce v0.3b.1SL (Загрузок: 1924)
  • Anti Silent Run v0.1.2 (Загрузок: 1913)
  • CS Hide & Seek v.1.8A (Загрузок: 1621)
  • Zoom Info (Загрузок: 1522)

  • Мини-чат

    Главная » Статьи » Учебники

    Константы кнопок
    Использование

    Кнопочные константы обычно используются для того, чтобы "поймать" момент, когда 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

    Категория: Учебники | Добавил: AlMod (08.12.2006) | Автор: AlMod
    Просмотров: 3620 | Комментарии: 2 | Рейтинг: 0.0/0
    Всего комментариев: 1
    1 VEN  
    1
    Важно понимать, что нажатие какой-либо кнопки не всегда означает, что в это время происходит конкретное действие. Представьте, что вы прыгнули и, не отпуская кнопку прыжка, опустились на землю. Второго прыжка не произойдет, т.к. для этого нужно отпустить кнопку и нажать ее снова. Таким образом нажатая кнопка прыжка не говорит о том, что в данный момент вы находитесь в состоянии прыжка. Как уже было отмечено, это относится и к другим кнопкам. Поэтому в подавляющем большинстве случаев вы не должны делать проверку на наличие нажатой кнопки, если хотите определить, совершает ли игрок соответствующее действие или нет, для этого существуют другие методы.

    По большому счету метод, описанный в данной статье, может быть эффективен только для блокировки или эмуляции атаки, хотя для этого есть еще более эффективные методы. Описанный метод не может быть применим к блокировке подавляющего большинства кнопок, для этого существуют другие методы.


    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Поиск

    Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Последние темы форума
  • plugin nextmap (1)
  • ПОМОГИТЕ ПЛИЗ! (1)
  • плагін який пришвидшує закачку файлів (0)
  • hl[1]сатчелы (4)
  • зомби на кроссе (0)

  • Наш опрос
    Какое отношение вы имеете к AMX/X?
    Всего ответов: 507

    Друзья сайта
  • Официальный блог

  • AMX Mod X Russian Community © 2006-2024