From 958bb73ee6cabd0920eb8d5c7c997aa015894285 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 15 Jun 2023 13:30:19 +0800 Subject: [PATCH] 1 --- server/gameserver/car.cc | 8 ++++++++ server/gameserver/car.h | 1 + server/gameserver/commands.cc | 10 +++++----- server/gameserver/skill.cc | 2 +- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/server/gameserver/car.cc b/server/gameserver/car.cc index 3b647428..04ed96e6 100644 --- a/server/gameserver/car.cc +++ b/server/gameserver/car.cc @@ -569,3 +569,11 @@ void Car::DoSkillPostProc(bool used, int skill_id, int target_id) #endif } } + +void Car::Update(int delta_time) +{ + ++updated_times_; + if (playing_skill) { + UpdateSkill(); + } +} diff --git a/server/gameserver/car.h b/server/gameserver/car.h index 4a005378..c1404c3e 100644 --- a/server/gameserver/car.h +++ b/server/gameserver/car.h @@ -13,6 +13,7 @@ class Car : public Creature Car(); virtual ~Car() override; + virtual void Update(int delta_time) override; virtual void Initialize() override; virtual void FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data) override; virtual void FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) override; diff --git a/server/gameserver/commands.cc b/server/gameserver/commands.cc index 409ebef4..c4ed50cd 100644 --- a/server/gameserver/commands.cc +++ b/server/gameserver/commands.cc @@ -328,17 +328,17 @@ void Player::_CMExecCommand(f8::MsgHdr& hdr, const cs::CMExecCommand& msg) } } } else if (cmd == "use_skill") { - if (cmds.size() >= 2) { + if (cmds.size() >= 2 && GetCar() && GetCar()->IsDriver(this)) { int skill_id = a8::XValue(cmds[1]); - Skill* skill = GetSkill(skill_id); + Skill* skill = GetCar()->GetSkill(skill_id); Human* enemy = room->FindEnemy(this, 300); - if (enemy && skill && GetCar() && GetCar()->IsDriver(this)) { - if (CanUseSkill(skill_id) && enemy->GetPos().Distance2D2(GetPos()) > 0.0001f) { + if (enemy && skill) { + if (GetCar()->CanUseSkill(skill_id) && enemy->GetPos().Distance2D2(GetPos()) > 0.0001f) { glm::vec3 skill_dir = enemy->GetPos().ToGlmVec3() - GetPos().ToGlmVec3(); float skill_distance = GlmHelper::Norm(skill_dir); GlmHelper::Normalize(skill_dir); - DoSkill(skill_id, enemy->GetUniId(), skill_dir, skill_distance); + GetCar()->DoSkill(skill_id, enemy->GetUniId(), skill_dir, skill_distance); } } } diff --git a/server/gameserver/skill.cc b/server/gameserver/skill.cc index 9c57e2d5..34911707 100644 --- a/server/gameserver/skill.cc +++ b/server/gameserver/skill.cc @@ -254,7 +254,7 @@ void Skill::InitActiveSkill() }, &xtimer_attacher); actived_ = !owner->GetBattleContext()->IsMainSkill(this); - if (owner->IsAndroid() || owner->IsHero()) { + if (owner->IsAndroid() || owner->IsHero() || owner->IsCar()) { actived_ = true; } }