diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index a0a9ed58..e181c8eb 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -949,10 +949,20 @@ void Creature::DoSkill(int skill_id, } #endif if (room->HasRoomSwitch(kRoomSwitchDisableUseSkill)) { +#ifdef MYDEBUG + if (IsPlayer()) { + a8::XPrintf("DoSkill skill_id:%d 1\n", {skill_id}); + } +#endif return; } Skill* skill = GetSkill(skill_id); if (skill && CanUseSkill(skill_id)) { +#ifdef MYDEBUG + if (IsPlayer()) { + a8::XPrintf("DoSkill skill_id:%d a\n", {skill_id}); + } +#endif #ifdef MYDEBUG if (IsPlayer()) { a8::XPrintf("DoSkill minor_type:%d\n", {skill->GetMinorType()}); @@ -1063,6 +1073,13 @@ void Creature::DoSkill(int skill_id, ptr.Attach(this); room->frame_event.AddPlaySkill(ptr, skill_id); } + } else { +#ifdef MYDEBUG + if (IsPlayer()) { + CanUseSkill(skill_id); + a8::XPrintf("DoSkill skill_id:%d b\n", {skill_id}); + } +#endif } } diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 09433716..56b355ac 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -944,12 +944,16 @@ void Player::_CMMove(f8::MsgHdr* hdr, const cs::CMMove& msg) } #endif #ifdef MYDEBUG1 - a8::XPrintf("CMMove.Shot shot_sart:%d shot_hold:%d skill_hold:%d\n", - { - msg.shot_start(), - msg.shot_hold(), - msg.skill_hold() - }); + if (msg.skill_id()) { + a8::XPrintf("CMMove.Shot shot_sart:%d shot_hold:%d skill_hold:%d skill_id:%d seq:%d\n", + { + msg.shot_start(), + msg.shot_hold(), + msg.skill_hold(), + msg.skill_id(), + msg.seq() + }); + } #endif long long pre_frameno = last_cmmove_frameno_; last_cmmove_frameno_ = room->GetFrameNo(); diff --git a/server/gameserver/skill.cc b/server/gameserver/skill.cc index 6ee909ca..bbd59a36 100644 --- a/server/gameserver/skill.cc +++ b/server/gameserver/skill.cc @@ -109,6 +109,19 @@ int Skill::GetMaxTimes() void Skill::NotifySkillState() { if (owner->IsHuman() || owner->IsCar()) { +#ifdef MYDEBUG + if (owner->IsPlayer()) { + a8::XPrintf("last_frameno:%d room.frameno:%d tick_count:%d\n", + {last_sync_frameno, + owner->room->GetFrameNo(), + a8::XGetTickCount() + }); + } +#endif + last_sync_frameno = owner->room->GetFrameNo(); + if (owner->IsPlayer() && last_sync_frameno > last_use_frameno + 2) { + int i = 0; + } if (GetCurrTimes() < GetMaxTimes()) { owner->room->frame_event.AddSkillCdChg(owner->AllocWeakPtr(), GetBaseSkillId(), GetCd()); } else { diff --git a/server/gameserver/skill.h b/server/gameserver/skill.h index c351c004..8f34779a 100644 --- a/server/gameserver/skill.h +++ b/server/gameserver/skill.h @@ -25,6 +25,7 @@ class Skill public: Creature* owner = nullptr; long long last_use_frameno = 0; + long long last_sync_frameno = 0; a8::Attacher xtimer_attacher; int force_use_times = 0; glm::vec3 skill_pos = glm::vec3(0.0f, 0.0f, 0.0f); diff --git a/third_party/f8 b/third_party/f8 index 78ca6cf8..94df666a 160000 --- a/third_party/f8 +++ b/third_party/f8 @@ -1 +1 @@ -Subproject commit 78ca6cf82f6d450f02f23827d6ed09e98cca046a +Subproject commit 94df666a7847c8e98f372c2e7da2e2146546daa2