Getting Global Cooldown menu

Shout-Out

User Tag List

Page 1 of 2 12 LastLast
Results 1 to 15 of 23
  1. #1
    DrakeFish's Avatar Lazy Leecher

    Reputation
    634
    Join Date
    Nov 2008
    Posts
    569
    Thanks G/R
    0/14
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Getting Global Cooldown

    Hey, I did some research and didn't find any good post about it. I did find some posts about finding Global Cooldown but it's all unanswered questions. I wanted to scan wow while using a GCD hack but noticed it was all some MPQ patches or such craps, or simply some real-time memory modifier, and not an actual patch. (I did try to hook it).

    So yeah, where am I supposed to find the GCD? Is it stored in the constants? In the playerbase? Where the hell is it. Thanks for any answer.
    Last edited by DrakeFish; 10-10-2010 at 07:15 PM.

    Getting Global Cooldown
  2. #2
    namreeb's Avatar Legendary

    Reputation
    668
    Join Date
    Sep 2008
    Posts
    1,029
    Thanks G/R
    8/222
    Trade Feedback
    0 (0%)
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)
    I may be mistaken on this, but I believe WoW has a function to check if a particular spell can be cast. Amongst other things, it takes into account global cooldown. If you can find this function you might be able to find where to check for it.

    Edit: Sorry that's rather vague. I haven't looked at it for quite some time.

  3. #3
    JuJuBoSc's Avatar Banned for scamming CoreCoins Purchaser
    Reputation
    1019
    Join Date
    May 2007
    Posts
    922
    Thanks G/R
    1/3
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I got it by checking UI Frame directly, that's was huge thing to do, but it's pretty accurate.

    Every *Cooldown frame object has 2 properties, the start time of the spell cooldown, and the cooldown time in milsec.
    From here you can grab every spell cooldown as shown in bar, just take any spell to check global cooldown, I know it's vague, but it's hard to explain better, hope it help.

  4. #4
    DrakeFish's Avatar Lazy Leecher

    Reputation
    634
    Join Date
    Nov 2008
    Posts
    569
    Thanks G/R
    0/14
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by JuJuBoSc View Post
    I got it by checking UI Frame directly, that's was huge thing to do, but it's pretty accurate.

    Every *Cooldown frame object has 2 properties, the start time of the spell cooldown, and the cooldown time in milsec.
    From here you can grab every spell cooldown as shown in bar, just take any spell to check global cooldown, I know it's vague, but it's hard to explain better, hope it help.
    I may look at this. I also though about finding some address containing the GCD length, so I could compare the timestamp on which spell started with current timestamp. I'm not familiar at all with UI in memory, but thanks for the infos.

  5. #5
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1358
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    There used to be a global GCD memory address, though the last time I used it was pre-BC so I'm not even sure if it exists anymore. Depending on what you're doing it's normally easier to just call the engine functions to check whether or not an ability (or w/e you're trying to use) is usable or not.

  6. #6
    DrakeFish's Avatar Lazy Leecher

    Reputation
    634
    Join Date
    Nov 2008
    Posts
    569
    Thanks G/R
    0/14
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Yeah, I just want to know if GCD is over, (and if possible, cooldown for that spell at the same time) I tried some code I found on the forums, updated the offsets, and it doesn't seem to work, always returning true. Is there an address that shows the GCD Value? Like the exact duration of a Global Cooldown (So just the value that changes with haste, not the current remaining GCD value).

  7. #7
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1358
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by DrakeFish View Post
    Yeah, I just want to know if GCD is over, (and if possible, cooldown for that spell at the same time) I tried some code I found on the forums, updated the offsets, and it doesn't seem to work, always returning true. Is there an address that shows the GCD Value? Like the exact duration of a Global Cooldown (So just the value that changes with haste, not the current remaining GCD value).
    The address I was referring to contained the time left on the GCD, measured in milliseconds. I'm not sure if there's an address that contains the current total GCD, taking modifiers into account. I doubt such a thing exists as there's no real point to it. Not all modifiers are 'static' so I wouldn't be surprised if the GCD was simply calculated on the fly when it was needed. No way to know without checking though.

    Have you tried simply taking your character, doing the math necessary to work out your GCD, scanning for it, changing your gear, scanning again, etc?

  8. #8
    jjaa's Avatar Contributor
    Reputation
    245
    Join Date
    Dec 2006
    Posts
    562
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    The lua function GetSpellCooldown does take the global cooldown into account. Just reverse that.

  9. #9
    Nesox's Avatar ★ Elder ★
    Reputation
    1280
    Join Date
    Mar 2007
    Posts
    1,238
    Thanks G/R
    0/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I think this has been posted some time but i'll post it again

    Code:
            /// <summary>
            /// Returns if the global cooldown is currently running.
            /// </summary>
            public static bool GlobalCooldown
            {
                get
                {
                    long frequency;
                    long perfCount;
                    Imports.QueryPerformanceFrequency(out frequency);
                    Imports.QueryPerformanceCounter(out perfCount);
    
                    //Current time in ms
                    long currentTime = (perfCount * 1000) / frequency;
    
                    //Get first list object
                    var currentListObject = ObjectManager.Wow.Read<uint>((uint)StaticOffsets.LocalPlayerSpellsOnCooldown + 0x8);
    
                    while ((currentListObject != 0) && ((currentListObject & 1) == 0))
                    {
                        //Start time of the spell cooldown in ms
                        var startTime = ObjectManager.Wow.Read<uint>(currentListObject + 0x10);
    
                        //Absolute gcd of the spell in ms
                        var globalCooldown = ObjectManager.Wow.Read<uint>(currentListObject + 0x2C);
    
                        //Spell on gcd?
                        if ((startTime + globalCooldown) > currentTime)
                            return true;
    
    
                        //Get next list object
                        currentListObject = ObjectManager.Wow.Read<uint>(currentListObject + 4);
                    }
    
                    return false;
                }
            }
    LocalPlayerSpellsOnCooldown = 0xD3F5AC, // Packet_PACKET_SMSG_COOLDOWN_CHEAT+25 'mov ecx, offset dword_XXXXXX'


  10. #10
    _Mike's Avatar Contributor
    Reputation
    310
    Join Date
    Apr 2008
    Posts
    531
    Thanks G/R
    0/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Code:
    typedef int (__cdecl *tGetSpellCooldownByID)(int, int, DWORD*, DWORD*, DWORD*);
    tGetSpellCooldownByID GetSpellCooldownByID= (tGetSpellCooldownByID)0x00809000; // Spell_C__GetSpellCooldown_Proxy in the info thread
    typedef int (__cdecl *tGetTimer)();
    tGetTimer GetTimer = (tGetTimer)0x0086AE20; // PerformanceCounter in the info thread
    DWORD cdLength=0, timeStarted=0, enabled=0, RemainingCD = 0;
    GetSpellCooldownByID(<spell id>, 0, &cdLength, &timeStarted, &enabled);
    if(cdLength > 0)
      RemainingCD = (timeStarted+cdLength)-GetTimer();
    Call it with a no-cd instant spell to get the remaining gcd. If remaining gcd > 0 then cdLength is the total length of the gcd.
    If you're silenced then it will give you that cooldown instead of the gcd. Depending on what you want that might be either good or bad

    Edit:
    Didn't see Nesox' post while I was writing this.. That might be closer to what you're asking for.
    Last edited by _Mike; 10-11-2010 at 05:20 AM.

  11. #11
    DrakeFish's Avatar Lazy Leecher

    Reputation
    634
    Join Date
    Nov 2008
    Posts
    569
    Thanks G/R
    0/14
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks a lot Nesox. I had this from the other thread bu it wasn't working. Now it does, thanks for the help!

  12. #12
    2$mart4me's Avatar Member
    Reputation
    1
    Join Date
    Mar 2010
    Posts
    21
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    GCD calculation adjustment

    Very new to all of this, so hopefully my question makes sense.

    Originally Posted by Nesox View Post
    I think this has been posted some time but i'll post it again

    Code:
            /// <summary>
            /// Returns if the global cooldown is currently running.
            /// </summary>
            public static bool GlobalCooldown
            {
                get
                {
                    long frequency;
                    long perfCount;
                    Imports.QueryPerformanceFrequency(out frequency);
                    Imports.QueryPerformanceCounter(out perfCount);
    
                    //Current time in ms
                    long currentTime = (perfCount * 1000) / frequency;
    
                    //Get first list object
                    var currentListObject = ObjectManager.Wow.Read<uint>((uint)StaticOffsets.LocalPlayerSpellsOnCooldown + 0x8);
    
                    while ((currentListObject != 0) && ((currentListObject & 1) == 0))
                    {
                        //Start time of the spell cooldown in ms
                        var startTime = ObjectManager.Wow.Read<uint>(currentListObject + 0x10);
    
                        //Absolute gcd of the spell in ms
                        var globalCooldown = ObjectManager.Wow.Read<uint>(currentListObject + 0x2C);
    
                        //Spell on gcd?
                        if ((startTime + globalCooldown) > currentTime)
                            return true;
    
    
                        //Get next list object
                        currentListObject = ObjectManager.Wow.Read<uint>(currentListObject + 4);
                    }
    
                    return false;
                }
            }
    LocalPlayerSpellsOnCooldown = 0xD3F5AC, // Packet_PACKET_SMSG_COOLDOWN_CHEAT+25 'mov ecx, offset dword_XXXXXX'

    Using LocalPlayerSpellsOnCooldown = 0x00980968.

    This all seems to be working, but my gcd seems to be off by anywhere from .5 seconds to 4 seconds. Each time I run WoW, I have to make an adjustment to tune the gcd using a line like this.

    Code:
                        if ((startTime + globalCooldown) > (currentTime + globalcooldownadjustment))
    where globalcooldownadjustment is a number I set to compensate. Once I set the number, the gcd seems to be spot on until the next time I run WoW. Is there something I am missing or not understanding? My assumption is that it has something to do with how accurate currenttime is being set.

  13. #13
    caytchen's Avatar Contributor
    Reputation
    138
    Join Date
    Apr 2007
    Posts
    162
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Just call WoWs PerformanceCounter. Then again, I have no idea why anyone would go to those great lengths for a lousy global cooldown.

  14. #14
    2$mart4me's Avatar Member
    Reputation
    1
    Join Date
    Mar 2010
    Posts
    21
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by caytchen View Post
    Just call WoWs PerformanceCounter. Then again, I have no idea why anyone would go to those great lengths for a lousy global cooldown.
    My goal is to stay completely out of process. If that is the case, is my adjustment just a part of doing business out of process?

  15. #15
    JuJuBoSc's Avatar Banned for scamming CoreCoins Purchaser
    Reputation
    1019
    Join Date
    May 2007
    Posts
    922
    Thanks G/R
    1/3
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Use 0x008A7F54 which is set by Wow itself to get it's PerformanceCounter value.

Page 1 of 2 12 LastLast

Similar Threads

  1. No Global Cooldown For druids
    By Alisar in forum WoW EMU Exploits & Bugs
    Replies: 9
    Last Post: 06-21-2008, 04:05 AM
  2. Global Cooldown
    By Tropem in forum WoW EMU Exploits & Bugs
    Replies: 3
    Last Post: 06-17-2008, 03:12 AM
  3. No Icelance Global Cooldown!!
    By lundish in forum WoW EMU Exploits & Bugs
    Replies: 21
    Last Post: 04-24-2008, 06:42 AM
  4. No Global-Cooldown on any spell/ability. [NOT WPE]
    By shadeburn in forum WoW EMU Exploits & Bugs
    Replies: 6
    Last Post: 04-07-2008, 08:30 AM
  5. No more Global Cooldown on your spells.
    By zephiroth in forum World of Warcraft Bots and Programs
    Replies: 31
    Last Post: 03-23-2008, 10:02 PM
All times are GMT -5. The time now is 06:54 AM. 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