爱到这刚刚好 发表于 2024-6-1 16:09:47

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

魔蜂:如何做到摧毁需要输入"DELETE"的物品。代码应该怎么写。

7858321 发表于 2024-6-1 19:46:34

魔蜂没这个功能魔蜂没这个功能魔蜂没这个功能

a000000 发表于 2024-6-1 20:45:50

本帖最后由 a000000 于 2024-6-1 08:47 PM 编辑

可以通过暴雪的API实现DeleteCursorItem()

notveryimba 发表于 2024-6-2 09:22:59

楼上正解,没必要用魔蜂。非要用魔蜂删那么可能会承担误删其他物品的风险,手动删的话用宏就行了。
将这个代码/script DeleteCursorItem()做成宏,点一下物品再点宏。

7858321 发表于 2024-6-2 14:23:14

本帖最后由 7858321 于 2024-6-2 02:27 PM 编辑

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

示例代码说明
[*]检查光标上的物品:

[*]GetCursorInfo():这个函数返回当前光标上的信息(如物品、法术等)。如果光标上有物品,它会返回相关信息;如果没有,则返回 nil。
[*]删除光标上的物品:

[*]DeleteCursorItem():删除当前光标上的物品。
在实际应用中的注意事项
[*]慎重使用:因为 DeleteCursorItem() 会永久删除物品,没有任何提示,使用前一定要确认光标上的物品是可以被删除的。
[*]防止误操作:通常,删除物品的操作会结合一些确认机制,如弹出确认框,以避免误删除。
示例:结合确认框以下是一个更安全的示例,结合了一个简单的确认机制:
-- 定义一个函数,用于删除光标上的物品
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

这个可以啊,我做个记号以后需要的时候来翻翻

lyj141224 发表于 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" ,换成你要删除的颜色,实现你的目的。

QQ_CAFE57 发表于 2024-11-8 11:56:48

本帖最后由 QQ_CAFE57 于 2024-11-8 11:58 AM 编辑

--删除装备自动加DELETE
    hooksecurefunc(StaticPopupDialogs["DELETE_GOOD_ITEM"],"OnShow",function(boxEditor) boxEditor.editBox:SetText(DELETE_ITEM_CONFIRM_STRING);end) 给个参考,这个只用运行一次就行
页: [1]
查看完整版本: 魔蜂:如何做到摧毁需要输入"DELETE"的物品。