Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <KDMemory.au3>
#Region ### START Koda GUI section ###
$GUI = GUICreate("Aion Test memory", 253, 389, 222, 198)
$Group1 = GUICtrlCreateGroup("Char info", 8, 8, 233, 129)
$Label1 = GUICtrlCreateLabel("Name : ", 16, 32, 41, 17)
$charName = GUICtrlCreateLabel("", 56, 32, 170, 17)
$Label3 = GUICtrlCreateLabel("HP : ", 27, 67, 28, 17)
$charHP = GUICtrlCreateLabel("", 56, 67, 70, 17)
$Label2 = GUICtrlCreateLabel("MP : ", 27, 89, 29, 17)
$charMP = GUICtrlCreateLabel("", 56, 89, 70, 17)
$Label5 = GUICtrlCreateLabel("XP : ", 27, 111, 27, 17)
$currentXP = GUICtrlCreateProgress(56, 111, 169, 12)
$Label4 = GUICtrlCreateLabel("Level : ", 17, 49, 39, 17)
$charLevel = GUICtrlCreateLabel("", 56, 49, 22, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Enemy info", 9, 144, 233, 105)
$Label6 = GUICtrlCreateLabel("Name : ", 17, 168, 41, 17)
$enemyName = GUICtrlCreateLabel("", 57, 168, 170, 17)
$Label8 = GUICtrlCreateLabel("HP : ", 28, 203, 28, 17)
$enemyHp = GUICtrlCreateLabel("", 57, 203, 70, 17)
$Label10 = GUICtrlCreateLabel("MP : ", 28, 225, 29, 17)
$enemyMp = GUICtrlCreateLabel("", 57, 225, 70, 17)
$Label13 = GUICtrlCreateLabel("Level : ", 18, 185, 39, 17)
$enemyLevel = GUICtrlCreateLabel("", 57, 185, 22, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$startBTN = GUICtrlCreateButton("Start", 8, 352, 75, 25)
$Group3 = GUICtrlCreateGroup("Mob info", 9, 256, 233, 83)
$Label7 = GUICtrlCreateLabel("Name : ", 17, 280, 41, 17)
$mobName = GUICtrlCreateLabel("", 57, 280, 170, 17)
$Label11 = GUICtrlCreateLabel("HP : ", 28, 315, 28, 17)
$mobHp = GUICtrlCreateLabel("", 57, 315, 70, 17)
$Label16 = GUICtrlCreateLabel("Level : ", 18, 297, 39, 17)
$mobLevel = GUICtrlCreateLabel("", 57, 297, 22, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label9 = GUICtrlCreateLabel("", 99, 355, 136, 20)
GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
GUICtrlSetColor(-1, 0x800000)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $processName = "aion.bin", $moduleName = "Game.dll"
Global $cName = 0x10A490C ; char name
Global $cLevel = 0x10A49B0 ; char level
Global $cHP = 0x10ADAF8 ; char hp
Global $cMP = 0x10ADB00 ; char mp
Global $cCurrentXP = 0x10ADAE8 ; char current xp
Global $cTotalXP = 0x10ADAD8 ; char total xp
Global $eName = 0x0112C1C4 ; enemy name
Global $eNamePointer[6] = [0, 0x0, 0x324, 0x8, 0x0, 0x270] ; enemy pointer
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
$processId = ProcessExists($processName)
If $processId == 0 Then
GUICtrlSetData($Label9, "Aion is not running")
Else
GUICtrlSetData($Label9, "Aion is running")
_charName()
_charLevel()
_charHP()
_charMP()
_charXP()
;_enemyName()
EndIf
WEnd
Func _charName()
$handles = _KDMemory_OpenProcess($processId)
If Not @error Then
$baseAddress = _KDMemory_GetModuleBaseAddress($handles, $moduleName) + $cName
$memoryData = _KDMemory_ReadProcessMemory($handles, $baseAddress, "WCHAR[25] (Unicode)")
If GUICtrlRead($charName) <> $memoryData[1] Then GUICtrlSetData($charName, $memoryData[1])
EndIf
_KDMemory_CloseHandles($handles)
EndFunc
Func _charLevel()
$handles = _KDMemory_OpenProcess($processId)
If Not @error Then
$baseAddress = _KDMemory_GetModuleBaseAddress($handles, $moduleName) + $cLevel
$memoryData = _KDMemory_ReadProcessMemory($handles, $baseAddress, "WORD")
If GUICtrlRead($charLevel) <> $memoryData[1] Then GUICtrlSetData($charLevel, $memoryData[1])
EndIf
_KDMemory_CloseHandles($handles)
EndFunc
Func _charHP()
$handles = _KDMemory_OpenProcess($processId)
If Not @error Then
$baseAddress = _KDMemory_GetModuleBaseAddress($handles, $moduleName) + $cHP
$memoryData = _KDMemory_ReadProcessMemory($handles, $baseAddress, "DWORD")
If GUICtrlRead($charHP) <> $memoryData[1] Then GUICtrlSetData($charHP, $memoryData[1])
EndIf
_KDMemory_CloseHandles($handles)
EndFunc
Func _charMP()
$handles = _KDMemory_OpenProcess($processId)
If Not @error Then
$baseAddress = _KDMemory_GetModuleBaseAddress($handles, $moduleName) + $cMP
$memoryData = _KDMemory_ReadProcessMemory($handles, $baseAddress, "DWORD")
If GUICtrlRead($charMP) <> $memoryData[1] Then GUICtrlSetData($charMP, $memoryData[1])
EndIf
_KDMemory_CloseHandles($handles)
EndFunc
Func _charXP()
$val = _currentXP()
$val2 = ($val * 100) / _totalXP()
GUICtrlSetData($currentXP, $val2)
EndFunc
Func _currentXP()
$handles = _KDMemory_OpenProcess($processId)
If Not @error Then
$baseAddress = _KDMemory_GetModuleBaseAddress($handles, $moduleName) + $cCurrentXP
$memoryData = _KDMemory_ReadProcessMemory($handles, $baseAddress, "DWORD")
Return $memoryData[1]
EndIf
_KDMemory_CloseHandles($handles)
EndFunc
Func _totalXP()
$handles = _KDMemory_OpenProcess($processId)
If Not @error Then
$baseAddress = _KDMemory_GetModuleBaseAddress($handles, $moduleName) + $cTotalXP
$memoryData = _KDMemory_ReadProcessMemory($handles, $baseAddress, "DWORD")
Return $memoryData[1]
EndIf
_KDMemory_CloseHandles($handles)
EndFunc