楼主: 黄永斌

[巫妖王之怒] 从源码等底层机制看清算之手雕文如何实现(A端)

[复制链接]

1449

时沙

0

精华

0

主题

声望: 4075   虚弱: 0

Lv.6(觉醒者)

炉石伊利丹·怒风时沙之瓶信仰战假死猎人今天也只能打恢复的增强萨潜行者卖糖术神金鼠(ytfirefox制作) 犇向牛年(尚美制作)

发表于 2026-1-14 19:57:08 | 显示全部楼层
感谢大佬分享
[发帖际遇]: h8787148787积极反馈有爱魔兽BUG,获得2 声望. 幸运榜 / 衰神榜
回复

使用道具 举报

417

时沙

0

精华

0

主题

声望: 292   虚弱: 0

Lv.3(忠诚者)

发表于 2026-1-14 22:42:50 | 显示全部楼层
感谢分享
[发帖际遇]: avd1115用无偿提供大量磨刀石给团队所有成员磨刀,获得3 声望. 幸运榜 / 衰神榜
回复

使用道具 举报

发表于 2026-1-15 00:46:39 | 显示全部楼层
感谢分享
回复

使用道具 举报

67

时沙

0

精华

0

主题

声望: 418   虚弱: 0

Lv.3(忠诚者)

米飯

发表于 2026-1-16 11:35:36 | 显示全部楼层
感谢大佬分享
回复

使用道具 举报

711

时沙

0

精华

19

主题

声望: 1495   虚弱: 3

Lv.4(锻造者)

发表于 2026-1-16 16:28:48 | 显示全部楼层
黄永斌 发表于 2026-1-14 16:33
我打了npcbot的mod,有没有mod这部分的代码不一样,你知道这里传入的spell info决定技能效果就行 ...

从参数看TryGetSpellInfoOverride 有2个参数 直接->TryGetSpellInfoOverride是一个参数 在spell下覆盖老的->TryGetSpellInfoOverride老的又没效果了。
不过AI一直提醒这种写法很容易出问题。需要用加锁来防止影响其他玩家使用清算技能。
回复

使用道具 举报

480

时沙

0

精华

0

主题

声望: 307   虚弱: 0

Lv.4(锻造者)

灵蛇献瑞(尚美制作)

发表于 2026-1-16 22:09:08 | 显示全部楼层
很详细,感谢分享
回复

使用道具 举报

40

时沙

0

精华

2

主题

声望: 320   虚弱: 0

Lv.3(忠诚者)

 楼主| 发表于 2026-1-16 22:48:43 | 显示全部楼层
azerothcore 发表于 2026-1-16 16:28
从参数看TryGetSpellInfoOverride 有2个参数 直接->TryGetSpellInfoOverride是一个参数 在spell下覆盖老 ...

我看到真正通知客户端上技能CD的代码了,晚点时候我测试好了再分享
回复

使用道具 举报

40

时沙

0

精华

2

主题

声望: 320   虚弱: 0

Lv.3(忠诚者)

 楼主| 发表于 2026-1-17 03:56:54 | 显示全部楼层
  1. class spell_pal_hand_of_reckoning_glyph : public SpellScript
  2. {
  3.     PrepareSpellScript(spell_pal_hand_of_reckoning_glyph);
  4.     SpellCastResult CheckCast()
  5.     {
  6.         Unit* caster = GetCaster();
  7.         if (caster->HasAura(900005))
  8.         {
  9.             if (Unit* target = GetExplTargetUnit())
  10.             {
  11.                 caster->CastSpell(target, 900010, false);
  12.             }
  13.             SetCustomCastResultMessage(SPELL_CUSTOM_ERROR_NONE);
  14.             return SPELL_FAILED_DONT_REPORT;
  15.         }
  16.         return SPELL_CAST_OK;
  17.     }
  18.     void Register() override
  19.     {
  20.         OnCheckCast += SpellCheckCastFn(spell_pal_hand_of_reckoning_glyph::CheckCast);
  21.     }
  22. };
  23. class spell_pal_hand_of_reckoning_glyph_dummy : public SpellScript
  24. {
  25.     PrepareSpellScript(spell_pal_hand_of_reckoning_glyph_dummy);
  26.     void HandleDummy(SpellEffIndex effIndex)
  27.     {
  28.         Unit* caster = GetCaster();
  29.         caster->AddSpellCooldown(62124, 0, GetSpellInfo()->RecoveryTime);
  30.         if (Player* player = GetCaster()->ToPlayer())
  31.         {
  32.             WorldPacket data;
  33.             caster->BuildCooldownPacket(data, SPELL_COOLDOWN_FLAG_INCLUDE_GCD, 62124, GetSpellInfo()->RecoveryTime);
  34.             player->SendDirectMessage(&data);
  35.         }
  36.         if (Unit* target = GetHitUnit())
  37.         {
  38.             if (target->GetVictim() != caster)
  39.             {
  40.                 caster->CastSpell(target, 67485, true);
  41.                 target->CombatStart(caster);
  42.             }
  43.         }
  44.     }
  45.     void Register() override
  46.     {
  47.         OnEffectHitTarget += SpellEffectFn(spell_pal_hand_of_reckoning_glyph_dummy::HandleDummy, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
  48.     }
  49. };
复制代码


用了两个spell script搞定,900005是雕文光环,900010是假技能。改spellinfo真的有点脏
回复

使用道具 举报

711

时沙

0

精华

19

主题

声望: 1495   虚弱: 3

Lv.4(锻造者)

发表于 2026-1-17 09:09:52 | 显示全部楼层
黄永斌 发表于 2026-1-17 03:56
用了两个spell script搞定,900005是雕文光环,900010是假技能。改spellinfo真的有点脏 ...

改spellinfo 的确脏 不过自由度就很高。
可以直接让暴风雪顺发。不影响其他。如果用其他方式就很费劲。
回复

使用道具 举报

711

时沙

0

精华

19

主题

声望: 1495   虚弱: 3

Lv.4(锻造者)

发表于 2026-1-17 09:13:19 | 显示全部楼层
本帖最后由 azerothcore 于 2026-1-17 09:40 编辑
黄永斌 发表于 2026-1-17 03:56
用了两个spell script搞定,900005是雕文光环,900010是假技能。改spellinfo真的有点脏 ...

if (Unit* target = GetExplTargetUnit())
            {
                caster->CastSpell(target, 900010, false);
            }
这里直接释放技能+进入CD不行? 要换一个技能?
就算无法在第一个脚本进入CD 也应该是将900010 改成67485 67485用脚本处理一下让清算进CD 加一个假技能没必要。

image.png


测试一点问题没有。
[发帖际遇]: azerothcore积极反馈有爱魔兽BUG,获得4 声望. 幸运榜 / 衰神榜
回复

使用道具 举报

快速回复 返回顶部 返回列表