Проблема с Ham_CS_Item_GetMaxSpeed

Сообщения
192
Реакции
148
Помог
1 раз(а)
Есть 2 кастомные пушки сделанные на "weapon_m249" где я хукаю Ham_CS_Item_GetMaxSpeed и изменяю скорость. Так вот, в первой пушке скорость = выставляемой, а во второй почему-то увеличивается до cl_...speed / sv_maxspeed. Чё делать?

Код:
const Float: WEAPON_SPEED = 160.0;
public CBasePlayerWeapon__GetMaxSpeed_Pre( const pItem )
{
    if ( !IsCustomWeapon( pItem, g_iAllocString_WeaponUId ) )
        return HAM_IGNORED;

    SetHamReturnFloat( WEAPON_SPEED );
    return HAM_SUPERCEDE;
}
 
Сообщения
1,304
Реакции
2,303
Помог
57 раз(а)
Ruby, разница в коде не вносит ясность? или код +/- идентичный? Если и там и там то что ты приложил, я подозреваю что у 2-ой пушки (проблемной) хук или не вызывается или отрубается по условию
 
Сообщения
673
Реакции
242
Помог
11 раз(а)
Скорость сбрасивается\устанавливается в хуке RG_CBasePlayer_ResetMaxSpeed или Ham_CS_Player_ResetMaxSpeed


может это тема Rectf | Dev-CS.ru поможет
 
Последнее редактирование:
Сообщения
459
Реакции
272
Помог
9 раз(а)
Limbooc, это скорость игрока , независимо от оружия
 
Сообщения
1,701
Реакции
1,512
Помог
26 раз(а)
Ruby, надо override, а не supercede.
 
Сообщения
192
Реакции
148
Помог
1 раз(а)
fl0wer, с override работает только пушка которая ниже в списке)0
1.jpg2.jpg3.jpg

Код:
public CBasePlayerWeapon__GetMaxSpeed_Pre( const pItem )
{
    if ( !IsCustomWeapon( pItem, g_iAllocString_WeaponUId ) )
        return HAM_IGNORED;

    server_print( "CBasePlayerWeapon__GetMaxSpeed_Pre m2" );

    SetHamReturnFloat( 160.0 );
    return HAM_OVERRIDE;
}

public CBasePlayerWeapon__GetMaxSpeed_Pre( const pItem )
{
    if ( !IsCustomWeapon( pItem, g_iAllocString_WeaponUId ) )
        return HAM_IGNORED;

    server_print( "CBasePlayerWeapon__GetMaxSpeed_Pre mauserc96" );

    SetHamReturnFloat( 275.0 );
    return HAM_OVERRIDE;
}
 
Последнее редактирование:
Сообщения
333
Реакции
290
Помог
9 раз(а)
Ruby, Там же byref
C++:
* Return type:     Float (byref'd in ExecuteHam).
* Execute params:  ExecuteHam(Ham_CS_Item_GetMaxSpeed, this, Float:output);
 
Сообщения
192
Реакции
148
Помог
1 раз(а)
Можно сделать так, но хотелось бы чтобы работало через Ham_CS_Item_GetMaxSpeed

Код:
public CBasePlayer__ResetMaxSpeed_Post( const pPlayer )
{
    /*if ( alive, freezetime, vip )
        return;
    */

    new pActiveItem = get_member( pPlayer, m_pActiveItem );
    if ( is_nullent( pActiveItem ) || get_entvar( pActiveItem, var_impulse ) == 0 )
        return;

    set_entvar( pPlayer, var_maxspeed, get_member( pActiveItem, m_Weapon_fMaxSpeed ) );
}
+ set_member( pItem, m_Weapon_fMaxSpeed, "скорость" ); в deploy
 
Сообщения
1,701
Реакции
1,512
Помог
26 раз(а)
Ruby, всегда или в первый раз?
 
Сообщения
333
Реакции
290
Помог
9 раз(а)
Ruby,
C++:
public CBasePlayerWeapon__GetMaxSpeed_Pre( const pItem, Float:flSpeed )
{
    if ( !IsCustomWeapon( pItem, g_iAllocString_WeaponUId ) )
    {
        GetHamReturnFloat(flSpeed);
        if(flSpeed != 0.0)
        {
            SetHamReturnFloat(flSpeed);
            return HAM_OVERRIDE;
        }
        
        return HAM_IGNORED;   
    }

    server_print( "CBasePlayerWeapon__GetMaxSpeed_Pre m2" );

    SetHamReturnFloat( 160.0 );
    return HAM_OVERRIDE;
}
 

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

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