Ускорение/замедление анимации оружия

Сообщения
1,420
Реакции
2,511
Помог
58 раз(а)
Можно как-то ускорить или замедлить определённую анимацию оружия? Конкретно анимацию перезарядки.

Пробовал в Ham_Weapon_SendWeaponAnim устанавливать m_flFrameRate/var_framerate устанавливать для iAnim но безуспешно. Скорость не менялась.

Код:
// Thanks to Vaqtincha
new const g_iReloadAnims[any:WEAPON_P90 + 1] = {
    -1, 5, -1, 3, -1, 6, -1, 1, 1, -1, 14, 4, 2, 3, 1, 1, 13, 7, 4, 1, 3, 6, 11, 1, 3, -1, 4, 1, 1, -1, 1
};

public hamfwd_SendWeaponAnim_Pre(pWeapon, iAnim, iSkipLocal, iBody)
{
    if(!IsCustomWeapon(pWeapon))
        return HAM_IGNORED;

    new WeaponIdType:iId = get_member(pWeapon, m_iId);
    if(iAnim == g_iReloadAnims[iId])
        set_entvar(iAnim, var_framerate, 3.0); // 3x faster

    return HAM_IGNORED;
}
 
Сообщения
3,579
Реакции
1,569
Помог
137 раз(а)
voed, но ведь когда-то был плагин "Slow Motion" - когда после смерти анимацию смерти игрока замедляло.
 
Сообщения
273
Реакции
424
Помог
5 раз(а)
w0w, Можно если отключить предиктинг.
14 Фев 2019
Пардон, был неправ, действительно жесткая установка framerate в движке
Код:
void CL_WeaponAnim( int iAnim, int body )
{
    cl_entity_t    *view = &clgame.viewent;

    cl.weaponstarttime = 0;
    cl.weaponsequence = iAnim;

    // anim is changed. update latchedvars
    if( iAnim != view->curstate.sequence )
    {
        int    i;

        // save current blends to right lerping from last sequence
        for( i = 0; i < 2; i++ )
            view->latched.prevseqblending[i] = view->curstate.blending[i];
        view->latched.prevsequence = view->curstate.sequence; // save old sequence

        // save animtime
        view->latched.prevanimtime = view->curstate.animtime;
        view->latched.sequencetime = 0.0f;
    }

    view->curstate.animtime = cl.time;    // start immediately
    view->curstate.framerate = 1.0f;
    view->curstate.sequence = iAnim;
    view->latched.prevframe = 0.0f;
    view->curstate.scale = 1.0f;
    view->curstate.frame = 0.0f;
    view->curstate.body = body;

    view->curstate.rendermode = kRenderNormal;
    view->curstate.renderamt = 255;
}
 
Сообщения
52
Реакции
78
w0w, декомпилируем модель, открываем .qc файл и находим следующие строчки:
Безымянный.png
Смотрим название нужной нам анимации и редактируем только значение fps'a(fps - кол-во кадров в секунду). Собственно, чем меньше число, тем медленнее будет проигрываться анимация и наоборот. Далее компирилируем и проверяем. =)
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу