From d530ef29daf7090fb2d46a5b4a9f51b91357e3c6 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 20 Apr 2023 13:57:33 +0800 Subject: [PATCH] 1 --- server/gameserver/guide.cc | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/server/gameserver/guide.cc b/server/gameserver/guide.cc index 48922156..c718a39b 100644 --- a/server/gameserver/guide.cc +++ b/server/gameserver/guide.cc @@ -3,6 +3,7 @@ #include "guide.h" #include "human.h" #include "room.h" +#include "glmhelper.h" #include "mt/GuideStep.h" @@ -70,7 +71,16 @@ void Guide::ProcMoveTarget() [this] (int event, const a8::Args* args) { if (a8::TIMER_EXEC_EVENT == event) { - + if (!curr_step_meta_->_params.empty()) { + Position pos; + pos.FromGlmVec3(std::get<1>(curr_step_meta_->_params.at(0))); + if (owner_->GetPos().Distance2D2(pos) < 5) { + owner_->room->xtimer.DeleteCurrentTimer(); + NextStep(); + } + } else { + NextStep(); + } } }, &owner_->xtimer_attacher); @@ -78,7 +88,18 @@ void Guide::ProcMoveTarget() void Guide::ProcMoveTargetAndPickup() { - + if (curr_step_meta_->_params.empty()) { + NextStep(); + return; + } + for (auto& tuple : curr_step_meta_->_params) { + owner_->room->CreateLoot( + std::get<2>(tuple), + std::get<1>(tuple), + 1, + 1 + ); + } } void Guide::ProcKillEnemy() @@ -99,5 +120,16 @@ void Guide::ProcUseSkill() void Guide::NextStep() { - + ++curr_step_idx_; + if (curr_step_idx_ >= mt::GuideStep::_steps.size()) { + owner_->room->frame_event.AddPropChg + ( + owner_->GetWeakPtrRef(), + kPropGuideStep, + -1, + 0, + true); + return; + } + UpdateStep(); }