From 7aed70e9ce91f1b053fe5f43e29ba44378ea7d7f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 28 May 2024 17:21:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AE=95=E6=9C=BAbug?= =?UTF-8?q?=E5=88=A0=E9=99=A4a8::TIMER=5FDELETE=5FEVENT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/buff/autoshot.cc | 10 ++++------ server/gameserver/buff/callfunc.cc | 2 +- server/gameserver/bullet.cc | 2 +- server/gameserver/creature.cc | 8 ++------ server/gameserver/pbutils.cc | 4 ++-- server/gameserver/perf.h | 1 + server/gameserver/room.cc | 1 + 7 files changed, 12 insertions(+), 16 deletions(-) diff --git a/server/gameserver/buff/autoshot.cc b/server/gameserver/buff/autoshot.cc index 2d096063..e1ff7f59 100644 --- a/server/gameserver/buff/autoshot.cc +++ b/server/gameserver/buff/autoshot.cc @@ -17,11 +17,6 @@ void AutoShotBuff::Activate() owner->AsHuman()->shot_hold = true; owner->AsHuman()->series_shot_frames = 0; } - } else if (a8::TIMER_DELETE_EVENT == event) { - if (owner->IsHuman()) { - owner->AsHuman()->shot_hold = false; - owner->AsHuman()->series_shot_frames = 0; - } } }, &xtimer_attacher); @@ -29,5 +24,8 @@ void AutoShotBuff::Activate() void AutoShotBuff::Deactivate() { - + if (owner->IsHuman()) { + owner->AsHuman()->shot_hold = false; + owner->AsHuman()->series_shot_frames = 0; + } } diff --git a/server/gameserver/buff/callfunc.cc b/server/gameserver/buff/callfunc.cc index c7ddd360..e12972b2 100644 --- a/server/gameserver/buff/callfunc.cc +++ b/server/gameserver/buff/callfunc.cc @@ -1104,7 +1104,7 @@ void CallFuncBuff::SummonCarSpecPoint() [room = owner->room, car_id, x, y, z, special_operators] (int event, const a8::Args* args) mutable { - if (a8::TIMER_DELETE_EVENT == event) { + if (a8::TIMER_EXEC_EVENT == event) { if (!room->IsGameOver()) { const mt::Equip* equip_meta = mt::Equip::GetById(car_id); if (equip_meta && equip_meta->equip_type() == EQUIP_TYPE_CAR) { diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 2bcc27a4..7352af63 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -437,7 +437,7 @@ void Bullet::ProcSmokeBomb() (SERVER_FRAME_RATE * mt::Param::GetIntParam("smoke_duration", 10), [task] (int event, const a8::Args* args) { - if (a8::TIMER_DELETE_EVENT == event) { + if (a8::TIMER_EXEC_EVENT == event) { task->Done(); } }, diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index cdf06402..c82c59b5 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -481,9 +481,6 @@ a8::XTimerWp Creature::TryDelayAddBuff(Creature* caster, handle->post_add_cb(this, buff_uniid); } } - } else if (a8::TIMER_DELETE_EVENT == event) { - if (handle) { - } } }, &xtimer_attacher); @@ -2867,7 +2864,6 @@ void Creature::LockAttackDir(int time) [this] (int event, const a8::Args* args) { if (a8::TIMER_EXEC_EVENT == event) { - } else if (a8::TIMER_DELETE_EVENT == event){ DecDisableAttackDirTimes(); } }, @@ -3730,8 +3726,7 @@ void Creature::AddIgnoreTarget(int target_uniid, int time) (SERVER_FRAME_RATE * time, [this, target_uniid] (int event, const a8::Args* args) { - if (a8::TIMER_EXEC_EVENT == event || - a8::TIMER_DELETE_EVENT == event) { + if (a8::TIMER_EXEC_EVENT == event) { ignore_target_hash_.erase(target_uniid); } }, @@ -3743,6 +3738,7 @@ void Creature::DelIgnoreTarget(int target_uniid) auto itr = ignore_target_hash_.find(target_uniid); if (itr != ignore_target_hash_.end()) { room->xtimer.Delete(itr->second); + ignore_target_hash_.erase(itr); } } diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index d18edd91..ce890f10 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -1507,7 +1507,7 @@ void Human::ProcThrowDmg(int throw_uniid) (SERVER_FRAME_RATE * mt::Param::GetIntParam("smoke_duration", 10), [task] (int event, const a8::Args* args) { - if (a8::TIMER_DELETE_EVENT == event) { + if (a8::TIMER_EXEC_EVENT == event) { task->Done(); } }, @@ -2945,7 +2945,7 @@ int Creature::Throw(const mt::Equip* src_equip_meta, SERVER_FRAME_RATE * 15, [this, throw_uniid] (int event, const a8::Args* args) { - if (a8::TIMER_DELETE_EVENT == event) { + if (a8::TIMER_EXEC_EVENT == event) { if (IsPlayer()) { AsPlayer()->ProcThrowDmg(throw_uniid); } diff --git a/server/gameserver/perf.h b/server/gameserver/perf.h index dfb7ebc9..09956c1a 100644 --- a/server/gameserver/perf.h +++ b/server/gameserver/perf.h @@ -25,6 +25,7 @@ private: long long e_wptr_num = 0; long long event_handler_num = 0; int traversing_cell_creature_count = 0; + long long find_path_max_time = 0; private: void Output(); diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index e9adc981..6ac5b249 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -2273,6 +2273,7 @@ void Room::RandRemoveAndroid() }); } if (hum) { + hum->CheckSpecObject(0); if (hum->team_id != 0) { Team* team = GetTeam(hum->team_id); if (team) {