[5.0.4 16016] - How can you determine which spells are available? menu

User Tag List

Results 1 to 8 of 8
  1. #1
    Tanaris4's Avatar Contributor Authenticator enabled
    Reputation
    148
    Join Date
    Oct 2008
    Posts
    646
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    [5.0.4 16016] - How can you determine which spells are available?

    So since the patch obviously you can only use spells based on what spec you are. But if you loop through using these offsets:

    Code:
                SpellBookNumSpells = 0xCC807C,	    // 5.0.4 16016
                SpellBookSpellsPtr = 0xCC8080,  	// 5.0.4 16016
    The spell struct tells you if it has been trained (1 means yes) and the spell ID that is in the spell book. I've looked at other parts of the struct and can't seem to determine how to tell what spells you can actually use.

    Has anyone been able to figure this out yet? Or have any pointers on where I could look?

    Edit: [Struct + 0xC] is actually what spell book tab it's on (0: General, 1: Spec 1, 2: Spec 2, 4: Spec 3). Professions are a much larger value.

    Thanks in advance!
    ~ Tanaris
    Last edited by Tanaris4; 08-31-2012 at 08:12 PM.
    https://tanaris4.com

    [5.0.4 16016] - How can you determine which spells are available?
  2. #2
    Sacred's Avatar Contributor
    Reputation
    207
    Join Date
    Dec 2007
    Posts
    152
    Thanks G/R
    3/9
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I have the same problem. It seems that WoW API don't work correctly because IsSpellKnown - World of Warcraft Programming: A Guide and Reference for Creating WoW Addons return false for most of spells like Mage Bomb - Spell - World of Warcraft, Dark Soul - Spell - World of Warcraft that overrides from talents or specializations.
    Last edited by Sacred; 09-01-2012 at 05:32 AM.

  3. #3
    Apoc's Avatar Angry Penguin
    Reputation
    1387
    Join Date
    Jan 2008
    Posts
    2,750
    Thanks G/R
    0/12
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Code:
            [StructLayout(LayoutKind.Sequential)]        internal struct KnownSpell
            {
                public readonly uint KnownType;
                public readonly int SpellId;
                public readonly uint Level;
                public readonly uint Unk_TabType;
            }
    Code:
    enum KnownSpellType
    {
    Known = 1,
    FutureSpell = 2,
    PetAction = 3,
    Flyout = 4 // Summon Demon, Teleport, etc. The abilities which have a flyout menu. Requires other DBCs to get the info within (SpellFlyout.dbc). This is more or less a visual addition, can be ignored
    }
    Let me know if you need other help.

  4. #4
    Sacred's Avatar Contributor
    Reputation
    207
    Join Date
    Dec 2007
    Posts
    152
    Thanks G/R
    3/9
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    My struct and enum are the same, it's not a problem to read spells from spellbook.
    For example Warlock in destruction specialization has Immolate and Incinerate spells, but when i read it from memory, instead of this i get Corruption and Shadowbolt spells. There are many examples that spells are overrided by other spells from talents and specializations.
    The question is how to read "real" SpellId. I reversed IsSpellKnown function, but it seems that this function doesn't work properly.

  5. #5
    Apoc's Avatar Angry Penguin
    Reputation
    1387
    Join Date
    Jan 2008
    Posts
    2,750
    Thanks G/R
    0/12
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Sacred View Post
    My struct and enum are the same, it's not a problem to read spells from spellbook.
    For example Warlock in destruction specialization has Immolate and Incinerate spells, but when i read it from memory, instead of this i get Corruption and Shadowbolt spells. There are many examples that spells are overrided by other spells from talents and specializations.
    The question is how to read "real" SpellId. I reversed IsSpellKnown function, but it seems that this function doesn't work properly.
    The spell ID is correct. I'm not sure what you're talking about.

  6. #6
    Sacred's Avatar Contributor
    Reputation
    207
    Join Date
    Dec 2007
    Posts
    152
    Thanks G/R
    3/9
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Destruction warlock, that's what i get when read my spellbook:

    Code:
    6603;Auto Attack
    5019;Shoot
    59752;Every Man for Himself
    83958;Mobile Banking
    83950;The Quick and the Dead
    34091;Artisan Riding
    118483;For Great Justice
    78632;Fast Track
    78635;Mr. Popularity
    83951;Guild Mail
    83960;Honorable Mention
    83941;Cash Flow
    20599;Diplomacy
    118076;The Doctor Is In
    76277;Armor Skills
    117983;Ride Like the Wind
    90267;Flight Master's License
    76299;Weapon Skills
    78633;Mount Up
    54197;Cold Weather Flying
    118021;Working Overtime
    83944;Hasty Hearth
    20597;Sword Specialization
    20864;Mace Specialization
    83943;Reinforce
    20598;The Human Spirit
    79738;Languages
    5697;Unending Breath
    48018;Demonic Circle: Summon
    48020;Demonic Circle: Teleport
    172;Corruption
    6229;Twilight Ward
    710;Banish
    686;Shadow Bolt
    20707;Soulstone
    755;Health Funnel
    5740;Rain of Fire
    108683;Fire and Brimstone
    17877;Shadowburn
    126;Eye of Kilrogg
    120451;Flames of Xoroth
    77799;Fel Flame
    17962;Conflagrate
    1098;Enslave Demon
    689;Drain Life
    1122;Summon Infernal
    18540;Summon Doomguard
    119898;Command Demon
    1490;Curse of the Elements
    109466;Curse of Enfeeblement
    29858;Soulshatter
    698;Ritual of Summoning
    29893;Create Soulwell
    6201;Create Healthstone
    5782;Fear
    116858;Chaos Bolt
    104773;Unending Resolve
    114635;Ember Tap
    109773;Dark Intent
    80240;Havoc
    77801;Dark Soul
    103133;Imp: Flee
    103127;Imp: Blood Pact
    103150;Imp: Singe Magic
    124538;Imp: Cauterize Master
    103128;Voidwalker: Suffering
    124539;Voidwalker: Disarm
    103142;Voidwalker: Shadow Bulwark
    103130;Voidwalker: Shadow Shield
    104938;Fel Armor
    101976;Soul Harvest
    77220;Mastery: Emberstorm
    86091;Nethermancy
    117896;Backdraft
    109784;Aftermath
    108563;Backlash
    103135;Felhunter: Spell Lock
    103136;Felhunter: Devour Magic
    108647;Burning Embers
    103140;Succubus: Lesser Invisibility
    103139;Succubus: Seduction
    103141;Succubus: Whiplash
    93375;Control Demon
    1454;Life Tap
    688;Summon Imp
    697;Summon Voidwalker
    691;Summon Felhunter
    712;Summon Succubus
    110505;Symbiosis
    74497;Lifeblood
    74519;Herb Gathering
    2656;Smelting
    74496;Toughness
    131474;Fishing
    89722;Archaeology
    80451;Survey
    Everything seems to be correct except 172;Corruption, 686;Shadow Bolt, 77801;Dark Soul. Instead of these spells i have Immolate and Incinerate and Dark Soul: Instability. I thought that i'm doing something wrong, but when i use function IsSpellKnown, it returns false for these spells.
    That's what i mean.
    Last edited by Sacred; 09-01-2012 at 01:15 PM.

  7. #7
    Frosttall's Avatar Active Member
    Reputation
    64
    Join Date
    Feb 2011
    Posts
    261
    Thanks G/R
    16/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Well I've experienced that if you type "/cast Corruption" into the chat, it will start to cast Immolate as Destruction Warlock. Seems likes that the games redirects it automatically to Immolate.

    Maybe is that information useful

  8. #8
    Sacred's Avatar Contributor
    Reputation
    207
    Join Date
    Dec 2007
    Posts
    152
    Thanks G/R
    3/9
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Frosttall View Post
    Well I've experienced that if you type "/cast Corruption" into the chat, it will start to cast Immolate as Destruction Warlock. Seems likes that the games redirects it automatically to Immolate.

    Maybe is that information useful
    Yes, i know that and i'm using this method, but it's not good and lead to confuse.
    Last edited by Sacred; 09-02-2012 at 02:43 AM.

Similar Threads

  1. How do you determine which .M2 to use?
    By Nitric in forum WoW ME Questions and Requests
    Replies: 1
    Last Post: 08-11-2010, 07:56 PM
  2. [Help] How can you make a trainer learn .learn all
    By Juicyz in forum World of Warcraft Emulator Servers
    Replies: 4
    Last Post: 03-19-2008, 02:48 PM
  3. How can you become a GM for Blizzard?
    By Spitty305 in forum World of Warcraft General
    Replies: 22
    Last Post: 02-23-2008, 10:45 PM
  4. How can you make guards that attack people who are PvP-ing ?
    By Wheeze201 in forum World of Warcraft Emulator Servers
    Replies: 7
    Last Post: 12-31-2007, 07:24 AM
  5. How can you create a weapon?
    By Khalkaroth in forum World of Warcraft Model Editing
    Replies: 3
    Last Post: 03-12-2007, 08:39 PM
All times are GMT -5. The time now is 01:49 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