anyone know how to dump the ClickToMove_Toggle base?
Code:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Dumper.Offsets
{
public class WowOffsets
{
public const int PlayerName = 0x2DCFCF8;
public const int PlayerGUID = 0x2DCFCE0;
public const int PetGUID = 0x3124588;
public const int MouseoverGUID = 0x30E7F48;
public const int TargetGUIDS = 0x2E45E60;
public const int BagGUIDS = 0x31375E0;
public const int ZoneID = 0x30E6E1C;
public const int GameStatus = 0x30E7F24;
public const int CorpsePosition = 0x2CD3AF0;
public const int LootWindow = 0x3124698;
public const int AutoLootToggle = 0x30E7B88;
public const int LootToggleOffset = 0xFFFFFFFFA694E85C;
public const int LastMessage = 0x30E6E20;
public const int BattlegroundFinished = 0x31236EC;
public const int BattlegroundWinner = 0x31236F0;
public const int BattlegroundInfo = 0x2CDD840;
public const int KeybindBase = 0x2DCEB18;
public const int AddOnBase = 0x316CC20;
public const int SpellbookBase = 0x311B9C8;
public const int SpellbookCount = 0x311B9C0;
public const int PetSpellbookBase = 0x311B9E8;
public const int PetSpellbookCount = 0x311B9E0;
public const int CooldownBase = 0x2E56A40;
public const int CameraBase = 0x31C9C98;
public const int CameraOffsetBase = 0x38E0;
public const int ObjectManager = 0x2EF4068;
public const int PlayerNameCache = 0x2AAF8A0;
}
}
Hehe.. Glad to see someone's at least using it 😏
Should note that most patterns in there are for SoM or maybe be fairly outdated for tbc :P
Now that holidays are all wrapped up I'll try to spend some time fixing that up, and maybe making patterns readable from an external file for easy updates
My head hurts and I don't know how to get the cooling of my skills. Go search and view previous articles. There may be a problem with the translation software. I don't fully understand the meaning inside. I used CE to open the 0x2E56A40 position and I could see the value of similar skill ID and cooling time. But how can I get the remaining cooldown time of this skill?
My head hurts and I don't know how to get the cooling of my skills. Go search and view previous articles. There may be a problem with the translation software. I don't fully understand the meaning inside. I used CE to open the 0x2E56A40 position and I could see the value of similar skill ID and cooling time. But how can I get the remaining cooldown time of this skill?
Code:
internal bool GetCooldowns()
{
try
{
lock (CooldownLock)
{
var Current = Memory.Read<IntPtr>(Client.BaseAddress + 0x2E56A40 + 0x10);
if (Current == IntPtr.Zero)
throw new Exception("Could not read base poi");
Cooldowns = new List<CooldownStruct>();
while (Current.ToInt64() != 0)
{
var cdObj = Memory.Read<CooldownStruct>(Current);
if (cdObj.SpellID != 0)
Cooldowns.Add(cdObj);
Current = cdObj.Next;
}
}
return Cooldowns.Count > 0;
}
catch (Exception e)
{
Console.WriteLine($"[{DateTime.Now.ToShortTimeString()}] {e.Message}");
return false;
}
}
Code:
[StructLayout(LayoutKind.Explicit)]
public struct CooldownStruct
{
[FieldOffset(0x08)]
public IntPtr Next;
[FieldOffset(0x10)]
public uint SpellID;
[FieldOffset(0x14)]
public uint ItemID;
[FieldOffset(0x1C)]
public uint RecoveryStart;
[FieldOffset(0x20)]
public uint Recovery1;
[FieldOffset(0x28)]
public uint CatRecoveryStart;
[FieldOffset(0x2C)]
public uint Recovery2;
[FieldOffset(0x34)]
public uint GcdRecoveryStart;
}
Take some time to actually read back on old topics in this forum i know i've posted this elsewhere here before and will be my only handout.
internal bool GetCooldowns()
{
try
{
lock (CooldownLock)
{
var Current = Memory.Read<IntPtr>(Client.BaseAddress + 0x2E56A40 + 0x10);
if (Current == IntPtr.Zero)
throw new Exception("Could not read base poi");
Cooldowns = new List<CooldownStruct>();
while (Current.ToInt64() != 0)
{
var cdObj = Memory.Read<CooldownStruct>(Current);
if (cdObj.SpellID != 0)
Cooldowns.Add(cdObj);
Current = cdObj.Next;
}
}
return Cooldowns.Count > 0;
}
catch (Exception e)
{
Console.WriteLine($"[{DateTime.Now.ToShortTimeString()}] {e.Message}");
return false;
}
}
Code:
[StructLayout(LayoutKind.Explicit)]
public struct CooldownStruct
{
[FieldOffset(0x08)]
public IntPtr Next;
[FieldOffset(0x10)]
public uint SpellID;
[FieldOffset(0x14)]
public uint ItemID;
[FieldOffset(0x1C)]
public uint RecoveryStart;
[FieldOffset(0x20)]
public uint Recovery1;
[FieldOffset(0x28)]
public uint CatRecoveryStart;
[FieldOffset(0x2C)]
public uint Recovery2;
[FieldOffset(0x34)]
public uint GcdRecoveryStart;
}
Take some time to actually read back on old topics in this forum i know i've posted this elsewhere here before and will be my only handout.
Thank you very much for your help Razzue, I have seen what you posted in the article [TBC Classic] [2.5.2 40892]. I have also read many old articles. Maybe it's a problem with the translation software. I don't really understand what those mean. So I fiddled with it for almost a week. No progress at all. Thank you for the code~ This is very helpful to me. Thank you.
I did it. Because of my lack of understanding of C# and unreliable translation software, I was really confused when I read the C# code of the predecessors. After repeated reading, I just thought of it. I need to use the current time of the system to calculate the number of milliseconds. . It was confirmed that my idea was correct.
Code:
@@ Debug(138) : ID: 27087 CD = 7.799
@@ Debug(138) : ID: 27087 CD = 6.783
@@ Debug(138) : ID: 27087 CD = 5.783
@@ Debug(138) : ID: 27087 CD = 4.768
@@ Debug(138) : ID: 27087 CD = 3.768
@@ Debug(138) : ID: 27087 CD = 2.768
@@ Debug(138) : ID: 27087 CD = 1.768
@@ Debug(138) : ID: 27087 CD = 0.768
I've gotten the name of the unitObject with unitbase+1800+f8+0, and the name of the GameObject with GameObjectbase+478+e0+0, but I realized when I wanted to get the name of the PlayerObject. This is not the same. I checked out previous articles. As before, I don't quite understand it. Can anyone give me some hints?
I've gotten the name of the unitObject with unitbase+1800+f8+0, and the name of the GameObject with GameObjectbase+478+e0+0, but I realized when I wanted to get the name of the PlayerObject. This is not the same. I checked out previous articles. As before, I don't quite understand it. Can anyone give me some hints?
You need to read the player name cache
Each entry will have a GUID/String of a player, then you just have to match unit guid to name cache guid.