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 c559ec00..6f648ba2 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(3851205671u); + AgentMeta::SetTotalSignature(1256515167u); AgentMeta* meta = NULL; BEHAVIAC_UNUSED_VAR(meta); @@ -728,7 +728,7 @@ namespace behaviac meta->RegisterMethod(502968959u, BEHAVIAC_NEW CMethod_behaviac_Agent_VectorRemove()); // HeroAgent - meta = BEHAVIAC_NEW AgentMeta(3487638198u); + meta = BEHAVIAC_NEW AgentMeta(632106174u); 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)); @@ -771,6 +771,7 @@ namespace behaviac meta->RegisterMethod(4232723171u, BEHAVIAC_NEW CAgentMethod< behaviac::EBTStatus >(FunctionPointer_HeroAgent_CoShotCurrentTargetRaycast)); meta->RegisterMethod(1700191022u, BEHAVIAC_NEW CAgentMethod_1< behaviac::EBTStatus, float >(FunctionPointer_HeroAgent_CoSleep)); meta->RegisterMethod(345019945u, BEHAVIAC_NEW CAgentMethod_2< behaviac::EBTStatus, int, int >(FunctionPointer_HeroAgent_CoStartMove)); + meta->RegisterMethod(3130174326u, BEHAVIAC_NEW CAgentMethod_4< behaviac::EBTStatus, behaviac::string, int, int, int >(FunctionPointer_HeroAgent_DebugOut)); meta->RegisterMethod(961264360u, BEHAVIAC_NEW CAgentMethodVoid_2(FunctionPointer_HeroAgent_DecV)); meta->RegisterMethod(3850832265u, BEHAVIAC_NEW CAgentMethodVoid(FunctionPointer_HeroAgent_FollowMaster) /* FollowMaster */); meta->RegisterMethod(3395125024u, BEHAVIAC_NEW CAgentMethod< int >(FunctionPointer_HeroAgent_GetAgentType)); @@ -827,7 +828,7 @@ namespace behaviac meta->RegisterMethod(502968959u, BEHAVIAC_NEW CMethod_behaviac_Agent_VectorRemove()); // AndroidAgent - meta = BEHAVIAC_NEW AgentMeta(3218192580u); + meta = BEHAVIAC_NEW AgentMeta(3664374054u); 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)); @@ -870,6 +871,7 @@ namespace behaviac meta->RegisterMethod(4232723171u, BEHAVIAC_NEW CAgentMethod< behaviac::EBTStatus >(FunctionPointer_AndroidAgent_CoShotCurrentTargetRaycast)); meta->RegisterMethod(1700191022u, BEHAVIAC_NEW CAgentMethod_1< behaviac::EBTStatus, float >(FunctionPointer_AndroidAgent_CoSleep)); meta->RegisterMethod(345019945u, BEHAVIAC_NEW CAgentMethod_2< behaviac::EBTStatus, int, int >(FunctionPointer_AndroidAgent_CoStartMove)); + meta->RegisterMethod(3130174326u, BEHAVIAC_NEW CAgentMethod_4< behaviac::EBTStatus, behaviac::string, int, int, int >(FunctionPointer_AndroidAgent_DebugOut)); meta->RegisterMethod(961264360u, BEHAVIAC_NEW CAgentMethodVoid_2(FunctionPointer_AndroidAgent_DecV)); meta->RegisterMethod(3850832265u, BEHAVIAC_NEW CAgentMethodVoid(FunctionPointer_AndroidAgent_FollowMaster) /* FollowMaster */); meta->RegisterMethod(397371422u, BEHAVIAC_NEW CAgentMethod< behaviac::string >(FunctionPointer_AndroidAgent_GetAccountId)); 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 b48cb164..b072e52d 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 @@ -143,6 +143,7 @@ namespace behaviac inline behaviac::EBTStatus FunctionPointer_HeroAgent_CoShotCurrentTargetRaycast(Agent* self) { return ((HeroAgent*)self)->CoShotCurrentTargetRaycast(); } inline behaviac::EBTStatus FunctionPointer_HeroAgent_CoSleep(Agent* self, float time) { return ((HeroAgent*)self)->CoSleep(time); } inline behaviac::EBTStatus FunctionPointer_HeroAgent_CoStartMove(Agent* self, int min_val, int max_val) { return ((HeroAgent*)self)->CoStartMove(min_val, max_val); } + inline behaviac::EBTStatus FunctionPointer_HeroAgent_DebugOut(Agent* self, behaviac::string msg, int arg0, int arg1, int arg2) { return ((HeroAgent*)self)->DebugOut(msg, arg0, arg1, arg2); } inline void FunctionPointer_HeroAgent_DecV(Agent* self, int id, int val) { ((HeroAgent*)self)->_Execute_Method_(id, val); } inline void FunctionPointer_HeroAgent_FollowMaster(Agent* self) { } /* FollowMaster */ inline int FunctionPointer_HeroAgent_GetAgentType(Agent* self) { return ((HeroAgent*)self)->GetAgentType(); } @@ -200,6 +201,7 @@ namespace behaviac inline behaviac::EBTStatus FunctionPointer_AndroidAgent_CoShotCurrentTargetRaycast(Agent* self) { return ((AndroidAgent*)self)->CoShotCurrentTargetRaycast(); } inline behaviac::EBTStatus FunctionPointer_AndroidAgent_CoSleep(Agent* self, float time) { return ((AndroidAgent*)self)->CoSleep(time); } inline behaviac::EBTStatus FunctionPointer_AndroidAgent_CoStartMove(Agent* self, int min_val, int max_val) { return ((AndroidAgent*)self)->CoStartMove(min_val, max_val); } + inline behaviac::EBTStatus FunctionPointer_AndroidAgent_DebugOut(Agent* self, behaviac::string msg, int arg0, int arg1, int arg2) { return ((AndroidAgent*)self)->DebugOut(msg, arg0, arg1, arg2); } inline void FunctionPointer_AndroidAgent_DecV(Agent* self, int id, int val) { ((HeroAgent*)self)->_Execute_Method_(id, val); } inline void FunctionPointer_AndroidAgent_FollowMaster(Agent* self) { } /* FollowMaster */ inline behaviac::string FunctionPointer_AndroidAgent_GetAccountId(Agent* self) { return ((AndroidAgent*)self)->GetAccountId(); } diff --git a/server/gameserver/new_hero_agent.cc b/server/gameserver/new_hero_agent.cc index 02cf155b..aa18d086 100644 --- a/server/gameserver/new_hero_agent.cc +++ b/server/gameserver/new_hero_agent.cc @@ -200,7 +200,7 @@ void HeroAgent::ShotTrace() glm::vec3 HeroAgent::GetRandomDir() { - glm::vec3 dir = owner_->GetMoveDir(); + glm::vec3 dir = owner_->GetAttackDir(); GlmHelper::RotateY(dir, (10 + rand() % 360)/ 180.0f); return dir; } @@ -292,7 +292,7 @@ bool HeroAgent::HasBuffEffect(int effect_id) bool HeroAgent::IsNearGas(float anti_range) { - return Collision::InSquare + return !Collision::InSquare (GlmHelper::Vec2ToVec3(owner_->room->GetGasData().pos_old), owner_->GetPos().ToGlmVec3(), std::max(owner_->room->GetGasData().rad_new, @@ -340,7 +340,7 @@ behaviac::EBTStatus HeroAgent::SearchEnemy(float range) } return true; }); - return behaviac::BT_RUNNING; + return behaviac::BT_FAILURE; } behaviac::EBTStatus HeroAgent::CoIdle(int min_val, int max_val) @@ -594,6 +594,9 @@ behaviac::EBTStatus HeroAgent::DoRunningCb() behaviac::EBTStatus HeroAgent::StartCoroutine(std::shared_ptr coroutine) { +#ifdef DEBUG1 + a8::XPrintf("StartCoroutine:%d %s\n", {owner_->GetUniId(), coroutine->GetName()}); +#endif coroutine_ = coroutine; #ifdef DEBUG last_status_ = behaviac::BT_INVALID; @@ -611,10 +614,14 @@ behaviac::EBTStatus HeroAgent::RegisterEvents(behaviac::vector events behaviac::EBTStatus HeroAgent::CoMoveForward(int min_val, int max_val) { + if (status_ == behaviac::BT_RUNNING) { + return DoRunningCb(); + } float distance = a8::RandEx(min_val, max_val); auto context = MAKE_BTCONTEXT ( ); + owner_->GetMovement()->CalcTargetPos(distance); auto co = std::make_shared(context, "CoMoveForward"); co->runing_cb = [this, context] () @@ -627,3 +634,11 @@ behaviac::EBTStatus HeroAgent::CoMoveForward(int min_val, int max_val) }; return StartCoroutine(co); } + +behaviac::EBTStatus HeroAgent::DebugOut(std::string msg, int arg0, int arg1, int arg2) +{ +#ifdef DEBUG1 + a8::XPrintf((msg+"\n").c_str(), {arg0, arg1, arg2}); +#endif + return behaviac::BT_SUCCESS; +} diff --git a/server/gameserver/new_hero_agent.h b/server/gameserver/new_hero_agent.h index 013e41bb..5d6aab00 100644 --- a/server/gameserver/new_hero_agent.h +++ b/server/gameserver/new_hero_agent.h @@ -82,9 +82,10 @@ public: bool HasFlag(int tag); void SetFlag(int tag); void UnSetFlag(int tag); - behaviac::EBTStatus RegisterEvents(behaviac::vector events); + behaviac::EBTStatus RegisterEvents(behaviac::vector events); behaviac::EBTStatus SearchEnemy(float range); + behaviac::EBTStatus DebugOut(std::string msg, int arg0, int arg1, int arg2); behaviac::EBTStatus CoIdle(int min_val, int max_val); behaviac::EBTStatus CoMoveCurrentTargetRaycast();