Files
WeirdUtils/src/addon/WeirdUtils.lua
T
MarcelineVQ c0d9a20943 Port interact/loot features from standalone interact DLL
Add InteractNearest() and LootAllCorpses() as registered Lua C functions,
ported from the standalone interact DLL. Uses the existing Lua protection
bypass instead of NOP-padding trampolines.

- interact.zig: game API wrappers, object scanning, loot queue with
  SceneEnd hook for per-frame processing
- Bindings.xml: keybinding definitions loaded via LoadUIBindingsFromFile
  (called explicitly since our virtual addon bypasses LoadAddonRecursive)
- Lua addon: BINDING_HEADER_WEIRDUTILS, Interact() wrapper, /wu interact
2026-02-23 20:43:20 -08:00

55 lines
2.5 KiB
Lua

-- WeirdUtils addon (embedded in DLL, loaded from memory)
WEIRDUTILS_VERSION = 1
-- Binding header display name
BINDING_HEADER_WEIRDUTILS = "Weird Utils"
local frame = CreateFrame("Frame")
frame:RegisterEvent("ADDON_LOADED")
frame:RegisterEvent("PLAYER_LOGIN")
frame:SetScript("OnEvent", function()
if event == "PLAYER_LOGIN" then
DEFAULT_CHAT_FRAME:AddMessage("|cff00ff00WeirdUtils|r v" .. WEIRDUTILS_VERSION .. " loaded")
end
end)
SLASH_WEIRDUTILS1 = "/weirdutils"
SLASH_WEIRDUTILS2 = "/wu"
SlashCmdList["WEIRDUTILS"] = function(msg)
if msg == "version" then
DEFAULT_CHAT_FRAME:AddMessage("WeirdUtils v" .. WEIRDUTILS_VERSION)
elseif msg == "test" then
local result = WeirdUtilsTest()
DEFAULT_CHAT_FRAME:AddMessage("C function returned: " .. tostring(result))
elseif msg == "ss" or msg == "screenshot" then
local on, level = WeirdUtilsScreenshot()
DEFAULT_CHAT_FRAME:AddMessage("Screenshots: " .. (on and "ON" or "OFF") .. " (quality " .. level .. ")")
elseif string.find(msg, "^ss ") or string.find(msg, "^screenshot ") then
local sub = string.match(msg, "^%S+ (.+)")
if sub == "on" or sub == "enable" then
WeirdUtilsScreenshot("enable")
DEFAULT_CHAT_FRAME:AddMessage("Screenshots enabled")
elseif sub == "off" or sub == "disable" then
WeirdUtilsScreenshot("disable")
DEFAULT_CHAT_FRAME:AddMessage("Screenshots disabled")
elseif tonumber(sub) then
WeirdUtilsScreenshot("quality", tonumber(sub))
DEFAULT_CHAT_FRAME:AddMessage("Screenshot quality: " .. sub)
end
elseif msg == "interact" then
DEFAULT_CHAT_FRAME:AddMessage("Interact: InteractNearest() and LootAllCorpses() available")
DEFAULT_CHAT_FRAME:AddMessage(" Bind in Key Bindings > Interact, or use /run InteractNearest(0)")
DEFAULT_CHAT_FRAME:AddMessage(" /run LootAllCorpses() - Loot all nearby corpses")
else
DEFAULT_CHAT_FRAME:AddMessage("|cff00ff00WeirdUtils|r commands:")
DEFAULT_CHAT_FRAME:AddMessage(" /wu version - Show version")
DEFAULT_CHAT_FRAME:AddMessage(" /wu test - Test C function call")
DEFAULT_CHAT_FRAME:AddMessage(" /wu ss - Screenshot status")
DEFAULT_CHAT_FRAME:AddMessage(" /wu ss on|off - Enable/disable PNG screenshots")
DEFAULT_CHAT_FRAME:AddMessage(" /wu ss 0-9 - Set compression level")
DEFAULT_CHAT_FRAME:AddMessage(" /wu interact - Interact/loot info")
end
end