From 2c243936dd2aad6c29d61a02e20e7dd94d83fa7b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 16 Nov 2023 21:58:59 +0800 Subject: [PATCH] 1 --- server/gameserver/creature.cc | 7 +++++++ server/gameserver/creature.h | 10 +++++++--- server/gameserver/hero_agent.cc | 11 +++++++++++ 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index fe580288..1cf4a5d4 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -3788,3 +3788,10 @@ void Creature::CheckShotHold() } } } + +void Creature::Throw(int throw_uniid, int slot, + const glm::vec3& pos, const glm::vec3& dir, + float fly_distance, int estimated_time) +{ + +} diff --git a/server/gameserver/creature.h b/server/gameserver/creature.h index fd4d54c7..64fd1d30 100644 --- a/server/gameserver/creature.h +++ b/server/gameserver/creature.h @@ -370,9 +370,10 @@ class Creature : public MoveableEntity virtual void NetInitOk(); bool IsNearGas(float distance); float GetSafeAreaRaidus(); - std::shared_ptr> CalcReporterList(bool is_trace_bullet, - const mt::Equip* weapon_meta, - const mt::Equip* bullet_meta); + std::shared_ptr> CalcReporterList + (bool is_trace_bullet, + const mt::Equip* weapon_meta, + const mt::Equip* bullet_meta); bool CanShot(bool try_reload); void AdjustPos(); void OnLand(); @@ -394,6 +395,9 @@ class Creature : public MoveableEntity float GetSkillLocalVar(int skill_id, int idx); void SetSkillLocalVar(int skill_id, int idx, float val); void CheckShotHold(); + void Throw(int throw_uniid, int slot, + const glm::vec3& pos, const glm::vec3& dir, + float fly_distance, int estimated_time); protected: virtual void OnBuffRemove(Buff& buff); diff --git a/server/gameserver/hero_agent.cc b/server/gameserver/hero_agent.cc index 1cf52918..e9516d90 100644 --- a/server/gameserver/hero_agent.cc +++ b/server/gameserver/hero_agent.cc @@ -1489,6 +1489,17 @@ behaviac::EBTStatus HeroAgent::ThrowItem(int slot) if (!CanThrowItem(slot)) { return behaviac::BT_FAILURE; } + if (!current_target_agent->IsValid()) { + return behaviac::BT_FAILURE; + } + if (slot > 0 && slot < owner_->weapons.size()) { + Weapon& weapon = owner_->weapons[slot]; + if (weapon.weapon_idx != 0 && + weapon.meta && + weapon.ammo > 0) { + //return true; + } + } return behaviac::BT_FAILURE; }