PQR and Dr trackers menu

User Tag List

Results 1 to 4 of 4
  1. #1
    Poper21's Avatar Member
    Reputation
    3
    Join Date
    Feb 2014
    Posts
    38
    Thanks G/R
    3/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    PQR and Dr trackers

    Hey guys, propably no one is gonna answer me, but does anyone know how to track Drs on target with PQR, especialy for 4.3.4? Some simple solutions like

    'if DR("focus", "disorient") < 0
    then CastSpellByID("6770", "focus")
    end

    And ofc I would write all possible disorients. It should sap my focus when it has no Drs on disorients. I know cokx had that but his shit is so advanced that I cant realy understand :/

    //if there is any developer wanna help me develop realy simple rogue PVP pqr profile(Auto saping focus with shadowstep and using vanish, tuned auto kicks, but no cooldowns usage or offensive spells, only maybe like feint later on), send me PM

    Thanks
    Last edited by Poper21; 07-05-2016 at 07:47 AM.

    PQR and Dr trackers
  2. #2
    Numba1stunna1's Avatar Active Member
    Reputation
    70
    Join Date
    Dec 2013
    Posts
    182
    Thanks G/R
    1/34
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hey Bud, I had the same exact question when I started making profiles. You need a combat log with specific tables.

    Code:
    function NextDR(diminished)
    	if( diminished == 0 ) then
    		return 1
    	elseif( diminished == 1 ) then
    		return 2
    	end
    
    	return 3
    end
    
    --------------------------------------------------
    
    if not trackedPlayers then trackedPlayers = {} end
    
    
    if not EventHandlerLog then
    
        EventHandlerLog = CreateFrame('Frame')
        EventHandlerLog:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
    
    	local function OnSuccessfulCast(self, event, ...)
    	
    		local timestamp, type, _, sourceGUID, sourceName, sourceFlags, _, destGUID, destName, destFlags, _ = select(1, ...)
    		--print("timestamp = ".._, " type = "..type, " sourceGUID = "..sourceGUID, " sourceName = "..sourceName, " sourceFlags = "..sourceFlags, " sourceflags2 = ".._, " destGUID = "..destGUID, " destName = "..destName, " destFlags = "..destFlags, " destFlag2 = ".._)
    		local COMBATLOG_OBJECT_TYPE_PLAYER = COMBATLOG_OBJECT_TYPE_PLAYER
    		local COMBATLOG_OBJECT_CONTROL_PLAYER = COMBATLOG_OBJECT_CONTROL_PLAYER
    		local COMBATLOG_OBJECT_REACTION_HOSTILE = COMBATLOG_OBJECT_REACTION_HOSTILE
    		local COMBATLOG_OBJECT_REACTION_FRIENDLY = COMBATLOG_OBJECT_REACTION_FRIENDLY
    		local COMBATLOG_OBJECT_REACTION_NEUTRAL = COMBATLOG_OBJECT_REACTION_NEUTRAL
    	
    		local isFriendlyDest = (bit.band(destFlags,COMBATLOG_OBJECT_REACTION_FRIENDLY) == COMBATLOG_OBJECT_REACTION_FRIENDLY)
    		local isPlayerDest = (bit.band(destFlags, COMBATLOG_OBJECT_TYPE_PLAYER) == COMBATLOG_OBJECT_TYPE_PLAYER) or (bit.band(destFlags, COMBATLOG_OBJECT_CONTROL_PLAYER) == COMBATLOG_OBJECT_CONTROL_PLAYER)
    		local isHostileDest = (bit.band(destFlags,COMBATLOG_OBJECT_REACTION_HOSTILE) == COMBATLOG_OBJECT_REACTION_HOSTILE)
    		local isNeutralDest = (bit.band(destFlags,COMBATLOG_OBJECT_REACTION_NEUTRAL) == COMBATLOG_OBJECT_REACTION_NEUTRAL)
    		
    		local isFriendlySource = (bit.band(sourceFlags,COMBATLOG_OBJECT_REACTION_FRIENDLY) == COMBATLOG_OBJECT_REACTION_FRIENDLY)
    		local isPlayerSource = (bit.band(sourceFlags, COMBATLOG_OBJECT_TYPE_PLAYER) == COMBATLOG_OBJECT_TYPE_PLAYER) or (bit.band(sourceFlags, COMBATLOG_OBJECT_CONTROL_PLAYER) == COMBATLOG_OBJECT_CONTROL_PLAYER)
    		local isHostileSource = (bit.band(sourceFlags,COMBATLOG_OBJECT_REACTION_HOSTILE) == COMBATLOG_OBJECT_REACTION_HOSTILE)
    		local isNeutralSource = (bit.band(sourceFlags,COMBATLOG_OBJECT_REACTION_NEUTRAL) == COMBATLOG_OBJECT_REACTION_NEUTRAL)
    			
    		if (event=="COMBAT_LOG_EVENT_UNFILTERED") then
    	
    			local DRtrack = {
    			{DR = "poly",SpellID={49203,6770,1776,51514,9484,118,28272,28271,61305,61025,61721,61780,3355,19386,20066,2637,82676}},
    			{DR = "root",SpellID={33395,50245,122,339,19975,64695,4167,54706,19306,90327,11190,12489}},
    			{DR = "stun",SpellID={58861,89766,50519,12809,46968,853,5211,24394,22570,408,2812,20549,44572,30283,22703,54785,47481,93433,56626,85388,1833,9005,88625,91800,91797,90337}},
    			{DR = "fear",SpellID={2094,5782,6358,5484,8122,65545,1513,10326,5246,20511}},	
    			{DR = "disarm",SpellID={91644,51722,676,64058,50541,64404}},
    			{DR = "silence",SpellID={50479,1330,25046,28730,50613,69179,80483,15487,34490,18425,86759,18469,55021,24259,47476,18498,81261,31935}},				
    			{DR = "cyclone",SpellID={33786}}
    			  }
    			for i=1,#DRtrack do
    
    				for j=1, #DRtrack[i].SpellID do
    
    					if DRtrack[i].SpellID[j]==select(12, ...) then
    
    				      	if (type=="SPELL_AURA_APPLIED")  then
    				      		
    				      		if select(15,...) == "DEBUFF" then
    				      	
    					      		if isFriendlyDest and not isNeutralDest then return end
    					      		if not isHostileDest and not isNeutralDest then return end
    					      		if not isPlayerDest and not isNeutralDest then return end
    					      		local DRCatagory = DRtrack[i].DR
    								-- trackedPlayer = {}
    								if( not trackedPlayers[destGUID] ) then
    									trackedPlayers[destGUID] = {}
    								end
    								-- trackedPlayers = {destGUID1 = {}, destGUID2 = {}}
    								if( not trackedPlayers[destGUID][DRCatagory] ) then
    									trackedPlayers[destGUID][DRCatagory] = { time = GetTime(), reset = 0, diminished = 0 }
    								end
    								if trackedPlayers[destGUID][DRCatagory] and trackedPlayers[destGUID][DRCatagory].reset <= GetTime() and trackedPlayers[destGUID][DRCatagory].reset ~= 15 then
    									trackedPlayers[destGUID][DRCatagory].diminished = 0
    								end
    								trackedPlayers[destGUID][DRCatagory].diminished = NextDR(trackedPlayers[destGUID][DRCatagory].diminished)
    								trackedPlayers[destGUID][DRCatagory].reset = 15
    							end
    						end
    
    						if (type=="SPELL_AURA_REFRESH") and select(15,...) == "DEBUFF" then
    							print("SPELL_AURA_REFRESH found")
    						end
    						
    						if (type=="SPELL_CAST_SUCCESS") then
    						--print("SPELL SUCCESS")
    							local SpellID = select(12, ...)
    							local AllTargets = {"target","focus","mouseover",
    							"arena1","arena2","arena3","arena4","arena5",
    							"arenapet1","arenapet2","arenapet3","arenapet4","arenapet5","pettarget",
    							"arena1pet","arena2pet","arena3pet","arena4pet","arena5pet",
    							"party1target","party2target","party3target","party4target",
    							"raid1target","raid2target","raid3target","raid4target","raid5target","raid6target",
    							"raid7target","raid8target","raid9target","raid10target",
    							"raid11target","raid12target","raid13target","raid14target","raid15target",
    							"raid16target","raid17target","raid18target","raid19target","raid20target",
    							"raid21target","raid22target","raid23target","raid24target","raid25target",
    							"raid26target","raid27target","raid28target","raid29target","raid30target",
    							"raid31target","raid32target","raid33target","raid34target","raid35target",
    							"raid36target","raid37target","raid38target","raid39target","raid40target"}
    							for k = 1,#AllTargets do
    								if UnitDebuffID(AllTargets[k],SpellID) ~= nil then --if the debuff is already existing
    						      		if isFriendlyDest and not isNeutralDest then return end
    						      		if not isHostileDest and not isNeutralDest then return end
    						      		if not isPlayerDest and not isNeutralDest then return end
    						      		local DRCatagory = DRtrack[i].DR
    									if( not trackedPlayers[destGUID] ) then
    										trackedPlayers[destGUID] = {}
    									end
    									-- trackedPlayers = {destGUID1 = {}, destGUID2 = {}}
    									if( not trackedPlayers[destGUID][DRCatagory] ) then
    										trackedPlayers[destGUID][DRCatagory] = { time = GetTime(), reset = 0, diminished = 0 }
    									end
    									if trackedPlayers[destGUID][DRCatagory] and trackedPlayers[destGUID][DRCatagory].reset <= GetTime() and trackedPlayers[destGUID][DRCatagory].reset ~= 15 then
    										trackedPlayers[destGUID][DRCatagory].diminished = 0
    									end
    									trackedPlayers[destGUID][DRCatagory].diminished = NextDR(trackedPlayers[destGUID][DRCatagory].diminished)
    									trackedPlayers[destGUID][DRCatagory].reset = 15
    									--print("SPELL_CAST_SUCCESS registered")
    									break
    								end
    							end
    						end
    							
    				      	if (type=="SPELL_AURA_REMOVED") then
    				      	
    				      		if select(15,...) == "DEBUFF" then
    					      	
    					      		if isFriendlyDest and not isNeutralDest then return end
    					      		if not isHostileDest and not isNeutralDest then return end
    					      		if not isPlayerDest and not isNeutralDest then return end
    					      		local DRCatagory = DRtrack[i].DR
    								if( not trackedPlayers[destGUID] ) then
    									trackedPlayers[destGUID] = {}
    								end
    								if( not trackedPlayers[destGUID][DRCatagory] ) then
    									trackedPlayers[destGUID][DRCatagory] = { time = GetTime(), reset = 0, diminished = 1.0 }
    								end
    								trackedPlayers[destGUID][DRCatagory].reset = GetTime() + 15
    							end
    						end
    end
    end
    end
    						
    				
    		end
    	end				
    					
     EventHandlerLog:SetScript('OnEvent', OnSuccessfulCast)
     
         EventHandlerLog = true
     end
     
    function DRInfo(Target,DR)
    if  trackedPlayers[UnitGUID(Target)] == nil then return 0 end
    if  trackedPlayers[UnitGUID(Target)][DR] == nil then return 0 end
    	if trackedPlayers[UnitGUID(Target)][DR].reset == 15 then
    		return trackedPlayers[UnitGUID(Target)][DR].diminished
    	elseif trackedPlayers[UnitGUID(Target)][DR].reset >= GetTime() then
    		return trackedPlayers[UnitGUID(Target)][DR].diminished
    	else return 0
    	end
    end
    
    function DRTimer(Target,DR)
    if  trackedPlayers[UnitGUID(Target)] == nil then return 0 end
    if  trackedPlayers[UnitGUID(Target)][DR] == nil then return 0 end
    	if trackedPlayers[UnitGUID(Target)][DR].reset == 15 then
    		return 15
    	elseif trackedPlayers[UnitGUID(Target)][DR].reset >= GetTime() then
    		return trackedPlayers[UnitGUID(Target)][DR].reset - GetTime()
    	else return 0
    	end
    end
    One function returns the time left for a DR, and another returns the info of the dr (0 = no dr, 1 = 1/2 dr, 2 = 1/4 dr, 3 = immune)

    EDIT: forgot to add that SPELL_AURA_REFRESH doesn't work. You need to check the buff on the target. Combat_log doesn't recognize aura applied to targets if the target already has the aura on them. This is for warmane 4.3.4

    Cokx's profile doesn't accurately provide dr information.

    This dr tracker is more accurate in that it keeps the time stagnant in the duration of the debuff and dynamic after it ends.
    Last edited by Numba1stunna1; 07-23-2016 at 01:48 PM.

  3. #3
    Poper21's Avatar Member
    Reputation
    3
    Join Date
    Feb 2014
    Posts
    38
    Thanks G/R
    3/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hey man, amazing answer, thanks alot, I kinda figured out my own dr tracker similiar to urs, but not 100% correct, I was working on the vanish shadowstep sap but thing is, pqr doesnt support facing, so there is still chance u miss that sap, so i canceled that project, atm working on my trap hack for hunter in honorbuddy

  4. #4
    Numba1stunna1's Avatar Active Member
    Reputation
    70
    Join Date
    Dec 2013
    Posts
    182
    Thanks G/R
    1/34
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    PQR does support facing (for Cata+). However, the issue arises from D3 calculation of Line of Sight. Without Line of Sight, the player cannot sap. Perhaps there's an honorbuddy API for that.

Similar Threads

  1. PQR and likelyhood getting banned
    By healzzz in forum WoW Bots Questions & Requests
    Replies: 32
    Last Post: 02-01-2014, 12:46 AM
  2. PQR and Vent
    By Bigpoppapump in forum WoW Bots Questions & Requests
    Replies: 4
    Last Post: 08-01-2013, 06:03 PM
  3. PQR and shadowbot
    By sc00p1 in forum WoW Bots Questions & Requests
    Replies: 1
    Last Post: 01-14-2013, 08:38 PM
  4. [Bot] Need help: Did anyone know about Problems with PQR and disconnects?
    By himpelchen in forum World of Warcraft Bots and Programs
    Replies: 6
    Last Post: 12-28-2012, 06:21 PM
  5. [Release] Pqr and Windows 8
    By Gnyu in forum World of Warcraft Bots and Programs
    Replies: 1
    Last Post: 12-08-2012, 03:10 AM
All times are GMT -5. The time now is 11:45 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search