Replace test marker with WorldMarker/ClearWorldMarker Lua API

5 marker slots (Yellow, Cyan, Green, Purple, Red) with placement
by coords, unit ID, or cursor position (stubbed pending terrain
offset research). Key bindings for all 5 markers + clear all.
This commit is contained in:
MarcelineVQ
2026-03-01 16:23:51 -08:00
parent 608e1c43d5
commit d59cf42514
4 changed files with 355 additions and 254 deletions
+17 -2
View File
@@ -1,5 +1,20 @@
<Bindings>
<Binding name="Toggle Test Marker" header="MARKERS">
TestMarkerToggle()
<Binding name="Place Marker 1" header="MARKERS">
WorldMarker(1)
</Binding>
<Binding name="Place Marker 2" header="MARKERS">
WorldMarker(2)
</Binding>
<Binding name="Place Marker 3" header="MARKERS">
WorldMarker(3)
</Binding>
<Binding name="Place Marker 4" header="MARKERS">
WorldMarker(4)
</Binding>
<Binding name="Place Marker 5" header="MARKERS">
WorldMarker(5)
</Binding>
<Binding name="Clear All Markers" header="MARKERS">
ClearWorldMarker()
</Binding>
</Bindings>
+54 -15
View File
@@ -1,7 +1,7 @@
-- Markers addon (embedded in DLL, loaded from memory)
-- Part of WeirdUtils - only loaded when markers module is compiled
MARKERS_VERSION = 1
MARKERS_VERSION = 2
BINDING_HEADER_MARKERS = "Markers"
@@ -21,25 +21,64 @@ SlashCmdList["MARKERS"] = function(msg)
if msg == "" or msg == "help" then
DEFAULT_CHAT_FRAME:AddMessage("|cff00ff00Markers|r commands:")
DEFAULT_CHAT_FRAME:AddMessage(" /mark test - Toggle test marker at player position")
DEFAULT_CHAT_FRAME:AddMessage(" /mark on - Create test marker")
DEFAULT_CHAT_FRAME:AddMessage(" /mark off - Destroy test marker")
DEFAULT_CHAT_FRAME:AddMessage(" /mark pos - Show player position")
DEFAULT_CHAT_FRAME:AddMessage(" /mark <1-5> - Place marker at cursor")
DEFAULT_CHAT_FRAME:AddMessage(" /mark <1-5> <unit> - Place marker at unit")
DEFAULT_CHAT_FRAME:AddMessage(" /mark <1-5> <x> <y> <z> - Place marker at coords")
DEFAULT_CHAT_FRAME:AddMessage(" /mark clear [1-5] - Clear one or all markers")
DEFAULT_CHAT_FRAME:AddMessage(" /mark pos - Show player position")
elseif msg == "test" or msg == "toggle" then
TestMarkerToggle()
elseif msg == "on" or msg == "create" then
TestMarkerCreate()
elseif msg == "off" or msg == "destroy" then
TestMarkerDestroy()
elseif msg == "clear" then
ClearWorldMarker()
DEFAULT_CHAT_FRAME:AddMessage("|cff00ff00Markers:|r all cleared")
elseif msg == "pos" or msg == "position" then
local x, y, z = GetPlayerPosition()
DEFAULT_CHAT_FRAME:AddMessage(string.format("Position: %.2f, %.2f, %.2f", x, y, z))
if x then
DEFAULT_CHAT_FRAME:AddMessage(string.format("Position: %.2f, %.2f, %.2f", x, y, z))
else
DEFAULT_CHAT_FRAME:AddMessage("|cffff0000No player position available|r")
end
else
DEFAULT_CHAT_FRAME:AddMessage("|cffff0000Unknown command:|r " .. msg)
-- Parse arguments
local parts = {}
for word in string.gfind(msg, "%S+") do
table.insert(parts, word)
end
-- /mark clear <index>
if parts[1] == "clear" then
local index = tonumber(parts[2])
if index then
ClearWorldMarker(index)
else
ClearWorldMarker()
end
return
end
local index = tonumber(parts[1])
if not index then
DEFAULT_CHAT_FRAME:AddMessage("|cffff0000Usage:|r /mark <1-5> [unit | x y z] or /mark clear")
return
end
if tonumber(parts[2]) then
-- /mark 1 x y z
local x = tonumber(parts[2])
local y = tonumber(parts[3])
local z = tonumber(parts[4])
if x and y and z then
WorldMarker(index, x, y, z)
else
DEFAULT_CHAT_FRAME:AddMessage("|cffff0000Usage:|r /mark <1-5> <x> <y> <z>")
end
elseif parts[2] then
-- /mark 1 target
WorldMarker(index, parts[2])
else
-- /mark 1 (cursor position)
WorldMarker(index)
end
end
end