Thread Tools Display Modes
Prev Previous Post   Next Post Next
09-16-19, 05:35 AM   #1
SnaBe
A Kobold Labourer
 
SnaBe's Avatar
Join Date: Sep 2019
Posts: 1
Exclamation Getting spellId from CombatLogGetCurrentEventInfo in WoW Classic

Hello fellow developers!

I've been working on an addon for WoW Classic and currently hit a little bump.

I'm using the COMBAT_LOG_EVENT_UNFILTERED event to get information regarding spells being cast by certain players, their target and so on. I researched that the API requires you to use the CombatLogGetCurrentEventInfo() method to retrieve the event info like so:

Lua Code:
  1. local timestamp, eventType, _, sourceGUID, sourceName, _, _, destGUID, destName, _, _, spellId, spellName, spellSchool = CombatLogGetCurrentEventInfo()

But in Classic I don't get the spellId (Correction: I do get a spellId but it's always 0). However, I get every other combat log detail. The code works like intended on the retail version of WoW (See the full code below), but not in the Classic release. I know theres been changes to the WoW API to restrict certain methods and functionality. However, I've been unable to find any documentation regarding changing how the COMBAT_LOG_EVENT_UNFILTERED event and CombatLogGetCurrentEventInfo method functions. So I must be doing something wrong regarding how the API works with Classic? (Compared to retail)

Here's the full code:

Lua Code:
  1. local spells = {
  2.     SPELL_AURA_APPLIED = {
  3.         [19742] = 300, -- Rank 1 Blessing of Wisdom
  4.         [19850] = 300, -- Rank 2 Blessing of Wisdom
  5.         [19852] = 300, -- Rank 3 Blessing of Wisdom
  6.         [19853] = 300, -- Rank 4 Blessing of Wisdom
  7.         [19854] = 300, -- Rank 5 Blessing of Wisdom
  8.         [25290] = 300, -- Rank 6 Blessing of Wisdom
  9.         [19740] = 300, -- Rank 1 Blessing of Might
  10.         [19834] = 300, -- Rank 2 Blessing of Might
  11.         [19835] = 300, -- Rank 3 Blessing of Might
  12.         [19836] = 300, -- Rank 4 Blessing of Might
  13.         [19837] = 300, -- Rank 5 Blessing of Might
  14.         [19838] = 300, -- Rank 6 Blessing of Might  
  15.         [25291] = 300, -- Rank 7 Blessing of Might  
  16.     },
  17. }
  18.  
  19. local function eventHandler(self, event, ...)
  20.     if event == 'COMBAT_LOG_EVENT_UNFILTERED' then
  21.         local timestamp, eventType, _, sourceGUID, sourceName, _, _, destGUID, destName, _, _, spellId, spellName, spellSchool = CombatLogGetCurrentEventInfo()
  22.         -- Debug the combat log event
  23.         print('Player ' .. sourceName .. ' casted ' .. spellName .. ' (id: ' .. spellId .. ', school: ' .. spellSchool .. ') on ' .. destName .. ' triggered by ' .. eventType)
  24.        
  25.         if spells[eventType] and spells[eventType][spellId] and sourceGUID == UnitGUID('player') then
  26.             print('Success!')
  27.             -- Handle Aura buff
  28.         end
  29.     end
  30. end
  31.  
  32. local eventFrame = CreateFrame('Frame')
  33.  
  34. eventFrame:RegisterEvent('COMBAT_LOG_EVENT_UNFILTERED')
  35.  
  36. eventFrame:SetScript('OnEvent', eventHandler)

So if anyone could help me out with my mistakes or point me in the direction of some useful documentation or examples, I would be really grateful!

- SnaBe

Last edited by SnaBe : 09-16-19 at 07:23 AM. Reason: Correction
  Reply With Quote
 

WoWInterface » Developer Discussions » Lua/XML Help » Getting spellId from CombatLogGetCurrentEventInfo in WoW Classic

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off