Thread: Lua script help
View Single Post
06-26-17, 03:49 AM   #8
thewtfman
A Murloc Raider
Join Date: Jun 2017
Posts: 4
hmmmmm i cant seem to get it to work, ive thrown in everything just to see some sort of change but nothing different is happening.

Lua Code:
  1. ----------------------------------
  2. --      Locals                  --
  3. ----------------------------------
  4.  
  5. local name = "Respawn Timers"
  6. local L = AceLibrary("AceLocale-2.2"):new("BigWigs"..name)
  7.  
  8. -- packNumber is basically just a counter for the mob types, so that when one
  9. -- mob of a type dies, its counter is increased by 1 so that we have some way of
  10. -- telling mobs apart. It will never reset outside of a reload UI or relog.
  11. local packNumber = nil
  12.  
  13. -- We throttle the deaths of each mob type by 60 seconds by default, so that if
  14. -- 2 mobs of the same type die within 60 seconds of eachother, you'll only get 1
  15. -- respawn timer for them, that starts at the kill of the first one. This was
  16. -- added mostly for core hound packs in MC.
  17. local deathThrottle = nil
  18.  
  19. ----------------------------------
  20. --      Localization            --
  21. ----------------------------------
  22. L:RegisterTranslations("enUS", function() return {
  23.     ["respawntimers"] = true,
  24.     ["Respawn Timers"] = true,
  25.     ["Respawn timer bars and warnings for trash mobs."] = true,
  26.     ["bars"] = true,
  27.     ["Bars"] = true,
  28.     ["Toggles showing bars for respawn times."] = true,
  29.     ["messages"] = true,
  30.     ["Messages"] = true,
  31.     ["Toggles showing messages for respawn times."] = true,
  32.  
  33.     ["%s %d respawns in %d sec"] = true,
  34.     ["%s %d respawned!"] = true,
  35.     ["Respawn: %s %d"] = true,
  36.  
  37.     -- Molten Core Triggers
  38.     ["Ancient Core Hound"] = true,
  39.     ["Lava Annihilator"] = true,
  40.     ["Lava Surger"] = true,
  41.     ["Firelord"] = true,
  42.     ["Firewalker"] = true, -- Lava Pack
  43.     ["%s collapses and begins to smolder."] = true, -- Hound Pack, emote.
  44.     -- Molten Core Messages
  45.     ["Corehound"] = true,
  46.     ["Annihilator"] = true,
  47.     ["Surger"] = true,
  48.     -- Firelord == Firelord.
  49.     ["Lavapack"] = true,
  50.     ["Houndpack"] = true,
  51.  
  52.     -- AQ Triggers
  53.     ["Obsidian Eradicator"] = true,
  54.     ["Anubisath Sentinel"] = true,
  55.     -- AQ Messages
  56.     ["Eradicator"] = true,
  57.     ["Sentinel"] = true,
  58.  
  59.     -- BWL Triggers
  60.     ["Death Talon Hatcher"] = true,
  61.     ["Blackwing Taskmaster"] = true,
  62.     -- BWL Messages
  63.     ["Death Talon"] = true,
  64.     ["Taskmaster"] = true,
  65.  
  66.     -- The Hinterlands Triggers
  67.     ["Jade Ooze"] = true,
  68.     -- The Hinterlands Messages
  69.     ["Ooze"] = true,
  70. } end )
  71.  
  72. L:RegisterTranslations("deDE", function() return {
  73.     ["respawntimers"] = "respawntimers",
  74.     ["Respawn Timers"] = "Respawn Timer",
  75.     ["Respawn timer bars and warnings for trash mobs."] = "Respawn Timerbalken und Warnungen für Trashmobs",
  76.     ["bars"] = "bars",
  77.     ["Bars"] = "Balken",
  78.     ["Toggles showing bars for respawn times."] = "Zeige Balken",
  79.     ["messages"] = "messages",
  80.     ["Messages"] = "Warnungen",
  81.     ["Toggles showing messages for respawn times."] = "Sende Warnungen",
  82.  
  83.     ["%s %d respawns in %d sec"] = "%s %d respawnt in %d Sekunden",
  84.     ["%s %d respawned!"] = "%s %s respawnt",
  85.     ["Respawn: %s %d"] = "Respawn: %s %d",
  86.  
  87.     -- Molten Core Triggers
  88.     ["Ancient Core Hound"] = "Uralter Kernhund",
  89.     ["Lava Annihilator"] = "Lavavernichter",
  90.     ["Lava Surger"] = "Lavawoger",
  91.     ["Firelord"] = "Feuerlord",
  92.     ["Firewalker"] = "Feuergänger", -- Lava Pack
  93.     ["%s collapses and begins to smolder."] = "%s bricht zusammen und beginnt zu glimmen.", -- Hound Pack, emote.
  94.     -- Molten Core Messages
  95.     ["Corehound"] =  "Kernhund",
  96.     ["Annihilator"] = "Vernichter",
  97.     ["Surger"] = "Woger",
  98.     -- Firelord == Firelord.
  99.     ["Lavapack"] = "Lavapack",
  100.     ["Houndpack"] = "Kernhundpack",
  101.  
  102.     -- AQ Triggers
  103.     ["Obsidian Eradicator"] = "Obsidianzerstörer",
  104.     ["Anubisath Sentinel"] = "Wächter des Anubisath",
  105.     -- AQ Messages
  106.     ["Eradicator"] = "Zerstörer",
  107.     ["Sentinel"] = "Wächter",
  108.  
  109.     -- BWL Triggers
  110.     ["Death Talon Hatcher"] = "Brutwächter der Todeskrallen",
  111.     ["Blackwing Taskmaster"] = "Zuchtmeister der Pechschwingen",
  112.     -- BWL Messages
  113.     ["Death Talon"] = "Brutwächter",
  114.     ["Taskmaster"] = "Zuchtmeister",
  115. } end )
  116.  
  117. -- The death table and emote table are basically the meat of this addon. The
  118. -- first string is what we search for in the responding chat event, the table
  119. -- that is attached to it is: 1. respawn time in seconds, 2. the bar text and
  120. -- message text for the respawn timer, 3. optional icon path for this timer.
  121. local deathTable = {
  122.     -- MC
  123.     -- [L["Ancient Core Hound"]] = {1080, L["Corehound"], nil},
  124.     -- [L["Lava Annihilator"]]   = {7200, L["Annihilator"], nil},
  125.     -- [L["Lava Surger"]]        = {1620, L["Surger"], nil},
  126.     -- [L["Firelord"]]           = {7200, L["Firelord"], nil},
  127.     -- [L["Firewalker"]]         = {7200, L["Lavapack"], nil},
  128.     -- AQ
  129.     [L["Obsidian Eradicator"]] = {1800, L["Eradicator"], nil},
  130.     [L["Anubisath Sentinel"]]  = {1800, L["Sentinel"], nil},
  131.     -- BWL
  132.     [L["Death Talon Hatcher"]]  = {720, L["Death Talon"], nil},
  133.     [L["Blackwing Taskmaster"]] = {720, L["Taskmaster"], nil},
  134.     -- The Hinterlands
  135.     [L["Jade Ooze"]] = {350, L["Ooze"], nil},
  136. }
  137. local emoteTable = {
  138.     -- MC
  139.     [L["%s collapses and begins to smolder."]] = {3600, L["Houndpack"], nil},
  140. }
  141.  
  142. ----------------------------------
  143. --  Addon Declaration           --
  144. ----------------------------------
  145.  
  146. BigWigsRespawnTimers = BigWigs:NewModule(name)
  147. BigWigsRespawnTimers.defaultDB = {
  148.     bars = false,
  149.     messages = false,
  150. }
  151.  
  152. BigWigsRespawnTimers.consoleCmd = L["respawntimers"]
  153. BigWigsRespawnTimers.consoleOptions = {
  154.     type = "group",
  155.     name = L["Respawn Timers"],
  156.     desc = L["Respawn timer bars and warnings for trash mobs."],
  157.     args   = {
  158.         [L["bars"]] = {
  159.             type = "toggle",
  160.             name = L["Bars"],
  161.             desc = L["Toggles showing bars for respawn times."],
  162.             get = function() return BigWigsRespawnTimers.db.profile.bars end,
  163.             set = function(v) BigWigsRespawnTimers.db.profile.bars = v end,
  164.         },
  165.         [L["messages"]] = {
  166.             type = "toggle",
  167.             name = L["Messages"],
  168.             desc = L["Toggles showing messages for respawn times."],
  169.             get = function() return BigWigsRespawnTimers.db.profile.messages end,
  170.             set = function(v) BigWigsRespawnTimers.db.profile.messages = v end,
  171.         },
  172.     }
  173. }
  174. BigWigsRespawnTimers.revision = tonumber(string.sub("$Revision: 17260 $", 12, -3))
  175. BigWigsRespawnTimers.external = true
  176.  
  177. ----------------------------------
  178. --      Initialization          --
  179. ----------------------------------
  180.  
  181. function BigWigsRespawnTimers:OnEnable()
  182.     packNumber = {}
  183.     deathThrottle = {}
  184.     self:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH")
  185.     self:RegisterEvent("CHAT_MSG_MONSTER_EMOTE")
  186.     self:RegisterEvent("UNITDIESOTHER")
  187.     self:RegisterEvent("SELFKILLOTHER")
  188.     self:RegisterEvent("PARTYKILLOTHER")
  189.     self:RegisterEvent("UNITDESTROYEDOTHER")
  190. end
  191.  
  192. ----------------------------------
  193. --      Events                  --
  194. ----------------------------------
  195.  
  196. -- Basically just loop the corresponding mob table and check if the event
  197. -- arguments (death or emote) matches anything we've registered. If so, trigger
  198. -- a respawn timer.
  199.  
  200. function BigWigsRespawnTimers:CHAT_MSG_COMBAT_HOSTILE_DEATH(msg)
  201.     for key, table in pairs(deathTable) do
  202.         if msg == string.format(UNITSLAIN, key) then
  203.             self:StartRespawnTimer(table[2], table[1], table[3])
  204.             break
  205.         end
  206.     end
  207. end
  208. function BigWigsRespawnTimers:CHAT_MSG_COMBAT_HOSTILE_DEATH(msg)
  209.     for key, table in pairs(deathTable) do
  210.         if msg == string.format(SELFKILLOTHER, key) then
  211.             self:StartRespawnTimer(table[2], table[1], table[3])
  212.             break
  213.         end
  214.     end
  215. end
  216. function BigWigsRespawnTimers:CHAT_MSG_COMBAT_HOSTILE_DEATH(msg)
  217.     for key, table in pairs(deathTable) do
  218.         if msg == string.format(PARTYKILLOTHER, key) then
  219.             self:StartRespawnTimer(table[2], table[1], table[3])
  220.             break
  221.         end
  222.     end
  223. end
  224. function BigWigsRespawnTimers:CHAT_MSG_COMBAT_HOSTILE_DEATH(msg)
  225.     for key, table in pairs(deathTable) do
  226.         if msg == string.format(UNITDIESOTHER, key) then
  227.             self:StartRespawnTimer(table[2], table[1], table[3])
  228.             break
  229.         end
  230.     end
  231. end
  232. function BigWigsRespawnTimers:CHAT_MSG_COMBAT_HOSTILE_DEATH(msg)
  233.     for key, table in pairs(deathTable) do
  234.         if msg == string.format(UNITDIESSELF, key) then
  235.             self:StartRespawnTimer(table[2], table[1], table[3])
  236.             break
  237.         end
  238.     end
  239. end
  240. function BigWigsRespawnTimers:CHAT_MSG_COMBAT_HOSTILE_DEATH(msg)
  241.     for key, table in pairs(deathTable) do
  242.         if msg == string.format(UNITDIES, key) then
  243.             self:StartRespawnTimer(table[2], table[1], table[3])
  244.             break
  245.         end
  246.     end
  247. end
  248. local f = CreateFrame"Frame"
  249. f:RegisterEvent"CHAT_MSG_COMBAT_HOSTILE_DEATH"
  250. f:SetScript("OnEvent", function(this, msg)
  251.       local unit = msg:match"You have slain %s!"
  252.       if unit then self:StartRespawnTimer(table[2], table[1], table[3])
  253.             break
  254.         end
  255.     end
  256. end
  257. function BigWigsRespawnTimers:CHAT_MSG_COMBAT_HOSTILE_DEATH(msg)
  258.     for key, table in pairs(deathTable) do
  259.         if msg == msg:match"You have slain %s!" then
  260.             self:StartRespawnTimer(table[2], table[1], table[3])
  261.             break
  262.         end
  263.     end
  264. end
  265. function BigWigsRespawnTimers:CHAT_MSG_MONSTER_EMOTE(msg)
  266.     for key, table in pairs(emoteTable) do
  267.         if msg == key then
  268.             self:StartRespawnTimer(table[2], table[1], table[3])
  269.             break
  270.         end
  271.     end
  272. end
  273.  
  274. ----------------------------------
  275. --    Utility                   --
  276. ----------------------------------
  277.  
  278. function BigWigsRespawnTimers:StartRespawnTimer(message, timer, icon, throttle)
  279.     timer = tonumber(timer)
  280.     if timer == nil then return end
  281.  
  282.     -- Throttle deaths by 60 seconds.
  283.     if deathThrottle[message] and (deathThrottle[message] + 60) > GetTime() then return end
  284.     deathThrottle[message] = GetTime()
  285.  
  286.     -- Increment the pack counter after all arguments are checked and we're sure
  287.     -- to start a new respawn timer.
  288.     if not packNumber[message] then packNumber[message] = 0 end
  289.     local nextPack = packNumber[message] + 1
  290.     packNumber[message] = nextPack
  291.  
  292.     -- Make sure the user wants respawn messages.
  293.     if self.db.profile.messages then
  294.         self:ScheduleEvent("bwrt"..nextPack.."10secwarn", "BigWigs_Message", timer - 10, string.format(L["%s %d respawns in %d sec"], message, nextPack, 10), "Yellow")
  295.         self:ScheduleEvent("bwrt"..nextPack.."respawned", "BigWigs_Message", timer, string.format(L["%s %d respawned!"], message, nextPack), "Orange")
  296.     end
  297.  
  298.     -- Make sure the user wants respawn timer bars.
  299.     if self.db.profile.bars then
  300.         -- Default icon.
  301.         if not icon then icon = "Interface\\Icons\\INV_Misc_Head_Dragon_01" end
  302.         local text = string.format(L["Respawn: %s %d"], message, nextPack)
  303.         self:TriggerEvent("BigWigs_StartBar", self, text, timer, icon)
  304.         self:SetCandyBarOnClick("BigWigsBar "..text, function()
  305.             if IsControlKeyDown() then
  306.                 self:TriggerEvent("BigWigs_StopBar", self, text)
  307.                 self:CancelScheduledEvent("bwrt"..nextPack.."10secwarn")
  308.                 self:CancelScheduledEvent("bwrt"..nextPack.."respawned")
  309.             end
  310.         end)
  311.     end
  312. end


oh and it doesnt work with "You have slain (.*)!" either
  Reply With Quote