1
This commit is contained in:
parent
30daad3228
commit
09bcbe9142
@ -207,8 +207,8 @@ void Bullet::RayDetectionUpdate()
|
|||||||
}//end for
|
}//end for
|
||||||
movement->GetCollisionObjects(objects);
|
movement->GetCollisionObjects(objects);
|
||||||
float bullet_range = gun_meta->i->range();
|
float bullet_range = gun_meta->i->range();
|
||||||
if (gun_upgrade_meta && gun_upgrade_meta->attr[EA_ShotRange] > 0) {
|
if (gun_upgrade_meta && gun_upgrade_meta->GetAttrValue(gun_lv, EA_ShotRange) > 0) {
|
||||||
bullet_range += gun_upgrade_meta->attr[EA_ShotRange];
|
bullet_range += gun_upgrade_meta->GetAttrValue(gun_lv, EA_ShotRange);
|
||||||
}
|
}
|
||||||
if (!objects.empty() || distance > bullet_range || distance >= movement->target_distance ||
|
if (!objects.empty() || distance > bullet_range || distance >= movement->target_distance ||
|
||||||
(IsBomb() && meta->i->_inventory_slot() != 4 && distance >= fly_distance)
|
(IsBomb() && meta->i->_inventory_slot() != 4 && distance >= fly_distance)
|
||||||
@ -270,8 +270,8 @@ void Bullet::MapServiceUpdate()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
float bullet_range = gun_meta->i->range();
|
float bullet_range = gun_meta->i->range();
|
||||||
if (gun_upgrade_meta && gun_upgrade_meta->attr[EA_ShotRange] > 0) {
|
if (gun_upgrade_meta && gun_upgrade_meta->GetAttrValue(gun_lv, EA_ShotRange) > 0) {
|
||||||
bullet_range += gun_upgrade_meta->attr[EA_ShotRange];
|
bullet_range += gun_upgrade_meta->GetAttrValue(gun_lv, EA_ShotRange);
|
||||||
}
|
}
|
||||||
if (!objects.empty() || distance > bullet_range ||
|
if (!objects.empty() || distance > bullet_range ||
|
||||||
(IsBomb() && meta->i->_inventory_slot() != 4 && distance >= fly_distance)
|
(IsBomb() && meta->i->_inventory_slot() != 4 && distance >= fly_distance)
|
||||||
|
@ -16,6 +16,7 @@ class MovementComponent;
|
|||||||
class Bullet : public Entity
|
class Bullet : public Entity
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
int gun_lv = 0;
|
||||||
MetaData::Equip* gun_meta = nullptr;
|
MetaData::Equip* gun_meta = nullptr;
|
||||||
MetaData::EquipUpgrade* gun_upgrade_meta = nullptr;
|
MetaData::EquipUpgrade* gun_upgrade_meta = nullptr;
|
||||||
MetaData::Equip* meta = nullptr;
|
MetaData::Equip* meta = nullptr;
|
||||||
|
@ -132,6 +132,14 @@ enum EquipAttr_e
|
|||||||
EA_End
|
EA_End
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum DressAttr_e
|
||||||
|
{
|
||||||
|
DA_Atk = 1,
|
||||||
|
DA_Def = 2,
|
||||||
|
DA_Speed = 3,
|
||||||
|
DA_End
|
||||||
|
};
|
||||||
|
|
||||||
const char* const PROJ_NAME_FMT = "game%d_gameserver";
|
const char* const PROJ_NAME_FMT = "game%d_gameserver";
|
||||||
const char* const PROJ_ROOT_FMT = "/data/logs/%s";
|
const char* const PROJ_ROOT_FMT = "/data/logs/%s";
|
||||||
|
|
||||||
|
@ -226,7 +226,7 @@ void Human::Shot(Vector2D& target_dir)
|
|||||||
if (curr_weapon->meta->i->bullet_angle() >= 0.10f) {
|
if (curr_weapon->meta->i->bullet_angle() >= 0.10f) {
|
||||||
int angle = (int)curr_weapon->meta->i->bullet_angle() * 1000;
|
int angle = (int)curr_weapon->meta->i->bullet_angle() * 1000;
|
||||||
if (curr_weapon->upgrade_meta) {
|
if (curr_weapon->upgrade_meta) {
|
||||||
angle -= curr_weapon->upgrade_meta->attr[EA_BulletAngle] * 1000;
|
angle -= curr_weapon->upgrade_meta->GetAttrValue(curr_weapon->weapon_lv, EA_BulletAngle) * 1000;
|
||||||
}
|
}
|
||||||
if (angle > 0) {
|
if (angle > 0) {
|
||||||
bullet_angle += (rand() % angle) / 1000.0f * (rand() % 2 == 0 ? 1 : -1);
|
bullet_angle += (rand() % angle) / 1000.0f * (rand() % 2 == 0 ? 1 : -1);
|
||||||
@ -1423,13 +1423,13 @@ void Human::RecalcBuff()
|
|||||||
{
|
{
|
||||||
buff = HumanAbility();
|
buff = HumanAbility();
|
||||||
if (skin_jlf_meta) {
|
if (skin_jlf_meta) {
|
||||||
buff.damage_add += skin_jlf_meta->i->atk_add();
|
buff.damage_add += skin_jlf_meta->GetAttrValue(skin_jlf.skin_lv, DA_Atk);
|
||||||
buff.def_add += skin_jlf_meta->i->def_add();
|
buff.def_add += skin_jlf_meta->GetAttrValue(skin_jlf.skin_lv, DA_Def);
|
||||||
buff.speed += skin_jlf_meta->i->speed_add();
|
buff.speed += skin_jlf_meta->GetAttrValue(skin_jlf.skin_lv, DA_Speed);
|
||||||
} else if (skin_meta) {
|
} else if (skin_meta) {
|
||||||
buff.damage_add += skin_meta->i->atk_add();
|
buff.damage_add += skin_meta->GetAttrValue(skin.skin_lv, DA_Atk);
|
||||||
buff.def_add += skin_meta->i->def_add();
|
buff.def_add += skin_meta->GetAttrValue(skin.skin_lv, DA_Def);
|
||||||
buff.speed += skin_meta->i->speed_add();
|
buff.speed += skin_meta->GetAttrValue(skin.skin_lv, DA_Speed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,28 +81,49 @@ namespace MetaData
|
|||||||
|
|
||||||
void EquipUpgrade::Init()
|
void EquipUpgrade::Init()
|
||||||
{
|
{
|
||||||
std::vector<int> attr_type;
|
for (size_t j = 0; j < i->max_lv(); ++j) {
|
||||||
std::vector<float> attr_value;
|
std::array<float, EA_End>& attrs = a8::FastAppend(level_attrs);
|
||||||
|
for (size_t k = 0; k < EA_End; ++k) {
|
||||||
|
attrs[k] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
{
|
{
|
||||||
std::vector<std::string> strings;
|
std::vector<std::string> strings;
|
||||||
a8::Split(i->attr_type(), strings, '|');
|
a8::Split(i->attr_type(), strings, '|');
|
||||||
for (auto& str : strings) {
|
for (auto& str : strings) {
|
||||||
attr_type.push_back(a8::XValue(str).GetInt());
|
std::vector<std::string> strings2;
|
||||||
|
a8::Split(str, strings2, ':');
|
||||||
|
if (strings2.size() != 3) {
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
int attr_type = a8::XValue(strings2[0]);
|
||||||
|
int attr_level = a8::XValue(strings2[1]);
|
||||||
|
float attr_value = a8::XValue(strings2[2]).GetDouble();
|
||||||
|
if (attr_type < EA_End) {
|
||||||
|
if (attr_level >= 0 && attr_level < i->max_lv()) {
|
||||||
|
for (size_t j = 1; j < i->max_lv(); ++j) {
|
||||||
|
if (j % attr_type == 0) {
|
||||||
|
level_attrs[j][attr_type] = attr_value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
}
|
||||||
std::vector<std::string> strings;
|
|
||||||
a8::Split(i->attr_value(), strings, '|');
|
float EquipUpgrade::GetAttrValue(int level, int attr_type)
|
||||||
for (auto& str : strings) {
|
{
|
||||||
attr_value.push_back(a8::XValue(str).GetDouble());
|
if (level < 1) {
|
||||||
}
|
return 0;
|
||||||
}
|
}
|
||||||
assert(attr_type.size() == attr_value.size());
|
if (level > level_attrs.size()) {
|
||||||
for (size_t i = 0; i < attr_type.size(); ++i) {
|
return 0;
|
||||||
if (attr_type[i] < EA_End) {
|
|
||||||
attr[attr_type[i]] = attr_value[i];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if (attr_type < EA_End) {
|
||||||
|
return level_attrs[level][attr_type];
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::Init()
|
void Player::Init()
|
||||||
@ -345,4 +366,51 @@ namespace MetaData
|
|||||||
last_time = a8::XValue(i->last_time()).GetInt();
|
last_time = a8::XValue(i->last_time()).GetInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Dress::Init()
|
||||||
|
{
|
||||||
|
for (size_t j = 0; j < i->max_lv(); ++j) {
|
||||||
|
std::array<float, DA_End>& attrs = a8::FastAppend(level_attrs);
|
||||||
|
for (size_t k = 0; k < DA_End; ++k) {
|
||||||
|
attrs[k] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
std::vector<std::string> strings;
|
||||||
|
a8::Split(i->attr_type(), strings, '|');
|
||||||
|
for (auto& str : strings) {
|
||||||
|
std::vector<std::string> strings2;
|
||||||
|
a8::Split(str, strings2, ':');
|
||||||
|
if (strings2.size() != 3) {
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
int attr_type = a8::XValue(strings2[0]);
|
||||||
|
int attr_level = a8::XValue(strings2[1]);
|
||||||
|
float attr_value = a8::XValue(strings2[2]).GetDouble();
|
||||||
|
if (attr_type < DA_End) {
|
||||||
|
if (attr_level >= 0 && attr_level < i->max_lv()) {
|
||||||
|
for (size_t j = 1; j < i->max_lv(); ++j) {
|
||||||
|
if (j % attr_type == 0) {
|
||||||
|
level_attrs[j][attr_type] = attr_value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
float Dress::GetAttrValue(int level, int attr_type)
|
||||||
|
{
|
||||||
|
if (level < 1) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (level > level_attrs.size()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (attr_type < DA_End) {
|
||||||
|
return level_attrs[level][attr_type];
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -56,8 +56,11 @@ namespace MetaData
|
|||||||
{
|
{
|
||||||
const metatable::EquipUpgrade* i = nullptr;
|
const metatable::EquipUpgrade* i = nullptr;
|
||||||
|
|
||||||
std::array<float, EA_End> attr = {};
|
|
||||||
void Init();
|
void Init();
|
||||||
|
float GetAttrValue(int level, int attr_type);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::vector<std::array<float, EA_End>> level_attrs;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Player
|
struct Player
|
||||||
@ -149,7 +152,13 @@ namespace MetaData
|
|||||||
struct Dress
|
struct Dress
|
||||||
{
|
{
|
||||||
const metatable::Dress* i = nullptr;
|
const metatable::Dress* i = nullptr;
|
||||||
};
|
|
||||||
|
void Init();
|
||||||
|
float GetAttrValue(int level, int attr_type);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::vector<std::array<float, DA_End>> level_attrs;
|
||||||
|
};
|
||||||
|
|
||||||
struct RankReward
|
struct RankReward
|
||||||
{
|
{
|
||||||
|
@ -58,11 +58,11 @@ public:
|
|||||||
std::map<int, MetaData::Drop*> drop_hash;
|
std::map<int, MetaData::Drop*> drop_hash;
|
||||||
std::map<std::string, std::list<metatable::MapTplThingJson>> maptpl_meta_hash;
|
std::map<std::string, std::list<metatable::MapTplThingJson>> maptpl_meta_hash;
|
||||||
std::map<std::string, std::vector<MetaData::MapTplThing>> maptpl_hash;
|
std::map<std::string, std::vector<MetaData::MapTplThing>> maptpl_hash;
|
||||||
std::map<long long, MetaData::Dress*> dress_hash;
|
std::map<int, MetaData::Dress*> dress_hash;
|
||||||
std::map<int, MetaData::Skill*> skill_hash;
|
std::map<int, MetaData::Skill*> skill_hash;
|
||||||
std::map<int, MetaData::RankReward*> rankreward_hash;
|
std::map<int, MetaData::RankReward*> rankreward_hash;
|
||||||
std::map<int, MetaData::KillReward*> killreward_hash;
|
std::map<int, MetaData::KillReward*> killreward_hash;
|
||||||
std::map<long long, MetaData::EquipUpgrade*> equipupgrade_hash;
|
std::map<int, MetaData::EquipUpgrade*> equipupgrade_hash;
|
||||||
std::map<int, MetaData::Robot*> robot_hash;
|
std::map<int, MetaData::Robot*> robot_hash;
|
||||||
|
|
||||||
void Load()
|
void Load()
|
||||||
@ -232,15 +232,7 @@ private:
|
|||||||
for (auto& meta : dress_meta_list) {
|
for (auto& meta : dress_meta_list) {
|
||||||
MetaData::Dress& item = a8::FastAppend(dress_list);
|
MetaData::Dress& item = a8::FastAppend(dress_list);
|
||||||
item.i = &meta;
|
item.i = &meta;
|
||||||
dress_hash[a8::MakeInt64(item.i->id(),
|
dress_hash[item.i->id()] = &item;
|
||||||
item.i->level()
|
|
||||||
)] = &item;
|
|
||||||
}
|
|
||||||
for (auto& meta : dress_meta_list) {
|
|
||||||
MetaData::Dress* dress_meta = MetaMgr::Instance()->GetDress(meta.id(), 1);
|
|
||||||
if (dress_meta) {
|
|
||||||
meta.set_skill_id(dress_meta->i->skill_id());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto& meta : skill_meta_list) {
|
for (auto& meta : skill_meta_list) {
|
||||||
@ -265,7 +257,7 @@ private:
|
|||||||
for (auto& meta : equipupgrade_meta_list) {
|
for (auto& meta : equipupgrade_meta_list) {
|
||||||
MetaData::EquipUpgrade& item = a8::FastAppend(equipupgrade_list);
|
MetaData::EquipUpgrade& item = a8::FastAppend(equipupgrade_list);
|
||||||
item.i = &meta;
|
item.i = &meta;
|
||||||
equipupgrade_hash[a8::MakeInt64(meta.id(), meta.level())] = &item;
|
equipupgrade_hash[meta.id()] = &item;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto& meta : robot_meta_list) {
|
for (auto& meta : robot_meta_list) {
|
||||||
@ -350,9 +342,9 @@ MetaData::Equip* MetaMgr::GetEquipBySlotId(int slot_id)
|
|||||||
return itr != loader_->equip_slot_hash.end() ? itr->second : nullptr;
|
return itr != loader_->equip_slot_hash.end() ? itr->second : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
MetaData::EquipUpgrade* MetaMgr::GetEquipUpgrade(int equip_id, int equip_lv)
|
MetaData::EquipUpgrade* MetaMgr::GetEquipUpgrade(int equip_id)
|
||||||
{
|
{
|
||||||
auto itr = loader_->equipupgrade_hash.find(a8::MakeInt64(equip_id, equip_lv));
|
auto itr = loader_->equipupgrade_hash.find(equip_id);
|
||||||
return itr != loader_->equipupgrade_hash.end() ? itr->second : nullptr;
|
return itr != loader_->equipupgrade_hash.end() ? itr->second : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -399,9 +391,9 @@ MetaData::Skill* MetaMgr::GetSkill(int skill_id)
|
|||||||
return itr != loader_->skill_hash.end() ? itr->second : nullptr;
|
return itr != loader_->skill_hash.end() ? itr->second : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
MetaData::Dress* MetaMgr::GetDress(int dress_id, int level)
|
MetaData::Dress* MetaMgr::GetDress(int dress_id)
|
||||||
{
|
{
|
||||||
auto itr = loader_->dress_hash.find(a8::MakeInt64(dress_id, level));
|
auto itr = loader_->dress_hash.find(dress_id);
|
||||||
return itr != loader_->dress_hash.end() ? itr->second : nullptr;
|
return itr != loader_->dress_hash.end() ? itr->second : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ class MetaMgr : public a8::Singleton<MetaMgr>
|
|||||||
MetaData::Player* GetPlayer(int id);
|
MetaData::Player* GetPlayer(int id);
|
||||||
MetaData::Equip* GetEquip(int id);
|
MetaData::Equip* GetEquip(int id);
|
||||||
MetaData::Equip* GetEquipBySlotId(int slot_id);
|
MetaData::Equip* GetEquipBySlotId(int slot_id);
|
||||||
MetaData::EquipUpgrade* GetEquipUpgrade(int equip_id, int equip_lv);
|
MetaData::EquipUpgrade* GetEquipUpgrade(int equip_id);
|
||||||
MetaData::Building* GetBuilding(int building_id);
|
MetaData::Building* GetBuilding(int building_id);
|
||||||
MetaData::Drop* GetDrop(int drop_id);
|
MetaData::Drop* GetDrop(int drop_id);
|
||||||
MetaData::SafeArea* GetSafeArea(int area_id);
|
MetaData::SafeArea* GetSafeArea(int area_id);
|
||||||
@ -32,7 +32,7 @@ class MetaMgr : public a8::Singleton<MetaMgr>
|
|||||||
std::list<MetaData::AirDrop>& GetAirDrops();
|
std::list<MetaData::AirDrop>& GetAirDrops();
|
||||||
MetaData::AirLine* RandAirLine();
|
MetaData::AirLine* RandAirLine();
|
||||||
MetaData::Skill* GetSkill(int skill_id);
|
MetaData::Skill* GetSkill(int skill_id);
|
||||||
MetaData::Dress* GetDress(int dress_id, int level);
|
MetaData::Dress* GetDress(int dress_id);
|
||||||
float GetRankRewardParam(int rank);
|
float GetRankRewardParam(int rank);
|
||||||
float GetKillRewardParam(int kill_num);
|
float GetKillRewardParam(int kill_num);
|
||||||
std::vector<MetaData::Robot>* GetRobotList();
|
std::vector<MetaData::Robot>* GetRobotList();
|
||||||
|
@ -32,7 +32,7 @@ void Player::Initialize()
|
|||||||
Human::Initialize();
|
Human::Initialize();
|
||||||
health = meta->i->health();
|
health = meta->i->health();
|
||||||
max_energy_shield = energy_shield;
|
max_energy_shield = energy_shield;
|
||||||
skin_meta = MetaMgr::Instance()->GetDress(SkinId(), SkinLv());
|
skin_meta = MetaMgr::Instance()->GetDress(SkinId());
|
||||||
if (skin_meta) {
|
if (skin_meta) {
|
||||||
skill_meta = MetaMgr::Instance()->GetSkill(skin_meta->i->skill_id());
|
skill_meta = MetaMgr::Instance()->GetSkill(skin_meta->i->skill_id());
|
||||||
} else {
|
} else {
|
||||||
@ -341,7 +341,7 @@ void Player::Shot()
|
|||||||
if (curr_weapon->meta->i->bullet_angle() >= 0.01f) {
|
if (curr_weapon->meta->i->bullet_angle() >= 0.01f) {
|
||||||
int angle = (int)curr_weapon->meta->i->bullet_angle() * 1000;
|
int angle = (int)curr_weapon->meta->i->bullet_angle() * 1000;
|
||||||
if (curr_weapon->upgrade_meta) {
|
if (curr_weapon->upgrade_meta) {
|
||||||
angle -= curr_weapon->upgrade_meta->attr[EA_BulletAngle] * 1000;
|
angle -= curr_weapon->upgrade_meta->GetAttrValue(curr_weapon->weapon_lv, EA_BulletAngle) * 1000;
|
||||||
}
|
}
|
||||||
if (angle > 0) {
|
if (angle > 0) {
|
||||||
bullet_angle += (rand() % angle) / 1000.0f * (rand() % 2 == 0 ? 1 : -1);
|
bullet_angle += (rand() % angle) / 1000.0f * (rand() % 2 == 0 ? 1 : -1);
|
||||||
@ -552,7 +552,7 @@ void Player::LootInteraction(Loot* entity)
|
|||||||
}
|
}
|
||||||
skin_jlf.skin_id = entity->item_id;
|
skin_jlf.skin_id = entity->item_id;
|
||||||
skin_jlf.skin_lv = std::max(1, GetSkinConfigLv(skin_jlf.skin_id));
|
skin_jlf.skin_lv = std::max(1, GetSkinConfigLv(skin_jlf.skin_id));
|
||||||
skin_jlf_meta = MetaMgr::Instance()->GetDress(skin_jlf.skin_id, skin_jlf.skin_lv);
|
skin_jlf_meta = MetaMgr::Instance()->GetDress(skin_jlf.skin_id);
|
||||||
if (skin_jlf_meta) {
|
if (skin_jlf_meta) {
|
||||||
skill_meta = MetaMgr::Instance()->GetSkill(skin_jlf_meta->i->skill_id());
|
skill_meta = MetaMgr::Instance()->GetSkill(skin_jlf_meta->i->skill_id());
|
||||||
} else {
|
} else {
|
||||||
|
@ -13,15 +13,13 @@ void Weapon::ToPB(cs::MFWeapon* pb_obj)
|
|||||||
|
|
||||||
void Weapon::Recalc()
|
void Weapon::Recalc()
|
||||||
{
|
{
|
||||||
upgrade_meta = MetaMgr::Instance()->GetEquipUpgrade(weapon_id,
|
upgrade_meta = MetaMgr::Instance()->GetEquipUpgrade(weapon_id);
|
||||||
weapon_lv);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int Weapon::GetClipVolume()
|
int Weapon::GetClipVolume()
|
||||||
{
|
{
|
||||||
if (upgrade_meta) {
|
if (upgrade_meta) {
|
||||||
return meta->i->clip_volume() + upgrade_meta->attr[EA_Volume];
|
return meta->i->clip_volume() + upgrade_meta->GetAttrValue(weapon_lv, EA_Volume);
|
||||||
} else {
|
} else {
|
||||||
return meta->i->clip_volume();
|
return meta->i->clip_volume();
|
||||||
}
|
}
|
||||||
|
@ -85,10 +85,8 @@ message Equip
|
|||||||
message EquipUpgrade
|
message EquipUpgrade
|
||||||
{
|
{
|
||||||
optional int32 id = 1;
|
optional int32 id = 1;
|
||||||
optional int32 level = 2;
|
|
||||||
optional int32 next_level = 3;
|
|
||||||
optional string attr_type = 4;
|
optional string attr_type = 4;
|
||||||
optional string attr_value = 5;
|
optional int32 max_lv = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Player
|
message Player
|
||||||
@ -157,9 +155,8 @@ message Dress
|
|||||||
optional int32 id = 1;
|
optional int32 id = 1;
|
||||||
optional int32 level = 2;
|
optional int32 level = 2;
|
||||||
optional int32 skill_id = 3;
|
optional int32 skill_id = 3;
|
||||||
optional int32 atk_add = 10;
|
optional string attr_type = 4;
|
||||||
optional int32 def_add = 11;
|
optional int32 max_lv = 5;
|
||||||
optional int32 speed_add = 12;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message RankReward
|
message RankReward
|
||||||
|
Loading…
x
Reference in New Issue
Block a user