From 3ad1dda451a77b2b280537dce1c5632adf1fe376 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 20 Mar 2019 15:00:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90gm=E5=B7=A5=E5=85=B7=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/bin/gmtool.sh | 5 +++++ server/gameserver/app.cc | 5 +++++ server/gameserver/human.h | 1 + server/gameserver/metamgr.cc | 2 +- server/gameserver/playermgr.cc | 1 + server/gameserver/room.cc | 19 ++++++++++++++++++- server/gameserver/room.h | 1 + server/gameserver/roommgr.cc | 6 ++---- server/tools/protobuild/cs_proto.proto | 1 - server/tools/protobuild/metatable.proto | 2 -- server/tools/robot/virtualclient/robot3.py | 7 ++----- 11 files changed, 36 insertions(+), 14 deletions(-) create mode 100755 server/bin/gmtool.sh diff --git a/server/bin/gmtool.sh b/server/bin/gmtool.sh new file mode 100755 index 0000000..d3050ab --- /dev/null +++ b/server/bin/gmtool.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +cd ../tools/robot/virtualclient +python robot3.py ws://192.168.100.21:7101 hao1069 hao1069 $1 + diff --git a/server/gameserver/app.cc b/server/gameserver/app.cc index 04a1438..50b4459 100755 --- a/server/gameserver/app.cc +++ b/server/gameserver/app.cc @@ -94,6 +94,7 @@ void App::Init(int argc, char* argv[]) uuid.SetMachineId(instance_id); PlayerMgr::Instance()->Init(); RoomMgr::Instance()->Init(); + GGListener::Instance()->Init(); a8::UdpLog::Instance()->Info("gameserver starting instance_id:%d pid:%d", {instance_id, getpid()}); { @@ -115,6 +116,7 @@ void App::UnInit() if (terminated) { return; } + GGListener::Instance()->Init(); RoomMgr::Instance()->UnInit(); PlayerMgr::Instance()->UnInit(); MetaMgr::Instance()->UnInit(); @@ -350,6 +352,9 @@ void App::ProcessGameGateMsg(f8::MsgHdr& hdr) ProcessNetMsg(handler, PlayerMgr::Instance(), hdr); #endif break; + case HID_RoomMgr: + ProcessNetMsg(handler, RoomMgr::Instance(), hdr); + break; case HID_Player: { #if 0 diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 723e733..68cc99e 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -26,6 +26,7 @@ class Human : public Entity MetaData::Equip* chest_meta = nullptr; MetaData::Equip* weapon_meta = nullptr; + std::string name; float health = 0.0; bool dead = false; bool downed = false; diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index d29bb21..da5d6f7 100755 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -34,7 +34,7 @@ public: { std::string res_path; if (!f8::IsOnlineEnv()) { - res_path = a8::Format("/var/data/conf_test/game%d/res/", {GAME_ID}); + res_path = a8::Format("/var/data/conf_test/game%d/gameserver/res/", {GAME_ID}); } else { res_path = "../res/"; } diff --git a/server/gameserver/playermgr.cc b/server/gameserver/playermgr.cc index d312984..e32c94a 100644 --- a/server/gameserver/playermgr.cc +++ b/server/gameserver/playermgr.cc @@ -30,6 +30,7 @@ Player* PlayerMgr::CreatePlayerByCMJoin(unsigned short obj_uniid, const cs::CMJo Player* hum = new Player(); hum->entity_uniid = obj_uniid; hum->account_id = msg.account_id(); + hum->name = msg.name(); hum->health = 100; hum->team_uniid = msg.team_uuid(); hum->team_mode = msg.team_mode(); diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index ba4c1b0..99b6641 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -69,7 +69,7 @@ void Room::AddPlayer(Player* hum) unsigned short Room::AllocUniid() { - while (GetEntityByUniId(++current_uniid)) {} + while (GetEntityByUniId(++current_uniid) || current_uniid == 0) {} return current_uniid; } @@ -82,6 +82,7 @@ void Room::ShuaAndroid() } for (int i = 0; i < 30; ++i) { Android* hum = new Android(); + hum->name = a8::Format("机器人%d", {i+1}); hum->meta = hum_meta; hum->entity_uniid = AllocUniid(); hum->pos.x = 100 + rand() % 400; @@ -165,3 +166,19 @@ void Room::AddDeletedObject(unsigned short obj_uniid) { frame_data.deleted_objects.insert(obj_uniid); } + +void Room::FillSMJoinedNotify(Player* self_hum, cs::SMJoinedNotify& msg) +{ + msg.set_team_mode(msg.team_mode()); + msg.set_player_id(self_hum->entity_uniid); + msg.set_started(false); + for (auto& pair : uniid_hash_) { + if (pair.second->entity_type == ET_Player) { + Human* hum = (Human*)pair.second; + cs::MFPlayerInfo* info = msg.add_player_infos(); + info->set_player_id(hum->entity_uniid); + info->set_team_id(hum->team_id); + info->set_name(hum->name); + } + } +} diff --git a/server/gameserver/room.h b/server/gameserver/room.h index a836e69..d61e37e 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -47,6 +47,7 @@ public: Human* FindEnemy(Human* hum); void CollisionDetection(Entity* sender, int detection_flags, std::vector objects); void AddDeletedObject(unsigned short obj_uniid); + void FillSMJoinedNotify(Player* self_hum, cs::SMJoinedNotify& msg); private: unsigned short current_uniid = 0; diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index 2344575..db60f16 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -38,7 +38,7 @@ void RoomMgr::_CMJoin(f8::MsgHdr& hdr, const cs::CMJoin& msg) if (!room) { room = new Room(); room->room_uuid = App::Instance()->NewUuid(); - assert(GetRoomByUuid(room->room_uuid)); + assert(!GetRoomByUuid(room->room_uuid)); if (GetRoomByUuid(room->room_uuid)) { abort(); } @@ -55,9 +55,7 @@ void RoomMgr::_CMJoin(f8::MsgHdr& hdr, const cs::CMJoin& msg) { cs::SMJoinedNotify notifymsg; - notifymsg.set_team_mode(msg.team_mode()); - notifymsg.set_player_id(hum->entity_uniid); - notifymsg.set_started(false); + room->FillSMJoinedNotify(hum, notifymsg); GGListener::Instance()->SendToClient(hdr.socket_handle, hdr.seqid, notifymsg); } { diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 58ad290..83e71d9 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -553,7 +553,6 @@ message SMMapInfo optional int32 map_id = 1; //地图id optional int32 width = 2; //地图宽度 optional int32 height = 3; //地图高度 - optional int32 seed = 4; //没用到 repeated MFMapObject objects = 6; //地图对象 } diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index 91f3e3c..3766929 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -27,8 +27,6 @@ message Item { optional int32 id = 1; //道具id optional int32 type = 2; //类型 - optional int32 reward = 3; //使用奖励 - optional int32 price = 4; //购买价格 } message Equip diff --git a/server/tools/robot/virtualclient/robot3.py b/server/tools/robot/virtualclient/robot3.py index 539cef1..ba6ede3 100644 --- a/server/tools/robot/virtualclient/robot3.py +++ b/server/tools/robot/virtualclient/robot3.py @@ -119,8 +119,6 @@ def onUserPacket(ws, msgid, msgbody): print(str(msg),) print('}') print('') - if msgid == cs_msgid_pb2._SMTestAward: - print(msg.default_123456) except Exception as e: print('onUserPacket', e) @@ -137,11 +135,10 @@ def opOpen (ws): global g_account_id global g_session_id global g_server_id - msg = cs_proto_pb2.CMLogin() + msg = cs_proto_pb2.CMJoin() msg.server_id = int(g_server_id) msg.account_id = g_account_id - msg.session_id = getSession(g_account_id) - msg.device_id = '123456' + msg.name = "测试" print(msg.DESCRIPTOR.name, 'zzzzz') sendMsg(ws, msg) while True: