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

    Всего на сайте: 17
    Гостей: 2
    Пользователи: jaxix, Ramil_
    Роботы: Yandex Bot, Yandex Bot, Yandex Bot, Yandex Bot, Yandex Bot, Yandex Bot, Yandex Bot, Yandex Bot, Yandex Bot, Yandex Bot

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 27-02-2012, 01:59 Просмотров: 5635

    get_user_aiming Функция возвращает информацию о том игроке на кого наведен прицел.

    С помощью функции get_user_aiming можно узнать id игрока на кого наведен прицел, на какую часть тела и дистанцию между игроками. На привычном паблике данная функция особо не нужна, ну только если вы не надумали блокировать случайные выстрелы в своих ( хотя логичнее тогда отключить Friendly fire) в любом случае применение функции искать вам.

    Инфо из amxmodx.inc:
    /* If player doesn't hit at anything function returns 0.0,
    * in other case the distance between hit point and player is returned.
    * If player is aiming at another player then the id and part of body are set. */
    native Float:get_user_aiming(index,&id,&body,dist=9999);


    Синтаксис:
    Float: get_user_aiming ( index, &id, &body, [ distance = 9999 ] )

    • index - id игрока ( кто направляет оружие)
    • &id - id на кого направили
    • &body - на какую часть тела
    • distance - максимальная дистанция для проверки ( допустим поставили 100, а игрок в 150 юнитах, то функция не сработает)
    Функция так же вернет дробное значение дистанции между игроками.

    Тип функции:
    Native

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

    #include <amxmodx>
    #include <amxmisc>
    #include <fakemeta>
    #include <cstrike>

    #define PLUGIN "[amxmodx.inc] get_user_aiming "
    #define VERSION "1.0"
    #define AUTHOR "Admin"

    public plugin_init() {
        register_plugin(PLUGIN, VERSION, AUTHOR)
            
        register_forward(FM_PlayerPreThink, "fwdPlayerPreThink", 0)
    }
    public fwdPlayerPreThink(id){
        
        new target, body
        new Float:dist = get_user_aiming(id, target, body, 9999)
        

        if( 0 < target <= get_maxplayers())    {
            new CsTeams:team = cs_get_user_team(id)
            new CsTeams:targetTeam = cs_get_user_team(target)
            
            new sName[32]
            get_user_name(target, sName, 31)
            
            new sMessage[64]
            
            if( targetTeam == team )
            {
                formatex(sMessage, 63, "Friend: %s^nHealth: %i, dist:%.2f", sName, get_user_health(target),dist)
            }
            else
            {
                formatex(sMessage, 63, "Enemy: %s", sName)
            }
            
            if( targetTeam == CS_TEAM_CT )
            {
                set_hudmessage(0, 63, 127, -1.0, -1.0, 0, 0.0, 0.1, 0.0, 0.0, -1)
            }
            else if( targetTeam == CS_TEAM_T )
            {
                set_hudmessage(127, 0, 0, -1.0, -1.0, 0, 0.0, 0.1, 0.0, 0.0, -1)
            }
            
            
            show_hudmessage(id, "%s", sMessage)
            
            if(body == 1){

                set_pev(id, pev_button,IN_ATTACK)

            }
        }
        
    }


    Описание:
    Честно говоря придумывать пример было лениво и я подглядел его в палгине hns, но немного его дополнил дистанцией и при наводке в голову автоматически будет произведен выстрел.

    Теперь подробнее о коде.
    Регистрируются две новые переменные для id второго игрока и в какую часть тела прицелились.
    Затем регистрируется дробная переменная и в нее же получается дистанция с помощью функции get_user_aiming, сама же функция записывает в перменне оставшиеся данные.
        new target, body
        new Float:dist = get_user_aiming(id, target, body, 9999)

    Вот собственно и вся работа функции, дальше лишь обработка данных и формирование различных вариантов сообщения враг/друг и тому подобное.

    Ах да, еще добавил ради шутки строки:
            if(body == 1){

                set_pev(id, pev_button,IN_ATTACK)

            }

    В них говориться о том что, если мы нацелились в голову, то перевести состояние кнопки атаки игрока в положение включено, то есть выстрелить за игрока. ( на сколько правильный метод не знаю, просто что пришло в 2 часа ночи на ум. то и слепил) Может быть вы придумаете что то более оригинальное.
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    s3zy

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

    хм... Так а можно с этой командой как то сделать такую надумку

    Допустим чел заходит с аимом = аим настроен на head

    В скрипте сделать подсчёт сколько раз он навёл только на голову врагу (например у нас 10 раз максимум мона наводить в голову) и сервер банит читера!

    (чёто мне кажется я бруд несу)
    Myp3uK159

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

    Вполне можно: (если я правильно думаю)
    Создай массив aiming_head[33]

    1.
    В самое начало функции fwdPlayerPreThink добавь
    if(aiming_head[id] >= 10)
    {
    тут команду бана
    }

    2.
    Это:
    if(body == 1){
    set_pev(id, pev_button,IN_ATTACK)
    }
    Поменяй на это:
    if(body == 1){
    aiming_head[id]++
    }

    Вроде как так
    StRiKeR.csF

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

    Myp3uK159,
    Так в m1c реализовано)

    Информация

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

Реклама