Denne tråd er over 6 måneder gammel
Er du sikker på, at du har noget relevant at tilføje?
WoW AddOn Hjælp - Lua codingAf Ultrabruger Geekwest | 26-03-2013 17:42 | 953 visninger | 2 svar, hop til seneste
Hej derude.
Jeg sidder og er igang med at læse en bog der hedder Beginning Lua with world of warcraft
jeg er så kommet til min første AddOn i bogen hvor jeg skal lave en tooltip der vises når musen peger på et link i chatten. jeg så en tråd ligende herinde, og jeg har skam også fået det til at virke - men eftersom det er en lidt outdated bog så skulle der være en nemmere og bedre måde at udføre det på - har prøvet at poste det på forskellige sites, men programmerings nørder der taler engelsk til mig giver mig lange løg :P
Her er min kode:
local function ChatlinkTooltips_ShowTip(self, linkData)
local LinkType = string.split(":", linkData)
if LinkType == "item"
or LinkType == "spell"
or LinkType == "achievement"
or LinkType == "enchant"
or LinkType == "quest"
or LinkType == "talent"
or LinkType == "unit"
or LinkType == "glyph" then
GameTooltip:SetOwner(self, "ANCHOR_CURSOR")
GameTooltip:SetHyperlink(linkData)
GameTooltip:Show()
end
end
local function ChatlinkTooltips_HideTip()
GameTooltip:Hide()
end
local function ChatlinkTooltips_SetOrHookHandler(frame, event, func)
if frame:GetScript(event) then -- checks if it already has a script handler...
frame:HookScript(event, func) -- ... and hooks it.
else
frame:SetScript(event, func) -- sets our function as event handler otherwise
end
end
for i = 1, NUM_CHAT_WINDOWS do
local frame = _G["ChatFrame" .. i] -- Copy a reference
if frame then -- Makes sure the frame exists
ChatlinkTooltips_SetOrHookHandler(frame, "OnHyperLinkEnter", ChatlinkTooltips_ShowTip)
ChatlinkTooltips_SetOrHookHandler(frame, "OnHyperLinkLeave", ChatlinkTooltips_HideTip)
end
end
Hvordan kan jeg gøre denne kode nemmere at forstå? Nu har jeg jo blot skrevet den af fra en guide - men fatter stadig nada af hvad der står.
Tak på forhånd! --
i7-3770k @ 4.8GHz, 2x GTX 680, 860i, V-Gene, H100i Push/Pull (NF-P12), 600T Hvid, 16GB Dominator 1866MHz, 2x 840 Pro SSD.
Det første vi kan gøre er at lave en tabel(table) fx.
local tbl = {}
i tabellen skal vi tilskrive de værdier vi gerne vil arbejde med i dette tilfælde:
local supportedTypes = { --> lav en table med et navn
quest = true, --> tilføj elementerne til tabellen
item = true,
achievement = true,
spell = true,
unit = true,
enchant = true,
talent = true,
glyph = true,
}
local function ChatlinkTooltips_Show(self, dataType) --> lav en function med et navn og to argumenter.
local linkType = strmatch(dataType, "(.-):") --> lav en local = strmatch(, "(.-):")
if supportedTypes[linkType] then --> hvis chat link = en af følgende fra vores supportedTypes tabel, samt link koden er modtages, så skal nedenstående udføres.
GameTooltip:SetOwner(self, "ANCHOR_CURSOR") --> sætter placering hvor tooltippet skal vises, i dette tilfælde der hvor musen er placeret.
GameTooltip:SetHyperlink(dataType) --> sætter vores tooltip
GameTooltip:Show() --> viser tooltip
end
end
for frameType = 1, NUM_CHAT_WINDOWS do --> lav en for loop med = 1, ... køre igennem loopen indtil nedenstående script træder i kraft.
local chatType = _G["ChatFrame" .. frameType] --> lav en local der fortæller at loopen kun skal køre inden for "ChatFrame" vinduet via _G(getglobal)
chatType:HookScript("OnHyperLinkEnter", ChatlinkTooltips_Show) --> hvis ovenstående _G["ChatFrame" .. frameType] træder i kraft, så HookScript med følgende 2 argumenter - 1 event("OnHyperLinkEnter") og 2 referere til ChatlinkTooltips_Show
chatType:HookScript("OnHyperLinkLeave", GameTooltip_Hide) --> hvis ovenstående _G["ChatFrame" .. frameType] træder i kraft, så HookScript med følgende 2 argumenter - 1 event("OnHyperLinkLeave") og 2 referere til GameTooltip_Hide
end
Grunden til at vi kun behøver at tilføje en funktion for _Show er fordi at WoW allerede har en funktion der skjuler tooltips ved at kalde GameTooltip_Hide
hvis det er svært at forstå så skriv så prøver jeg at forklare anderledes, synes det er nemmere at forstå og svare på, på engelsk :P -- Gæstebruger, opret dit eget login og få din egen signatur. #1 Hmm, giver mening efter jeg satte det ind i Notepad++ :) Tak for det :) -- i7-3770k @ 4.8GHz, 2x GTX 680, 860i, V-Gene, H100i Push/Pull (NF-P12), 600T Hvid, 16GB Dominator 1866MHz, 2x 840 Pro SSD.
Grundet øget spam aktivitet fra gæstebrugere, er det desværre ikke længere muligt, at oprette svar som gæst.
Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.
Opret bruger | Login
|
Du skal være logget ind for at tilmelde dig nyhedsbrev.
Hvilken udbyder har du til internet? 254 personer har stemt - Mit energiselskab (Ewii f.eks) 12%
|