From a87564932e65f0bbde220d666870af265645cb05 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 18 Mar 2021 15:36:04 +0800 Subject: [PATCH] 1 --- server/gameserver/human.cc | 7 ++++++- server/gameserver/human.h | 3 ++- server/gameserver/player.cc | 5 +++-- server/gameserver/player.h | 1 + server/gameserver/zombiemode.ai.cc | 2 +- 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 11746f3..598c689 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1337,7 +1337,7 @@ void Human::DoJump() } } -void Human::DoSkill(int target_id, const a8::Vec2& target_pos) +void Human::DoSkill(int skill_id, int target_id, const a8::Vec2& target_pos) { skill_target_id_ = target_id; skill_target_pos_ = target_pos; @@ -1381,6 +1381,11 @@ void Human::DoSkill(int target_id, const a8::Vec2& target_pos) use_skill = false; } +int Human::SelectSkillId() +{ + return 0; +} + void Human::DoGetOn(int obj_uniid) { if (room->GetGasData().gas_mode == GasInactive) { diff --git a/server/gameserver/human.h b/server/gameserver/human.h index c8fc1678..0663af2 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -195,7 +195,8 @@ class Human : public Creature bool HasNoDownedTeammate(); bool CanUseSkill(); void DoJump(); - void DoSkill(int target_id, const a8::Vec2& target_pos); + void DoSkill(int skill_id, int target_id, const a8::Vec2& target_pos); + virtual int SelectSkillId(); void DoGetOn(int obj_uniid); void DoGetDown(); void FindLocation(); diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 7759e83..8af3911 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -393,7 +393,7 @@ void Player::UpdateUseSkill() if (HasBuffEffect(kBET_Vertigo)) { return; } - DoSkill(skill_target_id, a8::Vec2()); + DoSkill(use_skill_id, skill_target_id, a8::Vec2()); } void Player::Shot() @@ -1111,7 +1111,8 @@ void Player::_CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg) } if (msg.has_use_skill()) { use_skill = msg.use_skill(); - skill_target_id = msg.skill_target_id_(); + use_skill_id = msg.skill_id(); + skill_target_id = msg.skill_target_id(); } else { use_skill = false; } diff --git a/server/gameserver/player.h b/server/gameserver/player.h index fe1cc89..f4667fa 100644 --- a/server/gameserver/player.h +++ b/server/gameserver/player.h @@ -58,6 +58,7 @@ class Player : public Human bool jump = false; bool use_skill = false; + int use_skill_id = 0; int skill_target_id = 0; bool get_down = false; diff --git a/server/gameserver/zombiemode.ai.cc b/server/gameserver/zombiemode.ai.cc index 6e5b6e2..de51e3d 100644 --- a/server/gameserver/zombiemode.ai.cc +++ b/server/gameserver/zombiemode.ai.cc @@ -477,7 +477,7 @@ void ZombieModeAI::DoShot() void ZombieModeAI::DoSkill() { Human* myself = (Human*)owner; - myself->DoSkill(node_->target->GetEntityUniId(), node_->target->GetPos()); + myself->DoSkill(myself->SelectSkillId(), node_->target->GetEntityUniId(), node_->target->GetPos()); } int ZombieModeAI::GetAttackTimes()