diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index fb17097..826bc27 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -270,8 +270,8 @@ void Human::FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data if (vip_lv != 0) { p->set_vip_lv(vip_lv); } - if (head != 0) { - p->set_head(head); + if (head_frame != 0) { + p->set_head_frame(head_frame); } if (sex != 0) { p->set_sex(sex); @@ -400,8 +400,8 @@ void Human::FillMFPlayerStats(cs::MFPlayerStats* stats_pb) if (vip_lv != 0) { stats_pb->set_vip_lv(vip_lv); } - if (head != 0) { - stats_pb->set_head(head); + if (head_frame != 0) { + stats_pb->set_head_frame(head_frame); } if (sex != 0) { stats_pb->set_sex(sex); @@ -500,8 +500,8 @@ void Human::FillMFTeamData(Human* hum, cs::MFTeamData* team_data, bool is_game_o if (vip_lv != 0) { team_data->set_vip_lv(vip_lv); } - if (head != 0) { - team_data->set_head(head); + if (head_frame != 0) { + team_data->set_head_frame(head_frame); } if (sex != 0) { team_data->set_sex(sex); diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 702098f..3b44b62 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -128,7 +128,7 @@ class Human : public Creature long long user_value3 = 0; long long guild_id = 0; int vip_lv = 0; - int head = 0; + int head_frame = 0; int sex = 0; std::string user_data; long long last_cmmove_frameno = 0; diff --git a/server/gameserver/matchteam.cc b/server/gameserver/matchteam.cc index 28ad946..e1f3a40 100644 --- a/server/gameserver/matchteam.cc +++ b/server/gameserver/matchteam.cc @@ -24,7 +24,7 @@ void RawTeamMember::FillMFMatchTeamMember(cs::MFMatchTeamMember* p) } p->set_is_leader(is_leader); p->set_state(state); - p->set_head(msg.head()); + p->set_head_frame(msg.head_frame()); p->set_hero_skin(msg.hero_skin()); } @@ -37,6 +37,7 @@ void RawTeamMember::InitRobot() std::set refreshed_robot_set; robot_meta = MetaMgr::Instance()->RandRobot(refreshed_robot_set); if (robot_meta) { + msg.set_avatar_url(a8::Format("%s", {50001 + (robot_meta->i->id() % 3)})); #if 1 msg.set_hero_id(30100 + 100 * (robot_meta->i->id() % 3)); #else @@ -51,7 +52,7 @@ void RawTeamMember::InitRobot() { MetaData::Player* hero_meta = MetaMgr::Instance()->GetPlayer(msg.hero_id()); if (hero_meta) { - MetaData::PlayerSkin* skin_meta = MetaMgr::Instance()->GetPlayerSkin(hero_meta->i->skinlist()); + MetaData::Item* skin_meta = MetaMgr::Instance()->GetHeroSkin(msg.hero_id()); if (skin_meta) { msg.set_hero_skin(skin_meta->i->id()); } diff --git a/server/gameserver/metadata.cc b/server/gameserver/metadata.cc index 7b933c8..7d5b545 100644 --- a/server/gameserver/metadata.cc +++ b/server/gameserver/metadata.cc @@ -642,11 +642,6 @@ namespace MetaData return 0; } - void PlayerSkin::Init() - { - - } - void Robot::Init() { { @@ -1550,4 +1545,9 @@ namespace MetaData } } + void Item::Init() + { + + } + } diff --git a/server/gameserver/metadata.h b/server/gameserver/metadata.h index 019d679..cd5c70f 100644 --- a/server/gameserver/metadata.h +++ b/server/gameserver/metadata.h @@ -84,6 +84,8 @@ namespace MetaData struct Item { const metatable::Item* i = nullptr; + + void Init(); }; struct Buff; @@ -138,13 +140,6 @@ namespace MetaData int RandDrop(); }; - struct PlayerSkin - { - const metatable::PlayerSkin* i = nullptr; - - void Init(); - }; - struct Robot { const metatable::Robot* i = nullptr; diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index be2f5dd..7030ed6 100644 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -153,8 +153,6 @@ public: std::list equip_list; std::list player_meta_list; std::list player_list; - std::list playerskin_meta_list; - std::list playerskin_list; std::list mapthing_meta_list; std::list mapthing_list; std::list building_meta_list; @@ -201,10 +199,10 @@ public: std::map safearea_type_hash; std::map> safearea_pos_hash; std::map item_hash; + std::map item_heroskin_hash; std::map equip_hash; std::map equip_slot_hash; std::map player_hash; - std::map playerskin_hash; std::map mapthing_hash; std::map building_hash; std::map drop_hash; @@ -262,7 +260,6 @@ public: f8::ReadCsvMetaFile(res_path + "buff@buff.csv", buff_meta_list); f8::ReadCsvMetaFile(res_path + "equip@equip.csv", equip_meta_list); f8::ReadCsvMetaFile(res_path + "player@player.csv", player_meta_list); - f8::ReadCsvMetaFile(res_path + "playerskin@playerskin.csv", playerskin_meta_list); f8::ReadCsvMetaFile(res_path + "mapThing@mapThing.csv", mapthing_meta_list); f8::ReadCsvMetaFile(res_path + "drop@drop.csv", drop_meta_list); f8::ReadCsvMetaFile(res_path + "airdrop@airdrop.csv", airdrop_meta_list); @@ -732,7 +729,11 @@ private: for (auto& meta : item_meta_list) { MetaData::Item& item = a8::FastAppend(item_list); item.i = &meta; + item.Init(); item_hash[item.i->id()] = &item; + if (meta.playerid()) { + item_heroskin_hash[item.i->playerid()] = &item; + } } for (auto& meta : equip_meta_list) { @@ -766,13 +767,6 @@ private: player_hash[item.i->id()] = &item; } - for (auto& meta : playerskin_meta_list) { - MetaData::PlayerSkin& item = a8::FastAppend(playerskin_list); - item.i = &meta; - item.Init(); - playerskin_hash[item.i->id()] = &item; - } - for (auto& meta : mapthing_meta_list) { MetaData::MapThing& item = a8::FastAppend(mapthing_list); item.i = &meta; @@ -978,18 +972,6 @@ MetaData::Player* MetaMgr::GetPlayer(int id) return itr != loader_->player_hash.end() ? itr->second : nullptr; } -MetaData::PlayerSkin* MetaMgr::GetPlayerSkin(int id) -{ - auto itr = loader_->playerskin_hash.find(id); - return itr != loader_->playerskin_hash.end() ? itr->second : nullptr; -} - -std::shared_ptr> MetaMgr::GetHeroSkins(int hero_id) -{ - std::shared_ptr> p; - return p; -} - MetaData::Equip* MetaMgr::GetEquip(int id) { auto itr = loader_->equip_hash.find(id); @@ -1239,4 +1221,15 @@ MetaData::GunTalentGrow* MetaMgr::GetTalent(int talent_id, int talent_lv) { auto itr = loader_->talent_hash.find(a8::MakeInt64(talent_id, talent_lv)); return itr != loader_->talent_hash.end() ? itr->second.get() : nullptr; + +MetaData::Item* MetaMgr::GetItem(int id) +{ + auto itr = loader_->item_hash.find(id); + return itr != loader_->item_hash.end() ? itr->second : nullptr; +} + +MetaData::Item* MetaMgr::GetHeroSkin(int hero_id) +{ + auto itr = loader_->item_heroskin_hash.find(hero_id); + return itr != loader_->item_heroskin_hash.end() ? itr->second : nullptr; } diff --git a/server/gameserver/metamgr.h b/server/gameserver/metamgr.h index fec06c7..0a320f7 100644 --- a/server/gameserver/metamgr.h +++ b/server/gameserver/metamgr.h @@ -25,11 +25,11 @@ class MetaMgr : public a8::Singleton std::list* GetMaps(); MetaData::MapThing* GetMapThing(int mapthing_id); MetaData::Player* GetPlayer(int id); - MetaData::PlayerSkin* GetPlayerSkin(int id); - std::shared_ptr> GetHeroSkins(int hero_id); MetaData::Equip* GetEquip(int id); MetaData::Equip* GetEquipBySlotId(int slot_id); MetaData::EquipUpgrade* GetEquipUpgrade(int equip_id); + MetaData::Item* GetItem(int id); + MetaData::Item* GetHeroSkin(int id); MetaData::Building* GetBuilding(int building_id); MetaData::Drop* GetDrop(int drop_id); MetaData::SafeArea* GetSafeArea(int area_id); diff --git a/server/gameserver/playermgr.cc b/server/gameserver/playermgr.cc index f9146b2..a022daf 100644 --- a/server/gameserver/playermgr.cc +++ b/server/gameserver/playermgr.cc @@ -83,7 +83,7 @@ Player* PlayerMgr::CreatePlayerByCMJoin(Player* hum, hum->user_value3 = msg.user_value3(); hum->guild_id = msg.guild_id(); hum->vip_lv = msg.vip_lv(); - hum->head = msg.head(); + hum->head_frame = msg.head_frame(); hum->sex = msg.sex(); hum->user_data = msg.user_data(); for (auto& weapon : msg.weapons()) { diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 0ee6a1f..10f6481 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -265,7 +265,7 @@ message MFPlayerFull optional int32 killer_id = 33; //杀手id(自杀时为自己) 特殊id: -1:倒在安全区 optional int32 vip_lv = 35 [default = 0]; //vip等级 - optional int32 head = 36 [default = 0]; //头像框 + optional int32 head_frame = 36 [default = 0]; //头像框 optional int32 sex = 37 [default = 0]; //性别 repeated MFSkill skill_list = 38; //技能列表 @@ -645,7 +645,7 @@ message MFTeamData optional int64 user_value3 = 33; //对应好友系统的user_value3 optional int64 guild_id = 34; //公会id optional int32 vip_lv = 35 [default = 0]; //等级 - optional int32 head = 36 [default = 0]; //头像框 + optional int32 head_frame = 36 [default = 0]; //头像框 optional int32 sex = 37 [default = 0]; //性别 } @@ -739,7 +739,7 @@ message MFPlayerStats optional int32 rescue_guild_member = 23; //救起公会成员次数 optional int32 vip_lv = 35 [default = 0]; //等级 - optional int32 head = 36 [default = 0]; //头像框 + optional int32 head_frame = 36 [default = 0]; //头像框 optional int32 sex = 37 [default = 0]; //性别 optional int32 charid = 38; //人物id optional int32 team_id = 39; //tamid @@ -885,7 +885,7 @@ message MFMatchTeamMember repeated MFPair skill_list = 7; //技能列表 key:技能id value:预留给之后扩展,目前传0就行 optional bool is_leader = 8; //是否队长 optional int32 state = 9; //0:准备 1:已准备 - optional int32 head = 10; //头像框 + optional int32 head_frame = 10; //头像框 repeated int32 baseskin = 11; //皮肤id optional int32 hero_skin = 12; //英雄皮肤 } @@ -938,7 +938,7 @@ message CMJoin optional int64 user_value3 = 33; //对应好友系统的user_value3 optional int64 guild_id = 34; //公会id optional int32 vip_lv = 35 [default = 0]; //等级 - optional int32 head = 36 [default = 0]; //头像框 + optional int32 head_frame = 36 [default = 0]; //头像框 optional int32 sex = 37 [default = 0]; //性别 optional bool force_entry_newbie_room = 50; //是否强制进新手房 repeated MFTeamMember team_members = 51; //包括自己 @@ -947,6 +947,7 @@ message CMJoin repeated MFPair skill_list = 54; //技能列表 key:技能id value:预留给之后扩展,目前传0就行 optional string user_data = 60 [default = ""]; //用户自定义数据 optional int32 hero_id = 61; //英雄id + repeated MFPair talent_list = 64; //天赋列表 key:天赋id value:天赋等级 /* 是否显示队伍界面(回传getSwitch返回的结果) 1:显示队伍界面 diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index 1f96c90..37d832c 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -118,7 +118,14 @@ message SafeAreaPos message Item { - optional int32 id = 1; //道具id + optional int32 id = 1; + optional int32 type = 2; + optional int32 sub_type = 3; + optional int32 quality = 4; + optional int32 use = 5; + optional int32 skinid = 6; + optional int32 isdefaultskin = 7; + optional int32 playerid = 8; } message Equip @@ -230,14 +237,6 @@ message Player optional int32 skinlist = 48; } -message PlayerSkin -{ - optional int32 id = 1; - optional int32 itemid = 2; - optional int32 playerid = 3; - optional int32 skinid = 4; -} - message Robot { optional int32 id = 1;