From 8f954597b5ba842a62212e3d4d00b37cc050cc01 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 24 Aug 2022 11:30:07 +0800 Subject: [PATCH] 1 --- server/gameserver/hero.cc | 1 + server/gameserver/human.cc | 5 +++++ server/gameserver/human.h | 1 + server/gameserver/pvedata.cc | 23 +++++++++++++++++++++++ server/gameserver/pvedata.h | 2 ++ 5 files changed, 32 insertions(+) diff --git a/server/gameserver/hero.cc b/server/gameserver/hero.cc index 00839dba..817702be 100644 --- a/server/gameserver/hero.cc +++ b/server/gameserver/hero.cc @@ -292,6 +292,7 @@ void Hero::BeKill(int killer_id, const std::string& killer_name, int weapon_id) if (room->IsPveRoom()) { --room->pve_data.mon_num; ++room->pve_data.killed_num; + room->pve_data.OnBeKill(this); room->NotifyUiUpdate(); } GetTrigger()->Die(); diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 0ba7e137..931ec4e4 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -4220,3 +4220,8 @@ float Human::GetBaseDef() { return meta->i->defence(); } + +void Human::WinPveScore(int score) +{ + stats.pve_score += score; +} diff --git a/server/gameserver/human.h b/server/gameserver/human.h index b721c884..86352056 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -349,6 +349,7 @@ class Human : public Creature void DecOxygen(int val); virtual float GetBaseAtk() override; virtual float GetBaseDef() override; + void WinPveScore(int score); protected: void _InternalUpdateMove(float speed); diff --git a/server/gameserver/pvedata.cc b/server/gameserver/pvedata.cc index d6b3291c..fbd3ab1d 100644 --- a/server/gameserver/pvedata.cc +++ b/server/gameserver/pvedata.cc @@ -1,4 +1,7 @@ #include "precompile.h" +#include "hero.h" +#include "room.h" +#include "human.h" #include "pvedata.h" @@ -10,3 +13,23 @@ void PveData::AddDamageInfo(int sender_id, int receiver_id, float dmg) } itr = damage_hash_.find(receiver_id); } + +void PveData::OnBeKill(Hero* hero) +{ + Room* room = hero->room; + auto itr = damage_hash_.find(hero->GetUniId()); + if (itr != damage_hash_.end()) { + float total_dmg = 0; + for (auto& pair : itr->second) { + total_dmg += pair.second; + } + if (total_dmg > 0) { + for (auto& pair : itr->second) { + Human* hum = room->GetHumanByUniId(pair.first); + if (hum) { + + } + } + } + } +} diff --git a/server/gameserver/pvedata.h b/server/gameserver/pvedata.h index af2c2d35..fad40723 100644 --- a/server/gameserver/pvedata.h +++ b/server/gameserver/pvedata.h @@ -1,5 +1,6 @@ #pragma once +class Hero; struct PveData { int wave = 0; @@ -11,6 +12,7 @@ struct PveData int killed_num = 0; void AddDamageInfo(int sender_id, int receiver_id, float dmg); + void OnBeKill(Hero* hero); private: