Скорость доставания пушки

Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Как увеличить скорость доставания пушки? Разумеется анимация прервется, но все же, нужно начать быстрее стрелять.

Попытки:
C++:
RegisterHookChain( RG_CBasePlayerWeapon_DefaultDeploy, "hook_weapon_deploy_post", .post = true );

public hook_weapon_deploy_post( const ent, viewModel[ ], playerModel[ ] )
{
    new user = get_member( ent, m_pPlayer );

    set_member( user, m_flNextAttack, 0.2 );
    set_member( ent, m_Weapon_flTimeWeaponIdle, 0.2 );
}
Вроде бы работает, но кроме авп, почему?
 
Последнее редактирование модератором:
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
g2rise, проверил, норм. Не работает: авп, скаут, дигл
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
fl0wer, если мы говорим о m_Weapon_flNextPrimaryAttack и m_Weapon_flNextSecondaryAttack то в деплое они у меня в основном отрицательные значения, чекаю на авп только сейчас
Primary: -1.000000
Secondary: -0.001000

Primary: -0.958996
Secondary: -0.001000

Primary: 0.203004
Secondary: -0.001000
Соответственно, этот код результата не дал
C++:
set_member( ent, m_Weapon_flNextPrimaryAttack, 0.1 );
set_member( ent, m_Weapon_flNextSecondaryAttack, 0.1 );
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
steelzzz, не доходит пока что... чистыми m_flNextPrimaryAttack и m_flNextSecondaryAttack в ReAPI не вынесены
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
steelzzz, понял,
Код:
m_pPlayer->m_flNextAttack = GetNextAttackDelay(1.45);
m_flNextPrimaryAttack = m_pPlayer->m_flNextAttack;
m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 1.0f;
Это присваивается уже после деплоя...
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Вопрос еще актуален, если кто знает какие можно придумать костыли - предложите
 

Garey

ninjaCow
Сообщения
440
Реакции
1,094
Помог
11 раз(а)
Javekson,

C-like:
RegisterHookChain( RG_CBasePlayerWeapon_DefaultDeploy, "hook_weapon_deploy_post", .post = true );
public hook_weapon_deploy_post( const ent, viewModel[ ], playerModel[ ] )

{

    new user = get_member( ent, m_pPlayer );

    set_member( user, m_flNextAttack, 0.0 );

    set_member( ent, m_Weapon_flTimeWeaponIdle, 0.0 );

    set_member( ent, m_Weapon_flNextPrimaryAttack, 0.1 );

    set_member( ent, m_Weapon_flNextSecondaryAttack, 0.1 );

    SetHookChainReturn(ATYPE_INTEGER, false);

}
Попробуй SetHookChainReturn в false/0 установить.
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Garey, работает, спасибо... мог бы и сам догадаться попробовать
но у дигла все ровно анимация не прерывается, стрелять то раньше начинает, но процесс доставание все ровно идет
2 Май 2022
Garey, на ум пришло только таск и set_entvar( user, var_weaponanim, 0 );
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
bizon, да, речь об анимации доставание пушки, код выше прерывает анимацию через то время которое я укажу, но кроме дигла уже
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
Javekson, попробуй с пистолетом p228 такую же тему провернуть. Сравнил их в исходниках ReGameDll, действия идентичны. Если такой проблемы не будет, то копать нужно дальше, но так мы хотя бы поймем, что проблема не в деплое возникает.
 

Garey

ninjaCow
Сообщения
440
Реакции
1,094
Помог
11 раз(а)
Javekson
C-like:
#include <amxmodx>
#include <reapi>

public plugin_init()
{
    RegisterHookChain( RG_CBasePlayerWeapon_DefaultDeploy, "hook_weapon_deploy_pre", .post = false );
    RegisterHookChain( RG_CBasePlayerWeapon_DefaultDeploy, "hook_weapon_deploy_post", .post = true );
}

enum deagle_e
{
    DEAGLE_IDLE1,
    DEAGLE_SHOOT1,
    DEAGLE_SHOOT2,
    DEAGLE_SHOOT_EMPTY,
    DEAGLE_RELOAD,
    DEAGLE_DRAW,
};

public hook_weapon_deploy_pre( const ent, viewModel[ ], playerModel[ ] )
{
    switch(get_member(ent, m_iId))
    {
        case WEAPON_DEAGLE:
        {
             SetHookChainArg(4, ATYPE_INTEGER, DEAGLE_IDLE1);
        }
    }
}
public hook_weapon_deploy_post( const ent, viewModel[ ], playerModel[ ] )
{
    new user = get_member( ent, m_pPlayer );

    set_member( user, m_flNextAttack, 0.0 );
    set_member( ent, m_Weapon_flTimeWeaponIdle, 0.0 );
    set_member( ent, m_Weapon_flNextPrimaryAttack, 0.1 );
    set_member( ent, m_Weapon_flNextSecondaryAttack, 0.1 );
    SetHookChainReturn(ATYPE_INTEGER, false);
}
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Garey, такой вариант работает, но он сразу прерывает анимацию, а мне надо допустим через 0.3, в этом весь и вопрос
 
Сообщения
1,701
Реакции
1,512
Помог
26 раз(а)
Javekson, idle делаешь 0.3 и переписываешь WeaponIdle хук. Хотя он и без этого должен норм отрабатывать. Проверь у себя cl_lw lc настройки.
 
Сообщения
91
Реакции
141
Помог
1 раз(а)
Зачастую все анимации Draw имеют время 1.03, тебе нужно поставить оффсет m_Weapon_flTimeWeaponIdle на 1.03 (можешь и больше поставить, просто анимация idle не начнется из хука WeaponIdle пока не отработает m_Weapon_flTimeWeaponIdle) и чтобы ты мог стрелять через опред. время, достаточно оффсета m_flNextAttack, твое время например 0.1, из за чего анимация не будет прерываться в WeaponIdle хуке, пока не отработает время от сюда m_Weapon_flTimeWeaponIdle , а стрелять сможешь сразу же , как кончится время от сюда m_flNextAttack.
Всё делается в Деплой пост
 

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

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