.::Веселый Сервер (+18)::.
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Меню сайта
ВСЕ ДЛЯ CS 1.6
Готовые Сервера [4]
Плагины [25]
Читы [15]
Защита сервера [0]
Моды [8]
Скачать cs 1.6 [0]
Голосовые приколы [3]
Программы [7]
Русификатор [3]
Темы меню [5]
Статьи [7]
Разное [3]
Наш опрос
Оцените мой сайт
Всего ответов: 365
Статистика
Статистика сайта
Нас сегодня посетили
Сейчас Онлайн
Счетчики
Форма входа
Добро Пожаловать Гость!


Гость мы рады вас видеть. Пожалуйста
ИЛИ
Главная » Файлы » Статьи

Кнопочные константы (Amx Mod X) или как поймать нажатие кнопки


Автор: vovchik2x2

Описание:
Кнопочные константы используются для того, чтобы отловить момент, когда игровой объект совершает какое то действие, такое как прыжок, атака или передвижение. Этот метод используется из-за того, что движок HL не может «отловить» команды которые имеют противоположные знаки, такие как +jump/-jump

Этот пример работать будет:

register_concmd("+explode","explode")

А вот команда attack имеет +/- состояние и работать не будет.

register_concmd("+attack","hook_attack")


Полный список всех констант:
#define IN_ATTACK (1<<0)
#define IN_JUMP (1<<1)
#define IN_DUCK (1<<2)
#define IN_FORWARD (1<<3)
#define IN_BACK (1<<4)
#define IN_USE (1<<5)
#define IN_CANCEL (1<<6)
#define IN_LEFT (1<<7)
#define IN_RIGHT (1<<8)
#define IN_MOVELEFT (1<<9)
#define IN_MOVERIGHT (1<<10)
#define IN_ATTACK2 (1<<11)
#define IN_RUN (1<<12)
#define IN_RELOAD (1<<13)
#define IN_ALT1 (1<<14)
#define IN_SCORE (1<<15)


Как же все таки поймать момент нажатия кнопки игроком?

Вот рабочий вариант отлова момента когда игрок нажимает кнопку атаки:
#include
#include

public plugin_init(){
register_plugin("Attack Test","1.0","Hawk552")
}

public client_PreThink(id){
if(entity_get_int(id,EV_INT_button) & IN_ATTACK)
{
client_print(id,print_chat,"You in attack")
}
}


Обращаю ваше внимание, что используется оператор & , основное отличие оператора && от & заключается в том, что оператор & проверяет, есть ли бит после оператора в предыдущем бите до него. То есть в данном случае идет проверка, есть ли нужная нам кнопка, среди множества нажатых одновременно других клавиш.

Если вам необходимо заставить нажать игрока кнопку, можно воспользоваться данным методом:
#include
#include

public plugin_init() {
register_plugin("Attack Test","1.0","Hawk552")
}

public client_PreThink(id) {
entity_set_int(id,EV_INT_button,IN_ATTACK)

}


Приведенный код, будет зажимать за игрока кнопку атаки.
(Для наглядности выберите нож)
Обратите внимание на то, что эмулируется именно атака, а не нажатие кнопки мышки, так как ее забиндить можно куда угодно.

Чтобы "поймать" нажатые кнопки игрока, а потом "выключить" какую либо кнопку, можно использовать следующий вариант: [/color].
#include
#include

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)
}


Если игрок прыгает IN_JUMP и атакует IN_ATTACK в один и тот же момент,то функция
?
1
entity_get_int(id,EV_INT_button)
будет возвращать значения IN_ATTACK и IN_JUMP. С помощью оператора ~ будет удаляться указанное значение бита, в нашем случае IN_ATTACK.
Для наглядности выберите нож и зажмите кнопку атаки во время прыжка или других действий, "все будет хорошо", кроме прерывающейся атаки.

Забавный момент:
 
#include 
#include

public plugin_init()
{
register_plugin("Mega AWP","1.0","Admin");
}

public client_PreThink(id)
{
entity_set_int(id,EV_INT_button,IN_DUCK);
entity_set_int(id,EV_INT_button,entity_get_int(id,EV_INT_button) & ~IN_DUCK);
}
Категория: Статьи | Добавил: danila
Просмотров: 780 | Загрузок: 0 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Наш сервер

Партнеры

Патчи cs 1.6
Патчи CS 1.6

Патч №19..........(17.667 Мб)

Патч №21..........(21.634 Мб)

Патч №22..........(21.460 Мб)

Патч №23..........(24.117 Мб)

Патч №24..........(25.548 Мб)

Патч №25..........(19.858 Мб)

Патч №26..........(24.535 Мб)

Патч №27..........(27.560 Мб)

Патч №28..........(27.618 Мб)

Патч №29..........(26.058 Мб)

Патч №30..........(940 kb)

Патч №31..........(6.467 Мб)

Патч №32..........(34.774 Мб)

Патч №33..........(13.963 Мб)

Патч №34..........(26.738 Мб)

Патч №35..........(36.881 Мб)

Патч №36..........(33.413 Мб)

Патч №37..........(30.774 Мб)

Патч №43..........(36.115 Мб)

Поиск

Copyright MyCorp © 2024
Сделать бесплатный сайт с uCoz