完成僵尸模式结算
This commit is contained in:
parent
5b3286f3fa
commit
9a9cd8165d
@ -944,6 +944,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
||||
SendRollMsg(msg);
|
||||
} else {
|
||||
((Human*)hum)->stats.kills++;
|
||||
((Human*)hum)->stats.last_kill_frameno = room->GetFrameNo();
|
||||
((Human*)hum)->kill_humans.insert(this);
|
||||
((Human*)hum)->SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
||||
if (weapon_id == VW_Tank) {
|
||||
@ -2160,6 +2161,7 @@ void Human::ClearFrameData()
|
||||
|
||||
void Human::GenBattleReportData(a8::MutableXObject* params)
|
||||
{
|
||||
params->SetVal("room_mode", room->GetRoomMode());
|
||||
int rank = 0;
|
||||
{
|
||||
std::vector<Human*> human_list;
|
||||
@ -2333,6 +2335,45 @@ void Human::GenBattleReportData(a8::MutableXObject* params)
|
||||
params->SetVal("rank_score", stats.rank_score);
|
||||
}
|
||||
|
||||
void Human::GenZbModeBattleReportData(a8::MutableXObject* params)
|
||||
{
|
||||
params->SetVal("room_mode", room->GetRoomMode());
|
||||
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->stats.kills > b->stats.kills) {
|
||||
return true;
|
||||
}
|
||||
if (a->stats.last_kill_frameno < b->stats.last_kill_frameno) {
|
||||
return true;
|
||||
}
|
||||
return a->GetEntityUniId() < b->GetEntityUniId();
|
||||
});
|
||||
rank = human_list.size();
|
||||
for (size_t i = 0; i < human_list.size(); ++i) {
|
||||
if (human_list[i] == this) {
|
||||
rank = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
stats.rank = rank;
|
||||
params->SetVal("account_id", account_id);
|
||||
params->SetVal("map_id", room->GetMapMeta()->i->map_id());
|
||||
params->SetVal("game_time", time(nullptr));
|
||||
params->SetVal("rank", rank);
|
||||
params->SetVal("kills", stats.kills);
|
||||
}
|
||||
|
||||
void Human::DeadDrop()
|
||||
{
|
||||
for (auto& weapon : weapons) {
|
||||
@ -2390,7 +2431,11 @@ void Human::DeadDrop()
|
||||
void Human::SendBattleReport()
|
||||
{
|
||||
a8::MutableXObject* params = a8::MutableXObject::NewObject();
|
||||
GenBattleReportData(params);
|
||||
if (room->GetRoomMode() == kZombieMode) {
|
||||
GenZbModeBattleReportData(params);
|
||||
} else {
|
||||
GenBattleReportData(params);
|
||||
}
|
||||
auto on_ok = [] (a8::XParams& param, a8::XObject& data)
|
||||
{
|
||||
};
|
||||
@ -2410,11 +2455,7 @@ void Human::SendBattleReport()
|
||||
url = "https://game2004api-test.kingsome.cn/webapp/index.php?c=Role&a=battleReport";
|
||||
}
|
||||
} else {
|
||||
#if 1
|
||||
url = "http://game2004api.kingsome.cn/webapp/index.php?c=Role&a=battleReport";
|
||||
#else
|
||||
url = "https://game2004api.kingsome.cn/webapp/index.php?c=Role&a=battleReport";
|
||||
#endif
|
||||
}
|
||||
std::string data;
|
||||
params->ToUrlEncodeStr(data);
|
||||
|
@ -302,6 +302,7 @@ protected:
|
||||
private:
|
||||
void ClearFrameData();
|
||||
void GenBattleReportData(a8::MutableXObject* params);
|
||||
void GenZbModeBattleReportData(a8::MutableXObject* params);
|
||||
void FillSMGameOver(cs::SMGameOver& msg);
|
||||
void SendBattleReport();
|
||||
void FindLocationWithTarget(Entity* target);
|
||||
|
@ -62,6 +62,7 @@ struct Skin
|
||||
struct PlayerStats
|
||||
{
|
||||
int kills = 0;
|
||||
long long last_kill_frameno = 0;
|
||||
int damage_amount_in = 0;
|
||||
int damage_amount_out = 0;
|
||||
int heal_amount = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user