I wanted to share the library I've written to ease the reading and writing to Aion memory.
The projects has most up to date NA offsets that I've found.
It can read alot of information about the character:
[Only registered and activated users can see links. Click Here To Register...]
Read info about character's target:
[Only registered and activated users can see links. Click Here To Register...]
Inventory items:
[Only registered and activated users can see links. Click Here To Register...]
Abilities:
[Only registered and activated users can see links. Click Here To Register...]
Also you can iterate all nearby entities.
It is easy to get if there is available chain skill after current attack.
Not the whole code in the project is written by me. I've refactored code from Blastradius tutorials about reading entities.
This library is written in .Net Framework v3.5 C#.
The library is not commented very well, but there is a simple GUI that uses it as example.
You can see the code for every function. :-)
(Visual Studio 2012 Solution)
The projects has most up to date NA offsets that I've found.
Code:
internal enum ChainsManager
{
Pointer = 0x1129F20,
ArrayStart = 0x490,
}
internal enum Chain
{
AbilityId = 0x3F4,
IsElapsed = AbilityId + 0x5C,
}
internal enum Game
{
Tickcount = 0x10ABB19,
}
internal enum Inventory
{
Pointer = 0x1129B34,
CubesArray = 0x4C4, // []:uint - Cube pointers
}
internal enum Cube
{
InventoryItemsArray = 0x39C // []:uint - Item pointers
}
internal enum InventoryItem
{
ID = 0x9C,
Count = 0xA8,
ItemNode = 0x48,
}
internal enum ItemNode
{
Item = 0x4
}
internal enum Item
{
NextItem = 0x0,
Name = 0x4
}
internal enum AbilityList
{
Pointer = 0x10A1534,
FirstItem = 0x9FC
}
internal enum AbilityArrayItem
{
Pointer1 = 0x0,
Pointer2 = 0x4,
Pointer3 = 0x8,
AbilityID = 0xC,
AbilityPointer = 0x14,
AbilityAcquired = 0x18
}
internal enum AbilityPointers
{
First = 0x0,
Second = 0x14,
Third = 0x4,
Final = 0x8
}
internal enum Ability
{
ID = 0x8,
Name = 0x1C,
NameLength = 0x2C,
LastUseTimestamp = 0x44,
Cooldown = 0x48,
CooldownEnd = 0x4C,
CastTime = 0x60
}
internal enum EntityList
{
Pointer = 0x10ACF48,
Array = 0x48
}
internal enum EntityArrayItem
{
NextArrayItem = 0x0,
PreviousArrayItem = 0x4,
EntityNode = 0xC
}
internal enum EntityNode
{
IsDead = 0x4,
X = 0x34,
Y = X + 0x4,
Z = X + 0x8,
Type = 0x13E,
Entity = 0x254,
}
internal enum Entity
{
EntityNode = 0x4,
Attitude = 0x1C,
ObjectId = 0x24,
Level = 0x36,
HealthPercent = 0x38,
Name = 0x3A,
Type = 0x1CC,
Class = 0x214,
Stance = Class + 0x8C,
Movement = Stance + 0x4,
TargetObjectId = Stance + 0x98,
AttackSpeed = TargetObjectId + 0x1BA,
Health = 0x1228,
MaxHealth = Health + 0x4
}
internal enum LocalPlayer : uint
{
TargetEntityNode = 0xC2C5E0,
HasTarget = TargetEntityNode + 0x8,
CamX = X - 0x420,
CamY = CamX - 0x8,
Movement = X - 0x43C,
X = Name - 0x428,
Y = X + 0x4,
Z = X + 0x8,
ObjectId = Name - 0x4,
Name = Level - 0x214,
Legion = Name + 0xB0,
Level = 0x10A2A60,
MaxHealth = Level + 0x24,
Health = MaxHealth + 0x4,
MaxMana = Level + 0x2C,
Mana = MaxMana + 0x4,
Class = Level + 0x9C,
Experience = Level + 0x18,
MaxExperience = Experience - 0x10,
RecoverableExperience = MaxExperience + 0x8,
MaxDivinePower = Level + 0x34,
DivinePower = MaxDivinePower + 0x2,
MaxFlight = Level + 0x8FB0,
FlightRemainer = MaxFlight + 0x4,
FlightType = MaxFlight + 0x8,
FlightCooldown = FlightRemainer + 0x100
}
[Only registered and activated users can see links. Click Here To Register...]
Read info about character's target:
[Only registered and activated users can see links. Click Here To Register...]
Inventory items:
[Only registered and activated users can see links. Click Here To Register...]
Abilities:
[Only registered and activated users can see links. Click Here To Register...]
Also you can iterate all nearby entities.
It is easy to get if there is available chain skill after current attack.
Not the whole code in the project is written by me. I've refactored code from Blastradius tutorials about reading entities.
This library is written in .Net Framework v3.5 C#.
The library is not commented very well, but there is a simple GUI that uses it as example.
You can see the code for every function. :-)
(Visual Studio 2012 Solution)