楼主: 筱免點子

[未归类主题(有空慢慢分)] [源码]AC端龙骨荒野俩任务的修复,内详。

[复制链接]

3402

时沙

62

精华

158

主题

声望: 48777   虚弱: 0

管理员

🔶收集癖,你懂的🔶

万神殿uiwow(lulus制)信仰战假死猎人今天也只能打恢复的增强萨跑路骑士吟游牧师孝顺骑士潜行者登山猎手划水武僧搓水法爷卖糖术神圣光永恒炉石祖国万岁!!积少成多奥的灰烬时沙之瓶炉石天马比格沃斯先生无敌的缰绳黑色宝石猎豹脚男奔波尔菠萝雷施小咕无冕者希尔瓦娜斯·风行者伊利丹·怒风泰兰德·语风莉莉安·沃斯泰坦之握荣耀属于联盟!为了部落!银色北伐军瓦兰纳尔·远古王者之锤金鸡报晓Doge哼哼(lulus制作)金鼠(ytfirefox制作) 犇向牛年(尚美制作)福虎贺岁(尚美制作)金兔迎春(尚美制作)祥龙贺岁(尚美制作)灵蛇献瑞(尚美制作)烈焰星驰(尚美制作)

发表于 2020-8-14 23:20:24 | 显示全部楼层
ayase 发表于 2020-8-13 10:26
返回本地locale 可以用GetSessionDbLocaleIndex

不是直接替换就行的........
因为之前看你这个帖子是修源码的以为你会源码所以我就只说了函数名.以为你会用...

简单的说下..一般来说函数方法大都是在其他地方调用的,调用时需要提供一些参数,
例如施放法术:  需要提供 目标对象指针 技能id 等参数.这些参数会在这之后的执行过程中进行逻辑运算.
批注 2020-08-14 225329.gif
一开始的CastSpell(me, 18950 /*SPELL_INVISIBILITY_AND_STEALTH_DETECTION*/, true)提供了所需参数 me 18950 ture 这几个参数会在之后的过程中逐步传递.

回到你上面的问题.
  1. void IsSummonedBy(Unit* summoner)
  2.         {
  3.             if (!summoner || summoner->GetTypeId() != TYPEID_PLAYER)
  4.                 return;
  5.             uint8 id = GetSpeachId();
  6.             std::string const& text = sCreatureTextMgr->GetLocalizedChatString(me->GetEntry(), 0, id, 0, LOCALE_enUS);
  7.             WorldPacket data;
  8.             ChatHandler::BuildChatPacket(data, CHAT_MSG_MONSTER_WHISPER, LANG_UNIVERSAL, me->GetGUID(), summoner->GetGUID(), text, CHAT_TAG_NONE, "Toalu'u the Mystic");
  9.             summoner->ToPlayer()->SendDirectMessage(&data);
  10.             if (id == 1)
  11.                 if (Aura* aura = summoner->GetAura(47189)) // Transform Aura
  12.                     aura->SetDuration(aura->GetDuration()-MINUTE*IN_MILLISECONDS);
  13.         }
复制代码
void IsSummonedBy(Unit* summoner) 这个函数方法也是经过了类似上面施法的步骤运行到这里.
它这里提供了参数 Unit* summoner 这是一个unit单位指针. 魔兽世界里的单位都基于这个,例如玩家,item gameobject 尸体等都是

可以把它强制转换为其他单位的指针.转换前要判断是否转换成功. 比如上面帖的代码第三行(判断类型是否是player),第10行就可以放心的转换为player了
player顾名思义就是玩家,代表的是玩家的指针. 可以在玩家指针中取WorldSession,再调用GetSessionDbcLocale具体就是summoner->ToPlayer()->GetSession()->GetSessionDbcLocale()
这个具体还要看情况,并不是一成不变的.有时候参数可能直接就传了WorldSession进来,那么就能直接调用了, 又或者传了player,那么就要GetSession()->GetSessionDbcLocale()

因工作繁忙,只在晚上处理论坛事务.
回复

使用道具 举报

1419

时沙

3

精华

16

主题

声望: 3673   虚弱: 1

Lv.6(觉醒者)

大德鲁伊

灵蛇献瑞(尚美制作)祥龙贺岁(尚美制作)炉石时沙之瓶信仰战假死猎人今天也只能打恢复的增强萨吟游牧师潜行者金鼠(ytfirefox制作) 犇向牛年(尚美制作)

 楼主| 发表于 2020-8-15 13:20:15 发表自手机触屏版 | 显示全部楼层
ayase 发表于 2020-8-14 23:20
不是直接替换就行的........
因为之前看你这个帖子是修源码的以为你会源码所以我就只说了函数名.以为你会 ...

谢谢萌神指教,我先看看,学习学习。
回复

使用道具 举报

267

时沙

0

精华

0

主题

声望: 81   虚弱: 2

Lv.2(潜行者)

炉石假死猎人

发表于 2021-10-7 23:17:44 | 显示全部楼层
很不错的分享,谢谢!
回复

使用道具 举报

719

时沙

1

精华

2

主题

声望: 344   虚弱: 0

Lv.4(锻造者)

炉石

发表于 2021-10-21 18:42:06 | 显示全部楼层
看看,不知我能看得懂不。
回复

使用道具 举报

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