Beschreibe ein Addon in einem Satz und lade es als installationsfertige ZIP-Datei herunter. Es ist kostenlos und erfordert kein Konto. Jede verwendete globale Funktion und jedes Ereignis wird mit der API-Liste aus Forever-Build 70338 abgeglichen.
Frag unsere verschwitzte, abgewrackte KI zum Addon Maker
Addon beschreiben, unsere Prüfungen, Reparatur nach einem Patch, geprüfte Beispiele und mehr
Alles, was unsere Guides abdecken. Die Antworten stammen von dieser Seite und aus unseren übrigen Guides, mit den echten Werten als Diagramm und verlinkten Guide-Abschnitten. Es ist KI, also prüfe die Quelle, bevor du zitierst.
Probiere
Beschreibe dein Addon
Kostenlos. Ohne Anmeldung. Der Code gehört dir. Nach einem Patch kaputt? Füge den Fehler ein, und wir reparieren es.
Individuelle Erstellung ist deaktiviert. Die acht geprüften Beispiele kannst du weiterhin herunterladen.
Wähle ein Beispiel oder beschreibe dein eigenes Addon.
Dein Addon
Noch nicht im Spiel getestet. Client 1.60.1.70338.
KI-Hinweis: erstellt mit dem WoW Forever Guides Addon Maker (Claude), geprüft gegen die API-Liste des Forever-Clients.
Füge den Fehler aus dem Chatfenster ein. Besteht die Reparatur die Prüfung nicht, behältst du die letzte funktionierende Kopie und es gibt keinen Download.
attempt to compare a secret value
Die Prüfung verlangt eine Absicherung, bevor dieser Wert verwendet wird.
if issecretvalue(xp) then return end
Geprüfte Beispiele
Acht Beispiele für Client 1.60.1.70338. Noch nicht im Spiel getestet. Keine erfundenen Screenshots.
Addon-Spam im Gildenchat blockieren
Blendet eine Gildennachricht aus, die sich innerhalb einer halben Minute dreimal wiederholt. Speichert nicht, wer sie gesendet hat.
Keine Prüffehler. Noch nicht im Spiel getestet. Client 1.60.1.70338.
local ADDON = ...
local NAME = "GuildChatFilter"
local errors = {}
local function safeCall(func)
return xpcall(func, function(err)
errors[#errors + 1] = tostring(err)
if #errors > 10 then table.remove(errors, 1) end
print(NAME .. " error: " .. tostring(err))
end)
end
local function showErrors()
if #errors == 0 then print(NAME .. ": no errors saved") return end
for i = 1, #errors do print(i .. ". " .. errors[i]) end
end
local seen = {}
local function repeatSpam(message)
local now = GetTime()
local count = 0
local kept = {}
for i = 1, #seen do
if now - seen[i].at < 30 then
kept[#kept + 1] = seen[i]
if seen[i].text == message then count = count + 1 end
end
end
kept[#kept + 1] = { text = message, at = now }
seen = kept
return count >= 2
end
local function filter(_, _, message)
if type(message) ~= "string" or message == "" then return false end
local hide = false
safeCall(function() hide = repeatSpam(message) end)
return hide
end
ChatFrame_AddMessageEventFilter("CHAT_MSG_GUILD", filter)
SLASH_GUILDCHATFILTER1 = "/guildfilter"
SlashCmdList["GUILDCHATFILTER"] = function(msg)
if msg == "errors" then showErrors() else print(NAME .. ": hiding guild lines that repeat within 30 seconds") end
end
Questgegenstände aufleuchten lassen
Listet Questgegenstände in deinen Taschen auf einer goldenen Zeile auf. Forever bietet hier kein sicheres Aufleuchten der Taschenschaltflächen; die Liste dient daher als Signal.
Keine Prüffehler. Noch nicht im Spiel getestet. Client 1.60.1.70338.
local ADDON = ...
local NAME = "QuestItemSparkle"
local errors = {}
local function safeCall(func)
return xpcall(func, function(err)
errors[#errors + 1] = tostring(err)
if #errors > 10 then table.remove(errors, 1) end
print(NAME .. " error: " .. tostring(err))
end)
end
local function showErrors()
if #errors == 0 then print(NAME .. ": no errors saved") return end
for i = 1, #errors do print(i .. ". " .. errors[i]) end
end
local frame = CreateFrame("Frame", "QuestItemSparkleFrame", UIParent)
frame:SetSize(240, 72)
frame:SetPoint("CENTER", UIParent, "CENTER", 0, 160)
frame:SetMovable(true)
frame:EnableMouse(true)
frame:RegisterForDrag("LeftButton")
frame:SetScript("OnDragStart", function(self) self:StartMoving() end)
frame:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() end)
local label = frame:CreateFontString(nil, "OVERLAY", "GameFontNormal")
label:SetPoint("CENTER")
label:SetText("QuestItemSparkleFrame")
local function scan()
local lines = {}
for bag = 0, 4 do
local slots = C_Container.GetContainerNumSlots(bag) or 0
for slot = 1, slots do
local isQuest = C_Container.GetContainerItemQuestInfo(bag, slot)
if isQuest then
local info = C_Container.GetContainerItemInfo(bag, slot)
local name = info and info.itemID and C_Item.GetItemInfo(info.itemID) or nil
lines[#lines + 1] = name or "Quest item"
end
end
end
if #lines == 0 then label:SetText("No quest items in your bags")
else label:SetText(table.concat(lines, "\n")) end
end
frame:RegisterEvent("BAG_UPDATE")
frame:RegisterEvent("PLAYER_LOGIN")
frame:SetScript("OnEvent", function() safeCall(scan) end)
SLASH_QUESTITEMSPARKLE1 = "/questitems"
SlashCmdList["QUESTITEMSPARKLE"] = function(msg)
if msg == "errors" then showErrors() else scan() end
end
Gruppeneinladungen automatisch ablehnen
Lehnt Gruppeneinladungen sofort ab. Mit /declineinvites off deaktivieren.
Keine Prüffehler. Noch nicht im Spiel getestet. Client 1.60.1.70338.
local ADDON = ...
local NAME = "DeclineInvites"
local errors = {}
local function safeCall(func)
return xpcall(func, function(err)
errors[#errors + 1] = tostring(err)
if #errors > 10 then table.remove(errors, 1) end
print(NAME .. " error: " .. tostring(err))
end)
end
local function showErrors()
if #errors == 0 then print(NAME .. ": no errors saved") return end
for i = 1, #errors do print(i .. ". " .. errors[i]) end
end
local on = true
local frame = CreateFrame("Frame")
frame:RegisterEvent("PARTY_INVITE_REQUEST")
frame:SetScript("OnEvent", function()
if not on then return end
safeCall(function()
DeclineGroup()
StaticPopup_Hide("PARTY_INVITE")
print(NAME .. ": declined a party invite")
end)
end)
SLASH_DECLINEINVITES1 = "/declineinvites"
SlashCmdList["DECLINEINVITES"] = function(msg)
if msg == "errors" then showErrors() return end
if msg == "off" then on = false print(NAME .. ": off") return end
on = true
print(NAME .. ": on")
end
Alle von mir getöteten Gegner zählen
Zählt Gruppentötungen auf diesem Charakter, auch ohne EP und in einer Gruppe. Die Zähler bleiben in SavedVariables erhalten.
Keine Prüffehler. Noch nicht im Spiel getestet. Client 1.60.1.70338.
## Interface: 16001
## Title: Local Kill Count
## Notes: Local kill counts. No mob database.
## Author: You
## Version: 1.0.0
## X-Generator: WoW Forever Guides Addon Maker
## X-License: CC0 (public domain)
## SavedVariables: LocalKillCountDB
LocalKillCount.lua
LocalKillCount/LocalKillCount.lua
local ADDON = ...
local NAME = "LocalKillCount"
local errors = {}
local function safeCall(func)
return xpcall(func, function(err)
errors[#errors + 1] = tostring(err)
if #errors > 10 then table.remove(errors, 1) end
print(NAME .. " error: " .. tostring(err))
end)
end
local function showErrors()
if #errors == 0 then print(NAME .. ": no errors saved") return end
for i = 1, #errors do print(i .. ". " .. errors[i]) end
end
LocalKillCountDB = LocalKillCountDB or { total = 0, xp = 0, gray = 0, grouped = 0 }
local function bump(key)
LocalKillCountDB[key] = (LocalKillCountDB[key] or 0) + 1
end
local frame = CreateFrame("Frame")
frame:RegisterEvent("PARTY_KILL")
frame:SetScript("OnEvent", function()
safeCall(function()
local before = UnitXP("player")
local grouped = IsInGroup()
C_Timer.After(0.5, function()
safeCall(function()
bump("total")
if grouped then bump("grouped") end
local after = UnitXP("player")
if issecretvalue(before) then return end
if issecretvalue(after) then return end
if after == before then bump("gray") else bump("xp") end
end)
end)
end)
end)
local function report()
local db = LocalKillCountDB
print(NAME .. ": " .. (db.total or 0) .. " kills, " .. (db.xp or 0) .. " with XP, " .. (db.gray or 0) .. " with no XP, " .. (db.grouped or 0) .. " while grouped")
end
SLASH_LOCALKILLCOUNT1 = "/kills"
SlashCmdList["LOCALKILLCOUNT"] = function(msg)
if msg == "errors" then showErrors() else report() end
end
Händlerpreis in jedem Tooltip
Ergänzt im Gegenstandstooltip den Händlerverkaufspreis oder einen Hinweis, dass der Preis noch nicht geladen wurde.
Keine Prüffehler. Noch nicht im Spiel getestet. Client 1.60.1.70338.
local ADDON = ...
local NAME = "VendorPriceTip"
local errors = {}
local function safeCall(func)
return xpcall(func, function(err)
errors[#errors + 1] = tostring(err)
if #errors > 10 then table.remove(errors, 1) end
print(NAME .. " error: " .. tostring(err))
end)
end
local function showErrors()
if #errors == 0 then print(NAME .. ": no errors saved") return end
for i = 1, #errors do print(i .. ". " .. errors[i]) end
end
local function coins(copper)
if type(copper) ~= "number" or copper <= 0 then return nil end
local gold = math.floor(copper / 10000)
local silver = math.floor((copper % 10000) / 100)
local rest = copper % 100
return gold .. "g " .. silver .. "s " .. rest .. "c"
end
local function addPrice(tip)
safeCall(function()
local _, link = tip:GetItem()
if not link then return end
local sell = select(11, C_Item.GetItemInfo(link))
local line = coins(sell)
if not line then
C_Item.RequestLoadItemDataByID(link)
line = "Vendor price not loaded"
end
tip:AddLine(line, 1, 0.82, 0.45)
end)
end
GameTooltip:HookScript("OnTooltipSetItem", addPrice)
if TooltipDataProcessor and TooltipDataProcessor.AddTooltipPostCall and Enum and Enum.TooltipDataType and Enum.TooltipDataType.Item then
TooltipDataProcessor.AddTooltipPostCall(Enum.TooltipDataType.Item, addPrice)
end
SLASH_VENDORPRICETIP1 = "/vendorprice"
SlashCmdList["VENDORPRICETIP"] = function(msg)
if msg == "errors" then showErrors() else print(NAME .. ": vendor price is added to item tooltips") end
end
EP pro Stunde und Zeit bis zur nächsten Stufe
Zeigt EP pro Stunde und eine grobe Zeit bis zum Stufenaufstieg. Leerlauf und ein gerade erfolgter Stufenaufstieg führen nicht zur Division durch null.
Keine Prüffehler. Noch nicht im Spiel getestet. Client 1.60.1.70338.
## Interface: 16001
## Title: XP Per Hour
## Notes: XP per hour and time to level.
## Author: You
## Version: 1.0.0
## X-Generator: WoW Forever Guides Addon Maker
## X-License: CC0 (public domain)
XpPerHour.lua
XpPerHour/XpPerHour.lua
local ADDON = ...
local NAME = "XpPerHour"
local errors = {}
local function safeCall(func)
return xpcall(func, function(err)
errors[#errors + 1] = tostring(err)
if #errors > 10 then table.remove(errors, 1) end
print(NAME .. " error: " .. tostring(err))
end)
end
local function showErrors()
if #errors == 0 then print(NAME .. ": no errors saved") return end
for i = 1, #errors do print(i .. ". " .. errors[i]) end
end
local frame = CreateFrame("Frame", "XpPerHourFrame", UIParent)
frame:SetSize(240, 72)
frame:SetPoint("CENTER", UIParent, "CENTER", 0, 160)
frame:SetMovable(true)
frame:EnableMouse(true)
frame:RegisterForDrag("LeftButton")
frame:SetScript("OnDragStart", function(self) self:StartMoving() end)
frame:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() end)
local label = frame:CreateFontString(nil, "OVERLAY", "GameFontNormal")
label:SetPoint("CENTER")
label:SetText("XpPerHourFrame")
local state = { start = nil, xp = nil, last = nil }
local function paint(now)
local xp = UnitXP("player")
local maxXp = UnitXPMax("player")
if issecretvalue(xp) then label:SetText("XP is hidden right now") return end
if issecretvalue(maxXp) then label:SetText("XP is hidden right now") return end
if not state.start or not state.xp then
state.start = now
state.xp = xp
state.last = now
label:SetText("Waiting for XP")
return
end
if now - state.last > 120 then label:SetText("Idle. No recent XP.") return end
local gained = xp - state.xp
local elapsed = now - state.start
if gained <= 0 or elapsed < 1 then label:SetText("Waiting for XP") return end
local perHour = gained / elapsed * 3600
if perHour <= 0 then label:SetText("Waiting for XP") return end
local remain = maxXp - xp
if remain < 0 then remain = 0 end
local minutes = math.floor(remain / perHour * 60)
label:SetText(math.floor(perHour) .. " XP/hour, about " .. minutes .. " min")
end
local elapsed = 0
frame:SetScript("OnUpdate", function(_, gap)
elapsed = elapsed + gap
if elapsed < 1 then return end
elapsed = 0
safeCall(function() paint(GetTime()) end)
end)
frame:RegisterEvent("PLAYER_XP_UPDATE")
frame:RegisterEvent("PLAYER_LEVEL_UP")
frame:SetScript("OnEvent", function(_, event)
safeCall(function()
if event == "PLAYER_LEVEL_UP" then state.start = nil state.xp = nil state.last = nil end
if event == "PLAYER_XP_UPDATE" then state.last = GetTime() end
paint(GetTime())
end)
end)
SLASH_XPPERHOUR1 = "/xphour"
SlashCmdList["XPPERHOUR"] = function(msg)
if msg == "errors" then showErrors() else paint(GetTime()) print(NAME .. ": " .. (label:GetText() or "")) end
end
frame:Show()
Mich erinnern, wenn mein Buff ausläuft
Zeigt außerhalb des Kampfes den von dir festgelegten Buffnamen an, wenn dieser Buff fehlt. Bleibt im Kampf ausgeblendet.
Keine Prüffehler. Noch nicht im Spiel getestet. Client 1.60.1.70338.
## Interface: 16001
## Title: Buff Reminder
## Notes: Out-of-combat reminder when one buff is missing.
## Author: You
## Version: 1.0.0
## X-Generator: WoW Forever Guides Addon Maker
## X-License: CC0 (public domain)
## SavedVariables: BuffReminderDB
BuffReminder.lua
BuffReminder/BuffReminder.lua
local ADDON = ...
local NAME = "BuffReminder"
local errors = {}
local function safeCall(func)
return xpcall(func, function(err)
errors[#errors + 1] = tostring(err)
if #errors > 10 then table.remove(errors, 1) end
print(NAME .. " error: " .. tostring(err))
end)
end
local function showErrors()
if #errors == 0 then print(NAME .. ": no errors saved") return end
for i = 1, #errors do print(i .. ". " .. errors[i]) end
end
local frame = CreateFrame("Frame", "BuffReminderFrame", UIParent)
frame:SetSize(240, 72)
frame:SetPoint("CENTER", UIParent, "CENTER", 0, 160)
frame:SetMovable(true)
frame:EnableMouse(true)
frame:RegisterForDrag("LeftButton")
frame:SetScript("OnDragStart", function(self) self:StartMoving() end)
frame:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() end)
local label = frame:CreateFontString(nil, "OVERLAY", "GameFontNormal")
label:SetPoint("CENTER")
label:SetText("BuffReminderFrame")
BuffReminderDB = BuffReminderDB or { spell = "" }
frame:Hide()
local function remind()
if InCombatLockdown() or UnitAffectingCombat("player") then frame:Hide() return end
local spell = BuffReminderDB.spell or ""
if spell == "" then frame:Hide() return end
local aura = C_UnitAuras.GetAuraDataBySpellName("player", spell, "HELPFUL")
if issecretvalue(aura) then frame:Hide() return end
if aura then frame:Hide() return end
label:SetText("Buff down: " .. spell)
frame:Show()
end
frame:RegisterEvent("UNIT_AURA")
frame:RegisterUnitEvent("UNIT_AURA", "player")
frame:RegisterEvent("PLAYER_REGEN_DISABLED")
frame:RegisterEvent("PLAYER_REGEN_ENABLED")
frame:SetScript("OnEvent", function() safeCall(remind) end)
SLASH_BUFFREMINDER1 = "/buffremind"
SlashCmdList["BUFFREMINDER"] = function(msg)
if msg == "errors" then showErrors() return end
if msg == "" then print(NAME .. ": /buffremind Spell Name") return end
BuffReminderDB.spell = msg
print(NAME .. ": watching " .. msg)
remind()
end
Raid-Vorbereitungscheckliste für meine Gilde
Eine persönliche Checkliste zum Abhaken vor einem Raid. Liest die Gildenliste nicht aus.
Keine Prüffehler. Noch nicht im Spiel getestet. Client 1.60.1.70338.
## Interface: 16001
## Title: Raid Prep List
## Notes: A personal raid prep checklist.
## Author: You
## Version: 1.0.0
## X-Generator: WoW Forever Guides Addon Maker
## X-License: CC0 (public domain)
## SavedVariables: RaidPrepDB
RaidPrepList.lua
RaidPrepList/RaidPrepList.lua
local ADDON = ...
local NAME = "RaidPrepList"
local errors = {}
local function safeCall(func)
return xpcall(func, function(err)
errors[#errors + 1] = tostring(err)
if #errors > 10 then table.remove(errors, 1) end
print(NAME .. " error: " .. tostring(err))
end)
end
local function showErrors()
if #errors == 0 then print(NAME .. ": no errors saved") return end
for i = 1, #errors do print(i .. ". " .. errors[i]) end
end
local frame = CreateFrame("Frame", "RaidPrepFrame", UIParent)
frame:SetSize(240, 72)
frame:SetPoint("CENTER", UIParent, "CENTER", 0, 160)
frame:SetMovable(true)
frame:EnableMouse(true)
frame:RegisterForDrag("LeftButton")
frame:SetScript("OnDragStart", function(self) self:StartMoving() end)
frame:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() end)
local label = frame:CreateFontString(nil, "OVERLAY", "GameFontNormal")
label:SetPoint("CENTER")
label:SetText("RaidPrepFrame")
RaidPrepDB = RaidPrepDB or { items = { "Food", "Water", "Flasks", "Repair" }, done = {} }
local function line()
local parts = {}
for i = 1, #RaidPrepDB.items do
local item = RaidPrepDB.items[i]
local mark = RaidPrepDB.done[item] and "[x] " or "[ ] "
parts[#parts + 1] = mark .. item
end
if #parts == 0 then label:SetText("Checklist is empty") else label:SetText(table.concat(parts, "\n")) end
end
frame:SetScript("OnMouseUp", function()
safeCall(function()
if #RaidPrepDB.items == 0 then return end
local item = RaidPrepDB.items[1]
for i = 1, #RaidPrepDB.items do
if not RaidPrepDB.done[RaidPrepDB.items[i]] then item = RaidPrepDB.items[i] break end
end
RaidPrepDB.done[item] = not RaidPrepDB.done[item]
line()
end)
end)
line()
SLASH_RAIDPREPLIST1 = "/raidprep"
SlashCmdList["RAIDPREPLIST"] = function(msg)
if msg == "errors" then showErrors() return end
local add = msg:match("^add%s+(.+)$")
if add then
RaidPrepDB.items[#RaidPrepDB.items + 1] = add
line()
print(NAME .. ": added " .. add)
return
end
if msg == "reset" then RaidPrepDB.done = {} line() print(NAME .. ": cleared") return end
line()
print(NAME .. ": click the box to tick the next open line")
end
Individuelle Erstellung ist deaktiviert. Die geprüften Beispiele kannst du weiterhin herunterladen.
Der Maker hat vorerst sein Limit erreicht. Die geprüften Beispiele kannst du weiterhin herunterladen.
Du hast deine heutigen Erstellungen oder Änderungen aufgebraucht. Die geprüften Beispiele kannst du weiterhin herunterladen.
Die Prüfung wurde nicht bestanden. Versuche es erneut. Die Beispiele kannst du weiterhin herunterladen.
Individuelle Erstellung ist auf diesem Server nicht eingerichtet. Die Beispiele kannst du weiterhin herunterladen.
Der Maker wurde nicht fertig. Deine Beschreibung steht noch im Feld.
Diese Erstellung dauerte zu lange und wurde gestoppt. Deine Beschreibung steht noch im Feld.
Die Verbindung wurde unterbrochen. Deine Beschreibung und das letzte funktionierende Addon sind noch hier.
Gestoppt. Deine Beschreibung steht noch im Feld.
Dieser Link ist abgelaufen oder die gespeicherte Kopie wurde gelöscht.
Dieser Browser hat das Addon nicht gespeichert und kann es deshalb nicht ändern.
Lade die Seite neu und versuche es von wowforeverguides.com aus.
Diese Anfrage war nicht nutzbar. Halte den Satz kurz und versuche es erneut.
Eine individuelle Erstellung erfordert das Challenge-Skript. Die Beispiele kannst du weiterhin herunterladen.
Wird erstellt. Das kann eine Minute dauern.
Dateien werden geprüft und Probleme repariert.
In diesem Browser für 90 Tage gespeichert. Jeder mit dem Freigabelink kann die neueste Kopie lesen.
Dieser Browser blockiert die Speicherung. Der Eigentümerschlüssel gilt nur für diesen Tab; dieses Addon wird nicht gespeichert.
Die Liste für diesen Browser konnte nicht gespeichert werden.
Kopiert.
Wähle den Code aus und kopiere ihn selbst.
Die gespeicherte Kopie wurde gelöscht.
Löschen
Freigabelink kopiert. Er enthält deinen Eigentümerschlüssel nicht.
Die letzte Prüfung schlug fehl, daher gibt es keinen Download. Die vorherige funktionierende Kopie bleibt unverändert.
Diese Anfrage wurde abgelehnt.
Eine Frage vor der Erstellung.
Ein veröffentlichtes Addon kann das bereits.
Geteiltes Addon. Nur lesbar.
Ändern und Reparieren funktionieren mit einer gespeicherten Erstellung. Beschreibe dein eigenes Addon, um eine zu erhalten.
Geprüftes Beispiel. Noch nicht im Spiel getestet.
Addons können Informationen anzeigen, die der Client dir bereits liefert. Sie können nicht für dich spielen.Blizzard: Developer Q&A, September 17, 2026. Die folgenden Listen entsprechen den Funktionen der acht Beispiele. Lies was funktioniert und was nicht mehr funktioniert, bevor du dich auf eines verlässt.
Ja. Tageslimits halten es für alle kostenlos. Die acht Beispiele lassen sich ohne Konto herunterladen.
Muss ich Lua beherrschen?
Nein. Du kannst jede Datei lesen, wenn du möchtest. Jedes Beispiel besteht aus einer .toc- und einer .lua-Datei.
Ist von KI geschriebener Addon-Code sicher?
Eine individuelle Erstellung enthält keine Netzwerkaufrufe, und du kannst den Quellcode lesen. Die Prüfung gleicht jede globale Funktion und jedes Ereignis mit der API-Liste aus Forever-Build 70338 und mit Blizzards Addon-Richtlinie ab. Bei nicht bestätigbaren Widget-Methoden warnt sie. Das verspricht keine Sicherheit im Kampf; keine dieser Dateien wurde bisher im Spiel getestet.
Sind Addons in WoW Forever erlaubt?
Ja, mit der modernen API und den Kampfbeschränkungen von Midnight. Die Addon-Seite enthält die Antwort vom 17. September.
Warum kann der Maker kein Rotations- oder Autozauber-Addon erstellen?
Der Maker erzeugt keine Kampfautomatisierung und keinen Code, der versucht, geschützte Aktionen zu umgehen, die das Spiel blockiert. Er prüft jede Erstellung gegen Blizzards UI-Addon-Richtlinie. Bitte stattdessen um eine Notiz, Checkliste, Tooltip-Zeile oder Erinnerung außerhalb des Kampfes.
Funktioniert WeakAuras in Forever?
Wowhead schrieb, dass WeakAuras die Entwicklung vor Midnights Addon-Änderungen eingestellt hat. Ein anderer Autor listete einen Fork, und Musca Auras veröffentlicht eine Forever-Datei. Blizzard hat nicht gesagt, dass WeakAuras selbst läuft. Die Addon-Seite enthält diese Berichte.
Kann ich mein Addon teilen oder veröffentlichen?
Ja. Die Beispieldateien sind gemeinfrei, CC0. Du darfst sie nutzen, ändern und veröffentlichen. Eine Namensnennung ist nicht erforderlich. Füge diese Zeile dort ein, wo eine Seite eine KI-Kennzeichnung verlangt. KI-Hinweis: erstellt mit dem WoW Forever Guides Addon Maker (Claude), geprüft gegen die API-Liste des Forever-Clients.
Was, wenn es nach einem Patch nicht mehr funktioniert?
Füge den Fehler unter Reparieren ein. Besteht die neue Kopie die Prüfung nicht, bleibt die letzte funktionierende Kopie erhalten und die fehlerhafte wird nicht zum Download angeboten.
Welche KI schreibt es?
Claude von Anthropic schreibt einen individuellen Entwurf. Danach prüft unser Prüfer jede globale Funktion und jedes Ereignis gegen die API-Liste von Build 70338 und markiert nicht bestätigbare Widget-Methoden. Nichts wurde bisher im Spiel getestet. Lies deshalb die Dateien, bevor du dich darauf verlässt.
Was speichert ihr?
Gespeicherte Projekte enthalten deine Eingabe und Dateien. Ihre Löschung ist 90 Tage nach der letzten Änderung vorgesehen. Löschen verwendet den Eigentümerschlüssel, um ein gespeichertes Projekt und alle seine Versionen zu entfernen.
Die Datenschutzerklärung erläutert den Zugriff über Freigabelinks, den Browserspeicher sowie die getrennte Aufbewahrung im Cache und beim Anbieter.
Namen und Ereignisse werden gegen Client 1.60.1.70338 geprüft. Diese Dateien wurden nicht im Spiel getestet.
Würfeln auf Analyse? Bedarf = Clicky, GA4 & Microsoft Clarity mit Cookies und Sitzungsaufzeichnungen, damit wir sehen, welche Guides helfen. Passen = überhaupt keine Analyse.Datenschutz