在对话框中输入 “/delete [轻弹丸]” 回车即可删除轻弹丸,有了这个就可以方便的删除掉背包的任意垃圾
1.安装IDE 编辑器这里我推荐用sublime,因为它可以装格式化lua 代码插件,而且高亮显示关键字。如果你喜欢用Notepad++,Vscode,Editplus也无所谓,选择一个自己喜欢的。
Sublime3 [http://www.sublimetext.com/3]
2.编写Plugin 打开Sublime 3
执行:File -> Open Folder ,选择WOW插件目录\World of Warcraft_classic_\Interface\AddOns
打开目录以后,创建一个MyDelete的目录,并在目录下创建两个文件MyDelete.toc和MyDelete.lua。
下面我们开始写代码,用的语言是Lua
第一个MyDelete.toc中包含了我们的插件描述信息,其中包含标题、作者、版本号、备注、lua脚本连接等,具体代码如下:
MyDelete.toc
1 2 3 4 5 6 7 8 9 ## Interface: 32999 ## Title: MyDelete ## Author: zyh ## Version: 0.1 ## Notes: 自动清理背包 ## DefaultState: Enabled ## LoadOnDemand: 0 ## SavedVariables: MyDelete.lua
第二个MyDelete.lua 中包含了我们的核心代码部分,核心思想如下:
Drop函数,注册/delete 指令
DeleteItemAction函数,是/delete 指令触发的函数,其核心思路是:遍历背包中的所有solt(槽),匹配待删除物品,检测到物品以后使用PickupContainerItem和DeleteCursorItem两个API来丢弃物品
GetItemName函数,获取 Item Hyperlink (物品超链接)中的Item Name (物品名称),这边Item Name和Item Hyperlink是两个概念。
MyDelete.lua
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 function Drop() SlashCmdList["DeleteItem "] = DeleteItemAction SLASH_DeleteItem1 = "/delete" print("MyDelete load finish" )end function GetItemName(item ) itemName, itemLink, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, itemIcon, itemSellPrice, itemClassID, itemSubClassID, bindType, expacID, itemSetID, isCraftingReagent = GetItemInfo(item ) return itemNameend function DeleteItemAction(item ) if item == "" then return end name = GetItemName(item ) for b = 0 , 4 do p = GetContainerNumSlots(b ) for i = 1 , p do e = GetContainerItemLink(b , i ) if e and string .find(e, name) then PickupContainerItem(b , i ) ; DeleteCursorItem() ; end end end end local frame = CreateFrame("Frame" , nil , UIParent) ; frame:RegisterEvent("VARIABLES_LOADED" ) ; frame:SetScript("OnEvent" , Drop) ;
将两个核心文件放到AddOns/MyDelete目录下,重启WOW。进入游戏以后,先看一下“综合”频道有没有打出“MyDelete load finish”等字样,如果有,则插件已经生效。
如果你是粘贴的我的代码,你应该已经看到了“MyDelete load finish”
3.测试 下面我们来删除一些东西测试一下,请在操作之前务必用自己的小号或者腾空自己的背包 ,不然删掉一些重要物品就玩大了。
到商店卖一些轻弹丸和重弹丸,或者找点便宜的道具。 输入/delete
在后面跟上轻弹丸的超链接(shift + 鼠标左键),然后回车查看效果
4.其他 下面附上wow api地址,想了解的看一下 :[http://wowprogramming.com/docs/api.html]
想给Sublime安装格式化LUA代码工具,连接地址:[https://github.com/Koihik/LuaFormatter]
有朋友跟我反应不想用超链接删除物品,喜欢打字,其实也好改,只需要该DeleteItemAction函数即可,如下所示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 function DeleteItemAction(item ) if item == "" then return end --name = GetItemName(item ) for b = 0 , 4 do p = GetContainerNumSlots(b ) for i = 1 , p do e = GetContainerItemLink(b , i ) if e and string .find(e, item ) then PickupContainerItem(b , i ) ; DeleteCursorItem() ; end end end end
这样改好以后输入/rl 重新加载,输入 “/delete 轻弹丸 “查看效果
Tips:可以结合宏一起使用比如我这样
1 2 3 4 5 6 7 /delete 加固的宝箱 /delete 新鲜的大鱼 /delete 巨型蚌壳 /delete 21 磅重的龙虾 /delete 12 磅重的龙虾 /delete 9 磅重的龙虾 /delete 7 磅重的龙虾
https://bbs.nga.cn/read.php?&tid=22813671