LUACN论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
热搜: YJWOW MagicStone BoL
查看: 605|回复: 9

[wowbee] 魔蜂:如何做到摧毁需要输入"DELETE"的物品。

[复制链接]
发表于 2024-6-1 16:09:47 | 显示全部楼层 |阅读模式
魔蜂:如何做到摧毁需要输入"DELETE"的物品。代码应该怎么写。
回复

使用道具 举报

发表于 2024-6-1 19:46:34 | 显示全部楼层
魔蜂没这个功能魔蜂没这个功能魔蜂没这个功能
回复 支持 反对

使用道具 举报

发表于 2024-6-1 20:45:50 | 显示全部楼层
本帖最后由 a000000 于 2024-6-1 08:47 PM 编辑

可以通过暴雪的API实现DeleteCursorItem()
回复 支持 反对

使用道具 举报

发表于 2024-6-2 09:22:59 | 显示全部楼层
楼上正解,没必要用魔蜂。非要用魔蜂删那么可能会承担误删其他物品的风险,手动删的话用宏就行了。
将这个代码/script DeleteCursorItem()做成宏,点一下物品再点宏。
回复 支持 反对

使用道具 举报

发表于 2024-6-2 14:23:14 | 显示全部楼层
本帖最后由 7858321 于 2024-6-2 02:27 PM 编辑

在魔兽世界(World of Warcraft)的 Lua API 中,DeleteCursorItem() 是一个函数,用于删除当前选中的物品(光标上的物品)。这个函数在游戏中非常有用,尤其是在处理物品的拖放操作时。
使用 DeleteCursorItem()当你想要删除当前光标上的物品时,可以直接调用这个函数。请注意,这个操作是不可逆的,因此要谨慎使用,以免误删重要物品。
以下是一个简单的示例,展示如何在某些条件下使用 DeleteCursorItem():
[Lua] 纯文本查看 复制代码
-- 检查光标上是否有物品
if GetCursorInfo() then
    -- 删除光标上的物品
    DeleteCursorItem()
else
    print("光标上没有物品.")
end

示例代码说明
  • 检查光标上的物品
    • GetCursorInfo():这个函数返回当前光标上的信息(如物品、法术等)。如果光标上有物品,它会返回相关信息;如果没有,则返回 nil。
  • 删除光标上的物品
    • DeleteCursorItem():删除当前光标上的物品。
在实际应用中的注意事项
  • 慎重使用:因为 DeleteCursorItem() 会永久删除物品,没有任何提示,使用前一定要确认光标上的物品是可以被删除的。
  • 防止误操作:通常,删除物品的操作会结合一些确认机制,如弹出确认框,以避免误删除。
示例:结合确认框以下是一个更安全的示例,结合了一个简单的确认机制:
[Lua] 纯文本查看 复制代码
-- 定义一个函数,用于删除光标上的物品
local function safeDeleteCursorItem()
    -- 检查光标上是否有物品
    if GetCursorInfo() then
        -- 弹出确认框
        StaticPopupDialogs["CONFIRM_DELETE_CURSOR_ITEM"] = {
            text = "你确定要删除这个物品吗?",
            button1 = "是",
            button2 = "否",
            OnAccept = function()
                -- 用户确认,删除光标上的物品
                DeleteCursorItem()
            end,
            timeout = 0,
            whileDead = true,
            hideOnEscape = true,
            preferredIndex = 3,
        }
        StaticPopup_Show("CONFIRM_DELETE_CURSOR_ITEM")
    else
        print("光标上没有物品.")
    end
end

-- 调用函数
safeDeleteCursorItem()

说明
  • StaticPopupDialogs:创建一个弹出确认框,提示用户确认删除操作。
  • StaticPopup_Show:显示确认框。
  • OnAccept:用户确认后调用 DeleteCursorItem() 删除物品。
这种方式可以有效避免误操作,确保在删除物品前获得用户确认





回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-6-2 22:03:37 | 显示全部楼层
7858321 发表于 2024-6-2 02:23 PM
在魔兽世界(World of Warcraft)的 Lua API 中,DeleteCursorItem() 是一个函数,用于删除当前选中的物品 ...

--只删除白色/绿色
-- 逆序遍历背包
for bag = 4, 0, -1 do
    -- 逆序遍历每个背包槽位
    for slot = 40, 1, -1 do
        -- 获取槽位上物品的名称
        local name = GetContainerItemLink(bag, slot)
        
        -- 如果物品存在
        if name then
            -- 判断物品名称是否包含关键字
            local keywords = {"结构图", "图样", "公式", "设计图", "配方", "食谱"}
            local containsKeyword = false
            for _, keyword in ipairs(keywords) do
                if string.find(name, keyword) then
                    containsKeyword = true
                    break
                end
            end
            
            -- 如果物品包含关键字并且符合品质条件
            if containsKeyword and (name:sub(5, 10) == "1eff00" or name:sub(5, 10) == "0070dd" or name:sub(5, 10) == "ffffff") then
                -- 输出要删除的物品信息
                print("Deleting: " .. name)
               
                -- 删除物品
                PickupContainerItem(bag, slot)
                -- 删除光标上的物品
                DeleteCursorItem()
            end
        end
    end
end
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-6-2 22:43:20 | 显示全部楼层
7858321 发表于 2024-6-2 02:23 PM
在魔兽世界(World of Warcraft)的 Lua API 中,DeleteCursorItem() 是一个函数,用于删除当前选中的物品 ...

这是在论天里面扒拉的代码。  我应该如何修改才能删除指定的  其他颜色的物品。。。求大神指点
回复 支持 反对

使用道具 举报

发表于 2024-10-12 14:57:22 | 显示全部楼层
这个可以啊,我做个记号以后需要的时候来翻翻
回复 支持 反对

使用道具 举报

发表于 2024-10-20 12:02:36 | 显示全部楼层
本帖最后由 lyj141224 于 2024-10-20 12:05 PM 编辑
爱到这刚刚好 发表于 2024-6-2 10:43 PM
这是在论天里面扒拉的代码。  我应该如何修改才能删除指定的  其他颜色的物品。。。求大神指点
以上代码中的 颜色判断代码是:
        name:sub(5, 10) == "1eff00" or name:sub(5, 10) == "0070dd" or name:sub(5, 10) == "ffffff"            其中name:sub(5, 10) 是截取到当前物品的颜色(一个string),"1eff00" 是你要删除的物品颜色。进行对比,是就执行删除。

所以你可以将"1eff00" ,换成你要删除的颜色,实现你的目的。

回复 支持 反对

使用道具 举报

发表于 2024-11-8 11:56:48 | 显示全部楼层
本帖最后由 QQ_CAFE57 于 2024-11-8 11:58 AM 编辑

[Lua] 纯文本查看 复制代码
--删除装备自动加DELETE
    hooksecurefunc(StaticPopupDialogs["DELETE_GOOD_ITEM"],"OnShow",function(boxEditor) boxEditor.editBox:SetText(DELETE_ITEM_CONFIRM_STRING);end) 
给个参考,这个只用运行一次就行
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

小黑屋|手机版|Archiver|LUACN论坛

GMT+8, 2025-5-2 01:45 AM , Processed in 0.071110 second(s), 35 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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