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

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

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 8-11-2011, 09:37 Просмотров: 4184

    cs_set_weapon_silen Функция одевает глушитель на оружие

    С помощью функции cs_set_weapon_silen, можно одеть/снять глушитель с USP и M4A1
    Я встречался с использование данной функции на Jump серверах, что бы не осбо адекватные игроки, не мешали громкими выстрелами другим игрокам.

    Инфо из cstrike.inc:
    /* If silence = 1, weapon will be silenced, 0 and silencer will be removed. Only USP and M4A1 can be silenced.
    */
    native cs_set_weapon_silen(index, silence = 1, draw_animation = 1);


    Синтаксис:
    cs_set_weapon_silen ( index, [ silence = 1, draw_animation = 1 ] )

    • index - Внимание: id объекта оружия, а не игрока.
    • silence = 1 - 1 одеть/0 снять глушитель
    • draw_animation = 1 - Анимация снимания/одевания глушителя 0/1 off/on


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

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

    #include <amxmodx>
    #include <amxmisc>
    #include <engine>
    #include <cstrike>

    #define PLUGIN "[cstrike.inc] cs_set_user_zoom"
    #define VERSION "1.0"
    #define AUTHOR "Admin"

    public plugin_init() {
        register_plugin(PLUGIN, VERSION, AUTHOR)

        register_clcmd("say /silen","silen")
    }

    public silen(id){
        
        new wpn_id = find_ent_by_owner(-1, "weapon_usp", id)
        cs_set_weapon_silen(wpn_id, 1, 1)
    }


    Описание:
    Обратите внимание:возможность одевания глушителя есть только у UPS и M4A1.
    Функция с одной стороны простая, с другой стороны сложная, так в ней используется не id игрока, а id оружия, точнее оружие является объектом (entity), так вот необходимо именно id этого объекта.
    Найти его можно с помощью функции find_ent_by_owner модуля engine, которая возвращает id найденного объекта.
    И далее уже применяем функцию cs_set_weapon_silen - которая одевает глушитель.

    В данном примере если у вас любое оружие кроме USP функция будет выдавать ошибку, так как id будет не правильным.
    Вот пример полностью рабочего кода постоянно надетого глушителя:

    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <amxmisc>
    #include <engine>
    #include <cstrike>

    #define PLUGIN "[cstrike.inc] cs_set_user_zoom"
    #define VERSION "1.0"
    #define AUTHOR "Admin"

    public plugin_init() {
        register_plugin(PLUGIN, VERSION, AUTHOR)

        register_message(get_user_msgid("CurWeapon"), "event_weapon");
    }
    public event_weapon(msg_id, msg_dest, id)
    {
        new wpn = get_msg_arg_int(2);

        if(wpn == 0){
            return PLUGIN_CONTINUE;
        }

        new wpn_name[17];
        if(is_user_alive(id)){
        get_weaponname(wpn, wpn_name,16);

        new wpn_id = find_ent_by_owner(-1, wpn_name, id);

        if(!wpn_id){
            return PLUGIN_CONTINUE;
        }

        if(wpn == CSW_USP || wpn == CSW_M4A1)
        {
            cs_set_weapon_silen(wpn_id, 1, 0);
        }
        }
        return PLUGIN_CONTINUE;
    }

    В этом примере есть все необходимые проверки и поиск id.
    В данный момент данный код стоит и на моем сервер.
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    cs_set_weapon_silen Функция одевает глушитель на оружие
    gavrilyuc

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

    А можно ли как то заблокировать вообще надевать глушитель на m4a1 ?
    Valer4

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

    Да, можно, завтра напишу плагин)
    gavrilyuc

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

    Valer4,
    уже сам разобрался:

    /*Init  */
    RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_m4a1", "SecondaryAttack")

    //
    public SecondaryAttack(Weapon) return HAM_SUPERCEDE;
    Valer4

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

    А как анимацию убрать разобрался?)))
    gavrilyuc

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

    Valer4, а есть event на изменение анимации? или при блоке ставить пред анимацию...
    Цитата: Valer4
    А как анимацию убрать разобрался?)))

    не разобрался...
    Valer4

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

    gavrilyuc,
    cl_lw 0, либо заказывать модели без глушителя)))

    Информация

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

Реклама