From 308a1e72f3367c25ad8f4a67988b8f479a67c57c Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 16 Apr 2019 11:28:22 +0800 Subject: [PATCH] ok --- server/gameserver/human.cc | 11 +++++++++++ server/gameserver/human.h | 1 + server/gameserver/player.cc | 10 ++++++---- server/tools/protobuild/cs_proto.proto | 3 +-- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 034d477..0349b56 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -109,6 +109,17 @@ void Human::FillMFPlayerStats(cs::MFPlayerStats* stats_pb) stats_pb->set_account_id(account_id); } +void Human::FillMFTeamData(cs::MFTeamData* team_data) +{ + team_data->set_player_id(entity_uniid); + pos.ToPB(team_data->mutable_pos()); + attack_dir.ToPB(team_data->mutable_dir()); + team_data->set_health(health); + team_data->set_disconnected(false); + team_data->set_dead(dead); + team_data->set_downed(downed); +} + void Human::Shot(Vector2D& target_dir) { if (!curr_weapon->meta) { diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 3dc2e4b..9645b1e 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -84,6 +84,7 @@ class Human : public Entity virtual void FillMFObjectPart(cs::MFObjectPart* part_data) override; virtual void FillMFObjectFull(cs::MFObjectFull* full_data) override; virtual void FillMFPlayerStats(cs::MFPlayerStats* stats); + void FillMFTeamData(cs::MFTeamData* team_data); void Shot(Vector2D& target_dir); void RecalcSelfCollider(); bool IsCollision(); diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 8620665..dc78a3f 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -931,12 +931,14 @@ void Player::MakeUpdateMsg() } } } - if (need_sync_team_data) { + if (need_sync_team_data && team_members) { + for (auto& itr : *team_members) { + if (itr != this) { + itr->FillMFTeamData(update_msg->add_team_data()); + } + } need_sync_team_data = false; } - if (need_sync_teammate_data) { - need_sync_teammate_data = false; - } if (send_update_msg_times == 0) { room->FetchBuilding(this); } diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 3bce2bf..96e1df1 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -614,8 +614,7 @@ message SMUpdate optional int32 gas_progress = 16; //毒圈进度,表示缩进的像素数(只有当gas_data.mode == moving时才会发进度) optional MFVector2D gas_pos_old = 30; //毒圈当前圆心坐标 optional MFGasData gas_data = 17; //毒圈数据 - repeated MFTeamData team_data = 18; //活跃玩家队伍数据 - optional MFTeammateInfo teammate_data = 19; //同队队友数据(自己的队友数据) + repeated MFTeamData team_data = 18; //队伍数据 repeated MFBullet bullets = 20; //子弹 repeated MFShot shots = 21; //射击 repeated MFExplosion explosions = 22; //爆炸