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

    Всего на сайте: 9
    Гостей: 1
    Пользователи: Ewer
    Роботы: robot Bot, crawl Bot, robot Bot, crawl Bot, Yandex Bot, Yahoo Bot, Yandex Bot

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 15-03-2012, 16:08 Просмотров: 6764

    Ham_Touch Вызывается когда объекты соприкасаются ( когда игрок касается оружия или другого предмета)

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

    Инфо из ham_const.inc:
        /**
         * Description:        Called whenever two entities touch.
         * Forward params:    function(this, idother);
         * Return type:        None.
         * Execute params:    ExecuteHam(Ham_Touch, this, idother);
         */
        Ham_Touch
    • Вызывается когда объекты соприкасаются
    • function(this, idother) - id первого объекта, id второго объекта
    • Функция ни чего не возвращает
    При регистрации касания, необходимо указывать типы объектов.

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

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

    #define PLUGIN "[amxmodx.inc] Multi Forward`s"
    #define VERSION "1.0"
    #define AUTHOR "Admin"

    public plugin_init() {
        register_plugin(PLUGIN, VERSION, AUTHOR)
        
        //Для оружия лежащего на карте
        RegisterHam(Ham_Touch, "armoury_entity", "fwdTouch")
        
        //Если игрок выкинул оружие
        RegisterHam(Ham_Touch, "weaponbox", "fwdTouch")
        
    }
    public fwdTouch(ent, id) {

        //Выводим сообщение о блоикровке
        client_print(id,print_chat,"O6/\oM")
        
        //Блокируем событие
        return HAM_SUPERCEDE
    }


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

    На картинке представлен список всех возможных типов объектов ( спасибо PomanoB`у)
    Ham_Touch Вызывается когда объекты соприкасаются ( когда игрок касается оружия или другого предмета)
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    DeMNiX

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

    Если, к примеру у меня 100 фпс, то и 100 раз будет обновляться. Никаких нагрузок не будет от этой функции?
    WaterBall

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

    Как опознать оружие, на котором стоишь:
    http://forums.alliedmods.net/showthread.php?t=49247
    DeMNiX

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

    Попробовал сделать таким образом. Не получается: все равно Игрок может подбирать любой веапон, включая заданные.


    public plugin_init()
    {
        register_plugin("[ZP] Class: Human: Raptor", ZP_VERSION_STRING, "ZP Dev Team")
        
            RegisterHam(Ham_Touch, "armoury_entity", "fwdTouch")
        
        RegisterHam(Ham_Touch, "weaponbox", "fwdTouch")
    }

    public fwdTouch(ent, id)
    {
        for(i = 1; i <= MAXPLAYERS; i++)
        {
            new wid = cs_get_weapon_id(i)

            if(zp_class_human_get_curren

    t( i ) == g_IsSniper )    
            {
                if(w

    id == CSW_SG550 || CSW_ELITE || CSW_G3SG1 || CSW_AWP || CSW_SCOUT || CSW_DEAGLE || CSW_USP )
               return HAM_SUPERCEDE;
            }
            return FMRES_IGNORED;
        }
    }


    Посмотрел тутор VeN'а, если честно - мало, что понял..

    Vergil-san

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

    А со стенами func_wall должно быть, но когда его использую ничегго не происходит..

    Информация

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

Реклама