From 098b413ec5008d1877ddf38130cce087f6261cfd Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 27 May 2020 17:53:02 +0800 Subject: [PATCH] 1 --- server/gameserver/constant.h | 2 ++ server/gameserver/metamgr.cc | 4 ++-- server/gameserver/room.cc | 17 +++++++++++++++-- server/gameserver/room.h | 1 + server/gameserver/roommgr.cc | 2 -- 5 files changed, 20 insertions(+), 6 deletions(-) diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index daf16c0..ff2d51e 100755 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -309,3 +309,5 @@ const int ADPLAY_BUFFID = 1006; const int FIXED_OBJECT_MAXID = 2018; const int MAX_ROOM_IDX = 2018; + +const int VIEW_RANGE = 512; diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index 582b736..18d5e8e 100755 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -206,9 +206,9 @@ public: METAMGR_READ(level1room_shua_robot_min_num, 2); METAMGR_READ(level1room_shua_robot_max_num, 5); METAMGR_READ(level1room_die_robot_min_time, 10); - METAMGR_READ(level1room_die_robot_max_time, 20); + METAMGR_READ(level1room_die_robot_max_time, 14); METAMGR_READ(level1room_die_robot_min_num, 1); - METAMGR_READ(level1room_die_robot_max_num, 5); + METAMGR_READ(level1room_die_robot_max_num, 3); METAMGR_READ(level1room_robot_water, 8); METAMGR_READ(level1room_robot_autodie_time, 10); METAMGR_READ(level1room_robot_autodie_distance, 500); diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 8b65d0b..1ec3c31 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -2049,9 +2049,11 @@ void Room::ProcDieAndroid(int die_time, int die_num) std::vector alive_humans; alive_humans.reserve(human_hash_.size()); for (auto& pair : human_hash_) { - if (pair.second->entity_subtype == EST_Android && + if (pair.second->IsAndroid() && !pair.second->real_dead && - a8::HasBitFlag(pair.second->status, HS_Disable)) { + pair.second->team_uuid.empty() && + !HasPlayerInRound(pair.second->GetPos(), VIEW_RANGE)) + { Android* hum = (Android*)pair.second; alive_humans.push_back(hum); } @@ -2174,3 +2176,14 @@ void Room::CheckAutoDie(Human* target, } } } + +bool Room::HasPlayerInRound(const a8::Vec2& pos, float rad) +{ + for (auto& pair : accountid_hash_) { + if (std::fabs(pair.second->GetPos().x - pos.x) < rad && + std::fabs(pair.second->GetPos().y - pos.y) < rad) { + return true; + } + } + return false; +} diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 92e6729..be81792 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -164,6 +164,7 @@ private: void ProcShuaAndroid(int shua_time, int shua_num); void ProcDieAndroid(int die_time, int die_num); void CheckAutoDie(Human* hum, int autodie_time, int autodie_distance, int check_times); + bool HasPlayerInRound(const a8::Vec2& pos, float rad); private: int elapsed_time_ = 0; diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index 542f051..a34dff0 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -30,14 +30,12 @@ static RoomType_e GetHumanRoomType(const cs::CMJoin& msg) } //游戏次数,吃鸡数,击杀数 int game_times = a8::XValue(tmp_strings[0]); - #if 0 if (!f8::IsOnlineEnv()) { game_times = 0; if (!msg.team_uuid().empty()) { game_times = 1; } } - #endif #if 0 int win_times = a8::XValue(tmp_strings[1]); int kill_times = a8::XValue(tmp_strings[2]);