首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重锻(Rochet2)到AzerothCore

重锻(Rochet2)到AzerothCore
EN

Stack Overflow用户
提问于 2019-03-17 18:35:19
回答 1查看 352关注 0票数 2

是否有人已经成功地在Rochet2 2的重锻脚本上添加了交流?我的还能用,但还不完全。在字符登录时,脚本应该在重伪造(&设备)项目上重新应用奖金,但似乎"player->GetItemByGuid()“找不到所请求的项目,因此它什么也不返回。

TrinityCore代码(工程):

代码语言:javascript
复制
uint32 lowGUID = (*result)[0].GetUInt32();
Item* invItem = player->GetItemByGuid(ObjectGuid(HighGuid::Item, 0, lowGUID));

if (invItem) 
    player->_ApplyItemMods(invItem, invItem->GetSlot(), false);             

ReforgeData& data = player->reforgeMap[lowGUID];
data.increase = (*result)[1].GetUInt32();
data.decrease = (*result)[2].GetUInt32();
data.stat_value = (*result)[3].GetInt32();
if (invItem)
     player->_ApplyItemMods(invItem, invItem->GetSlot(), true);

AzerothCore代码(有效,但"if (invItem)“条件永远不满足。

代码语言:javascript
复制
uint32 lowGUID = (*result)[0].GetUInt32();
Item* invItem = player->GetItemByGuid((uint64) MAKE_NEW_GUID(HIGHGUID_ITEM, 0, lowGUID));

if (invItem /*&& invItem->IsEquipped()*/)
      player->_ApplyItemMods(invItem, invItem->GetSlot(), false); 

ReforgeData& data = player->reforgeMap[lowGUID];
data.increase = (*result)[1].GetUInt32();
data.decrease = (*result)[2].GetUInt32();
data.stat_value = (*result)[3].GetInt32();
if (invItem /*&& invItem->IsEquipped()*/)
      player->_ApplyItemMods(invItem, invItem->GetSlot(), true);

MAKE_NEW_GUID()返回看起来像guid的东西。

但我不知道为什么"player->GetItemByGuid()“找不到这个东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-17 18:50:44

MAKE_NEW_GUID的参数顺序与ObjectGuid构造函数不同。因此,由于您的论点是错误的顺序,结果也是错误的,项目是找不到的。有关参数的正确顺序,请参见MAKE_NEW_GUID的定义和使用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55210539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档