添加rankreward读表
This commit is contained in:
parent
7721416323
commit
e1ac7b4f58
@ -107,7 +107,7 @@ void Bullet::OnHit(std::set<Entity*>& objects)
|
||||
float dmg = gun_meta->i->atk() * (1 + player->buff.damage_add);
|
||||
float def = hum->def + hum->buff.def_add;
|
||||
float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K);
|
||||
player->stats.damage_amount += finaly_dmg;
|
||||
player->stats.damage_amount_out += finaly_dmg;
|
||||
hum->DecHP(finaly_dmg, player->entity_uniid, player->name);
|
||||
if (a8::HasBitFlag(hum->status, HS_ReflectDamage) && hum->skill_meta) {
|
||||
float reflect_dmg = finaly_dmg * hum->skill_meta->i->value1();
|
||||
@ -125,7 +125,7 @@ void Bullet::OnHit(std::set<Entity*>& objects)
|
||||
float dmg = gun_meta->i->atk() * (1 + player->buff.damage_add);
|
||||
float def = 0;
|
||||
float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K);
|
||||
player->stats.damage_amount += finaly_dmg;
|
||||
player->stats.damage_amount_out += finaly_dmg;
|
||||
|
||||
obstacle->health = std::max(0.0f, obstacle->health - finaly_dmg);
|
||||
obstacle->dead = obstacle->health <= 0.01f;
|
||||
|
@ -1,5 +1,7 @@
|
||||
#include "precompile.h"
|
||||
|
||||
#include <a8/mutable_xobject.h>
|
||||
|
||||
#include "human.h"
|
||||
#include "cs_proto.pb.h"
|
||||
#include "metamgr.h"
|
||||
@ -11,6 +13,8 @@
|
||||
#include "building.h"
|
||||
#include "hero.h"
|
||||
|
||||
#include "framework/cpp/httpclientpool.h"
|
||||
|
||||
Human::Human():Entity()
|
||||
{
|
||||
default_weapon.weapon_idx = 0;
|
||||
@ -107,7 +111,7 @@ void Human::FillMFPlayerStats(cs::MFPlayerStats* stats_pb)
|
||||
stats_pb->set_time_alive(dead_frameno * 1000.0f / SERVER_FRAME_RATE);
|
||||
}
|
||||
stats_pb->set_kills(stats.kills);
|
||||
stats_pb->set_damage_amount(stats.damage_amount);
|
||||
stats_pb->set_damage_amount(stats.damage_amount_out);
|
||||
stats_pb->set_heal_amount(stats.heal_amount);
|
||||
|
||||
stats_pb->set_history_time_alive(stats.history_time_alive);
|
||||
@ -434,7 +438,7 @@ void Human::FillSMGameOver(cs::SMGameOver& msg)
|
||||
}
|
||||
}
|
||||
|
||||
msg.set_team_id(0);
|
||||
msg.set_team_id(team_id);
|
||||
msg.set_team_rank(rank);
|
||||
msg.set_team_allcnt(1);
|
||||
msg.set_game_over(room->game_over);
|
||||
@ -492,7 +496,11 @@ void Human::DecHP(float dec_hp, int killer_id, const std::string& killer_name)
|
||||
if (energy_shield > 0.001f) {
|
||||
energy_shield = std::max(0.0f, energy_shield - dec_hp);
|
||||
} else {
|
||||
float old_health = health;
|
||||
health = std::max(0.0f, health - dec_hp);
|
||||
if (health - old_health > 0.001f) {
|
||||
stats.damage_amount_in += health - old_health;
|
||||
}
|
||||
if (health <= 0.0001f && !dead) {
|
||||
if (downed) {
|
||||
if (downed_timer) {
|
||||
@ -1213,3 +1221,56 @@ void Human::ClearFrameData()
|
||||
emotes_.clear();
|
||||
}
|
||||
}
|
||||
|
||||
void Human::BattleReport()
|
||||
{
|
||||
int rank = 0;
|
||||
{
|
||||
std::vector<Human*> human_list;
|
||||
room->TouchHumanList(a8::XParams(),
|
||||
[&human_list] (Human* hum, a8::XParams& param) -> bool
|
||||
{
|
||||
human_list.push_back(hum);
|
||||
return true;
|
||||
});
|
||||
std::sort(human_list.begin(), human_list.end(),
|
||||
[] (Human* a, Human* b )
|
||||
{
|
||||
if (a->dead_frameno == b->dead_frameno) {
|
||||
return a->entity_uniid < b->entity_uniid;
|
||||
} else {
|
||||
return a->dead_frameno == 0 ||
|
||||
(b->dead_frameno != 0 && a->dead_frameno > b->dead_frameno);
|
||||
}
|
||||
});
|
||||
rank = human_list.size();
|
||||
for (size_t i = 0; i < human_list.size(); ++i) {
|
||||
if (human_list[i] == this) {
|
||||
rank = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
a8::MutableXObject* params = a8::MutableXObject::NewObject();
|
||||
params->SetVal("account_id", account_id);
|
||||
params->SetVal("map_name", room->map_meta->i->map_name());
|
||||
params->SetVal("game_time", time(nullptr));
|
||||
params->SetVal("hurt", stats.damage_amount_in);
|
||||
params->SetVal("rank", rank);
|
||||
params->SetVal("kills", stats.kills);
|
||||
params->SetVal("harm", stats.damage_amount_out);
|
||||
params->SetVal("add_HP", stats.heal_amount);
|
||||
if (!dead) {
|
||||
params->SetVal("alive_time", room->frame_no * 1000.0f / SERVER_FRAME_RATE);
|
||||
} else {
|
||||
params->SetVal("alive_time", dead_frameno * 1000.0f / SERVER_FRAME_RATE);
|
||||
}
|
||||
params->SetVal("team_status", team_id != 0);
|
||||
params->SetVal("snipe_kill", 0);
|
||||
params->SetVal("rifle_kill", 0);
|
||||
params->SetVal("pistol_kill", 0);
|
||||
params->SetVal("submachine_kill", 0);
|
||||
params->SetVal("rescue_kill", 0);
|
||||
params->SetVal("coin_num", 0);
|
||||
delete params;
|
||||
}
|
||||
|
@ -166,6 +166,7 @@ class Human : public Entity
|
||||
|
||||
private:
|
||||
void ClearFrameData();
|
||||
void BattleReport();
|
||||
|
||||
protected:
|
||||
long long last_shot_frameno_ = 0;
|
||||
|
@ -130,4 +130,9 @@ namespace MetaData
|
||||
const metatable::Dress* i = nullptr;
|
||||
};
|
||||
|
||||
struct RankReward
|
||||
{
|
||||
const metatable::RankReward* i = nullptr;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -37,6 +37,8 @@ public:
|
||||
std::list<MetaData::Dress> dress_list;
|
||||
std::list<metatable::Skill> skill_meta_list;
|
||||
std::list<MetaData::Skill> skill_list;
|
||||
std::list<metatable::RankReward> rankreward_meta_list;
|
||||
std::list<MetaData::RankReward> rankreward_list;
|
||||
|
||||
std::map<std::string, MetaData::Parameter*> parameter_hash;
|
||||
std::map<int, MetaData::Map*> gamemap_hash;
|
||||
@ -52,6 +54,7 @@ public:
|
||||
std::map<std::string, std::vector<MetaData::MapTplThing>> maptpl_hash;
|
||||
std::map<int, MetaData::Dress*> dress_hash;
|
||||
std::map<int, MetaData::Skill*> skill_hash;
|
||||
std::map<int, MetaData::RankReward*> rankreward_hash;
|
||||
|
||||
void Load()
|
||||
{
|
||||
@ -84,6 +87,7 @@ public:
|
||||
f8::ReadJsonMetaFile(res_path + "maps.json", building_meta_list);
|
||||
f8::ReadCsvMetaFile(res_path + "dress@dress.csv", dress_meta_list);
|
||||
f8::ReadCsvMetaFile(res_path + "skill@skill.csv", skill_meta_list);
|
||||
f8::ReadCsvMetaFile(res_path + "rankReward@rankReward.csv", rankreward_meta_list);
|
||||
BindToMetaData();
|
||||
#if 1
|
||||
{
|
||||
@ -220,6 +224,12 @@ private:
|
||||
skill_hash[item.i->id()] = &item;
|
||||
}
|
||||
|
||||
for (auto& meta : rankreward_meta_list) {
|
||||
MetaData::RankReward& item = a8::FastAppend(rankreward_list);
|
||||
item.i = &meta;
|
||||
rankreward_hash[item.i->rank()] = &item;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private:
|
||||
@ -343,3 +353,9 @@ MetaData::Dress* MetaMgr::GetDress(int dress_id)
|
||||
auto itr = loader_->dress_hash.find(dress_id);
|
||||
return itr != loader_->dress_hash.end() ? itr->second : nullptr;
|
||||
}
|
||||
|
||||
MetaData::RankReward* MetaMgr::GetRankReward(int rank)
|
||||
{
|
||||
auto itr = loader_->rankreward_hash.find(rank);
|
||||
return itr != loader_->rankreward_hash.end() ? itr->second : nullptr;
|
||||
}
|
||||
|
@ -32,6 +32,7 @@ class MetaMgr : public a8::Singleton<MetaMgr>
|
||||
MetaData::AirLine* RandAirLine();
|
||||
MetaData::Skill* GetSkill(int skill_id);
|
||||
MetaData::Dress* GetDress(int dress_id);
|
||||
MetaData::RankReward* GetRankReward(int rank);
|
||||
|
||||
int gas_inactive_time = 10;
|
||||
int jump_time = 10;
|
||||
|
@ -45,7 +45,8 @@ struct Weapon
|
||||
struct PlayerStats
|
||||
{
|
||||
int kills = 0;
|
||||
int damage_amount = 0;
|
||||
int damage_amount_in = 0;
|
||||
int damage_amount_out = 0;
|
||||
int heal_amount = 0;
|
||||
|
||||
int history_time_alive = 0;
|
||||
|
@ -10,6 +10,7 @@ message Map
|
||||
{
|
||||
optional int32 map_id = 1; //地图id
|
||||
optional string template_list = 2; //模板列表
|
||||
optional string map_name = 3; //地图名
|
||||
}
|
||||
|
||||
message MapThing
|
||||
@ -127,6 +128,12 @@ message Dress
|
||||
optional int32 skill_id = 2;
|
||||
}
|
||||
|
||||
message RankReward
|
||||
{
|
||||
optional int32 rank = 1;
|
||||
optional int32 parameter = 2;
|
||||
}
|
||||
|
||||
//end
|
||||
|
||||
message DoorObjJson
|
||||
|
Loading…
x
Reference in New Issue
Block a user