diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 94f2060..db32d7d 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1471,3 +1471,10 @@ void Creature::SetCurrWeapon(Weapon* weapon) #endif curr_weapon_ = weapon; } + +void Creature::ResetAllSkillCd() +{ + for (auto& pair : skill_hash_) { + pair.second->ResetSkillCd(); + } +} diff --git a/server/gameserver/creature.h b/server/gameserver/creature.h index ad89eeb..7709f12 100644 --- a/server/gameserver/creature.h +++ b/server/gameserver/creature.h @@ -139,6 +139,7 @@ class Creature : public MoveableEntity Weapon* ChooseNextWeapon(int curr_weapon_slot_id, int begin_slot_id, int end_slot_id); Weapon* GetCurrWeapon() { return curr_weapon_; }; void SetCurrWeapon(Weapon* weapon); + void ResetAllSkillCd(); private: diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 91b1f83..c0f40a2 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -248,6 +248,7 @@ void Human::FillMFPlayerStats(cs::MFPlayerStats* stats_pb) stats_pb->set_player_avatar_url(avatar_url); stats_pb->set_charid(meta->i->id()); stats_pb->set_team_id(team_id); + stats_pb->set_nickname(name); if (!dead) { stats_pb->set_time_alive(room->GetFrameNo() * 1000.0f / SERVER_FRAME_RATE); diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index d872b61..ceb0197 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1706,6 +1706,7 @@ void Room::ShuaPlane() for (auto& pair : human_hash_) { pair.second->MustBeAddBuff(pair.second, FLY_BUFFID); + pair.second->ResetAllSkillCd(); pair.second->SetPos(plane.curr_pos); pair.second->attack_dir = plane.dir; pair.second->SetMoveDir(plane.dir); diff --git a/server/gameserver/skill.cc b/server/gameserver/skill.cc index 971770f..4a59ad8 100644 --- a/server/gameserver/skill.cc +++ b/server/gameserver/skill.cc @@ -132,3 +132,11 @@ void Skill::NotifySkillState() owner->room->frame_event.AddSkillCurrTimesChg(owner->AllocWeakPtr(), meta->i->skill_id(), GetCurrTimes()); } } + +void Skill::ResetSkillCd() +{ + curr_times_ = 0; + if (inc_times_timer_) { + owner->room->xtimer.ModifyTimer(inc_times_timer_, GetCd() / FRAME_RATE_MS); + } +} diff --git a/server/gameserver/skill.h b/server/gameserver/skill.h index 117f8b7..56949d9 100644 --- a/server/gameserver/skill.h +++ b/server/gameserver/skill.h @@ -34,6 +34,7 @@ class Skill int GetMaxTimes(); void DecTimes(); void FillMFSkill(cs::MFSkill* skill_pb); + void ResetSkillCd(); void ClearPassiveSkillBuff(); void AddPassiveSkillBuff(); diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 9fbfd35..59ad856 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -669,6 +669,7 @@ message MFPlayerStats optional int32 sex = 37 [default = 0]; //性别 optional int32 charid = 38; //人物id optional int32 team_id = 39; //tamid + optional string nickname = 43; //昵称 } //空投