diff --git a/server/gameserver/new_hero_agent.cc b/server/gameserver/new_hero_agent.cc index 1ae4070e..f28f9c1c 100644 --- a/server/gameserver/new_hero_agent.cc +++ b/server/gameserver/new_hero_agent.cc @@ -180,22 +180,39 @@ float HeroAgent::GetShotRange() void HeroAgent::SetV(int id, int val) { - + auto itr = dyn_hash_.find(id); + if (itr != dyn_hash_.end()) { + itr->second = val; + } else { + dyn_hash_[id] = val; + } } int HeroAgent::GetV(int id) { - + auto itr = dyn_hash_.find(id); + if (itr != dyn_hash_.end()) { + return itr->second; + } else { + return 0; + } } -int HeroAgent::IncV(int id) +int HeroAgent::IncV(int id, int val) { - + auto itr = dyn_hash_.find(id); + if (itr != dyn_hash_.end()) { + itr->second += val; + return itr->second; + } else { + dyn_hash_[id] = val; + return val; + } } -int HeroAgent::DecV(int id) +int HeroAgent::DecV(int id, int val) { - + IncV(id, -val); } behaviac::EBTStatus HeroAgent::CoIdle(int time) diff --git a/server/gameserver/new_hero_agent.h b/server/gameserver/new_hero_agent.h index f383742c..d1cf8463 100644 --- a/server/gameserver/new_hero_agent.h +++ b/server/gameserver/new_hero_agent.h @@ -47,8 +47,8 @@ public: float GetShotRange(); void SetV(int id, int val); int GetV(int id); - int IncV(int id); - int DecV(int id); + int IncV(int id, int val); + int DecV(int id, int val); behaviac::EBTStatus CoIdle(int time); behaviac::EBTStatus CoMoveCurrentTargetRaycast(); @@ -93,4 +93,5 @@ public: private: Creature* owner_ = nullptr; bool bullet_trace_mode_ = false; + std::map dyn_hash_; };