Memory-fun!
You can do some pretty cool stuff with this, like enumerating nearby players/monsters/items, casting magic, attacking, un-/equipping etc.
In fact, this should cover most of the things needed for basic botting functionality.
Here's an example on how to retrieve ground items:
Also, just to show a little example of what you can do with no hooking and no touching packets: [Only registered and activated users can see links. Click Here To Register...]
You can do some pretty cool stuff with this, like enumerating nearby players/monsters/items, casting magic, attacking, un-/equipping etc.
In fact, this should cover most of the things needed for basic botting functionality.
Code:
class Pointers
{
public enum CGamePlayerSet : uint
{
// Functions
GetPlayerByIndex = 0x0070632A,
// Offsets
Deque = 0x14,
Count = 0x30,
}
public enum CGameMap : uint
{
// Functions
GetItemByIndex = 0x00629174,
// Offsets
CMapItemManager__InstancePtr = 0x7C,
}
public enum CGameMsg : uint
{
// Functions
AddMsg = 0x005DBD20,
}
public enum CHero : uint
{
// Functions
GetItemByIndex = 0x006F3B0B,
GetStandByEquipment = 0x006F58B2,
UnequipItem = 0x006F636B,
EquipItem = 0x006F5927,
UseItem = 0x006F507A,
DropItem = 0x006F4C60,
PickUpItem = 0x006F35D3,
Emotion = 0x0065D667,
MagicAttack = 0x007146BD,
MagicAttack_0 = 0x00715889,
Jump = 0x0065CAF5,
Attack = 0x0066574F,
// Offsets
ID = 0xD8,
Name = 0x150,
X = 0x250,
Y = 0x254,
Stamina = 0x928,
}
public enum CItem : uint
{
// Offsets
ID = 0xC,
TypeID = 0x1C,
Name = 0x24,
}
public enum Misc : uint
{
CGameMsg__InstancePtr = 0x009D3FC8,
CGameMap__InstancePtr = 0x009D3FC4,
CHero__InstancePtr = 0x009D3FD0,
CGamePlayerSet__InstancePtr = 0x009D8410,
}
}
Code:
public static MapItemInfo GetItemByIndex(int index)
{
uint vectorPtr = Manager.Conquer.ReadUInt((uint)Client.Pointers.Misc.CGameMap__InstancePtr) + (uint)Client.Pointers.CGameMap.CMapItemManager__InstancePtr + 4 + 0x0C;
uint itemInfoArray = Manager.Conquer.ReadUInt(vectorPtr);
uint curObj = Manager.Conquer.ReadUInt(itemInfoArray + ((uint)index * 4));
return (MapItemInfo)Manager.Conquer.ReadObject(curObj, typeof(MapItemInfo));
}