diff --git a/server/gameserver/CMakeLists.txt b/server/gameserver/CMakeLists.txt index 5571651..d395195 100644 --- a/server/gameserver/CMakeLists.txt +++ b/server/gameserver/CMakeLists.txt @@ -9,7 +9,7 @@ else() endif() set(CMAKE_BUILD_TYPE "Debug") -set(CMAKE_CXX_FLAGS_RELEASE "-std=gnu++11 -fsanitize=address -fno-omit-frame-pointer") +set(CMAKE_CXX_FLAGS_RELEASE "-O2 -g -std=gnu++11 -DGAME_ID=${GAME_ID}") set(CMAKE_CXX_FLAGS_DEBUG "-Wall -g -std=gnu++11 -DGAME_ID=${GAME_ID}") include_directories( diff --git a/server/gameserver/android.cc b/server/gameserver/android.cc index 3b59776..6c7fe6f 100644 --- a/server/gameserver/android.cc +++ b/server/gameserver/android.cc @@ -4,6 +4,7 @@ #include "metamgr.h" #include "android.ai.h" #include "room.h" +#include "app.h" Android::Android():Human() { @@ -11,12 +12,14 @@ Android::Android():Human() entity_subtype = EST_Android; ai = new AndroidAI; ai->owner = this; + ++App::Instance()->perf.entity_num[ET_Android]; } Android::~Android() { delete ai; ai = nullptr; + --App::Instance()->perf.entity_num[ET_Android]; } void Android::Initialize() diff --git a/server/gameserver/app.cc b/server/gameserver/app.cc index 8e38614..7e803cf 100755 --- a/server/gameserver/app.cc +++ b/server/gameserver/app.cc @@ -75,12 +75,6 @@ static void SavePerfLog() void App::Init(int argc, char* argv[]) { - #if 0 - { - Vector2D dir; - dir.Normalize(); - } - #endif signal(SIGPIPE, SIG_IGN); this->argc = argc; this->argv = argv; diff --git a/server/gameserver/building.cc b/server/gameserver/building.cc index 1d71fbc..0871a7c 100644 --- a/server/gameserver/building.cc +++ b/server/gameserver/building.cc @@ -5,14 +5,17 @@ #include "metamgr.h" #include "room.h" #include "loot.h" +#include "app.h" Building::Building():Entity() { entity_type = ET_Building; + ++App::Instance()->perf.entity_num[ET_Building]; } Building::~Building() { + --App::Instance()->perf.entity_num[ET_Building]; } void Building::Initialize() diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 6924d2b..f3daef5 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -6,14 +6,17 @@ #include "collider.h" #include "obstacle.h" #include "player.h" +#include "app.h" Bullet::Bullet():Entity() { entity_type = ET_Bullet; + ++App::Instance()->perf.entity_num[ET_Bullet]; } Bullet::~Bullet() { + --App::Instance()->perf.entity_num[ET_Bullet]; } void Bullet::Initialize() diff --git a/server/gameserver/entity.h b/server/gameserver/entity.h index 5107f7c..a67157c 100644 --- a/server/gameserver/entity.h +++ b/server/gameserver/entity.h @@ -24,6 +24,7 @@ enum EntityType_e ET_Bullet = 20, + ET_Android = 30, ET_MAX }; diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index e8184da..15e9047 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1456,7 +1456,9 @@ void Human::SendUpdateMsg() msg->clear_active_player_data(); } } + #if 1 observer->SendNotifyMsg(*msg); + #endif } delete msg; diff --git a/server/gameserver/loot.cc b/server/gameserver/loot.cc index d441972..83bc457 100644 --- a/server/gameserver/loot.cc +++ b/server/gameserver/loot.cc @@ -5,14 +5,17 @@ #include "room.h" #include "collider.h" #include "entity.h" +#include "app.h" Loot::Loot():Entity() { entity_type = ET_Loot; + ++App::Instance()->perf.entity_num[ET_Loot]; } Loot::~Loot() { + --App::Instance()->perf.entity_num[ET_Loot]; } void Loot::Initialize() diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index 81b8c72..715b3ba 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -6,14 +6,17 @@ #include "collider.h" #include "building.h" #include "human.h" +#include "app.h" Obstacle::Obstacle():Entity() { entity_type = ET_Obstacle; + --App::Instance()->perf.entity_num[ET_Obstacle]; } Obstacle::~Obstacle() { + --App::Instance()->perf.entity_num[ET_Obstacle]; } void Obstacle::Initialize() diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 02d179a..e7bf192 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -11,16 +11,18 @@ #include "obstacle.h" #include "building.h" #include "loot.h" +#include "app.h" Player::Player():Human() { entity_type = ET_Player; entity_subtype = EST_Player; + ++App::Instance()->perf.entity_num[ET_Player]; } Player::~Player() { - + --App::Instance()->perf.entity_num[ET_Player]; } void Player::Initialize() diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 1faa8d4..4d69849 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -699,6 +699,9 @@ bool Room::CanJoin(const std::string& accountid) if (gas_data.gas_mode != GasInactive) { return false; } + if (accountid_hash_.find(accountid) != accountid_hash_.end()) { + return false; + } if (App::Instance()->HasFlag(5)) { return accountid_hash_.size() < 1; } else { diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index b63797f..95b4106 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -74,12 +74,12 @@ void RoomMgr::_CMJoin(f8::MsgHdr& hdr, const cs::CMJoin& msg) inactive_room_hash_[room->room_uuid] = room; room_hash_[room->room_uuid] = room; } - Player* hum = PlayerMgr::Instance()->CreatePlayerByCMJoin(hdr.socket_handle + i * 10, msg); + if (i == 0) { + { + Player* hum = PlayerMgr::Instance()->CreatePlayerByCMJoin(hdr.socket_handle, msg); hum->meta = hum_meta; room->AddPlayer(hum); - if (i == 0) { - { cs::SMJoinedNotify notifymsg; notifymsg.set_error_code(0); room->FillSMJoinedNotify(hum, notifymsg); diff --git a/server/gameserver/types.h b/server/gameserver/types.h index b7d32a1..f176889 100755 --- a/server/gameserver/types.h +++ b/server/gameserver/types.h @@ -8,6 +8,7 @@ struct PerfMonitor long long out_data_size = 0; long long in_data_size = 0; long long read_count = 0; + std::array entity_num = {}; }; namespace MetaData diff --git a/third_party/a8engine b/third_party/a8engine index ff8c006..1cf5fb6 160000 --- a/third_party/a8engine +++ b/third_party/a8engine @@ -1 +1 @@ -Subproject commit ff8c00652d5367595c4adee8f95306ae1a46236b +Subproject commit 1cf5fb6ba3f75c2b949962f9c12b39430c7ae2dc