Главная | Комментарии | О проекте
Чтение RSS
Суперсайт
Главная Контакты Карта сайта Добавить в избранное
  • Кто OnLine

    Всего на сайте: 13
    Гостей: 4
    Пользователи: - отсутствуют
    Роботы: robot Bot, robot Bot, Google AdSense, Yandex Bot, spider Bot, crawl Bot, Yandex Bot, Yandex Bot, Yandex Bot

    Опрос пользователей

    Для какого мода Вы пишите плагины?

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 6-01-2012, 00:14 Просмотров: 4675

    Ham_Use Вызывается когда используется какой то объект (игрок нажал на кнопку)

    Отлов момента нажатия на кнопки игроков крайне важен в таком моде как Jump, там нажатие кнопки означает или старт прохождения карты или финиш.
    В DeathRun серверах тоже не мало важен, там необходимо блокировать нажатие на кнопку террориста при режиме Free And Knife. Но с помощью Ham_Use можно отловить не только использование кнопок, например в zombieplague отлавливается использование игроком пушки func_tank, списка всех объектов у меня к сожалению нет, но не думаю что будет очень сложно найти что то конкретное под вашу идею.

    Инфо из ham_const.inc:
        /**
         * Description:        Called whenver one entity uses another.
         * Forward params:    function(this, idcaller, idactivator, use_type, Float:value)
         * Return type:        None.
         * Execute params:    ExecuteHam(Ham_Use, this, idcaller, idactivator, use_type, Float:value);
         */
        Ham_Use,


    Пример:
    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <amxmisc>
    #include <hamsandwich>

    #define PLUGIN "[hamsandwich] Ham_Use"
    #define VERSION "1.0"
    #define AUTHOR "Admin"

    public plugin_init() {
        
        register_plugin(PLUGIN, VERSION, AUTHOR)
        
        //Регистрируем событие использование кнопки ( нажатие)
        //и назначаем функцию которая при этмо событии будет исполняться
        RegisterHam(Ham_Use,"func_button","UseButton",0)
        
    }
    //Исполняемая функция при нажатии на кнопку
    public UseButton(ent, idcaller, idactivator, use_type, Float:value){

        //Вывод в чат информации что дает функция
        //Обычно полезными при использовании кнопки считаются
        //только первые 2, это айди кнопки и айди игрока
        client_print(0,print_chat,"Entity id: %d",ent)
        client_print(0,print_chat,"id Caller id: %d",idcaller)

        //остальные параметры используются для других объектов.
        client_print(0,print_chat,"id Activator id: %d",idactivator)
        client_print(0,print_chat,"use_type: %d",use_type)
        client_print(0,print_chat,"value: %f",value)
        
    }


    Описание:
    При инициализации плагина происходит регистрация события использования Ham_Use кнопки func_button и назначение исполняемой функции UseButton.
    В зависимости от используемого объекта в исполняемой функции аргументы могут быть как полезными так и бесполезными.

    Так в джамп модах по айди объекта получается имя кнопки, что бы определить кнопку финиша и старта, так как там это крайне важно, а вот в моде DeathRun это не критично, так как там нужно просто заблокировать использование кнопок и по этому имя и id кнопки не важно, хотя для фиксов некоторых багов карт, может пригодиться. Все в лапах вашей фантазии.
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    arwel

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Все в лапах вашей фантазии.

    В лапищах! am
    LORDofLINEAGE

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    еще бы статью, насчет блокировки кнопок вообще на 1 раунд...
    Admin

    30.07.2011
    ICQ: 980500
    Публикаций: 507
    Комментариев: 333
    Репутация: -  56  +

    Для этого не нужна статья.
    Берешь эту и ограничение по раундам - и соединяешь.

    Скриптинг - это не знание функций, а придумывание алгоритмов работы.

    return HAM_SUPERCEDE
    что бы заблокировать действие кнопки.
    --------------------
    Monstr™

    29.09.2011
    ICQ: 631967458
    Публикаций: 12
    Комментариев: 22
    Репутация: -  0  +

    Хех наконец то админ вспомнил про hamsandwich feel
    Admin

    30.07.2011
    ICQ: 980500
    Публикаций: 507
    Комментариев: 333
    Репутация: -  56  +

    Что то не так? Написал бы сам парочку статей....
    --------------------
    артист

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Так и не понял,этой функцией можно отловить нажатие правой кнопки или нет?...
    не IN_ATTACK2 а именно правой кнопки. MOUSE2
    Admin

    30.07.2011
    ICQ: 980500
    Публикаций: 507
    Комментариев: 333
    Репутация: -  56  +

    артист, на кнопку можно забиндить что угодно.
    --------------------
    артист

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Да я уже сделал что хотел))всё былоб проще еслиб кс не тупила.
    Забиндил +fire через user_concmd отловил,сделал переменную,и в 2ве функции с разными значениями поставил,и проверка готова....
    Admin

    30.07.2011
    ICQ: 980500
    Публикаций: 507
    Комментариев: 333
    Репутация: -  56  +

    Я бы на такой сервер больше ни когда не вернулся...
    --------------------
    артист

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    wink
    А вот вентиль,это уже не кнопка получается?
    Просто в cs_rats2 нужно блокировать вентиль,а он чегото не блокируется))
    #include <amxmodx>
    #include <amxmisc>
    #include <hamsandwich>

    public plugin_init()
    {
        RegisterHam(Ham_Use, "func_button", "fwdUse")
    }
    public fwdUse(ent, idcaller, idactivator, use_type, Float:value)
    {
        new m_name[32]
        get_mapname(m_name, charsmax(m_name))
        
        if(equali(m_name, "cs_rats2") /*&& ent == ???*/ )
        {
            client_print(idactivator, print_center, "Ещё раз покрути,олень! %d",ent)
            client_cmd(idactivator,"
    kill")
            return HAM_SUPERCEDE
        }
        return HAM_IGNORED    
    }


    И как же его отловить...

    Информация

    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Наверх

Реклама