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

    Всего на сайте: 14
    Гостей: 11
    Пользователи: - отсутствуют
    Роботы: Yandex Bot, Yandex Bot, robot Bot

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: True_Hacker Дата: 29-04-2014, 10:48 Просмотров: 3105

    Изменение отдачи оружия

    Всем привет,недавно меня натолкнуло на мысль о изменении отдачи оружия и я написал библиотеку в которой всего одна stock функция,но она очень сильно упрощает код
    Как пользоваться ?
    set_user_recoil(const Player,Float:recoil)
    stock функция принимает два параметра,
    const Player
    - id игрока у которого будем менять отдачу и
    Float:recoil
    - дробное число отвечающее за повышение/уменьшение отдачи
    Пример кода:

    #include <amxmodx>
    #include <amxmisc>
    #include <recoil>
    #include <Hamsandwich>
    #include <fakemeta>
    new bool:user_enabled_norecoil[33] = false

    #define PLUGIN "Test Recoiling System"
    #define VERSION "1.0"
    #define AUTHOR "True_Hacker"


    public plugin_init() {
        register_plugin(PLUGIN, VERSION, AUTHOR)
        register_clcmd("say !admin_norecoil_on", "nron")
        register_clcmd("say !admin_norecoil_off", "nroff")
        RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_ak47", "no_recoil_func", 1)
    }

    public no_recoil_func(weapon)
    {
        new id = pev(weapon,pev_owner)
        if( user_enabled_norecoil[id] == true )
        {
            set_user_recoil(id,0.0)
        }
    }

    public nron(id)
    {
        if( get_user_flags(id) & ADMIN_BAN )
        {
            user_enabled_norecoil[id] = true
            set_hudmessage(255, 255, 0, 0.0, 0.9, 0, 6.0, 12.0)
            show_hudmessage(id, "[Admin No-Recoil Enabled]")
        }
    }

    public nroff(id)
    {
        if( get_user_flags(id) & ADMIN_BAN )
        {
            user_enabled_norecoil[id] = false
            set_hudmessage(255, 255, 0, 0.0, 0.9, 0, 6.0, 12.0)
            show_hudmessage(id, "[Admin No-Recoil Disabled]")
        }
    }



    Разбор кода по частям:
    1.
    #include <recoil>
    как вы уже заметили я уже включил нужную нам библиотеку,думаю #include не нуждается в объяснении и вы уже прочли все уроки по скриптингу(на этом сайте)
    2.
    RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_ak47", "no_recoil_func", 1)
    - регистрируем хам который будет выполнять
    no_recoil_func
    функцию при стрельбе с ak47
    3.
    new id = pev(weapon,pev_owner)
    - узнаём кто хозяин оружия и записываем в переменную id
    4.
    set_user_recoil(id,0.0)
    устанавливаем отдачу у игрока при стрельбе с отлавливаемого оружия
    Остальная часть кода надеюсь вам ясна и не нуждается в обьяснении
    Ссылка на скачивание
    Вы не можете скачивать файлы с нашего сервера (442 байта)

    Я не жадный,у меня лишь одна просьба,не меняйте в чужих плагинах авторов,экспериментируйте на здоровье fellow
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    Изменение отдачи оружия
    FixxOR

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

    new Float:cl_pushangle[33][3] - ппц, товарищи.
    Admin

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

    Да, товарищ, еще расскажи к чему это?
    --------------------
    gavrilyuc

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

    stock set_user_recoil(const Player,Float:recoil)
    {
    new Float:cl_pushangle[33][3]
    new Float:push[3]
    pev(Player, pev_punchangle, push)
    xs_vec_sub(push, cl_pushangle[Player], push)
    xs_vec_mul_scalar(push, recoil, push)
    xs_vec_add(push, cl_pushangle[Player], push)
    set_pev(Player, pev_punchangle, push)
    return HAM_IGNORED;
    }
    более хочу узнать :
    new Float:cl_pushangle[33][3]
    Зачем ?
    Radius

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

    Вот правильный вариант.

    #include <fakemeta>
    #include <xs>

    stock set_user_recoil (const id, Float: recoil)
    {
        new Float: push[3];
        pev (id, pev_punchangle, push);
        xs_vec_mul_scalar (push, recoil, push);
        set_pev (id, pev_punchangle, push);
    }
    True_Hacker

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

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

    Admin,пушэнгл это угол давления на прицел и его сила давления

    Ребята очень прошу,не корежте сие творение!!!!
    Radius

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

    True_Hacker, всего лишь удалил код который никак не влияет на разброс, а только отнимает процессорное время при каждом выстреле.

    В Вашем коде cl_pushangle имеет нулевое значение, так как объявлен в самом stock'e. И строки:

    xs_vec_sub(push, cl_pushangle[Player], push) //из push отнимает cl_pushangle (который 0 )
    xs_vec_add(push, cl_pushangle[Player], push)//push прибавляет к cl_pushangle (который 0)

    Как видите код не получает cl_pushangle и не изменяет recoil, прибавили 0 и отняли 0. Скорее всего Вы его вырезали из какого-то мода и там значение было.

    Мой и Ваш код работают одинаково, только мой быстрее. Если нужен был учет cl_pushangle, то stock нужно переделывать.
    артист

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

    Давление на прицел wink
    tom94ok

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

    артист,
    wink
    Kostia-195

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

    Warning: tag mistmatch on line 23
    Что это?
    glacier2009

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

    Здарова пацаны, слушайте измените этот код, так что-бы не только на админов действовало, а так-же на всех игроков сервера, вообще на всех игроков что-бы все стреляли "одинаково" Решите эту "проблему" пацаны!

    Информация

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

Реклама