From d943bdf50e9d8c5dc22261e9c6d2c2621b6f04d5 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 10 Oct 2022 20:40:17 +0800 Subject: [PATCH] 1 --- server/gameserver/bullet.cc | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 73423044..c78f5516 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -614,7 +614,19 @@ void Bullet::Check(float distance) sender.Get()->IncDisableAttackDirTimes(); sender.Get()->room->xtimer.AddDeadLineTimerAndAttach ( - (0.2 + distance / gun_meta->i->bullet_speed() / 2) * SERVER_FRAME_RATE, + (distance / gun_meta->i->bullet_speed() / 2) * SERVER_FRAME_RATE, + a8::XParams() + .SetSender(sender.Get()), + [] (const a8::XParams& param) + { + Creature* c = (Creature*)param.sender.GetUserData(); + c->RemoveBuffById(kKeepShotAnimiBuffId); + }, + &sender.Get()->xtimer_attacher.timer_list_ + ); + sender.Get()->room->xtimer.AddDeadLineTimerAndAttach + ( + (0.75 + distance / gun_meta->i->bullet_speed() / 2) * SERVER_FRAME_RATE, a8::XParams() .SetSender(sender.Get()), [] (const a8::XParams& param) @@ -622,7 +634,6 @@ void Bullet::Check(float distance) Creature* c = (Creature*)param.sender.GetUserData(); c->DecDisableMoveTimes(); c->DecDisableAttackDirTimes(); - c->RemoveBuffById(kKeepShotAnimiBuffId); }, &sender.Get()->xtimer_attacher.timer_list_ ); @@ -827,7 +838,7 @@ void Bullet::ProcFlyHook(Entity* target) sender.Get()->IncDisableMoveTimes(); sender.Get()->room->xtimer.AddDeadLineTimerAndAttach ( - (distance / gun_meta->i->bullet_speed() / 2) * SERVER_FRAME_RATE, + (distance / gun_meta->i->bullet_speed() / 2 + 0.75) * SERVER_FRAME_RATE, a8::XParams() .SetSender(sender.Get()), [] (const a8::XParams& param)