include("addresses.lua"); mywin = findProcess("AION*"); win = openProcess(mywin); mainOffset = getModuleAddress(mywin, "Game.dll"); player = {}; target = {}; -- Everything offset from Game.dll player.Name = memoryReadUString(win, mainOffset + addresses.playerName); player.MaxHp = memoryReadInt(win, mainOffset + addresses.playerMaxHp); player.CurHp = memoryReadInt(win, mainOffset + addresses.playerCurHp); player.MaxMp = memoryReadInt(win, mainOffset + addresses.playerMaxMp); player.CurMp = memoryReadInt(win, mainOffset + addresses.playerCurMp); player.CurFly = memoryReadInt(win, mainOffset + addresses.playerCurFly); player.MaxFly = memoryReadInt(win, mainOffset + addresses.playerMaxFly); player.CurDp = memoryReadInt(win, mainOffset + addresses.playerCurDp); player.CurExp = memoryReadInt(win, mainOffset + addresses.playerCurExp); player.MaxExp = memoryReadInt(win, mainOffset + addresses.playerMaxExp); player.ExpDebt = memoryReadInt(win, mainOffset + addresses.playerExpDebt); player.CastSpeed = memoryReadFloat(win, mainOffset + addresses.playerCastSpeed); player.AttackSpeed = memoryReadFloat(win, mainOffset + addresses.playerAtkSpeed); player.RunSpeed = memoryReadFloat(win, mainOffset + addresses.playerSpeed); player.MainAttack = memoryReadShort(win, mainOffset + addresses.playerMainAtk); player.OffandAttack = memoryReadShort(win, mainOffset + addresses.playerOffAtk); player.MainCrit = memoryReadShort(win, mainOffset + addresses.playerMainCrit); player.OffhandCrit = memoryReadShort(win, mainOffset + addresses.playerOffCrit); player.MainAcc = memoryReadShort(win, mainOffset + addresses.playerMainAcc); player.OffhandAcc = memoryReadShort(win, mainOffset + addresses.playerOffAcc); player.PDef = memoryReadShort(win, mainOffset + addresses.playerPDef); player.MDef = memoryReadShort(win, mainOffset + addresses.playerMDef); player.Block = memoryReadShort(win, mainOffset + addresses.playerBlock); player.Parry = memoryReadShort(win, mainOffset + addresses.playerParry); player.Evasion = memoryReadShort(win, mainOffset + addresses.playerEvasion); -- Attributes player.Power = memoryReadShort(win, mainOffset + addresses.playerPower); player.Health = memoryReadShort(win, mainOffset + addresses.playerHealth); player.Agility = memoryReadShort(win, mainOffset + addresses.playerAgility); player.Accuracy = memoryReadShort(win, mainOffset + addresses.playerAccuracy); player.Knowledge = memoryReadShort(win, mainOffset + addresses.playerKnowledge); player.Will = memoryReadShort(win, mainOffset + addresses.playerWill); -- More info player.Level = memoryReadShort(win, mainOffset + addresses.playerLevel); player.CurCube = memoryReadShort(win, mainOffset + addresses.playerCurCube); player.MaxCube = memoryReadShort(win, mainOffset + addresses.playerMaxCube); -- Position player.X = memoryReadFloat(win, mainOffset + addresses.playerXPos); player.Z = memoryReadFloat(win, mainOffset + addresses.playerZPos); player.Y = memoryReadFloat(win, mainOffset + addresses.playerYPos); -- Target Pointers target.Pointer = memoryReadInt(win, mainOffset + addresses.targetPtr); target.CanAttack = memoryReadInt(win, mainOffset + addresses.targetIsEnemy); target.X = memoryReadFloat(win, target.Pointer + addresses.targetXOffset); target.Z = memoryReadFloat(win, target.Pointer + addresses.targetZOffset); target.Y = memoryReadFloat(win, target.Pointer + addresses.targetYOffset); target.Info = memoryReadInt(win, target.Pointer + addresses.targetOffset); -- following targetOffset target.Direction = memoryReadFloat(win, target.Info + addresses.targetDirection); target.Name = memoryReadUString(win, target.Info + addresses.targetName); target.CurHp = memoryReadInt(win, target.Info + addresses.targetCurHp); target.MaxHp = memoryReadInt(win, target.Info + addresses.targetMaxHp); closeProcess(win); printf("Character name:\t\t%s\n",player.Name); printf("Character hitpoints:\t(%d/%d)\n",player.CurHp,player.MaxHp); printf("Character mana:\t\t(%d/%d)\n",player.CurMp,player.MaxMp); printf("Character Flight Fuel:\t(%d/%d)\n",player.CurFly,player.MaxFly); printf("Character D(?) Points:\t%d\n",player.CurDp); printf("Character Experience:\t(%d/%d)\n",player.CurExp,player.MaxExp); printf("Character Exp Debt:\t%d\n",player.ExpDebt); printf("Character Cast Speed:\t%f\n",player.CastSpeed); printf("Character Attack Speed:\t%f\n",player.AttackSpeed); printf("Character Run Speed:\t%f\n",player.RunSpeed); if player.MainAttack ~= nil then printf("Character Primary Atk:\t%d\n",player.MainAttack); printf("Character Primary Crit:\t%d\n",player.MainCrit); printf("Character Primary Acc:\t%d\n",player.MainAcc); end if player.OffhandAttack ~=nil then printf("Character Offhand Atk:\t%d\n",player.OffhandAttack); printf("Character Offhand Crit:\t%d\n",player.OffhandCrit); printf("Character Offhand Acc:\t%d\n",player.OffhandAcc); end printf("Character Physical Def:\t%d\n",player.PDef); printf("Character Magical Def:\t%d\n",player.MDef); printf("Character Block Chance:\t%d\n",player.Block); printf("Character Parry Chance:\t%d\n",player.Parry); printf("Character Evade Chance:\t%d\n",player.Evasion); -- Attributes printf("Character Power:\t%d\n",player.Power); printf("Character Health:\t%d\n",player.Health); printf("Character Agility:\t%d\n",player.Agility); printf("Character Accuracy:\t%d\n",player.Accuracy); printf("Character Knowledge:\t%d\n",player.Knowledge); printf("Character Will:\t\t%d\n",player.Will); -- More info printf("Character Level:\t%d\n",player.Level); printf("Character Cube Slots:\t(%d/%d)\n",player.CurCube,player.MaxCube); -- Position printf("Character Position:\t(%d,%d,%d)\n",player.X,player.Z,player.Y); -- Target Pointers target.Name = string.sub(target.Name,2); printf("Target Name:\t\t%s\n",target.Name); printf("Target hitpoints:\t(%d/%d)\n",target.CurHp,target.MaxHp); canAttack = nil; if target.CanAttack == 1 then canAttack = false;end; if target.CanAttack == 0 then canAttack = true;end; printf("Target can be attacked:\t%s\n",tostring(canAttack)); printf("Target Position:\t(%d,%d,%d)\n",target.X,target.Z,target.Y); printf("Target is facing:\t%d\n",target.Direction);