From d41352e6b07c76ea5debf7925d7636a2e7902b0c Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 13 Mar 2019 14:08:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E9=85=8D=E7=BD=AE=E8=A1=A8?= =?UTF-8?q?=E8=AF=BB=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/metadata.h | 20 ++++++++++ server/gameserver/metamgr.cc | 45 +++++++++++++++++++++- server/tools/protobuild/cs_proto.proto | 51 ++++++++++++++----------- server/tools/protobuild/metatable.proto | 39 ++++++++++++++++++- 4 files changed, 131 insertions(+), 24 deletions(-) diff --git a/server/gameserver/metadata.h b/server/gameserver/metadata.h index 45fbfc4..37e6ed2 100755 --- a/server/gameserver/metadata.h +++ b/server/gameserver/metadata.h @@ -5,4 +5,24 @@ namespace MetaData { + struct Map + { + const metatable::Map* meta = nullptr; + }; + + struct SafeArea + { + const metatable::SafeArea* meta = nullptr; + }; + + struct Item + { + const metatable::Item* meta = nullptr; + }; + + struct Equip + { + const metatable::Equip* meta = nullptr; + }; + } diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index a5bb235..97f9cdb 100755 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -10,15 +10,33 @@ class MetaDataLoader { public: + std::list map_meta_list; + std::list map_list; + std::list safearea_meta_list; + std::list safearea_list; + std::list item_meta_list; + std::list item_list; + std::list equip_meta_list; + std::list equip_list; + + std::map gamemap_hash; + std::map safearea_hash; + std::map item_hash; + std::map equip_hash; void Load() { std::string res_path; - if (getenv("is_dev_env")) { + if (!f8::IsOnlineEnv()) { res_path = a8::Format("/var/data/conf_test/game%d/res/", {GAME_ID}); } else { res_path = "../res/"; } + + f8::ReadCsvMetaFile(res_path + "map@map.csv", map_meta_list); + f8::ReadCsvMetaFile(res_path + "safearea@safearea.csv", safearea_meta_list); + f8::ReadCsvMetaFile(res_path + "item@item.csv", item_meta_list); + f8::ReadCsvMetaFile(res_path + "equip@equip.csv", equip_meta_list); BindToMetaData(); } @@ -26,6 +44,31 @@ private: void BindToMetaData() { + + for (auto& meta : map_meta_list) { + MetaData::Map& item = a8::FastAppend(map_list); + item.meta = &meta; + gamemap_hash[item.meta->map_id()] = &item; + } + + for (auto& meta : safearea_meta_list) { + MetaData::SafeArea& item = a8::FastAppend(safearea_list); + item.meta = &meta; + safearea_hash[item.meta->id()] = &item; + } + + for (auto& meta : item_meta_list) { + MetaData::Item& item = a8::FastAppend(item_list); + item.meta = &meta; + item_hash[item.meta->id()] = &item; + } + + for (auto& meta : equip_meta_list) { + MetaData::Equip& item = a8::FastAppend(equip_list); + item.meta = &meta; + equip_hash[item.meta->id()] = &item; + } + } }; diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index d92dcee..b1d5530 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -93,6 +93,7 @@ message MFGoods optional int32 num = 2; } +//视野 x1 x4 x8 message MFPlug { optional string name = 1; @@ -175,7 +176,7 @@ message MFBuildingFull optional bool ceiling_dead = 5; } -//loot出生点-部分 +//loot出生点-部分 补给箱 message MFLootSpawnerPart { optional int32 obj_uniid = 1; //唯一id @@ -274,7 +275,7 @@ message MFSmokeFull message MFObjectPart { //1:player 2:obstacle 3:building 4:lootspawner 5:loot 6:deadbody 7:decal 8:projectile 9:smoke - optional int32 object_type = 1; + optional int32 type = 1; optional MFPlayerPart union_obj_1 = 2; optional MFObstaclePart union_obj_2 = 3; @@ -309,6 +310,7 @@ message MFPlayerData { optional float boost = 1; + // optional bool has_action = 2; optional float actoin_time = 3; optional float action_duration = 4; @@ -322,12 +324,11 @@ message MFPlayerData // repeated int32 weapons = 16; optional int32 spectator_count = 20; - } message MFGasData { - optional int32 mode = 1; + optional int32 mode = 1; //0:inactive 1:waiting 2:moveing optional float duration = 2; optional MFVector2D pos_old = 3; optional MFVector2D pos_new = 4; @@ -482,31 +483,37 @@ message CMJoin message CMMove { optional int32 seq = 1; //序号 - optional bool move_left = 2; //zzz - optional bool move_right = 3; //zz - optional bool move_up = 4; //zzz - optional bool move_down = 5; //zzz - optional bool shoot_start = 6; //zzz - optional bool shoot_hold = 7; //zzz - optional bool reload = 8; //zzzz - optional bool interaction = 9; //zzz - optional bool equip_primary = 10; //zzz - optional bool equip_secondary = 11; //zz - optional bool equip_throwable = 12; //zz - optional bool equip_melee = 13; //zz - optional bool equip_last = 14; //zz + + optional bool move_left = 2; //移动-左 + optional bool move_right = 3; //移动-右 + optional bool move_up = 4; //移动-上 + optional bool move_down = 5; //移动-下 + optional int32 move_len = 22; //移动-距离 + optional MFVector2D to_move_dir = 24; //移动-方向 + + optional bool shoot_start = 6; //射击-开始 + optional bool shoot_hold = 7; //射击-一直按着 + optional bool reload = 8; //装弹 + + optional bool equip_primary = 10; //装备1 + optional bool equip_secondary = 11; //装备2 + optional bool equip_throwable = 12; //装备3 + optional bool equip_melee = 13; //装备 + optional bool equip_last = 14; //最后使用的装备 + optional bool cancel_action = 15; //zz - optional bool edit_mode = 16; //zz + //optional bool edit_mode = 16; //没用到 optional bool scroll_down = 17; //zzz optional bool scroll_up = 18; //zz optional bool portrait = 19; //zz + optional MFVector2D to_mouse_dir = 20; //zz optional float to_mouse_len = 21; // //use_item //use_scope - optional int32 move_len = 22; //zz - optional int32 interaction_objid = 23; //zz - optional MFVector2D to_move_dir = 24; //移动方向 + + optional bool interaction = 9; //是否有交互 + optional int32 interaction_objid = 23; //交互的对象id } //丢弃道具 @@ -576,7 +583,7 @@ message SMUpdate repeated MFObjectPart part_objects = 3; optional int32 active_player_id = 10; //当前活跃玩家id optional MFPlayerData active_player_data = 11; //活跃玩家数据 - optional int32 alive_count = 15; //存货数量 + optional int32 alive_count = 15; //存活数量 optional int32 gasT = 16; optional MFGasData gas_data = 17; repeated MFTeamData team_data = 18; diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index be93c12..3d395de 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -3,11 +3,48 @@ package metatable; message Map { optional int32 map_id = 1; //地图id + optional int32 width = 2; //地图宽度 + optional int32 height = 3; //地图高度 +} + +message SafeArea +{ + optional int32 id = 1; //id + optional int32 level = 2; //安全区登记 + optional int32 rad = 3; //半径 + optional int32 wait_time = 4; //等待时间 + optional int32 hurt = 5; //伤害/秒 } message Item { - optional int32 item_id = 1; //道具id + optional int32 id = 1; //道具id + optional int32 type = 2; //类型 + optional int32 reward = 3; //使用奖励 + optional int32 price = 4; //购买价格 +} + +message Equip +{ + optional int32 id = 1; //装备id + optional int32 equip_type = 2; //装备类型 + optional int32 equip_subtype = 3; //装备子类型 + optional int32 equip_lv = 4; //装备等级 + optional int32 fire_mode = 5; //开火模式 + optional int32 use_bullet = 6; //使用子弹 + optional int32 clip_volume = 7; //弹夹数量 + optional int32 reload_time = 8; //装弹时间 + optional int32 fire_rate = 9; //武器射速 + optional int32 atk = 10; //攻击力 + optional int32 def = 11; //防御力 + optional int32 explosion_range = 12; //子弹爆炸范围 + optional int32 bullet_speed = 13; //子弹速度 + optional int32 range = 14; //射程 + optional int32 use_time = 15; //使用时间 + optional int32 heal = 16; //瞬间生命恢复 + optional int32 energy = 17; //能量值 + optional int32 number = 18; //视野参数 + optional int32 volume = 19; //装备容量 } message Monster