1
This commit is contained in:
parent
b9492c8260
commit
55722adecd
@ -251,106 +251,126 @@ void Team::GenBattleReportData(a8::MutableXObject* params)
|
|||||||
int pvp_team_kills = 0;
|
int pvp_team_kills = 0;
|
||||||
|
|
||||||
auto members_pb = a8::MutableXObject::CreateArray();
|
auto members_pb = a8::MutableXObject::CreateArray();
|
||||||
|
std::vector<Human*> sorted_members;
|
||||||
TraverseMembers
|
TraverseMembers
|
||||||
(
|
(
|
||||||
[this, members_pb, &pvp_team_kills] (Human* hum) mutable
|
[&sorted_members] (Human* hum) mutable
|
||||||
{
|
{
|
||||||
pvp_team_kills += hum->stats->kills;
|
sorted_members.push_back(hum);
|
||||||
|
|
||||||
auto member_pb = a8::MutableXObject::CreateObject();
|
|
||||||
member_pb->SetVal("account_id", hum->account_id);
|
|
||||||
member_pb->SetVal("name", hum->name);
|
|
||||||
member_pb->SetVal("head", a8::XValue(hum->avatar_url));
|
|
||||||
member_pb->SetVal("head_frame", hum->head_frame);
|
|
||||||
member_pb->SetVal("sex", hum->sex);
|
|
||||||
member_pb->SetVal("dead", hum->dead);
|
|
||||||
member_pb->SetVal("is_mvp", 0);
|
|
||||||
|
|
||||||
member_pb->SetVal("hero_id", hum->meta->id());
|
|
||||||
member_pb->SetVal("hero_uniid", hum->hero_uniid);
|
|
||||||
//member_pb->SetVal("hero_quality", hum->hero_uniid);
|
|
||||||
member_pb->SetVal("game_time", hum->stats->game_time);
|
|
||||||
member_pb->SetVal("alive_time", hum->stats->alive_time);
|
|
||||||
member_pb->SetVal("rank", hum->stats->rank);
|
|
||||||
member_pb->SetVal("kills", hum->stats->kills);
|
|
||||||
member_pb->SetVal("damage_out", hum->stats->damage_amount_out);
|
|
||||||
member_pb->SetVal("weapon_uuid1", hum->spec_weapons.size() > 0 ? hum->spec_weapons[0].weapon_uniid : 0);
|
|
||||||
member_pb->SetVal("weapon_uuid2", hum->spec_weapons.size() > 1 ? hum->spec_weapons[1].weapon_uniid : 0);
|
|
||||||
member_pb->SetVal("rescue_teammate_times", hum->stats->rescue_member);
|
|
||||||
member_pb->SetVal("diving_times", hum->stats->diving_times);
|
|
||||||
member_pb->SetVal("damage_in", hum->stats->damage_amount_in);
|
|
||||||
member_pb->SetVal("recover_hp", hum->stats->heal_amount);
|
|
||||||
member_pb->SetVal("open_airdrop_times", hum->stats->open_airdrop_times);
|
|
||||||
member_pb->SetVal("use_medicine_times", hum->stats->use_medicine_times);
|
|
||||||
member_pb->SetVal("destory_car_times", hum->stats->destory_car_times);
|
|
||||||
member_pb->SetVal("use_camouflage_times", hum->stats->use_camouflage_times);
|
|
||||||
member_pb->SetVal("use_skill_times", hum->stats->use_skill_times);
|
|
||||||
member_pb->SetVal("ride_car_move_distance", hum->stats->ride_car_move_distance);
|
|
||||||
member_pb->SetVal("ride_car_kills", hum->stats->ride_car_kills);
|
|
||||||
member_pb->SetVal("max_hero_skill_lv", hum->stats->max_hero_skill_lv);
|
|
||||||
{
|
|
||||||
std::string weapons_type;
|
|
||||||
std::string weapons_slot;
|
|
||||||
for (auto& pair : hum->stats->weapon_stats) {
|
|
||||||
auto& weapon = pair.second;
|
|
||||||
if (weapon.kills || weapon.damage_out || weapon.obtain_count) {
|
|
||||||
weapons_type += a8::Format("%d:%d:%d:%d|",
|
|
||||||
{
|
|
||||||
weapon.weapon_id,
|
|
||||||
weapon.kills,
|
|
||||||
weapon.damage_out,
|
|
||||||
weapon.obtain_count
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (weapon.use_times) {
|
|
||||||
weapons_slot += a8::Format("%d:%d|",
|
|
||||||
{
|
|
||||||
weapon.weapon_id,
|
|
||||||
weapon.use_times
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
member_pb->SetVal("weapons_type", weapons_type);
|
|
||||||
member_pb->SetVal("weapons_slot", weapons_slot);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
std::string heros;
|
|
||||||
for (auto& pair : hum->stats->hero_stats) {
|
|
||||||
auto& hero = pair.second;
|
|
||||||
if (hero.skill_lv || hero.weapon_lv) {
|
|
||||||
heros += a8::Format("%d:%d:%d|",
|
|
||||||
{
|
|
||||||
hero.hero_id,
|
|
||||||
hero.skill_lv,
|
|
||||||
hero.weapon_lv,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
member_pb->SetVal("heros", heros);
|
|
||||||
}
|
|
||||||
if (room->IsPveRoom()) {
|
|
||||||
member_pb->SetVal("pve_order", 0);
|
|
||||||
member_pb->SetVal("pve_score", hum->stats->pve_rank_score);
|
|
||||||
member_pb->SetVal("pve_star", room->pve_mode_meta->CalcStar(hum->stats->pve_rank_score));
|
|
||||||
member_pb->SetVal("pve_damage", hum->stats->damage_amount_out);
|
|
||||||
member_pb->SetVal("pve_revive", hum->stats->revive);
|
|
||||||
member_pb->SetVal("pve_survia_time", hum->stats->alive_time);
|
|
||||||
member_pb->SetVal("pve_wave", hum->stats->pve_wave);
|
|
||||||
member_pb->SetVal("pve_max_wave", room->pve_data.max_wave);
|
|
||||||
member_pb->SetVal("pve_boss_killed", hum->stats->pve_kill_boss);
|
|
||||||
member_pb->SetVal("pve_rank_score", hum->stats->pve_rank_score);
|
|
||||||
} else {
|
|
||||||
member_pb->SetVal("pvp_kill", hum->stats->kills);
|
|
||||||
member_pb->SetVal("pvp_damage", hum->stats->damage_amount_out);
|
|
||||||
member_pb->SetVal("pvp_assist", hum->stats->assist);
|
|
||||||
member_pb->SetVal("pvp_survia_time", hum->stats->alive_time);
|
|
||||||
member_pb->SetVal("pvp_recover", hum->stats->heal_amount);
|
|
||||||
member_pb->SetVal("pvp_rescue", hum->stats->rescue_member);
|
|
||||||
member_pb->SetVal("pvp_personal_rank", hum->stats->rank);
|
|
||||||
}
|
|
||||||
members_pb->Push(*member_pb);
|
|
||||||
return true;
|
return true;
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
if (room->IsPveRoom()) {
|
||||||
|
std::sort(sorted_members.begin(), sorted_members.end(),
|
||||||
|
[] (Human* a, Human* b) -> bool
|
||||||
|
{
|
||||||
|
if (a->stats->pve_rank_score > b->stats->pve_rank_score) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (a->stats->pve_rank_score < b->stats->pve_rank_score) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return a->GetUniId() < b->GetUniId();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
int i = 0;
|
||||||
|
for (Human* hum : sorted_members) {
|
||||||
|
++i;
|
||||||
|
pvp_team_kills += hum->stats->kills;
|
||||||
|
|
||||||
|
auto member_pb = a8::MutableXObject::CreateObject();
|
||||||
|
member_pb->SetVal("account_id", hum->account_id);
|
||||||
|
member_pb->SetVal("name", hum->name);
|
||||||
|
member_pb->SetVal("head", a8::XValue(hum->avatar_url));
|
||||||
|
member_pb->SetVal("head_frame", hum->head_frame);
|
||||||
|
member_pb->SetVal("sex", hum->sex);
|
||||||
|
member_pb->SetVal("dead", hum->dead);
|
||||||
|
member_pb->SetVal("is_mvp", 0);
|
||||||
|
|
||||||
|
member_pb->SetVal("hero_id", hum->meta->id());
|
||||||
|
member_pb->SetVal("hero_uniid", hum->hero_uniid);
|
||||||
|
//member_pb->SetVal("hero_quality", hum->hero_uniid);
|
||||||
|
member_pb->SetVal("game_time", hum->stats->game_time);
|
||||||
|
member_pb->SetVal("alive_time", hum->stats->alive_time);
|
||||||
|
member_pb->SetVal("rank", hum->stats->rank);
|
||||||
|
member_pb->SetVal("kills", hum->stats->kills);
|
||||||
|
member_pb->SetVal("damage_out", hum->stats->damage_amount_out);
|
||||||
|
member_pb->SetVal("weapon_uuid1", hum->spec_weapons.size() > 0 ? hum->spec_weapons[0].weapon_uniid : 0);
|
||||||
|
member_pb->SetVal("weapon_uuid2", hum->spec_weapons.size() > 1 ? hum->spec_weapons[1].weapon_uniid : 0);
|
||||||
|
member_pb->SetVal("rescue_teammate_times", hum->stats->rescue_member);
|
||||||
|
member_pb->SetVal("diving_times", hum->stats->diving_times);
|
||||||
|
member_pb->SetVal("damage_in", hum->stats->damage_amount_in);
|
||||||
|
member_pb->SetVal("recover_hp", hum->stats->heal_amount);
|
||||||
|
member_pb->SetVal("open_airdrop_times", hum->stats->open_airdrop_times);
|
||||||
|
member_pb->SetVal("use_medicine_times", hum->stats->use_medicine_times);
|
||||||
|
member_pb->SetVal("destory_car_times", hum->stats->destory_car_times);
|
||||||
|
member_pb->SetVal("use_camouflage_times", hum->stats->use_camouflage_times);
|
||||||
|
member_pb->SetVal("use_skill_times", hum->stats->use_skill_times);
|
||||||
|
member_pb->SetVal("ride_car_move_distance", hum->stats->ride_car_move_distance);
|
||||||
|
member_pb->SetVal("ride_car_kills", hum->stats->ride_car_kills);
|
||||||
|
member_pb->SetVal("max_hero_skill_lv", hum->stats->max_hero_skill_lv);
|
||||||
|
{
|
||||||
|
std::string weapons_type;
|
||||||
|
std::string weapons_slot;
|
||||||
|
for (auto& pair : hum->stats->weapon_stats) {
|
||||||
|
auto& weapon = pair.second;
|
||||||
|
if (weapon.kills || weapon.damage_out || weapon.obtain_count) {
|
||||||
|
weapons_type += a8::Format("%d:%d:%d:%d|",
|
||||||
|
{
|
||||||
|
weapon.weapon_id,
|
||||||
|
weapon.kills,
|
||||||
|
weapon.damage_out,
|
||||||
|
weapon.obtain_count
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (weapon.use_times) {
|
||||||
|
weapons_slot += a8::Format("%d:%d|",
|
||||||
|
{
|
||||||
|
weapon.weapon_id,
|
||||||
|
weapon.use_times
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
member_pb->SetVal("weapons_type", weapons_type);
|
||||||
|
member_pb->SetVal("weapons_slot", weapons_slot);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
std::string heros;
|
||||||
|
for (auto& pair : hum->stats->hero_stats) {
|
||||||
|
auto& hero = pair.second;
|
||||||
|
if (hero.skill_lv || hero.weapon_lv) {
|
||||||
|
heros += a8::Format("%d:%d:%d|",
|
||||||
|
{
|
||||||
|
hero.hero_id,
|
||||||
|
hero.skill_lv,
|
||||||
|
hero.weapon_lv,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
member_pb->SetVal("heros", heros);
|
||||||
|
}
|
||||||
|
if (room->IsPveRoom()) {
|
||||||
|
member_pb->SetVal("pve_order", i);
|
||||||
|
member_pb->SetVal("pve_score", hum->stats->pve_rank_score);
|
||||||
|
member_pb->SetVal("pve_star", room->pve_mode_meta->CalcStar(hum->stats->pve_rank_score));
|
||||||
|
member_pb->SetVal("pve_damage", hum->stats->damage_amount_out);
|
||||||
|
member_pb->SetVal("pve_revive", hum->stats->revive);
|
||||||
|
member_pb->SetVal("pve_survia_time", hum->stats->alive_time);
|
||||||
|
member_pb->SetVal("pve_wave", hum->stats->pve_wave);
|
||||||
|
member_pb->SetVal("pve_max_wave", room->pve_data.max_wave);
|
||||||
|
member_pb->SetVal("pve_boss_killed", hum->stats->pve_kill_boss);
|
||||||
|
member_pb->SetVal("pve_rank_score", hum->stats->pve_rank_score);
|
||||||
|
} else {
|
||||||
|
member_pb->SetVal("pvp_kill", hum->stats->kills);
|
||||||
|
member_pb->SetVal("pvp_damage", hum->stats->damage_amount_out);
|
||||||
|
member_pb->SetVal("pvp_assist", hum->stats->assist);
|
||||||
|
member_pb->SetVal("pvp_survia_time", hum->stats->alive_time);
|
||||||
|
member_pb->SetVal("pvp_recover", hum->stats->heal_amount);
|
||||||
|
member_pb->SetVal("pvp_rescue", hum->stats->rescue_member);
|
||||||
|
member_pb->SetVal("pvp_personal_rank", hum->stats->rank);
|
||||||
|
}
|
||||||
|
members_pb->Push(*member_pb);
|
||||||
|
};
|
||||||
|
|
||||||
params->SetVal("pvp_team_kills", pvp_team_kills);
|
params->SetVal("pvp_team_kills", pvp_team_kills);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user