楼主: 灭世

[巫妖王之怒] 【随机本TN额外奖励】

  [复制链接]

1595

时沙

0

精华

16

主题

声望: 2896   虚弱: 0

Lv.6(觉醒者)

卡德加

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

 楼主| 发表于 2023-10-31 23:29:51 | 显示全部楼层
danqu 发表于 2023-10-31 22:54
Player 类新增了一个 uint32 类型的成员变量 roles。而在 LFGMgr.cpp 中,设置了这个 roles 成员变量的值。 ...

感谢指点
[发帖际遇]: 灭世用无偿提供大量磨刀石给团队所有成员磨刀,获得2 声望. 幸运榜 / 衰神榜
回复

使用道具 举报

1595

时沙

0

精华

16

主题

声望: 2896   虚弱: 0

Lv.6(觉醒者)

卡德加

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

 楼主| 发表于 2023-10-31 23:30:12 | 显示全部楼层
kissinger 发表于 2023-10-31 22:53
有模块的,直接改源码不如放在模块内, main是默认的,世界发言, 改版的只有领取奖励的自己看的到,避免扰民 ...

根据天赋判断并不科学。
回复

使用道具 举报

1278

时沙

3

精华

30

主题

声望: 8343   虚弱: 0

Lv.7(复仇者)

灵蛇献瑞(尚美制作)金兔迎春(尚美制作)吟游牧师炉石信仰战假死猎人今天也只能打恢复的增强萨潜行者积少成多时沙之瓶比格沃斯先生雷施无冕者伊利丹·怒风莉莉安·沃斯划水武僧搓水法爷黑色宝石猎豹

发表于 2023-10-31 23:42:54 | 显示全部楼层
灭世 发表于 2023-10-31 23:30
根据天赋判断并不科学。

仔细看过没?不是天赋
回复

使用道具 举报

发表于 2023-10-31 23:44:28 | 显示全部楼层
哦哟,这个不错,我要复制粘贴到自己computer里面。
回复

使用道具 举报

1595

时沙

0

精华

16

主题

声望: 2896   虚弱: 0

Lv.6(觉醒者)

卡德加

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

 楼主| 发表于 2023-10-31 23:48:14 发表自手机触屏版 | 显示全部楼层
kissinger 发表于 2023-10-31 23:42
仔细看过没?不是天赋

啊 !不是吗 我看了下 貌似写的是天赋 如果不是那就是我不懂
回复

使用道具 举报

607

时沙

1

精华

20

主题

声望: 7793   虚弱: 0

Lv.6(觉醒者)

发表于 2023-11-1 00:00:42 | 显示全部楼层
kissinger 发表于 2023-10-31 23:42
仔细看过没?不是天赋

MOD 是通过击杀BOSS时,确实是获取玩家的天赋给与奖励的
如果非要很公平跟完善,最好的办法就是检测最高治疗跟收到最多伤害的玩家给与奖励
大致应该可以使用下面这2个脚本钩子来实现
virtual void OnPlayerEnterCombat(Player* /*player*/, Unit* /*enemy*/) { }
virtual void OnPlayerLeaveCombat(Player* /*player*/) { }

在定义一个容器来存储玩家的治疗跟承受的伤害,大致比如这样
std::map<uint32, 战斗记录存储> 玩家战斗记录;
[发帖际遇]: danqu在魔古山宝库发现大量宝箱,大肆搜刮后获得780 金币. 幸运榜 / 衰神榜
回复

使用道具 举报

1278

时沙

3

精华

30

主题

声望: 8343   虚弱: 0

Lv.7(复仇者)

灵蛇献瑞(尚美制作)金兔迎春(尚美制作)吟游牧师炉石信仰战假死猎人今天也只能打恢复的增强萨潜行者积少成多时沙之瓶比格沃斯先生雷施无冕者伊利丹·怒风莉莉安·沃斯划水武僧搓水法爷黑色宝石猎豹

发表于 2023-11-1 01:01:04 | 显示全部楼层
danqu 发表于 2023-11-1 00:00
MOD 是通过击杀BOSS时,确实是获取玩家的天赋给与奖励的
如果非要很公平跟完善,最好的办法就是检测最高 ...

不是简单的天赋和天赋点,是服务器内置定义的的t和奶,比较有说服力,并且是实时判定的,在boss死了一瞬间确认,缺点是仪式感差了点,不是完成任务时候获得奖励
回复

使用道具 举报

895

时沙

0

精华

2

主题

声望: 1318   虚弱: 0

Lv.5(无冕者)

发表于 2023-11-1 08:40:32 | 显示全部楼层
感谢大佬分享,学习一下
[发帖际遇]: 碎月积极反馈有爱魔兽BUG,获得4 声望. 幸运榜 / 衰神榜
回复

使用道具 举报

607

时沙

1

精华

20

主题

声望: 7793   虚弱: 0

Lv.6(觉醒者)

发表于 2023-11-1 10:20:57 | 显示全部楼层
kissinger 发表于 2023-11-1 01:01
不是简单的天赋和天赋点,是服务器内置定义的的t和奶,比较有说服力,并且是实时判定的,在boss死了一瞬间确认 ...

enum SpecType
{
        FLAG_SPEC_HEALER = 0x00000001,
        FLAG_SPEC_DPS         = 0x00000002,
        FLAG_SPEC_TANK         = 0x00000004
};
  

if (itr->GetSource()->HasTankSpec() && RewardSpec & FLAG_SPEC_TANK)
HasTankSpec()就是获取玩家的天赋树,也就是玩家增加的天赋点,比如死亡骑士的鲜血天赋,那这个函数就返回了真,也就是说这个职业现在加了这个天赋,就默认为T了

而RewardSpec & FLAG_SPEC_TANK 是一个位运算

AZ确实没有随机本完成后的脚本钩子,想实现在随机本完成后获得奖励,只能按照楼主这种修改内核源码的形式来完成,但是奖励封装为一个函数的话,更加整洁和模块化,如果未来有任何关于奖励逻辑的更改,只需要修改RewardBasedOnRole函数,在需要的地方调用即可,无需在多个地方进行修改。

void Player::RewardBasedOnRole(Quest const* quest)
{
    if (this->CanRewardQuest(quest, false))
    {
        if (this->roles == PLAYER_ROLE_TANK || this->roles == PLAYER_ROLE_HEALER)
            this->AddItem(25, 1);
        this->RewardQuest(quest, 0, nullptr, false, true);
    }
    else
    {
        if (this->roles == PLAYER_ROLE_TANK || this->roles == PLAYER_ROLE_HEALER)
            this->AddItem(35, 1);
        this->RewardQuest(quest, 0, nullptr, false, true);
    }
}
回复

使用道具 举报

734

时沙

0

精华

7

主题

声望: 886   虚弱: 0

Lv.4(锻造者)

炉石

发表于 2023-11-1 11:44:25 | 显示全部楼层
准确的说,是完全看不懂,轻一点的说,是根本看不懂,关键是我还想下载下来玩玩,虽然我对编程之类的一点不懂,但是我要恢复大佬们的分享
回复

使用道具 举报

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