From ad9bfef0e0a4bd02ff2e10a379c49c6327bb10cb Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 15 Aug 2022 19:01:16 +0800 Subject: [PATCH 1/8] 1 --- server/gameserver/buff.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/server/gameserver/buff.cc b/server/gameserver/buff.cc index 7fb7f75f..57311dd5 100644 --- a/server/gameserver/buff.cc +++ b/server/gameserver/buff.cc @@ -62,7 +62,6 @@ void Buff::FillMFBuff(cs::MFBuff* buff_pb) if (owner->IsHuman() && (meta->i->buff_effect() == kBET_Driver || meta->i->buff_effect() == kBET_Passenger)) { - buff_pb->add_params(((Human*)owner)->GetCar()->meta->i->id()); } } From 3ef41706d51d5641b7f5a558a6af4a60a9393112 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 15 Aug 2022 19:05:02 +0800 Subject: [PATCH 2/8] 1 --- server/gameserver/human.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index c59a048f..2790274b 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -658,7 +658,11 @@ void Human::GetAabbBox(AabbCollider& aabb_box) aabb_box._min.y = -meta->i->radius(); aabb_box._max.x = meta->i->radius(); aabb_box._max.y = meta->i->radius(); +#if 1 + aabb_box.MoveCenter(0, 0); +#else aabb_box.MoveCenter(meta->i->move_offset_x(), meta->i->move_offset_y()); +#endif } } From 1e3b09e5cd59808b5d7a3845b3f99c2bff3592d3 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 16 Aug 2022 10:21:56 +0800 Subject: [PATCH 3/8] 21 --- server/gameserver/creature.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index fd276a54..2487b2f8 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1102,7 +1102,7 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase) { a8::Vec2 old_dir = GetMoveDir(); a8::Vec2 old_pos = GetPos(); - if (CurrentSkill()->GetMinorType() != SMT_NONE) { + if (CurrentSkill()->GetMinorType() == SMT_NONE) { _UpdateMove(phase->param1.GetInt()); a8::Vec2 pre_dir = old_dir; a8::Vec2 pre_pos = old_pos; From 6476ec80ccbb250364bfc46794d26e676e88c4a4 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 16 Aug 2022 10:28:51 +0800 Subject: [PATCH 4/8] 1 --- server/gameserver/creature.cc | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 2487b2f8..0442e0f7 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1103,6 +1103,8 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase) a8::Vec2 old_dir = GetMoveDir(); a8::Vec2 old_pos = GetPos(); if (CurrentSkill()->GetMinorType() == SMT_NONE) { + int buff_id = phase->param2.GetInt(); + TryAddBuff(this, buff_id); _UpdateMove(phase->param1.GetInt()); a8::Vec2 pre_dir = old_dir; a8::Vec2 pre_pos = old_pos; @@ -1110,13 +1112,14 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase) ( SMT_BLINK, phase->param2.GetInt(), - [this, pre_pos, pre_dir] () { + [this, pre_pos, pre_dir, buff_id] () { a8::Vec2 old_dir = GetMoveDir(); a8::Vec2 old_pos = GetPos(); float distance = GetPos().Distance(pre_pos); if (distance > 0.0001f) { a8::Vec2 new_dir = pre_pos - GetPos(); new_dir.Normalize(); + TryAddBuff(this, buff_id); _UpdateMove(distance); } SetMoveDir(old_dir); @@ -1342,13 +1345,15 @@ void Creature::ProcBuffEffect(Creature* caster, Buff* buff) break; case kBET_FlashMove: { - a8::Vec2 old_pos = GetPos(); - a8::Vec2 new_pos = GetPos() + skill_dir_ * std::max(skill_distance_, 300.0f); - SetPos(new_pos); - if (CollisonDetection()) { - SetPos(old_pos); - } else { - room->grid_service->MoveCreature(this); + if (buff->meta->int_param1 == 0) { + a8::Vec2 old_pos = GetPos(); + a8::Vec2 new_pos = GetPos() + skill_dir_ * std::max(skill_distance_, 300.0f); + SetPos(new_pos); + if (CollisonDetection()) { + SetPos(old_pos); + } else { + room->grid_service->MoveCreature(this); + } } } break; From 8bf10b40dc7bab9376fca8c1f73d1058f106c2ed Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 16 Aug 2022 10:32:47 +0800 Subject: [PATCH 5/8] 1 --- server/gameserver/creature.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 0442e0f7..878f2d9e 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1103,7 +1103,7 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase) a8::Vec2 old_dir = GetMoveDir(); a8::Vec2 old_pos = GetPos(); if (CurrentSkill()->GetMinorType() == SMT_NONE) { - int buff_id = phase->param2.GetInt(); + int buff_id = phase->param3.GetInt(); TryAddBuff(this, buff_id); _UpdateMove(phase->param1.GetInt()); a8::Vec2 pre_dir = old_dir; From 22e2cb59580b4e578f9e61367e73255683a4f9d8 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 16 Aug 2022 10:56:57 +0800 Subject: [PATCH 6/8] 1 --- server/gameserver/creature.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 878f2d9e..d511ec1f 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1119,6 +1119,7 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase) if (distance > 0.0001f) { a8::Vec2 new_dir = pre_pos - GetPos(); new_dir.Normalize(); + SetMoveDir(new_dir); TryAddBuff(this, buff_id); _UpdateMove(distance); } From c6b4e1a80c18ae10e9afe52c9c82e63773aaec4b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 16 Aug 2022 10:57:38 +0800 Subject: [PATCH 7/8] 1 --- server/gameserver/skill.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/server/gameserver/skill.cc b/server/gameserver/skill.cc index 22e4cdae..8b8781a5 100644 --- a/server/gameserver/skill.cc +++ b/server/gameserver/skill.cc @@ -224,6 +224,7 @@ void Skill::AddMinorMode( skill->minor_mode_timer_ = nullptr; } ); + NotifySkillState(); } void Skill::DoMinorMode() From 72ab8d288b5e40b29ef37d6b6c9d0915d7f7cda9 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 16 Aug 2022 13:31:28 +0800 Subject: [PATCH 8/8] 1 --- server/gameserver/creature.cc | 6 ++++-- server/gameserver/skill.cc | 9 ++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index d511ec1f..f5df57dd 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1104,10 +1104,12 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase) a8::Vec2 old_pos = GetPos(); if (CurrentSkill()->GetMinorType() == SMT_NONE) { int buff_id = phase->param3.GetInt(); - TryAddBuff(this, buff_id); + //TryAddBuff(this, buff_id); + a8::XPrintf("old_pos:%f,%f", {GetPos().x, GetPos().y}); _UpdateMove(phase->param1.GetInt()); a8::Vec2 pre_dir = old_dir; a8::Vec2 pre_pos = old_pos; + a8::XPrintf("new_pos:%f,%f", {GetPos().x, GetPos().y}); CurrentSkill()->AddMinorMode ( SMT_BLINK, @@ -1120,7 +1122,7 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase) a8::Vec2 new_dir = pre_pos - GetPos(); new_dir.Normalize(); SetMoveDir(new_dir); - TryAddBuff(this, buff_id); + //TryAddBuff(this, buff_id); _UpdateMove(distance); } SetMoveDir(old_dir); diff --git a/server/gameserver/skill.cc b/server/gameserver/skill.cc index 8b8781a5..eb7a2e1f 100644 --- a/server/gameserver/skill.cc +++ b/server/gameserver/skill.cc @@ -76,6 +76,11 @@ void Skill::FillMFSkill(cs::MFSkill* skill_pb) #if 1 skill_pb->set_left_time(GetCd()); #endif + a8::XPrintf("type: %d, lefttime:%d cd_time:%d\n", { + minor_type_, + minor_left_time, + minor_cd_time_ + }); } } @@ -212,6 +217,7 @@ void Skill::AddMinorMode( .SetSender(this), [] (const a8::XParams& param) { + Skill* skill = (Skill*)param.sender.GetUserData(); }, &xtimer_attacher.timer_list_, [] (const a8::XParams& param) @@ -224,7 +230,7 @@ void Skill::AddMinorMode( skill->minor_mode_timer_ = nullptr; } ); - NotifySkillState(); + owner->need_sync_active_player = true; } void Skill::DoMinorMode() @@ -235,5 +241,6 @@ void Skill::DoMinorMode() minor_cd_time_ = 0; minor_cb_ = nullptr; ResetSkillCd(); + owner->need_sync_active_player = true; } }