From dc6c86ac2474426f60dcc6f8dbc0506b87d1ef4a Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 6 Sep 2024 15:06:00 +0800 Subject: [PATCH 1/7] 1 --- server/gameserver/mt/Param.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/gameserver/mt/Param.cc b/server/gameserver/mt/Param.cc index 2ba6df64..021a7f30 100644 --- a/server/gameserver/mt/Param.cc +++ b/server/gameserver/mt/Param.cc @@ -127,6 +127,11 @@ namespace mt s_.speed_rf = GetIntParam("SpeedRF", 5.0f); s_.speed_rate_max = GetIntParam("SpeedRateMax", 0.2f); + s_.battle_hint_interval = GetIntParam("battle_hint_interval", s_.battle_hint_interval); + s_.battle_hint_duration = GetIntParam("battle_hint_duration", s_.battle_hint_duration); + s_.battle_hint_view_range = GetIntParam("battle_hint_view_range", s_.battle_hint_view_range); + s_.battle_hint_broadcast_range = GetIntParam("battle_hint_broadcast_range", s_.battle_hint_broadcast_range); + #ifdef MYDEBUG s_.match_team_time = 6; s_.match_robot_time = 5; From 4cc2cec970d11732f43763ffb96b278efbc5ec0d Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 6 Sep 2024 16:37:49 +0800 Subject: [PATCH 2/7] 1 --- server/gameserver/pbutils.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index d0e3eee5..65315f33 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -2185,7 +2185,8 @@ void Human::SendViewerUiMemberUpdate(std::vector member_ids) void Human::BroadcastBattleHint() { - if (room->GetFrameNo() - last_battle_hint_frameno_ >= mt::Param::s().battle_hint_interval) { + if (room->GetFrameNo() - last_battle_hint_frameno_ >= + mt::Param::s().battle_hint_interval * SERVER_FRAME_RATE) { if (last_battle_hint_uniid_ > 0) { if (room->GetFrameNo() - last_battle_hint_frameno_ < mt::Param::s().battle_hint_duration * SERVER_FRAME_RATE + 8) { From 5bee4f9d1dd4119406bcd61c156ba7f849ae18ae Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 6 Sep 2024 16:57:35 +0800 Subject: [PATCH 3/7] 1 --- server/gameserver/mt/Param.cc | 2 +- server/gameserver/pbutils.cc | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/server/gameserver/mt/Param.cc b/server/gameserver/mt/Param.cc index 021a7f30..8521a772 100644 --- a/server/gameserver/mt/Param.cc +++ b/server/gameserver/mt/Param.cc @@ -130,7 +130,7 @@ namespace mt s_.battle_hint_interval = GetIntParam("battle_hint_interval", s_.battle_hint_interval); s_.battle_hint_duration = GetIntParam("battle_hint_duration", s_.battle_hint_duration); s_.battle_hint_view_range = GetIntParam("battle_hint_view_range", s_.battle_hint_view_range); - s_.battle_hint_broadcast_range = GetIntParam("battle_hint_broadcast_range", s_.battle_hint_broadcast_range); + s_.battle_hint_broadcast_range = GetIntParam("battle_hint_broadcast_range", s_.battle_hint_broadcast_range + 800); #ifdef MYDEBUG s_.match_team_time = 6; diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index 65315f33..4ebe71e7 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -2197,6 +2197,8 @@ void Human::BroadcastBattleHint() last_battle_hint_uniid_ = 0; } last_battle_hint_frameno_ = room->GetFrameNo(); +#ifdef MYDEBUG +#endif std::shared_ptr notify_msg; room->TraversePlayerList ( From 718886e2476aed52af6929c1e997a1cf22a3c118 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 6 Sep 2024 16:58:05 +0800 Subject: [PATCH 4/7] 1 --- server/gameserver/mt/Param.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/gameserver/mt/Param.h b/server/gameserver/mt/Param.h index 27a6be1a..3356abd0 100644 --- a/server/gameserver/mt/Param.h +++ b/server/gameserver/mt/Param.h @@ -172,7 +172,7 @@ namespace mt int battle_hint_interval = 10; int battle_hint_duration = 10; int battle_hint_view_range = 512; - int battle_hint_broadcast_range = 800; + int battle_hint_broadcast_range = 1600; std::vector block_effect_range; std::vector crit_effect_range; From bc9aab25c636bc27e43a6743d0d328b3fc6393ac Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 11 Sep 2024 16:41:03 +0800 Subject: [PATCH 5/7] 1 --- server/gameserver/creature.cc | 1 + server/gameserver/trigger.cc | 5 +++++ server/gameserver/trigger.h | 2 ++ 3 files changed, 8 insertions(+) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 32d51bb0..00375e5d 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -2504,6 +2504,7 @@ void Creature::OnBattleStart(Room* room) TryAddBuffAndSetTime(this, kInvincibleBuffId, FRAME_RATE_MS * 2); } battle_start_time_ = f8::App::Instance()->GetNowTime(); + GetTrigger()->OnBattleStart(); } bool Creature::CanFollow(Creature* follower) diff --git a/server/gameserver/trigger.cc b/server/gameserver/trigger.cc index 4968a5b3..736414a7 100644 --- a/server/gameserver/trigger.cc +++ b/server/gameserver/trigger.cc @@ -738,3 +738,8 @@ void Trigger::BulletDmgEnd(Creature* target) { DispatchEvent(kBulletDmgEndEvent, {target}); } + +void Trigger::OnBattleStart() +{ + DispatchEvent(kBattleStartEvent, {}); +} diff --git a/server/gameserver/trigger.h b/server/gameserver/trigger.h index 82e54f07..32ef4dbb 100644 --- a/server/gameserver/trigger.h +++ b/server/gameserver/trigger.h @@ -39,6 +39,7 @@ enum EventId_e kBulletDmgStartEvent, kBulletDmgEndEvent, kCrazeModeEvent, + kBattleStartEvent }; class Weapon; @@ -94,6 +95,7 @@ public: void BeAttack(int attacker_id); void BulletDmgStart(Creature* target); void BulletDmgEnd(Creature* target); + void OnBattleStart(); std::weak_ptr AddListener(int event_id, a8::CommonCbProc cb); void RemoveEventHandler(std::weak_ptr handler_ptr); From d8447a90c5a4bb6be205d3dc40d7c8f25e283de9 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 11 Sep 2024 16:45:36 +0800 Subject: [PATCH 6/7] 1 --- server/gameserver/creature.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 00375e5d..201cdafd 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1169,10 +1169,11 @@ void Creature::Initialize() } if (IsHuman()) { a8::XTimerWp nature_recover_hp_timer; + auto battling_state = std::make_shared(true); nature_recover_hp_idle_timer = room->xtimer.SetIntervalWpEx ( SERVER_FRAME_RATE * mt::Param::s().nature_recover_hp_idletime, - [this, nature_recover_hp_timer] (int event, const a8::Args* args) mutable + [this, nature_recover_hp_timer, battling_state] (int event, const a8::Args* args) mutable { if (a8::TIMER_EXEC_EVENT == event) { if (nature_recover_hp_timer.expired() && !HasBuffEffect(kBET_Dive)) { @@ -1193,7 +1194,10 @@ void Creature::Initialize() }, &xtimer_attacher); } - GetTrigger()->LeaveBattleMode(); + if (*battling_state) { + *battling_state = false; + GetTrigger()->LeaveBattleMode(); + } } else if (kRemoveNatureRecoverTimerEvent == event) { room->xtimer.ModifyTime (nature_recover_hp_idle_timer, @@ -1201,6 +1205,7 @@ void Creature::Initialize() if (!nature_recover_hp_timer.expired()) { room->xtimer.Delete(nature_recover_hp_timer); } + *battling_state = true; GetTrigger()->EnterBattleMode(); } }, From aa353e9318385d6e2aac1a8061b7ce78805ada60 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 11 Sep 2024 16:49:41 +0800 Subject: [PATCH 7/7] 1 --- server/gameserver/creature.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 201cdafd..a9825ff0 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1170,6 +1170,13 @@ void Creature::Initialize() if (IsHuman()) { a8::XTimerWp nature_recover_hp_timer; auto battling_state = std::make_shared(true); + GetTrigger()->AddListener + ( + kBattleStartEvent, + [battling_state] (const a8::Args& args) + { + *battling_state = true; + }); nature_recover_hp_idle_timer = room->xtimer.SetIntervalWpEx ( SERVER_FRAME_RATE * mt::Param::s().nature_recover_hp_idletime,