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,13 +4576,15 @@ void Human::FillMFSettlement(cs::SMGameOver* msg, cs::MFSettlement* s)
s->set_temmate_all_dead(1);
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);
for (auto item : msg->spoils_items()) {
if (a8::XValue(item.values(1)).GetInt() > 0) {
auto p = s->add_spoils_items();
p->set_item_id(a8::XValue(item.values(0)));
p->set_item_num(a8::XValue(item.values(1)));
}
}
if (room->IsPveRoom()) {
s->set_pve_wave(room->pve_data.GetWave() + 1);
@ -4600,36 +4602,56 @@ void Human::FillMFSettlement(cs::SMGameOver* msg, cs::MFSettlement* s)
}
*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();
p->set_id(item.player_id());
p->set_account_id(item.account_id());
p->set_name(item.nickname());
p->set_id(item->player_id());
p->set_account_id(item->account_id());
p->set_name(item->nickname());
p->set_head(a8::XValue(avatar_url));
p->set_head_frame(item.head_frame());
p->set_sex(item.sex());
p->set_hero_id(item.charid());
p->set_dead(item.dead() ? 1 : 0);
p->set_is_myself(item.account_id() == account_id ? 1 : 0);
p->set_head_frame(item->head_frame());
p->set_sex(item->sex());
p->set_hero_id(item->charid());
p->set_dead(item->dead() ? 1 : 0);
p->set_is_myself(item->account_id() == account_id ? 1 : 0);
//
p->set_is_mvp(0);
if (room->IsPveRoom()) {
p->set_pve_order(0);
p->set_pve_score(item.score());
//
p->set_pve_star(0);
p->set_pve_damage(item.damage_amount());
p->set_pve_round(item.pve_wave());
p->set_pve_revive(item.revive());
p->set_pve_order(i);
p->set_pve_score(item->score());
p->set_pve_star(room->pve_mode_meta->CalcStar(item->score()));
p->set_pve_damage(item->damage_amount());
p->set_pve_round(item->pve_wave());
p->set_pve_revive(item->revive());
} else {
p->set_pvp_kill(item.kills());
p->set_pvp_damage(item.damage_amount());
p->set_pvp_assist(item.assist());
p->set_pvp_survia_time(item.time_alive());
p->set_pvp_recover(item.heal_amount());
p->set_pvp_rescue(item.rescue());
p->set_pvp_kill(item->kills());
p->set_pvp_damage(item->damage_amount());
p->set_pvp_assist(item->assist());
p->set_pvp_survia_time(item->time_alive());
p->set_pvp_recover(item->heal_amount());
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()
{
int_ratio = a8::XValue(pb->ratio());

View File

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