====== Lua ====== * [[https://www.wowhead.com/guide/comprehensive-beginners-guide-for-wow-addon-coding-in-lua-5338| WoW Lua guide]] * [[https://www.lua.org/cgi-bin/demo|Online Lua demo]] * [[https://lua.org/pil/contents.html|Lua documentation]] * [[https://wowwiki.wikia.com/wiki/WoW_AddOn|Wow addons]] * [[https://wowprogramming.com/|Wow programming]] * [[https://wow.gamepedia.com/World_of_Warcraft_API|Wow API guide]] * [[https://authors.curseforge.com/forums|Wow plugin]] ====== Lua in WoW ====== * ''/reload'' -- Reload plugin directories * ''/console scriptErrors 1'' -- Enable lua errors * ''/console scriptErrors 0'' -- Disable lua errors * ''/etrace'' -- Open event trace * ''/fstack'' -- Toggle Frame Stack debugging * [[https://wowwiki-archive.fandom.com/wiki/Events_A-Z_(full_list)|WoW events]] * [[https://wowpedia.fandom.com/wiki/TOC_format|.toc format]] * [[https://wowpedia.fandom.com/wiki/Frame_Strata|Frame Strata]] * [[https://wowwiki-archive.fandom.com/wiki/AddOn_loading_process|AddOn loading process]] ====== Cheat sheet ====== ===== Conditions ===== * < (less than) * <= (less than or equals) * > (greater than) * >= (greater than or equals) * == (equals) * ~= (not equals) * and * or * not ===== Variables ===== Type depending on assignment. String, number and boolean. local a = "Yo man's dude" -- locally scoped b = 432.12 -- global ===== Tables ===== greetings = {} greetings["Orcish"] = "Throm-Ka" greetings["Draenei"] = "Chronakai Kristor!" greetings.Thalassian = "Bal'a dash, malanore" -- Another method to fill the table greetings = { ["Orcish"] = "Throm-Ka", ["Draenei"] = "Chronokai Kristor!", ["Thalassian"] = "Bal'a dash, malanore" } for key, value in pairs(greetings) do print("Language: " .. key .. ", greeting: " .. value) end number = 1 potencies = {} while(number < 4096) do number = number * 2 table.insert(potencies, number) end print("Our table has " .. #potencies .. " entries.") print("The tenth potency of 2 is " .. potencies[10] .. ".") print("The first " .. #potencies .. " potencies of 2:") for i = 1, #potencies, 1 do print(potencies[i]) end ===== Loops ===== i = 1 while(i <= 10) do print(i) i = i + 1 end for i = 1, 10, 1 do print(i) end for var = start, end, increment do -- code end repeat -- code until(condition) ===== Functions ===== function dummy() return "Hey", 54.54 end ===== Examples ===== -- Create a frame and register this frame to run code on an event. local function PrintStuff() print("Now this code is executed!") end local EventFrame = CreateFrame("frame", "EventFrame") EventFrame:RegisterEvent("PLAYER_ENTERING_WORLD") EventFrame:SetScript("OnEvent", function(self, event, ...) if(event == "PLAYER_ENTERING_WORLD") then C_Timer.After(1, PrintStuff) end end)