From d373f5e8b7c6ac4959a0f604325a45e1253ab4fc Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 11 Jan 2024 16:15:28 +0800 Subject: [PATCH] 1 --- server/gameserver/movement.cc | 5 +++++ server/gameserver/stats.cc | 7 +++++++ server/gameserver/stats.h | 3 +++ 3 files changed, 15 insertions(+) diff --git a/server/gameserver/movement.cc b/server/gameserver/movement.cc index a936e614..869856e7 100644 --- a/server/gameserver/movement.cc +++ b/server/gameserver/movement.cc @@ -8,6 +8,8 @@ #include "room.h" #include "mapinstance.h" #include "creature.h" +#include "human.h" +#include "stats.h" #include "mt/Map.h" @@ -28,6 +30,9 @@ bool Movement::UpdatePosition() curr_point.curr_pos.AddGlmVec3(curr_point.dir * owner_->GetSpeed()); owner_->SetPos(curr_point.curr_pos); owner_->room->map_instance->CheckTerrain(owner_, curr_point.same_polys_flags, curr_point.spec_polys); + if (owner_->IsHuman()) { + owner_->AsHuman()->stats->IncMoveDistance(owner_->GetSpeed()); + } } if (owner_->GetPos().Distance2D2(curr_point.src_pos) - curr_point.distance >= 0.0001f) { #ifdef MYDEBUG1 diff --git a/server/gameserver/stats.cc b/server/gameserver/stats.cc index c7675f0b..0973dab9 100644 --- a/server/gameserver/stats.cc +++ b/server/gameserver/stats.cc @@ -377,3 +377,10 @@ void PlayerStats::AdjustRewardData() EmptyStrToZero(over_reward.weapon2.gold_limit); } } + +void PlayerStats::IncMoveDistance(float distance) +{ + if (a8::GtOrEqZero(distance)) { + move_distance += distance; + } +} diff --git a/server/gameserver/stats.h b/server/gameserver/stats.h index 5efb07d5..0b4bec67 100644 --- a/server/gameserver/stats.h +++ b/server/gameserver/stats.h @@ -136,11 +136,14 @@ class PlayerStats std::vector pb_weapons_stats; int star_num = 0; + float move_distance = 0.0f; + WeaponStats& MustBeWeapon(int weapon_id); void IncWeaponKills(int weapon_id, int val); void IncWeaponDamageOut(int weapon_id, int val); void IncWeaponObtainCount(int weapon_id, int val); void IncWeaponUseTimes(int weapon_id, int val); + void IncMoveDistance(float distance); HeroStats& MustBeHero(int hero_id); void SetHeroSkillLv(int hero_id, int skill_lv); void SetHeroWeaponLv(int hero_id, int weapon_lv);