Пользователь
Пользователь
- Статус
- Оффлайн
- Регистрация
- 22 Июн 2020
- Сообщения
- 200
- Реакции
- 78
в апдейт анимаций если делаю entity->SetAbsOrigin(entity->GetOrigin())
то получается дикий рассинхрон (миссы по пяткам обеспечены), причем неверная позиция - предикт настоящей, cmd->tick_count нигде не трогую, дабл тап тоже не причем
если ничего не делаю - уже лучше, но начинает наоборот - отставать, а боксы сильно впереди
белый - клиент
синий - сервер (sv_showlagcompensation)
с entity->SetAbsOrigin(entity->GetOrigin()):
без:
как получить верную позицию?
то получается дикий рассинхрон (миссы по пяткам обеспечены), причем неверная позиция - предикт настоящей, cmd->tick_count нигде не трогую, дабл тап тоже не причем
если ничего не делаю - уже лучше, но начинает наоборот - отставать, а боксы сильно впереди
белый - клиент
синий - сервер (sv_showlagcompensation)
с entity->SetAbsOrigin(entity->GetOrigin()):
без:
C++:
void ragebot::UpdateAnimations(C_BaseEntity* entity) {
auto animstate = entity->GetAnimstate();
auto old_curtime = I::Globals->curtime;
auto old_frame = I::Globals->frametime;
auto old_eflags = entity->GetEFlags();
I::Globals->curtime = entity->GetSimulationTime();
I::Globals->frametime = I::Globals->interval_per_tick;
AnimationLayer backup_layers[15];
memcpy(backup_layers, entity->GetAnimlayers(), (sizeof(AnimationLayer) * 15));
entity->GetEFlags() &= ~0x1000;
entity->SetAbsVelocity(entity->GetVelocity());
entity->SetAbsOrigin(entity->GetOrigin()); //надо ли, если надо то где, может быть в другом месте апдейта анимации
if (animstate->iLastUpdateFrame == I::Globals->framecount)
animstate->iLastUpdateFrame = I::Globals->framecount - 1;
entity->ClientSideAnimation() = true;
entity->UpdateClientSideAnimation();
entity->ClientSideAnimation() = false;
memcpy(entity->GetAnimlayers(), backup_layers, (sizeof(AnimationLayer) * 15));
entity->GetEFlags() = old_eflags;
I::Globals->curtime = old_curtime;
I::Globals->frametime = old_frame;
entity->InvalidateBoneCache();
IsUpdatingAnimation = true;
{
entity->SetupBones(nullptr, -1, 0x7FF00, I::Globals->curtime);
}
IsUpdatingAnimation = false;
}
как получить верную позицию?
Последнее редактирование: