楼主: z87333312

[问题求助] 请问多倍拾取是如何实现的?

[复制链接]

243

时沙

0

精华

2

主题

声望: 537   虚弱: 0

Lv.4(锻造者)

飞升计划-暗色弧360115198

炉石假死猎人

发表于 2023-10-21 00:18:55 | 显示全部楼层
本帖最后由 brianzb 于 2023-10-21 00:21 编辑
z87333312 发表于 2023-10-20 23:51
问题是lua没有getloot的方法啊,不知道掉了啥,怎么过去item count呀!

lua不是有玩家掉落事件么
我没用过这个事件,你可以去试试看看是不是拾取事件
1697818901866.png
回复

使用道具 举报

995

时沙

0

精华

6

主题

声望: 8627   虚弱: 0

Lv.6(觉醒者)

厮混Hanging

灵蛇献瑞(尚美制作)祥龙贺岁(尚美制作)炉石比格沃斯先生信仰战今天也只能打恢复的增强萨吟游牧师潜行者卖糖术神炉石天马

发表于 2023-10-21 00:30:44 | 显示全部楼层
古恩达安 发表于 2023-10-20 21:45
愿闻您的高论,您有好想法?

要在做这个动作之前,加check是否符合条件,然后获取物品id,再给出获取到的id一份?
💜emo
回复

使用道具 举报

169

时沙

0

精华

18

主题

声望: 1136   虚弱: 0

Lv.4(锻造者)

 楼主| 发表于 2023-10-21 00:32:29 发表自手机触屏版 | 显示全部楼层
brianzb 发表于 2023-10-21 00:18
lua不是有玩家掉落事件么
我没用过这个事件,你可以去试试看看是不是拾取事件


嗯这个有可以过去玩家拾取的事件,但是无法获取拾取列表我的困惑是,可能我思路不对也有可能
回复

使用道具 举报

169

时沙

0

精华

18

主题

声望: 1136   虚弱: 0

Lv.4(锻造者)

 楼主| 发表于 2023-10-21 00:36:22 发表自手机触屏版 | 显示全部楼层
seanleu 发表于 2023-10-21 00:30
要在做这个动作之前,加check是否符合条件,然后获取物品id,再给出获取到的id一份? ...

请问我该如何获取到物品id.呢? 固定物品的我已经实现了比较简单,检测拾取事件后,如果拾取了某个物品,再给玩家添加几个这样就行了算是曲线救国吧。但是我就是不知道如何获取玩家ko怪物以后得拾取列表。最理想的应该是在拾取时候已经从1个变成5个了这种。
回复

使用道具 举报

243

时沙

0

精华

2

主题

声望: 537   虚弱: 0

Lv.4(锻造者)

飞升计划-暗色弧360115198

炉石假死猎人

发表于 2023-10-21 00:38:12 | 显示全部楼层
z87333312 发表于 2023-10-21 00:32
嗯这个有可以过去玩家拾取的事件,但是无法获取拾取列表我的困惑是,可能我思路不对也有可能 ...

lua有局限性,但也可以自己写lua的钩子。非要用lua,你可以获取他拾取了什么给他X倍数就行了,不用管他的拾取列表,就是一个物品数量是5,他捡了给他X2就10个就完了,不捡就不管
[发帖际遇]: brianzb得到一根金属香蕉,与泰奶奶达成某种不可告人的交易,获得206 金币. 幸运榜 / 衰神榜
回复

使用道具 举报

169

时沙

0

精华

18

主题

声望: 1136   虚弱: 0

Lv.4(锻造者)

 楼主| 发表于 2023-10-21 01:29:52 发表自手机触屏版 | 显示全部楼层
brianzb 发表于 2023-10-21 00:38
lua有局限性,但也可以自己写lua的钩子。非要用lua,你可以获取他拾取了什么给他X倍数就行了,不用管他的 ...

我只会检测玩家是否过去某个道具,但是我不知道怎么获取玩家拾取了哪些道具?方便指导一下吗?另外区分爆率那个彻底没戏吧
回复

使用道具 举报

243

时沙

0

精华

2

主题

声望: 537   虚弱: 0

Lv.4(锻造者)

飞升计划-暗色弧360115198

炉石假死猎人

发表于 2023-10-21 01:41:21 | 显示全部楼层
z87333312 发表于 2023-10-21 01:29
我只会检测玩家是否过去某个道具,但是我不知道怎么获取玩家拾取了哪些道具?方便指导一下吗?另外区分爆 ...

差9积分才能发消息,lua写注册拾取事件,然后方法里先判断player是否有双倍,因为是注册了拾取事件拿到item和数量,给玩家add就好了。爆率要在源码里
回复

使用道具 举报

169

时沙

0

精华

18

主题

声望: 1136   虚弱: 0

Lv.4(锻造者)

 楼主| 发表于 2023-10-21 10:30:09 发表自手机触屏版 | 显示全部楼层
danqu 发表于 2023-10-17 12:44
-- 指定的物品ID表
local specifiedItemIDs = {
    [1] = true,

我有空试试,不是搞程序的啊,跨专业肯定菜哈哈,而且lua我也是刚刚才接触不超过10天。
回复

使用道具 举报

169

时沙

0

精华

18

主题

声望: 1136   虚弱: 0

Lv.4(锻造者)

 楼主| 发表于 2023-10-21 10:37:23 发表自手机触屏版 | 显示全部楼层
danqu 发表于 2023-10-17 12:44
-- 指定的物品ID表
local specifiedItemIDs = {
    [1] = true,

local itemID = item:GetEntry(),这句能获取玩家拾取的的物品id吗?如果是的话我想要的就是这句!
回复

使用道具 举报

607

时沙

1

精华

20

主题

声望: 7793   虚弱: 0

Lv.6(觉醒者)

发表于 2023-10-21 12:32:20 | 显示全部楼层
z87333312 发表于 2023-10-21 10:37
local itemID = item:GetEntry(),这句能获取玩家拾取的的物品id吗?如果是的话我想要的就是这句! ...

如果你想知道具体原理是什么样的,你必须要先了解代码,想要用LUA实现
先要去了解清楚这个桥接接口的执行逻辑

    void OnLootItem(Player* player, Item* item, uint32 count, ObjectGuid lootguid) override
    {
        sEluna->OnLootItem(player, item, count, lootguid);
    }

比如这个拾取物品,在核心代码中有个OnLootItem的接口虚函数,有4个参数,玩家对象指针,物品对象指针,数量,跟一个ObjectGuid类型,表示拾取物品的唯一标识符
LUA本来起到的就是一个桥接作用,用于将实际的逻辑从一个地方转移到另一个地方

你要获取到物品的ID,就需要使用传递的物品对象的指针来通过GetEntry()获取到当前物品的ID,也就是:item:GetEntry()
[发帖际遇]: danqu在卡拉赞看话剧嫌演员演技太差仍臭鸡蛋,引发武力冲突,赔偿79 金币. 幸运榜 / 衰神榜
回复

使用道具 举报

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