WoW Memory Editing WoW Memory Editing for learning purposes only.
This section is more advanced than others on MMOwned Read the section specific rules, infractions will be given out if u break them! That is including the expectations! - If you don't meet them then don't post
05-27-2009
New User
Join Date: Dec 2008
Posts: 9
Reputation: 1
Level up: 50%, 200 Points needed
Question:In combat/Out of combat flag
Hi ppl i want to know if it is possible...
is there a flag in wow local memory that signifies to the client that the toon is in combat...if it is , is it possible to toggle this flag off to instantly go out of combat?
Applications:
stuck in combat bug -> major reason for asking
PVP -> maybe...
Thoughts....
Donate to remove ads, get your "DONATOR title, and get access to the MMOwned community's elite Shoutbawx.
05-27-2009
Banned
Join Date: Feb 2009
Location: Michigan
Posts: 314
Reputation: 95
Just afk out.
If you know how manipulate your ram, then you can.
05-27-2009
Knight-Lieutenant
Join Date: Jan 2008
Posts: 277
Reputation: 18
Level up: 32%, 479 Points needed
Quote:
Originally Posted by
Intu Just afk out.
If you know how manipulate your ram, then you can.
LOL??
Start by reversing lua function UnitAffectingCombat and you will probably be in the right direction.
05-27-2009
New User
Join Date: Dec 2008
Posts: 9
Reputation: 1
Level up: 50%, 200 Points needed
k will try that...
the main question remains would this actually work or the flag will be reset on server sync?
05-27-2009
Knight-Lieutenant
Join Date: Jan 2008
Posts: 277
Reputation: 18
Level up: 32%, 479 Points needed
Holy shit, I didn't read your thread fully. I thought you were just asking to get a flag for InCombat.
Um, no, it is not possible.
Last edited by ramey; 08-19-2009 at 02:19 PM .
05-28-2009
MaiN's Biatch
Legendary User Join Date: Mar 2007
Location: Managed Heap
Posts: 1,247
Nominated 47 Times in 4 Posts
TOTM/W Award(s): 2
Reputation: 767
Points: 48,576, Level: 33
Level up: 17%, 2,824 Points needed
Code:
private long Flags
{
get
{
return GetKnownField<uint>((uint)WoWUnitFields.UNIT_FIELD_FLAGS, BaseAdress);
}
}
/// <summary>
/// Returns true if the unit is in combat
/// </summary>
public bool Combat
{
get
{
return Convert.ToBoolean(Flags & 0x0080000);
}
}
Here you go.. Nom nom
05-28-2009
Sergeant
Join Date: May 2008
Posts: 43
Reputation: 7
Level up: 13%, 435 Points needed
BaseAdress -> BaseAddress
Dude, haven't you paid nothinglol yet?
Check signature at:
[Only registered and activated users can see links. ]
I lol'd.
05-28-2009
Site Donator
Join Date: Sep 2008
Location: Hawaii
Posts: 224
Reputation: 25
Level up: 25%, 528 Points needed
Quote:
Originally Posted by
violentmagician k will try that...
the main question remains would this actually work or the flag will be reset on server sync?
My guess is that you might fool the UI, until you try and do something that requires you not be in combat, at which point the server would re-affirm your state.
08-19-2009
New User
Join Date: Apr 2009
Posts: 9
Reputation: 3
I've been cutting and pasting my arse off, but can't seem to get a "true" return on testing for combat. This is what I have going...
Code:
public static BlackMagic Memory = new BlackMagic();
Descriptors descriptor = new Descriptors(Memory);
public Descriptors getDescriptors
{
get
{
return descriptor;
}
}
public bool Combat
{
get
{
return Convert.ToBoolean(Flags & 0x0080000); //tried return (Flags & 0x80000) == 0x80000)
}
}
public long Flags
{
get
{
try
{
Process[] process = Process.GetProcessesByName("Wow");
return getDescriptors.GetKnownField<uint>(Descriptors.WoWUnitFields.UNIT_FIELD_FLAGS, GetBaseAddress(process[0].Id, "wow.exe"));
}
catch
{
return 0;
}
}
}
public uint GetBaseAddress(int processID, string moduleName)
{
Process process = Process.GetProcessById(processID);
ProcessModuleCollection Modules = process.Modules;
ProcessModule pModule;
uint baseAddress = 0;
for (int i = 0; i < Modules.Count; i++)
{
pModule = Modules[i];
if (pModule.ModuleName.Equals(moduleName))
{
baseAddress = (uint)pModule.BaseAddress;
break;
}
}
return baseAddress;
}
public class Descriptors
{
public enum WoWUnitFields : uint
{
UNIT_FIELD_FLAGS = 0x34 //tried 0x35 which is UNIT_FIELD_FLAGS2
};
private BlackMagic wow { get; set; }
public Descriptors(BlackMagic _BlackMagic)
{
this.wow = _BlackMagic;
}
public T GetKnownField<T>(WoWUnitFields field, uint obj) where T : struct
{
return (T)wow.ReadObject(wow.ReadUInt(obj + 0x08) + (uint)field * 4, typeof(T));
}
}
its always false if I'm in combat or not.
08-19-2009
MMOwned WebDev
Legendary User Join Date: Jan 2008
Posts: 2,268
Nominated 8 Times in 4 Posts
Reputation: 1095
Points: 28,488, Level: 24
Level up: 76%, 412 Points needed
Quote:
Originally Posted by
donth8me I've been cutting and pasting my arse off, but can't seem to get a "true" return on testing for combat. This is what I have going...
Code:
public static BlackMagic Memory = new BlackMagic();
Descriptors descriptor = new Descriptors(Memory);
public Descriptors getDescriptors
{
get
{
return descriptor;
}
}
public bool Combat
{
get
{
return Convert.ToBoolean(Flags & 0x0080000); //tried return (Flags & 0x80000) == 0x80000)
}
}
public long Flags
{
get
{
try
{
Process[] process = Process.GetProcessesByName("Wow");
return getDescriptors.GetKnownField<uint>(Descriptors.WoWUnitFields.UNIT_FIELD_FLAGS, GetBaseAddress(process[0].Id, "wow.exe"));
}
catch
{
return 0;
}
}
}
public uint GetBaseAddress(int processID, string moduleName)
{
Process process = Process.GetProcessById(processID);
ProcessModuleCollection Modules = process.Modules;
ProcessModule pModule;
uint baseAddress = 0;
for (int i = 0; i < Modules.Count; i++)
{
pModule = Modules[i];
if (pModule.ModuleName.Equals(moduleName))
{
baseAddress = (uint)pModule.BaseAddress;
break;
}
}
return baseAddress;
}
public class Descriptors
{
public enum WoWUnitFields : uint
{
UNIT_FIELD_FLAGS = 0x34 //tried 0x35 which is UNIT_FIELD_FLAGS2
};
private BlackMagic wow { get; set; }
public Descriptors(BlackMagic _BlackMagic)
{
this.wow = _BlackMagic;
}
public T GetKnownField<T>(WoWUnitFields field, uint obj) where T : struct
{
return (T)wow.ReadObject(wow.ReadUInt(obj + 0x08) + (uint)field * 4, typeof(T));
}
}
its always false if I'm in combat or not.
Seriously... do some research. You're not even using the correct descriptors.
UNIT_FIELD_FLAGS = 0x3A,
UNIT_FIELD_FLAGS_2 = 0x3B,
08-19-2009
Master Sergeant
Join Date: May 2008
Posts: 119
Reputation: 17
Level up: 5%, 670 Points needed
Quote:
Originally Posted by
donth8me Code:
...
Process[] process = Process.GetProcessesByName("Wow");
return getDescriptors.GetKnownField<uint>(Descriptors.WoWUnitFields.UNIT_FIELD_FLAGS, GetBaseAddress(process[0].Id, "wow.exe"));
...
Dude, I copy&paste a lot. But this ... lol. Calling GetProcessByName() each time you need the descriptor?
08-19-2009
New User
Join Date: Apr 2009
Posts: 9
Reputation: 3
Quote:
Originally Posted by
Viano Dude, I copy&paste a lot. But this ... lol. Calling GetProcessByName() each time you need the descriptor?
LOL, sometimes in a mans life, he just needs a quick fix to get his motor running.
Apoc, thanks for the right info. I though I got it from the 3.2 offsets list but I guess I didn't.
Still doesn't work though. In Flags it fails at try and returns what is in the catch.
Last edited by donth8me; 08-19-2009 at 10:42 PM .
08-19-2009
Knight-Lieutenant
Join Date: Jan 2008
Posts: 277
Reputation: 18
Level up: 32%, 479 Points needed
Quote:
Originally Posted by
donth8me LOL, sometimes in a mans life, he just needs a quick fix to get his motor running.
Apoc, thanks for the right info. I though I got it from the 3.2 offsets list but I guess I didn't.
Still doesn't work though. In Flags it fails at try and returns what is in the catch.
Try this, it's what I do in-process.
Code:
bool CGUnit_C::InCombat()
{
return ( GetObjectField<unsigned long>( UNIT_FIELD_FLAGS ) & UNIT_FLAG_IN_COMBAT ) != 0;
}
OBJECT_END = 0x18
UNIT_FIELD_FLAGS = OBJECT_END + 0xD0
UNIT_FLAG_IN_COMBAT = 0x00080000
Don't even know if it works currently but it should.
08-20-2009
New User
Join Date: Feb 2009
Location: Germany
Posts: 59
Reputation: 1
Level up: 98%, 9 Points needed
from InCombatLockdown 004B2300 (3.2.0)
[10a1b68]+0124c -> 0=incombat
edit:
same for 3.2.0a
Last edited by evil2; 08-20-2009 at 01:15 AM .
08-20-2009
New User
Join Date: Apr 2009
Posts: 9
Reputation: 3
I'm drunk, it's my birthday, I just highlighted and backspaced code in my project and deleted any and all class' that had anything to do with reading Unit_Field_Flags.. I come from a background of hardcore win apps that do basic database reading/writing and make 70k a year doing it. This is all new to me and looks Chinese. I figured after a few days of copy/paste, google and a bit of now how I'd be able to figure out what was going on but who am I kidding? I don't even want to make a bot and never set out to make a bot, I just want to return true when I'm in combat.
Reading the WoW chat log was a cake walk. I even figured out how to return the offsets from a new update. I'm not over it but I need to sit back, learn more on reading different hex paths and start from scratch, I guess.
Last edited by donth8me; 08-20-2009 at 03:08 AM .
Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
All times are GMT -4. The time now is 11:06 PM .