Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
на юц видел, что nextattack сравнивали (<) с tickbase * interval_per_tick, оффсет тикбейз в хзд был, а вот интервайла нет. в какой таблице его искать? и ещё, m_nTickBase, что за "n" такое?)
bool CBaseEntity::CanShoot(CWeaponCSBase* pBaseWeapon)
{
const float flServerTime = TICKS_TO_TIME(this->GetTickBase());
// check is have ammo
if (pBaseWeapon->GetAmmo() <= 0)
return false;
// вот
// is player ready to shoot
if (this->GetNextAttack() > flServerTime)
return false;
const short nDefinitionIndex = pBaseWeapon->GetItemDefinitionIndex();
// check is weapon with burst mode
if ((nDefinitionIndex == WEAPON_FAMAS || nDefinitionIndex == WEAPON_GLOCK) &&
// check is burst mode
pBaseWeapon->IsBurstMode() && pBaseWeapon->GetBurstShotsRemaining() > 0)
return true;
// или вот
if (pBaseWeapon->GetNextPrimaryAttack() > flServerTime)
return false;
// check for revolver cocking ready
if (nDefinitionIndex == WEAPON_REVOLVER && pBaseWeapon->GetFireReadyTime() > flServerTime)
return false;
return true;
}
bool CBaseEntity::CanShoot(CWeaponCSBase* pBaseWeapon)
{
const float flServerTime = TICKS_TO_TIME(this->GetTickBase());
// check is have ammo
if (pBaseWeapon->GetAmmo() <= 0)
return false;
// вот
// is player ready to shoot
if (this->GetNextAttack() > flServerTime)
return false;
const short nDefinitionIndex = pBaseWeapon->GetItemDefinitionIndex();
// check is weapon with burst mode
if ((nDefinitionIndex == WEAPON_FAMAS || nDefinitionIndex == WEAPON_GLOCK) &&
// check is burst mode
pBaseWeapon->IsBurstMode() && pBaseWeapon->GetBurstShotsRemaining() > 0)
return true;
// или вот
if (pBaseWeapon->GetNextPrimaryAttack() > flServerTime)
return false;
// check for revolver cocking ready
if (nDefinitionIndex == WEAPON_REVOLVER && pBaseWeapon->GetFireReadyTime() > flServerTime)
return false;
return true;
}
на юц видел, что nextattack сравнивали (<) с tickbase * interval_per_tick, оффсет тикбейз в хзд был, а вот интервайла нет. в какой таблице его искать? и ещё, m_nTickBase, что за "n" такое?)
server time: 361.828
next attack: 360.969
next primary attack: 2.57978e-18
server time: 361.828
next attack: 360.969
next primary attack: 2.57978e-18
server time: 364.734
next attack: 364.672
next primary attack: 2.57978e-18
server time: 364.75
next attack: 364.672
next primary attack: 2.57978e-18
server time: 364.781
next attack: 364.672
next primary attack: 2.57978e-18
С авика стрелял. Значения тупо всегда меньше сервер тайма, next primary attack вообще хрень какую-то выдаёт
UPD.: да, я мудак, в примари аттак запихнул m_flNextAttack. Всем спасибо, проблема решена)
server time: 361.828
next attack: 360.969
next primary attack: 2.57978e-18
server time: 361.828
next attack: 360.969
next primary attack: 2.57978e-18
server time: 364.734
next attack: 364.672
next primary attack: 2.57978e-18
server time: 364.75
next attack: 364.672
next primary attack: 2.57978e-18
server time: 364.781
next attack: 364.672
next primary attack: 2.57978e-18
С авика стрелял. Значения тупо всегда меньше сервер тайма, next primary attack вообще хрень какую-то выдаёт
UPD.: да, я мудак, в примари аттак запихнул m_flNextAttack. Всем спасибо, проблема решена)
#define TICK_INTERVAL ( I::Globals->flIntervalPerTick )
#define TIME_TO_TICKS( t ) ( static_cast<int>( 0.5f + static_cast<float>( t ) / TICK_INTERVAL ) )
#define TICKS_TO_TIME( t ) ( TICK_INTERVAL * static_cast<float>( t ) )
у меня вообще вот так.
#define TICK_INTERVAL ( I::Globals->flIntervalPerTick )
#define TIME_TO_TICKS( t ) ( static_cast<int>( 0.5f + static_cast<float>( t ) / TICK_INTERVAL ) )
#define TICKS_TO_TIME( t ) ( TICK_INTERVAL * static_cast<float>( t ) )
у меня вообще вот так.