From eb918193e6b4c84427e24948b7f06a94331cd60f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 6 Mar 2024 11:10:51 +0800 Subject: [PATCH] 1 --- .../buff/select_target_with_spec_pos.cc | 19 +++++++++++++++++-- server/gameserver/player.cc | 2 +- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/server/gameserver/buff/select_target_with_spec_pos.cc b/server/gameserver/buff/select_target_with_spec_pos.cc index 5600518e..d69acd63 100644 --- a/server/gameserver/buff/select_target_with_spec_pos.cc +++ b/server/gameserver/buff/select_target_with_spec_pos.cc @@ -20,14 +20,29 @@ void SelectTargetWithSpecPosBuff::Activate() meta->GetBuffParam7(this) ); std::vector targets; + bool include_car = false; + bool exclude_passenger = false; + if (!meta->_buff_param8_int_set.empty()) { + include_car = meta->_buff_param8_int_set.find(1) != meta->_buff_param8_int_set.end(); + exclude_passenger = meta->_buff_param8_int_set.find(2) != meta->_buff_param8_int_set.end(); + } owner->TraverseCreatures ( - [this, &targets, ¢er] (Creature* c, bool& stop) + [this, &targets, ¢er, include_car, exclude_passenger] (Creature* c, bool& stop) { if (c->dead || - c->IsCar()) { + (c->IsCar() && !include_car) || + a8::HasBitFlag(c->status, CS_Disable) || + c->HasBuffEffect(kBET_Dive) + ) { return; } + if (exclude_passenger) { + if (c->HasBuffEffect(kBET_Driver) && + c->HasBuffEffect(kBET_Passenger)) { + return; + } + } float distance = c->GetPos().Distance2D2(center); #ifdef MYDEBUG if (c->IsPlayer()) { diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 7c4f979f..6c2932c5 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -1038,7 +1038,7 @@ void Player::_CMMove(f8::MsgHdr* hdr, const cs::CMMove& msg) } } } -#ifdef MYDEBUG1 +#ifdef MYDEBUG a8::XPrintf("attack_dir:%f,%f,%f cli_dir:%f,%f,%f\n", { GetAttackDir().x,