diff --git a/server/bin/exported/behaviac_generated/types/internal/behaviac_agent_meta.cpp b/server/bin/exported/behaviac_generated/types/internal/behaviac_agent_meta.cpp index 9446db93..b35b60b6 100644 --- a/server/bin/exported/behaviac_generated/types/internal/behaviac_agent_meta.cpp +++ b/server/bin/exported/behaviac_generated/types/internal/behaviac_agent_meta.cpp @@ -633,7 +633,7 @@ namespace behaviac virtual bool load() { - AgentMeta::SetTotalSignature(86377453u); + AgentMeta::SetTotalSignature(3615713885u); AgentMeta* meta = NULL; BEHAVIAC_UNUSED_VAR(meta); @@ -731,7 +731,7 @@ namespace behaviac meta->RegisterMethod(502968959u, BEHAVIAC_NEW CMethod_behaviac_Agent_VectorRemove()); // HeroAgent - meta = BEHAVIAC_NEW AgentMeta(2900806213u); + meta = BEHAVIAC_NEW AgentMeta(2631666376u); AgentMeta::GetAgentMetas()[2270112014u] = meta; meta->RegisterMemberProperty(2706111800u, BEHAVIAC_NEW CMemberProperty< TargetAgent* >("current_target_agent", Set_HeroAgent_current_target_agent, Get_HeroAgent_current_target_agent)); meta->RegisterMemberProperty(1530109714u, BEHAVIAC_NEW CMemberProperty< MasterAgent* >("master_agent", Set_HeroAgent_master_agent, Get_HeroAgent_master_agent)); @@ -759,6 +759,7 @@ namespace behaviac meta->RegisterMemberProperty(3112816101u, BEHAVIAC_NEW CMemberProperty< float >("tmp_val2", Set_HeroAgent_tmp_val2, Get_HeroAgent_tmp_val2)); meta->RegisterMemberProperty(2693987492u, BEHAVIAC_NEW CMemberProperty< float >("tmp_val3", Set_HeroAgent_tmp_val3, Get_HeroAgent_tmp_val3)); meta->RegisterMemberProperty(4023609955u, BEHAVIAC_NEW CMemberProperty< float >("tmp_val4", Set_HeroAgent_tmp_val4, Get_HeroAgent_tmp_val4)); + meta->RegisterMethod(3724946699u, BEHAVIAC_NEW CAgentMethodVoid_1(FunctionPointer_HeroAgent_BattleMove) /* BattleMove */); meta->RegisterMethod(113953652u, BEHAVIAC_NEW CMethod_HeroAgent_CalcDistance()); meta->RegisterMethod(896336728u, BEHAVIAC_NEW CAgentMethod< bool >(FunctionPointer_HeroAgent_CanShot)); meta->RegisterMethod(1672911688u, BEHAVIAC_NEW CAgentMethod< bool >(FunctionPointer_HeroAgent_CanUseSkill)); @@ -790,6 +791,7 @@ namespace behaviac meta->RegisterMethod(138556770u, BEHAVIAC_NEW CAgentMethod< float >(FunctionPointer_HeroAgent_GetShotRange)); meta->RegisterMethod(3821163497u, BEHAVIAC_NEW CAgentMethod< int >(FunctionPointer_HeroAgent_GetShotTimes)); meta->RegisterMethod(2253976520u, BEHAVIAC_NEW CAgentMethod< glm::vec3 >(FunctionPointer_HeroAgent_GetTargetDir)); + meta->RegisterMethod(2804704472u, BEHAVIAC_NEW CAgentMethod< float >(FunctionPointer_HeroAgent_GetTargetManhattanDistance)); meta->RegisterMethod(2541118574u, BEHAVIAC_NEW CAgentMethod< int >(FunctionPointer_HeroAgent_GetTickCount)); meta->RegisterMethod(1866966855u, BEHAVIAC_NEW CAgentMethod< int >(FunctionPointer_HeroAgent_GetUniId)); meta->RegisterMethod(4271568288u, BEHAVIAC_NEW CAgentMethod< int >(FunctionPointer_HeroAgent_GetUseSkillTimes)); @@ -839,7 +841,7 @@ namespace behaviac meta->RegisterMethod(502968959u, BEHAVIAC_NEW CMethod_behaviac_Agent_VectorRemove()); // AndroidAgent - meta = BEHAVIAC_NEW AgentMeta(1528429479u); + meta = BEHAVIAC_NEW AgentMeta(849376509u); AgentMeta::GetAgentMetas()[2475098143u] = meta; meta->RegisterMemberProperty(2706111800u, BEHAVIAC_NEW CMemberProperty< TargetAgent* >("current_target_agent", Set_HeroAgent_current_target_agent, Get_HeroAgent_current_target_agent)); meta->RegisterMemberProperty(1530109714u, BEHAVIAC_NEW CMemberProperty< MasterAgent* >("master_agent", Set_HeroAgent_master_agent, Get_HeroAgent_master_agent)); @@ -867,6 +869,7 @@ namespace behaviac meta->RegisterMemberProperty(3112816101u, BEHAVIAC_NEW CMemberProperty< float >("tmp_val2", Set_HeroAgent_tmp_val2, Get_HeroAgent_tmp_val2)); meta->RegisterMemberProperty(2693987492u, BEHAVIAC_NEW CMemberProperty< float >("tmp_val3", Set_HeroAgent_tmp_val3, Get_HeroAgent_tmp_val3)); meta->RegisterMemberProperty(4023609955u, BEHAVIAC_NEW CMemberProperty< float >("tmp_val4", Set_HeroAgent_tmp_val4, Get_HeroAgent_tmp_val4)); + meta->RegisterMethod(3724946699u, BEHAVIAC_NEW CAgentMethodVoid_1(FunctionPointer_AndroidAgent_BattleMove) /* BattleMove */); meta->RegisterMethod(113953652u, BEHAVIAC_NEW CMethod_HeroAgent_CalcDistance()); meta->RegisterMethod(896336728u, BEHAVIAC_NEW CAgentMethod< bool >(FunctionPointer_AndroidAgent_CanShot)); meta->RegisterMethod(1672911688u, BEHAVIAC_NEW CAgentMethod< bool >(FunctionPointer_AndroidAgent_CanUseSkill)); @@ -899,6 +902,7 @@ namespace behaviac meta->RegisterMethod(138556770u, BEHAVIAC_NEW CAgentMethod< float >(FunctionPointer_AndroidAgent_GetShotRange)); meta->RegisterMethod(3821163497u, BEHAVIAC_NEW CAgentMethod< int >(FunctionPointer_AndroidAgent_GetShotTimes)); meta->RegisterMethod(2253976520u, BEHAVIAC_NEW CAgentMethod< glm::vec3 >(FunctionPointer_AndroidAgent_GetTargetDir)); + meta->RegisterMethod(2804704472u, BEHAVIAC_NEW CAgentMethod< float >(FunctionPointer_AndroidAgent_GetTargetManhattanDistance)); meta->RegisterMethod(2541118574u, BEHAVIAC_NEW CAgentMethod< int >(FunctionPointer_AndroidAgent_GetTickCount)); meta->RegisterMethod(1866966855u, BEHAVIAC_NEW CAgentMethod< int >(FunctionPointer_AndroidAgent_GetUniId)); meta->RegisterMethod(4271568288u, BEHAVIAC_NEW CAgentMethod< int >(FunctionPointer_AndroidAgent_GetUseSkillTimes)); diff --git a/server/bin/exported/behaviac_generated/types/internal/behaviac_agent_meta.h b/server/bin/exported/behaviac_generated/types/internal/behaviac_agent_meta.h index 798ec907..01159d14 100644 --- a/server/bin/exported/behaviac_generated/types/internal/behaviac_agent_meta.h +++ b/server/bin/exported/behaviac_generated/types/internal/behaviac_agent_meta.h @@ -134,6 +134,7 @@ namespace behaviac inline void Set_HeroAgent_tmp_val4(Agent* self, float value) { ((HeroAgent*)self)->tmp_val4 = value; }; inline const void* Get_HeroAgent_tmp_val4(Agent* self) { return &((HeroAgent*)self)->tmp_val4; }; + inline void FunctionPointer_HeroAgent_BattleMove(Agent* self, glm::vec3& loc_point0) { } /* BattleMove */ inline bool FunctionPointer_HeroAgent_CanShot(Agent* self) { return ((HeroAgent*)self)->CanShot(); } inline bool FunctionPointer_HeroAgent_CanUseSkill(Agent* self) { return ((HeroAgent*)self)->CanUseSkill(); } inline void FunctionPointer_HeroAgent_ChaseToKill(Agent* self, int loc_val0, int loc_val1, int loc_val2) { } /* ChaseToKill */ @@ -162,6 +163,7 @@ namespace behaviac inline float FunctionPointer_HeroAgent_GetShotRange(Agent* self) { return ((HeroAgent*)self)->GetShotRange(); } inline int FunctionPointer_HeroAgent_GetShotTimes(Agent* self) { return ((HeroAgent*)self)->GetShotTimes(); } inline glm::vec3 FunctionPointer_HeroAgent_GetTargetDir(Agent* self) { return ((HeroAgent*)self)->GetTargetDir(); } + inline float FunctionPointer_HeroAgent_GetTargetManhattanDistance(Agent* self) { return ((HeroAgent*)self)->GetTargetManhattanDistance(); } inline int FunctionPointer_HeroAgent_GetTickCount(Agent* self) { return ((HeroAgent*)self)->GetTickCount(); } inline int FunctionPointer_HeroAgent_GetUniId(Agent* self) { return ((HeroAgent*)self)->GetUniId(); } inline int FunctionPointer_HeroAgent_GetUseSkillTimes(Agent* self) { return ((HeroAgent*)self)->GetUseSkillTimes(); } @@ -200,6 +202,7 @@ namespace behaviac inline bool FunctionPointer_HeroAgent_TargetInShotRange(Agent* self) { return (bool)((HeroAgent*)self)->_Execute_Method_(); } inline void FunctionPointer_HeroAgent_TeammateHelpAttack(Agent* self) { } /* TeammateHelpAttack */ inline void FunctionPointer_HeroAgent_UseSkill(Agent* self, int skill_id) { ((HeroAgent*)self)->_Execute_Method_(skill_id); } + inline void FunctionPointer_AndroidAgent_BattleMove(Agent* self, glm::vec3& loc_point0) { } /* BattleMove */ inline bool FunctionPointer_AndroidAgent_CanShot(Agent* self) { return ((AndroidAgent*)self)->CanShot(); } inline bool FunctionPointer_AndroidAgent_CanUseSkill(Agent* self) { return ((AndroidAgent*)self)->CanUseSkill(); } inline void FunctionPointer_AndroidAgent_ChaseToKill(Agent* self, int loc_val0, int loc_val1, int loc_val2) { } /* ChaseToKill */ @@ -229,6 +232,7 @@ namespace behaviac inline float FunctionPointer_AndroidAgent_GetShotRange(Agent* self) { return ((AndroidAgent*)self)->GetShotRange(); } inline int FunctionPointer_AndroidAgent_GetShotTimes(Agent* self) { return ((AndroidAgent*)self)->GetShotTimes(); } inline glm::vec3 FunctionPointer_AndroidAgent_GetTargetDir(Agent* self) { return ((AndroidAgent*)self)->GetTargetDir(); } + inline float FunctionPointer_AndroidAgent_GetTargetManhattanDistance(Agent* self) { return ((AndroidAgent*)self)->GetTargetManhattanDistance(); } inline int FunctionPointer_AndroidAgent_GetTickCount(Agent* self) { return ((AndroidAgent*)self)->GetTickCount(); } inline int FunctionPointer_AndroidAgent_GetUniId(Agent* self) { return ((AndroidAgent*)self)->GetUniId(); } inline int FunctionPointer_AndroidAgent_GetUseSkillTimes(Agent* self) { return ((AndroidAgent*)self)->GetUseSkillTimes(); } diff --git a/server/gameserver/new_hero_agent.cc b/server/gameserver/new_hero_agent.cc index 252b1033..f493eab9 100644 --- a/server/gameserver/new_hero_agent.cc +++ b/server/gameserver/new_hero_agent.cc @@ -144,7 +144,10 @@ int HeroAgent::GetLevel() bool HeroAgent::CanShot() { - return owner_->CanShot(false); + if (owner_->GetActionType() == AT_Reload) { + return false; + } + return owner_->CanShot(true); } bool HeroAgent::CanUseSkill() @@ -207,8 +210,12 @@ glm::vec3 HeroAgent::GetRandomDir() glm::vec3 HeroAgent::GetTargetDir() { - if (current_target_agent->IsValid()) { - return owner_->GetMoveDir(); + if (!current_target_agent->IsValid()) { + return owner_->GetAttackDir(); + } + if (GlmHelper::IsEqual2D(owner_->GetPos().ToGlmVec3(), + current_target_agent->GetPos())) { + return owner_->GetAttackDir(); } glm::vec3 dir = current_target_agent->GetPos() - owner_->GetPos().ToGlmVec3(); GlmHelper::Normalize(dir); @@ -721,7 +728,7 @@ bool HeroAgent::TargetInShotRange() if (!in_square) { return false; } - return shot_range < owner_->GetPos().DistanceGlmVec3(current_target_agent->GetPos()); + return shot_range > owner_->GetPos().DistanceGlmVec3(current_target_agent->GetPos()); } bool HeroAgent::InTargetShotRange() @@ -737,7 +744,7 @@ bool HeroAgent::InTargetShotRange() if (!in_square) { return false; } - return shot_range < owner_->GetPos().DistanceGlmVec3(current_target_agent->GetPos()); + return shot_range > owner_->GetPos().DistanceGlmVec3(current_target_agent->GetPos()); } void HeroAgent::ResetShotTimes() @@ -759,3 +766,13 @@ int HeroAgent::GetUseSkillTimes() { return 0; } + +float HeroAgent::GetTargetManhattanDistance() +{ + if (!current_target_agent->IsValid()) { + return 0; + } + Position pos; + pos.FromGlmVec3(current_target_agent->GetPos()); + return owner_->GetPos().ManhattanDistance2D(pos); +} diff --git a/server/gameserver/new_hero_agent.h b/server/gameserver/new_hero_agent.h index 2be7e112..554fc1a0 100644 --- a/server/gameserver/new_hero_agent.h +++ b/server/gameserver/new_hero_agent.h @@ -88,6 +88,7 @@ public: void ResetUseSkillTimes(); int GetShotTimes(); int GetUseSkillTimes(); + float GetTargetManhattanDistance(); behaviac::EBTStatus RegisterEvents(behaviac::vector events); behaviac::EBTStatus SearchEnemy(float range);