[BETA] PQRotation - an automated ability priority queue. menu

User Tag List

Page 698 of 731 FirstFirst ... 198598648694695696697698699700701702 ... LastLast
Results 10,456 to 10,470 of 10955
  1. #10456
    Xelper's Avatar ★ Elder ★
    Reputation
    1024
    Join Date
    Mar 2007
    Posts
    860
    Thanks G/R
    0/8
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by FrostDKsFTW View Post
    Not yet, I really should learn how to find them myself.
    I use CheatEngine to find WoW Version (string/text) and use IDA to find the following... here are my notes, they are only for my reference and aren't meant to be used as a guide.. This is for MOP beta.

    Note IDA rebases all offsets +400000 so you will need to subtract that from the offsets you find.

    Code:
    FrameScript__ExecuteBuffer:
    Pattern: 55 8B EC 56 8B ?? ?? 6A 01 56 E8 ?? ?? ?? ?? 83 ?? 08 85 ?? 74 ?? 6A 00 6A 01 56 E8 ?? ?? ?? ?? 83 ?? 0C
    NOTE: The 1st result will be a function that near the end does this:
    push    0
    push    eax
    push    eax
    call    Lua_DoString
    add esp, 0Ch
    
    
    Where Lua_DoString is = FrameScript_ExecuteBuffer
    
    
    FrameScript__GetLocalizedText:
    Pattern: 55 8B EC 53 56 8B F1 8B ?? ?? 8B ?? ?? 57 8B 38 E8 ?? ?? ?? ?? 3B F8 75 ?? 3B ?? 75 ?? 83 ?? ?? ?? ?? ?? 00 75 ?? 83 ?? ?? ?? ?? ?? 00
    
    
    Look for reference to "player" in these functions (UnitName and UnitClass), the jump following will be what we want.
    
    
    PlayerName:
    Search for string (SHIFT+F12) then ALT+T : "UnitName"
    Go to UnitName function.
    
    
    Jump will look like this:
    call    PlayerNameFunction
    push    eax
    push    edi
    call    lua_pushstring
    push    edi
    call    lua_pushnil
    add     esp, 0Ch
    pop     esi
    lea     eax, [ebx+2]
    pop     ebx
    pop     edi
    mov     esp, ebp
    pop     ebp
    retn
    
    
    Go to PlayerNameFunction
    First will be: movsx   eax, PlayerNameAddress
    
    
    
    
    
    
    PlayerClass:
    Search for "UnitClass"
    Go to UnitClass function.
    
    
    Jump will look like this (RELEASE):
    
    
    BETA:
    call    sub_BEDCB0
    movzx   eax, al
    push    eax
    mov     ecx, offset dword_105C2DC
    call    sub_A6DCA0
    push    0
    mov     edi, eax
    call    sub_BEDCC0
    movzx   ecx, al
    push    ecx
    push    edi
    call    sub_8B1660
    add     esp, 0Ch
    jmp     loc_9682DC
    
    
    Go to ClientServices__GetCharacterClass or sub_BEDCB0 if BETA.
    
    
    First will be: mov     al, PlayerClassAddress
    
    GameState search for:
    GameState search for 55 8B EC 83 7D 08 00 56 8B F1
    in one of the functions (generally the last on beta) you will see a cmp byte_offset, 0
    offset = the offset.
    
    GetCurrentKeyboardFocus
    search for string "GetCurrentKeyBoardFocus" go to associated function.  You will see a mov in the first part from an offset. That offset is the global value of keyboard focus.
    mov     esi, dword_FB1C40 <-- example
    I'm sure I could improve my patterns, etc, but this is really just meant as a rough reference for me and I can find all offsets in about 5 minutes.

    I'll tell you what... I'll update the offsets now (give me 5-10 mins, need to let IDA decompile) and then you can try to figure out how I came up with them if you like :P
    Last edited by Xelper; 04-28-2012 at 11:27 AM.

    [BETA] PQRotation - an automated ability priority queue.
  2. #10457
    crystal_tech's Avatar Elite User
    Reputation
    468
    Join Date
    Feb 2008
    Posts
    1,033
    Thanks G/R
    1/6
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by ipass View Post
    @Crystal_tech
    I was wondering if this is possible with the hunters Disengage Spell?
    For example when a warrior starts the charge or a rogue uses sprint toward you..the disengage will be used asap:P

    please check out this ty:P

    local MAJOR_VERSION = "Threat-1.0"
    local MINOR_VERSION = tonumber(("$Revision: 41486 $"):match("%d+"))

    if MINOR_VERSION > _G.ThreatLib_MINOR_VERSION then
    _G.ThreatLib_MINOR_VERSION = MINOR_VERSION
    end

    local _, c = _G.UnitClass("player")
    if c ~= "HUNTER" then return end

    ThreatLib_funcs[#ThreatLib_funcs+1] = function()

    local _G = _G
    local tonumber = _G.tonumber
    local getmetatable = _G.getmetatable

    local AceLibrary = _G.AceLibrary

    local ThreatLib = _G.ThreatLib

    local BS = AceLibrary("Babble-Spell-2.2")
    local Hunter = ThreatLib:GetModule("ClassCore"):NewModule(c)

    local distractThreatAmounts = {110, 160, 250, 350, 465, 600, 900}
    local disengageThreatAmounts = {-140, -280, -405, -545}
    local FDString

    function Hunter:ClassInit()
    self.className = "HUNTER"

    -- CastHandlers
    self.CastHandlers[BS["Distracting Shot"]] = self.DistractingShot
    self.CastHandlers[BS["Disengage"]] = self.Disengage

    self.CastHandlers[BS["Feign Death"]] = self.FeignDeath

    -- ClassBuffs
    self.ClassBuffs[BS["Misdirection"]] = self.MisdirectionBuff


    -- Needed for FD. Ugly as hell, but it works.
    FDString = BS["Feign Death"]
    self:RegisterEvent("UNIT_SPELLCAST_SENT")
    self:RegisterEvent("UI_ERROR_MESSAGE")
    -- ERR_FEIGN_DEATH_RESISTED
    end

    function HunteristractingShot(rank)
    local ranknum = tonumber(rank:match("%d+"))
    self:AddTargetThreat(distractThreatAmounts[ranknum] * self:threatMods())
    end

    function Hunterisengage(rank)
    local ranknum = tonumber(rank:match("%d+"))
    self:AddTargetThreat(disengageThreatAmounts[ranknum] * self:threatMods())
    end

    -- Feign is a rather unique case. It's cast on all targets, but may be resisted by any one target. There is no combat log message - only an error event with ERR_FEIGN_DEATH_RESISTED from GlobalStrings
    -- ERR_FEIGN_DEATH_RESISTED always happens before SPELLCAST_SUCCESSFUL, so we "prime" FD when we get SENT, then invalidate it if we get a resist, let it through otherwise.
    -- The net effect is that a resist on any one target invalidates the threat reset on all targets, but we can't help that since we don't have target data on who resisted
    local FeignDeathPrimed = false
    function Hunter:FeignDeath()
    if FeignDeathPrimed then
    FeignDeathPrimed = false
    self:_reduceAllThreat(0)
    ThreatLibebug("Running FD, clearing threat!")
    end
    end

    function Hunter:UNIT_SPELLCAST_SENT(arg1, arg2, arg3, arg4)
    if arg1 == "player" and arg2 == FDString then
    ThreatLibebug("FD is primed!")
    FeignDeathPrimed = true
    elseif arg1 == "player" then
    -- call prototype's :UNIT_SPELLCAST_SENT
    getmetatable(self).__index.UNIT_SPELLCAST_SENT(self, arg1, arg2, arg3, arg4)
    end
    end

    function Hunter:UI_ERROR_MESSAGE(arg1)
    if arg1 == ERR_FEIGN_DEATH_RESISTED then
    ThreatLibebug("Canceling FD!")
    FeignDeathPrimed = false
    end
    end

    function Hunter:MisdirectionBuff(action, rank, apps)
    -- Previous implementation was a bit too clever :P
    if action == "lose" then
    ThreatLibebug("Lost Misdirection")
    self:RedirectThreatTo(nil)
    elseif action == "gain" then
    ThreatLibebug("Gained misdirection, target is %s", self.currentTarget)
    self:RedirectThreatTo(self.currentTarget)
    end
    end

    table.insert(ThreatLib.UpvalueFixers, function(lib)
    ThreatLib = lib
    Hunter = ThreatLib:GetModule("ClassCore"):GetModule(c)
    end)

    end

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    And this for pets attack..

    local MAJOR_VERSION = "Threat-1.0"
    local MINOR_VERSION = tonumber(("$Revision: 41459 $"):match("%d+"))

    if MINOR_VERSION > _G.ThreatLib_MINOR_VERSION then
    _G.ThreatLib_MINOR_VERSION = MINOR_VERSION
    end

    ThreatLib_funcs[#ThreatLib_funcs+1] = function()

    local _G = _G
    local tonumber = _G.tonumber
    local pairs = _G.pairs

    local UnitName = _G.UnitName
    local UnitAffectingCombat = _G.UnitAffectingCombat
    local GetPetActionInfo = _G.GetPetActionInfo

    local AceLibrary = _G.AceLibrary

    local ThreatLib = _G.ThreatLib

    -- local _, c = _G.UnitClass("player")
    -- We'll let it load for everyone, because sometimes non-hunter/locks get pets.
    -- if c ~= "HUNTER" and c ~= "WARLOCK" then return end
    local c = "PET"
    local new, del, newHash, newSet = ThreatLib.new, ThreatLib.del, ThreatLib.newHash, ThreatLib.newSet

    local BS = AceLibrary("Babble-Spell-2.2")
    local Aura = AceLibrary("SpecialEvents-Aura-2.0")
    local Pet = ThreatLib:GetModule("ClassCore"):NewModule(c)

    -- Most of theses data come from KTM's pet module
    local skillData = {
    -- Scaling skills
    [BS["Growl"]] = {
    rankLevel = { 1, 10, 20, 30, 40, 50, 60, 70},
    rankThreat = {50, 65, 110, 170, 240, 320, 415, 664},
    apBaseBonus = 1235.6,
    apLevelMalus = 28.14,
    apFactor = 5.7,
    },
    [BS["Anguish"]] = {
    rankLevel = { 50, 60, 69},
    rankThreat = {300, 395, 632},
    apBaseBonus = 109,
    apLevelMalus = 0,
    apFactor = 0.698,
    },
    [BS["Torment"]] = {
    rankLevel = {10, 20, 30, 40, 50, 60, 70},
    rankThreat = {45, 75, 125, 215, 300, 395, 632},
    apBaseBonus = 123,
    apLevelMalus = 0,
    apFactor = 0.385,
    },
    [BS["Suffering"]] = {
    rankLevel = { 24, 36, 48, 60, 63, 69},
    rankThreat = {150, 300, 450, 600, 645, 885},
    apBaseBonus = 124,
    apLevelMalus = 0,
    apFactor = 0.547,
    },

    -- I think that Intimidation scales, but I don't have any scaling data on it
    [BS["Intimidation"]] = {
    rankThreat = {580}
    },

    -- Unscaling skills
    [BS["Cower"]] = {
    rankThreat = {-30, -55, -85, -125, -175, -225, -360},
    },
    [BS["Cleave"]] = {
    rankThreat = {0, 0, 0, 0, 100, 130},
    },
    [BS["Soothing Kiss"]] = {
    rankThreat = {-45, -75, -127, -165, -275},
    },
    }

    local petAPThreshold = 0

    local skillRanks = {}

    function Pet:InitHooks()
    self:RegisterEvent("LOCALPLAYER_PET_RENAMED")
    self:RegisterEvent("UNIT_NAME_UPDATE")
    self:RegisterEvent("UNIT_PET")
    end

    function Pet:ClassInit()
    -- CastHandlers
    self.petName = UnitName("pet")
    self.isPetModule = true
    self.unitType = "pet"

    local playerClass = select(2, UnitClass("player"))
    self.petScaling = (playerClass == "HUNTER") or (playerClass == "WARLOCK")

    local function castHandler(self, rank, name) self:AddSkillThreat(name, rank) end
    for name in pairs(skillData) do
    self.CastHandlers[name] = castHandler
    end

    for k, v in pairs(skillRanks) do
    skillRanks[k] = nil
    end
    self.skillRanks = skillRanks

    self:ScanPetSkillRanks()
    self:RegisterEvent("PET_BAR_UPDATE", "ScanPetSkillRanks")
    self:RegisterEvent("UNIT_HEALTH")
    end

    function Pet:ScanPetSkillRanks()
    for i = 1,10 do
    local name, rank = GetPetActionInfo(i)
    if skillData[name] then
    self.skillRanks[name] = rank
    end
    end
    end

    function Pet:AddSkillThreat(name, rank)
    rank = rank or self.skillRanks[name] or "1"
    local rankNum = tonumber(rank:match("%d+"))
    local skill = skillData[name]
    local rankLevel = skill.rankLevel
    local rankThreat = skill.rankThreat

    local threat, baseThreat = rankThreat[rankNum], rankThreat[rankNum]

    -- This could be optimized pretty heavily
    local petLevel = UnitLevel("pet")

    if skill.apFactor and petLevel then
    for i = 1, #rankLevel do
    if rankLevel[#rankLevel - i + 1] <= petLevel then
    rankNum = #rankLevel - i + 1
    break
    end
    end
    local baseThreat = rankThreat[rankNum]

    local baseAP, posAPBuff, negAPBuff = UnitAttackPower("pet");
    local petAP = baseAP + posAPBuff + negAPBuff;
    threat = threat + (max(0, petAP - (baseThreat + petLevel)) * skill.apFactor)
    end
    -- ThreatLibebug("Adding %s threat for %s, %s", threat, name, rank)
    if not threat then return end
    self:AddTargetThreat(threat * self:threatMods())
    end

    function Pet:LOCALPLAYER_PET_RENAMED()
    self.petName = UnitName("pet")
    end

    local function reinitme(self)
    ThreatLib:GetModule("ClassCore"):ToggleModuleActive(self, false)
    self:InitHooks()
    ThreatLib:GetModule("ClassCore"):ToggleModuleActive(self, true)
    ThreatLib:PARTY_MEMBERS_CHANGED()
    ThreatLib:PLAYER_ENTERING_WORLD()
    end

    function Pet:UNIT_PET(arg1)
    if arg1 == "player" then
    self.petName = UnitName("pet")
    -- ThreatLibebug("Pet changed. Pet is %s", self.petName)
    if self.petName then
    self:ScheduleEvent("ThreatReInitPetModule", reinitme, 0.5, self)
    else
    -- ThreatLibebug("Pet despawn, setting pet out of combat")
    self:PLAYER_REGEN_ENABLED()
    end
    end
    end

    function Pet:UNIT_NAME_UPDATE(arg1)
    if arg1 == "pet" then
    self.petName = UnitName("pet")
    if self.petName then
    self:ScheduleEvent("ThreatReInitPetModule", reinitme, 0.5, self)
    ThreatLib:PARTY_MEMBERS_CHANGED()
    end
    end
    end

    function Pet:UNIT_HEALTH(arg1)
    if arg1 == "pet" and UnitHealth(arg1) == 0 then
    -- Pet's dead!
    -- ThreatLibebug("Pet died, setting pet out of combat")
    self:PLAYER_REGEN_ENABLED()
    end
    end

    table.insert(ThreatLib.UpvalueFixers, function(lib)
    ThreatLib = lib
    Pet = ThreatLib:GetModule("ClassCore"):GetModule(c)
    end)

    end



    Thanks

    Ipass
    so what is that? is that from an addon that you use? Also try to use the code tags its just code with [ ] around it to start it and /code with [ ] to close it. makes it nicer to read.
    but i'm guessing you just want to disenage the moment you get charged? kinda hard to do that if the charge was from min distance. but i'll see what i can do.

    Please if someone helped you donate rep to them.

  3. #10458
    Xelper's Avatar ★ Elder ★
    Reputation
    1024
    Join Date
    Mar 2007
    Posts
    860
    Thanks G/R
    0/8
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Okay offsets are up for MOP Beta 15650

  4. #10459
    fluxflux's Avatar Knight
    Reputation
    5
    Join Date
    Jan 2012
    Posts
    185
    Thanks G/R
    0/0
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Ty Xelper i m playing now my monk lvl 87 lalalala^^

  5. #10460
    ancrion's Avatar Private
    Reputation
    1
    Join Date
    Apr 2012
    Posts
    3
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    looking for deathknight profile !

  6. #10461
    Boppalopigus's Avatar Corporal
    Reputation
    11
    Join Date
    Jul 2011
    Posts
    15
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I must be missing something. Trying to play beta right now and get this:

    https://i.imgur.com/vXy3j.jpg?1

    I've deleted PQR.exe and ran PQRUpdater again. Deleted all my offsets and redownloaded, but nothing.

    Edit: It does, however, work just fine on live.

    Edit2: The game defaulted to x64... so yea it works again...
    Last edited by Boppalopigus; 04-28-2012 at 12:49 PM.

  7. #10462
    MastaRage's Avatar Sergeant Major
    Reputation
    56
    Join Date
    Dec 2011
    Posts
    170
    Thanks G/R
    4/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by ancrion View Post
    looking for deathknight profile !
    looking for search function = "deathknight http"

  8. #10463
    ancrion's Avatar Private
    Reputation
    1
    Join Date
    Apr 2012
    Posts
    3
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    pls link
    i dont like to search 699 pages after deathknight http

  9. #10464
    neoblack's Avatar Member
    Reputation
    1
    Join Date
    Apr 2007
    Posts
    31
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by ancrion View Post
    pls link
    i dont like to search 699 pages after deathknight http
    thats why u have a search option leave these ppl alone there doing great work

  10. #10465
    kickmydog's Avatar Contributor
    Reputation
    257
    Join Date
    Jul 2011
    Posts
    635
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by crystal_tech View Post
    so what is that? is that from an addon that you use? Also try to use the code tags its just code with [ ] around it to start it and /code with [ ] to close it. makes it nicer to read.
    but i'm guessing you just want to disenage the moment you get charged? kinda hard to do that if the charge was from min distance. but i'll see what i can do.
    Seriously doubt disengaging while being charged would work. They blocked being able to jump while being charged, and disengage is basically the same thing. Automatically disengaging is such a bad idea. You could be facing the wrong way, and disengage off the middle part of EotS, or disengage off the LM cliff, bu just targeting a player who may not even be near you.
    https://www.ownedcore.com/forums/world-of-warcraft/world-of-warcraft-bots-programs/wow-bot-maps-profiles/422388-kickmydog-bm-mm-sv-hunter-profiles.html#post2793017

  11. #10466
    Boppalopigus's Avatar Corporal
    Reputation
    11
    Join Date
    Jul 2011
    Posts
    15
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by ancrion View Post
    pls link
    i dont like to search 699 pages after deathknight http
    GO. TO. THE. WIKI. Death Knight Rotations - PQRotation Wiki

  12. #10467
    bjokke's Avatar Member
    Reputation
    9
    Join Date
    Nov 2011
    Posts
    12
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hmm, can't seem to dl the new offsets for the beta through PQR. Is there an external link?

  13. #10468
    Xelper's Avatar ★ Elder ★
    Reputation
    1024
    Join Date
    Mar 2007
    Posts
    860
    Thanks G/R
    0/8
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    See the first post under Manual Download.

    It seems they may have turned the 64 bit client on as default, so make sure in your launcher you have "Launch 32 bit client" selected.
    Last edited by Xelper; 04-28-2012 at 01:45 PM.

  14. #10469
    averykey's Avatar Contributor
    Reputation
    158
    Join Date
    Dec 2011
    Posts
    448
    Thanks G/R
    0/0
    Trade Feedback
    2 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Xelper, Do you have a ret paladin rotation for the beta yet?

  15. #10470
    crystal_tech's Avatar Elite User
    Reputation
    468
    Join Date
    Feb 2008
    Posts
    1,033
    Thanks G/R
    1/6
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by kickmydog View Post
    Seriously doubt disengaging while being charged would work. They blocked being able to jump while being charged, and disengage is basically the same thing. Automatically disengaging is such a bad idea. You could be facing the wrong way, and disengage off the middle part of EotS, or disengage off the LM cliff, bu just targeting a player who may not even be near you.
    yea i figured that when they cast charge and they get to melee ranged your stunned and can't do anything, i just have disengage bound to a key and i hit it and bam its casted.

    Please if someone helped you donate rep to them.

Similar Threads

  1. [Buying] Planetside 2 Priority Beta Key
    By isit123 in forum General MMO Buy Sell Trade
    Replies: 0
    Last Post: 07-21-2012, 06:34 AM
  2. [Selling] PLANETSIDE 2 Priority/Early Access Beta Account
    By Kabraxiss in forum General MMO Buy Sell Trade
    Replies: 0
    Last Post: 07-18-2012, 10:20 AM
  3. [Selling] Planetside 2 Priority/Early access Beta Keys
    By mrsluf in forum General MMO Buy Sell Trade
    Replies: 3
    Last Post: 07-17-2012, 04:45 AM
  4. [Selling] Planetside 2 Priority Access beta key codes
    By fatalefout in forum General MMO Buy Sell Trade
    Replies: 1
    Last Post: 06-26-2012, 04:08 PM
  5. [Bot] Automated dungeon queue / Justice Point leecher(Auto-it source)
    By s_e_a_n_66 in forum World of Warcraft Bots and Programs
    Replies: 36
    Last Post: 01-17-2011, 11:50 AM
All times are GMT -5. The time now is 03:08 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search