From d56c31b355e8db7aec03cd00f591752a65006b6f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 25 May 2023 14:24:04 +0800 Subject: [PATCH] 1 --- server/gameserver/pbutils.cc | 2 +- server/gameserver/skill.cc | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index 93c1cc75..d9c1ff73 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -506,7 +506,7 @@ void Obstacle::FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_d void Skill::FillMFSkill(cs::MFSkill* skill_pb) { - skill_pb->set_skill_id(meta->skill_id()); + skill_pb->set_skill_id(meta->skill_id() + level_ - 1); skill_pb->set_actived(Actived()); skill_pb->set_left_time(GetLeftTime()); skill_pb->set_cd_time(GetCd()); diff --git a/server/gameserver/skill.cc b/server/gameserver/skill.cc index 761c340a..027462b0 100644 --- a/server/gameserver/skill.cc +++ b/server/gameserver/skill.cc @@ -521,9 +521,8 @@ void Skill::LevelUp() int skill_lv = owner->GetInventory(IS_BLUE_STONE) / 3 + 1; const mt::Skill* new_skill_meta = mt::Skill::GetById(meta->_base_skill_meta->skill_id()); if (new_skill_meta) { - if (mt::Skill::GetById(new_skill_meta->skill_id() + skill_lv)) { - meta = mt::Skill::GetById(new_skill_meta->skill_id() + skill_lv); - owner->skill_hash_[meta->skill_id()] = owner->skill_hash_[meta->_base_skill_meta->skill_id()]; + if (mt::Skill::GetById(new_skill_meta->skill_id() + skill_lv - 1)) { + owner->skill_hash_[new_skill_meta->skill_id() + skill_lv - 1] = owner->skill_hash_[meta->skill_id()]; } level_ = skill_lv; } @@ -540,9 +539,8 @@ void Skill::LevelUp() void Skill::Reset() { Clear(); - level_ = 1; - if (meta->_base_skill_meta) { - owner->skill_hash_[meta->_base_skill_meta->skill_id()] = owner->skill_hash_[meta->_base_skill_meta->skill_id()]; - meta = meta->_base_skill_meta; + for (int i = 2; i <= level_; ++i) { + owner->skill_hash_.erase(meta->skill_id() + i - 1); } + level_ = 1; }