Thread: Lua script help
View Single Post
06-24-17, 07:56 AM   #1
thewtfman
A Murloc Raider
Join Date: Jun 2017
Posts: 4
Lua script help

So this is for BigWigs Respawn timer, the addon creates big wigs respawn timers when trash mobs die in raids, so i figured i could add normal mobs from other places aswell, and as you can see in the code ive added Jade ooze but my problem is that when i kill one the respawn timer does not pop up, i figured i had no clue what i was doing until another player came and killed a jade ooze and the respawn timer popped up. So my problem is, this works but only when other players kill something close to me, can someone make it work so that i can use it for personal farming.

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.  
  23. L:RegisterTranslations("enUS", function() return {
  24.     ["respawntimers"] = true,
  25.     ["Respawn Timers"] = true,
  26.     ["Respawn timer bars and warnings for trash mobs."] = true,
  27.     ["bars"] = true,
  28.     ["Bars"] = true,
  29.     ["Toggles showing bars for respawn times."] = true,
  30.     ["messages"] = true,
  31.     ["Messages"] = true,
  32.     ["Toggles showing messages for respawn times."] = true,
  33.  
  34.     ["%s %d respawns in %d sec"] = true,
  35.     ["%s %d respawned!"] = true,
  36.     ["Respawn: %s %d"] = true,
  37.  
  38.     -- Molten Core Triggers
  39.     ["Ancient Core Hound"] = true,
  40.     ["Lava Annihilator"] = true,
  41.     ["Lava Surger"] = true,
  42.     ["Firelord"] = true,
  43.     ["Firewalker"] = true, -- Lava Pack
  44.     ["%s collapses and begins to smolder."] = true, -- Hound Pack, emote.
  45.     -- Molten Core Messages
  46.     ["Corehound"] = true,
  47.     ["Annihilator"] = true,
  48.     ["Surger"] = true,
  49.     -- Firelord == Firelord.
  50.     ["Lavapack"] = true,
  51.     ["Houndpack"] = true,
  52.  
  53.     -- AQ Triggers
  54.     ["Obsidian Eradicator"] = true,
  55.     ["Anubisath Sentinel"] = true,
  56.     -- AQ Messages
  57.     ["Eradicator"] = true,
  58.     ["Sentinel"] = true,
  59.  
  60.     -- BWL Triggers
  61.     ["Death Talon Hatcher"] = true,
  62.     ["Blackwing Taskmaster"] = true,
  63.     -- BWL Messages
  64.     ["Death Talon"] = true,
  65.     ["Taskmaster"] = true,
  66.    
  67.         -- The Hinterlands Triggers
  68.     ["Jade Ooze"] = true,
  69.     -- The Hinterlands Messages
  70.     ["Ooze"] = true,
  71. } end )
  72.  
  73. L:RegisterTranslations("ruRU", function() return {
  74.     ["respawntimers"] = "respawntimers",
  75.     ["Respawn Timers"] = "Таймер появления",
  76.     ["Respawn timer bars and warnings for trash mobs."] = "Таймер появления и предупреждения для трэш мобов.",
  77.     ["bars"] = "bars",
  78.     ["Bars"] = "Полосы",
  79.     ["Toggles showing bars for respawn times."] = "Вкл/Выкл отображение полос для таймера появлений.",
  80.     ["messages"] = "messages",
  81.     ["Messages"] = "Сообщения",
  82.     ["Toggles showing messages for respawn times."] = "Вкл/Выкл отображение сообщений для таймера появлений.",
  83.  
  84.     ["%s %d respawns in %d sec"] = "%s %d респавн через %d сек.",
  85.     ["%s %d respawned!"] = "%s %d респавнится!",
  86.     ["Respawn: %s %d"] = "Респавн: %s %d",
  87.  
  88.     -- Molten Core Triggers
  89.     ["Ancient Core Hound"] = "Древняя гончая Недр",
  90.     ["Lava Annihilator"] = "Лавовый уничтожитель",
  91.     ["Lava Surger"] = "Лавовый волноплеск",
  92.     ["Firelord"] = "Повелитель огня",
  93.     ["Firewalker"] = "Огнеход", -- Lava Pack
  94.     ["%s collapses and begins to smolder."] = "%s collapses and begins to smolder.", -- Hound Pack, emote.
  95.     -- Molten Core Messages
  96.     ["Corehound"] = "ГончаяНедр",
  97.     ["Annihilator"] = "Уничтожитель",
  98.     ["Surger"] = "Волноплеск",
  99.     -- Firelord == Firelord.
  100.     ["Lavapack"] = "ЛавовыйПак",
  101.     ["Houndpack"] = "ПакГончей",
  102.  
  103.     -- AQ Triggers
  104.     ["Obsidian Eradicator"] = "Обсидиановый искоренитель",
  105.     ["Anubisath Sentinel"] = "Анубисат-часовой",
  106.     -- AQ Messages
  107.     ["Eradicator"] = "Искоренитель",
  108.     ["Sentinel"] = "Часовой",
  109.  
  110.     -- BWL Triggers
  111.     ["Death Talon Hatcher"] = "Гнездовая Когтя Смерти",
  112.     ["Blackwing Taskmaster"] = "Надсмотрщик из логова Крыла Тьмы",
  113.     -- BWL Messages
  114.     ["Death Talon"] = "Гнездовая",
  115.     ["Taskmaster"] = "Надсмотрщик",
  116. } end )
  117.  
  118. L:RegisterTranslations("deDE", function() return {
  119.     ["respawntimers"] = "respawntimers",
  120.     ["Respawn Timers"] = "Respawn Timer",
  121.     ["Respawn timer bars and warnings for trash mobs."] = "Respawn Timerbalken und Warnungen f\195\188r Trashmobs",
  122.     ["bars"] = "bars",
  123.     ["Bars"] = "Balken",
  124.     ["Toggles showing bars for respawn times."] = "Zeige Balken",
  125.     ["messages"] = "messages",
  126.     ["Messages"] = "Warnungen",
  127.     ["Toggles showing messages for respawn times."] = "Sende Warnungen",
  128.  
  129.     ["%s %d respawns in %d sec"] = "�%s %d respawnt in %d Sekunden",
  130.     ["%s %d respawned!"] = "%s %s respawnt",
  131.     ["Respawn: %s %d"] = "Respawn: %s %d",
  132.  
  133.     -- Molten Core Triggers
  134.     ["Ancient Core Hound"] = "Uralter Kernhund",
  135.     ["Lava Annihilator"] = "Lavavernichter",
  136.     ["Lava Surger"] = "Lavawoger",
  137.     ["Firelord"] = "Feuerlord",
  138.     ["Firewalker"] = "Feuerg\195\164nger", -- Lava Pack
  139.     ["%s collapses and begins to smolder."] = "%s bricht zusammen und beginnt zu glimmen.", -- Hound Pack, emote.
  140.     -- Molten Core Messages
  141.     ["Corehound"] =  "Kernhund",
  142.     ["Annihilator"] = "Vernichter",
  143.     ["Surger"] = "Woger",
  144.     -- Firelord == Firelord.
  145.     ["Lavapack"] = "Lavapack",
  146.     ["Houndpack"] = "Kernhundpack",
  147.  
  148.     -- AQ Triggers
  149.     ["Obsidian Eradicator"] = "Obsidianzerst\195\182rer",
  150.     ["Anubisath Sentinel"] = "W\195\164chter des Anubisath",
  151.     -- AQ Messages
  152.     ["Eradicator"] = "Zerst\195\182rer",
  153.     ["Sentinel"] = "W\195\164chter",
  154.  
  155.     -- BWL Triggers
  156.     ["Death Talon Hatcher"] = "Brutw\195\164chter der Todeskrallen",
  157.     ["Blackwing Taskmaster"] = "Zuchtmeister der Pechschwingen",
  158.     -- BWL Messages
  159.     ["Death Talon"] = "Brutw\195\164chter",
  160.     ["Taskmaster"] = "Zuchtmeister",
  161. } end )
  162.  
  163. -- The death table and emote table are basically the meat of this addon. The
  164. -- first string is what we search for in the responding chat event, the table
  165. -- that is attached to it is: 1. respawn time in seconds, 2. the bar text and
  166. -- message text for the respawn timer, 3. optional icon path for this timer.
  167. local deathTable = {
  168.     -- MC
  169.     [L["Ancient Core Hound"]] = {1080, L["Corehound"], nil},
  170.     [L["Lava Annihilator"]]   = {7200, L["Annihilator"], nil},
  171.     [L["Lava Surger"]]        = {1620, L["Surger"], nil},
  172.     [L["Firelord"]]           = {7200, L["Firelord"], nil},
  173.     [L["Firewalker"]]         = {7200, L["Lavapack"], nil},
  174.     -- AQ
  175.     [L["Obsidian Eradicator"]] = {1800, L["Eradicator"], nil},
  176.     [L["Anubisath Sentinel"]]  = {1800, L["Sentinel"], nil},
  177.     -- BWL
  178.     [L["Death Talon Hatcher"]]  = {720, L["Death Talon"], nil},
  179.     [L["Blackwing Taskmaster"]] = {720, L["Taskmaster"], nil},
  180.     -- The Hinterlands
  181.     [L["Jade Ooze"]] = {350, L["Ooze"], nil},
  182. }
  183. local emoteTable = {
  184.     -- MC
  185.     [L["%s collapses and begins to smolder."]] = {3600, L["Houndpack"], nil},
  186. }
  187.  
  188. ----------------------------------
  189. --  Addon Declaration           --
  190. ----------------------------------
  191.  
  192. BigWigsRespawnTimers = BigWigs:NewModule(name)
  193. BigWigsRespawnTimers.defaultDB = {
  194.     bars = true,
  195.     messages = true,
  196. }
  197.  
  198. BigWigsRespawnTimers.consoleCmd = L["respawntimers"]
  199. BigWigsRespawnTimers.consoleOptions = {
  200.     type = "group",
  201.     name = L["Respawn Timers"],
  202.     desc = L["Respawn timer bars and warnings for trash mobs."],
  203.     args   = {
  204.         [L["bars"]] = {
  205.             type = "toggle",
  206.             name = L["Bars"],
  207.             desc = L["Toggles showing bars for respawn times."],
  208.             get = function() return BigWigsRespawnTimers.db.profile.bars end,
  209.             set = function(v) BigWigsRespawnTimers.db.profile.bars = v end,
  210.         },
  211.         [L["messages"]] = {
  212.             type = "toggle",
  213.             name = L["Messages"],
  214.             desc = L["Toggles showing messages for respawn times."],
  215.             get = function() return BigWigsRespawnTimers.db.profile.messages end,
  216.             set = function(v) BigWigsRespawnTimers.db.profile.messages = v end,
  217.         },
  218.     }
  219. }
  220. BigWigsRespawnTimers.revision = tonumber(string.sub("$Revision: 17260 $", 12, -3))
  221. BigWigsRespawnTimers.external = true
  222.  
  223. ----------------------------------
  224. --      Initialization          --
  225. ----------------------------------
  226.  
  227. function BigWigsRespawnTimers:OnEnable()
  228.     packNumber = {}
  229.     deathThrottle = {}
  230.     self:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH")
  231.     self:RegisterEvent("CHAT_MSG_MONSTER_EMOTE")
  232. end
  233.  
  234. ----------------------------------
  235. --      Events                  --
  236. ----------------------------------
  237.  
  238. -- Basically just loop the corresponding mob table and check if the event
  239. -- arguments (death or emote) matches anything we've registered. If so, trigger
  240. -- a respawn timer.
  241.  
  242. function BigWigsRespawnTimers:CHAT_MSG_COMBAT_HOSTILE_DEATH(msg)
  243.     for key, table in pairs(deathTable) do
  244.         if msg == string.format(UNITDIESOTHER, key) then
  245.             self:StartRespawnTimer(table[2], table[1], table[3])
  246.             break
  247.         end
  248.     end
  249. end
  250.  
  251. function BigWigsRespawnTimers:CHAT_MSG_MONSTER_EMOTE(msg)
  252.     for key, table in pairs(emoteTable) do
  253.         if msg == key then
  254.             self:StartRespawnTimer(table[2], table[1], table[3])
  255.             break
  256.         end
  257.     end
  258. end
  259.  
  260. ----------------------------------
  261. --    Utility                   --
  262. ----------------------------------
  263.  
  264. function BigWigsRespawnTimers:StartRespawnTimer(message, timer, icon, throttle)
  265.     timer = tonumber(timer)
  266.     if timer == nil then return end
  267.  
  268.     -- Throttle deaths by 60 seconds.
  269.     if deathThrottle[message] and (deathThrottle[message] + 60) > GetTime() then return end
  270.     deathThrottle[message] = GetTime()
  271.  
  272.     -- Increment the pack counter after all arguments are checked and we're sure
  273.     -- to start a new respawn timer.
  274.     if not packNumber[message] then packNumber[message] = 0 end
  275.     local nextPack = packNumber[message] + 1
  276.     packNumber[message] = nextPack
  277.  
  278.     -- Make sure the user wants respawn messages.
  279.     if self.db.profile.messages then
  280.         self:ScheduleEvent("bwrt"..nextPack.."10secwarn", "BigWigs_Message", timer - 10, string.format(L["%s %d respawns in %d sec"], message, nextPack, 10), "Yellow")
  281.         self:ScheduleEvent("bwrt"..nextPack.."respawned", "BigWigs_Message", timer, string.format(L["%s %d respawned!"], message, nextPack), "Orange")
  282.     end
  283.  
  284.     -- Make sure the user wants respawn timer bars.
  285.     if self.db.profile.bars then
  286.         -- Default icon.
  287.         if not icon then icon = "Interface\\Icons\\INV_Misc_Head_Dragon_01" end
  288.         local text = string.format(L["Respawn: %s %d"], message, nextPack)
  289.         self:TriggerEvent("BigWigs_StartBar", self, text, timer, icon)
  290.         self:SetCandyBarOnClick("BigWigsBar "..text, function()
  291.             if IsControlKeyDown() then
  292.                 self:TriggerEvent("BigWigs_StopBar", self, text)
  293.                 self:CancelScheduledEvent("bwrt"..nextPack.."10secwarn")
  294.                 self:CancelScheduledEvent("bwrt"..nextPack.."respawned")
  295.             end
  296.         end)
  297.     end
  298. end
  Reply With Quote