楼主: 6548

[巫妖王之怒] ===修改源码和SPELL.DBC 制作自定义百分比吸血技能====

  [复制链接]
发表于 2023-9-15 15:36:22 | 显示全部楼层
最近在做吸血 正好看下 感谢大佬
回复

使用道具 举报

826

时沙

0

精华

3

主题

声望: 283   虚弱: 0

Lv.4(锻造者)

发表于 2023-9-15 15:48:23 | 显示全部楼层
我先看看
[发帖际遇]: wind886688攒够60张亚麻布,交给了含泪相迎的军需官...隔壁的裁缝大婶,获得53 金币. 幸运榜 / 衰神榜
回复

使用道具 举报

546

时沙

0

精华

2

主题

声望: 1000   虚弱: 0

Lv.4(锻造者)

祥龙贺岁(尚美制作)炉石

发表于 2023-9-15 15:51:14 | 显示全部楼层

感谢大佬的分享,学习了
回复

使用道具 举报

826

时沙

0

精华

3

主题

声望: 283   虚弱: 0

Lv.4(锻造者)

发表于 2023-9-15 15:51:28 | 显示全部楼层
这个源码文件在哪里,怎么打开阿?大佬
回复

使用道具 举报

936

时沙

0

精华

7

主题

声望: 3655   虚弱: 0

Lv.5(无冕者)

灵蛇献瑞(尚美制作)祥龙贺岁(尚美制作)炉石信仰战今天也只能打恢复的增强萨吟游牧师潜行者

 楼主| 发表于 2023-9-15 18:44:47 | 显示全部楼层
wind886688 发表于 2023-9-15 15:51
这个源码文件在哪里,怎么打开阿?大佬

azerothcore-wotlk\src\server\game\Entities\Unit
回复

使用道具 举报

1130

时沙

0

精华

1

主题

声望: 126   虚弱: 0

Lv.4(锻造者)

炉石瓦格里的标记假死猎人今天也只能打恢复的增强萨

发表于 2023-9-15 19:36:59 | 显示全部楼层
看看,在上班好房子。
回复

使用道具 举报

2462

时沙

0

精华

18

主题

声望: 4744   虚弱: 0

Lv.6(觉醒者)

灵蛇献瑞(尚美制作)祥龙贺岁(尚美制作)金兔迎春(尚美制作)福虎贺岁(尚美制作)炉石伊利丹·怒风时沙之瓶信仰战假死猎人今天也只能打恢复的增强萨潜行者划水武僧金鼠(ytfirefox制作) 犇向牛年(尚美制作)吟游牧师卖糖术神搓水法爷脚男无冕者莉莉安·沃斯

发表于 2023-9-16 09:01:16 | 显示全部楼层
谢谢分享!!!
回复

使用道具 举报

607

时沙

1

精华

20

主题

声望: 7793   虚弱: 0

Lv.6(觉醒者)

发表于 2023-9-16 09:33:51 | 显示全部楼层
很好很强大
回复

使用道具 举报

703

时沙

0

精华

25

主题

声望: 2652   虚弱: 0

Lv.5(无冕者)

wlk里小白

灵蛇献瑞(尚美制作)祥龙贺岁(尚美制作)

发表于 2023-9-16 10:04:00 发表自手机触屏版 | 显示全部楼层
回复学习,感谢大佬
回复

使用道具 举报

607

时沙

1

精华

20

主题

声望: 7793   虚弱: 0

Lv.6(觉醒者)

发表于 2023-9-16 10:10:34 | 显示全部楼层
本帖最后由 danqu 于 2023-9-16 10:11 编辑

感谢分享,更加灵活性的话,个人觉得可以做如下修改
1,不局限于SPELLFAMILY_PRIEST家族法术
2,不必要的DBC修改,可以更加灵活控制百分比

如下是更加灵活的修改方式,当然我使用的是硬编码,如果使用数据库管理会更加灵活
定义一个结构
struct CustomHealEffect
{
    uint32 spellID;        // 触发此效果的法术ID
    float healPct;         // 吸血效果的百分比
    uint32 triggeredSpell; // 触发的法术ID
};

创建一个查找表
private:
    static const std::vector<CustomHealEffect> customHealEffects;

然后初始化
const std::vector<CustomHealEffect> Unit::customHealEffects =
{
    {79500, 0.2f, 39373},
    {79501, 0.25f, 39373},
    {79502, 0.3f, 39373},
    // 你可以继续添加其他法术
};

然后在bool Unit::HandleDummyAuraProc 这个函数的,switch (dummySpell->SpellFamilyName)结束后面添加:
for (const CustomHealEffect& effect : customHealEffects)
{
    if (dummySpell->Id == effect.spellID)
    {
        if (!procSpell || (procSpell->GetSchoolMask() & (SPELL_SCHOOL_MASK_NORMAL | SPELL_SCHOOL_MASK_MAGIC)) == 0)
            return false;

        basepoints0 = CalculatePct(int32(damage), triggerAmount) * effect.healPct;
        target = this;
        triggered_spell_id = effect.triggeredSpell;
        break; // 如果匹配到,跳出循环
    }
}



[发帖际遇]: danqu不小心把昂贵物品放入公会仓库,得到了3 声望. 幸运榜 / 衰神榜
回复

使用道具 举报

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