This commit is contained in:
aozhiwei 2022-11-18 17:30:01 +08:00
parent b8f94585a1
commit 92b7dd8a15
3 changed files with 62 additions and 26 deletions

View File

@ -4576,12 +4576,14 @@ void Human::FillMFSettlement(cs::SMGameOver* msg, cs::MFSettlement* s)
s->set_temmate_all_dead(1); s->set_temmate_all_dead(1);
s->set_map_id(room->GetMapMeta()->i->map_id()); s->set_map_id(room->GetMapMeta()->i->map_id());
s->set_map_name(""); s->set_map_name(room->GetMapMeta()->i->map_name());
s->set_rank_chg(0); s->set_rank_chg(0);
for (auto item : msg->spoils_items()) { for (auto item : msg->spoils_items()) {
auto p = s->add_spoils_items(); if (a8::XValue(item.values(1)).GetInt() > 0) {
p->set_item_id(a8::XValue(item.values(0))); auto p = s->add_spoils_items();
p->set_item_num(a8::XValue(item.values(1))); p->set_item_id(a8::XValue(item.values(0)));
p->set_item_num(a8::XValue(item.values(1)));
}
} }
if (room->IsPveRoom()) { if (room->IsPveRoom()) {
@ -4600,36 +4602,56 @@ void Human::FillMFSettlement(cs::SMGameOver* msg, cs::MFSettlement* s)
} }
*s->mutable_reward() = msg->reward(); *s->mutable_reward() = msg->reward();
std::vector<const cs::MFPlayerStats*> stats;
{
for (auto& item : msg->player_stats()) {
stats.push_back(&item);
}
if (room->IsPveRoom()) {
std::sort(stats.begin(), stats.end(),
[] (const cs::MFPlayerStats* a, const cs::MFPlayerStats *b) -> bool
{
if (a->score() > b->score()) {
return true;
}
if (a->score() < b->score()) {
return false;
}
return a->player_id() < b->player_id();
});
}
}
for (auto item : msg->player_stats()) { int i = 0;
for (auto item : stats) {
++i;
auto p = s->add_members_stats(); auto p = s->add_members_stats();
p->set_id(item.player_id()); p->set_id(item->player_id());
p->set_account_id(item.account_id()); p->set_account_id(item->account_id());
p->set_name(item.nickname()); p->set_name(item->nickname());
p->set_head(a8::XValue(avatar_url)); p->set_head(a8::XValue(avatar_url));
p->set_head_frame(item.head_frame()); p->set_head_frame(item->head_frame());
p->set_sex(item.sex()); p->set_sex(item->sex());
p->set_hero_id(item.charid()); p->set_hero_id(item->charid());
p->set_dead(item.dead() ? 1 : 0); p->set_dead(item->dead() ? 1 : 0);
p->set_is_myself(item.account_id() == account_id ? 1 : 0); p->set_is_myself(item->account_id() == account_id ? 1 : 0);
// //
p->set_is_mvp(0); p->set_is_mvp(0);
if (room->IsPveRoom()) { if (room->IsPveRoom()) {
p->set_pve_order(0); p->set_pve_order(i);
p->set_pve_score(item.score()); p->set_pve_score(item->score());
// p->set_pve_star(room->pve_mode_meta->CalcStar(item->score()));
p->set_pve_star(0); p->set_pve_damage(item->damage_amount());
p->set_pve_damage(item.damage_amount()); p->set_pve_round(item->pve_wave());
p->set_pve_round(item.pve_wave()); p->set_pve_revive(item->revive());
p->set_pve_revive(item.revive());
} else { } else {
p->set_pvp_kill(item.kills()); p->set_pvp_kill(item->kills());
p->set_pvp_damage(item.damage_amount()); p->set_pvp_damage(item->damage_amount());
p->set_pvp_assist(item.assist()); p->set_pvp_assist(item->assist());
p->set_pvp_survia_time(item.time_alive()); p->set_pvp_survia_time(item->time_alive());
p->set_pvp_recover(item.heal_amount()); p->set_pvp_recover(item->heal_amount());
p->set_pvp_rescue(item.rescue()); p->set_pvp_rescue(item->rescue());
} }
} }
} }

View File

@ -1747,6 +1747,19 @@ namespace MetaData
} }
} }
int PveGeminiMode::CalcStar(int score)
{
int star = 0;
for (int i = 0; i < score_reward.size(); ++i) {
if (score >= score_reward[i]) {
star = i + 1;
} else {
break;
}
}
return star;
}
void SkillNumber::Init() void SkillNumber::Init()
{ {
int_ratio = a8::XValue(pb->ratio()); int_ratio = a8::XValue(pb->ratio());

View File

@ -479,6 +479,7 @@ namespace MetaData
std::vector<a8::Vec2> next_door; std::vector<a8::Vec2> next_door;
void Init(); void Init();
int CalcStar(int score);
}; };
struct RankRoom struct RankRoom