Code:
#RequireAdmin
#include <NomadMemory.au3>
HotKeySet("{END}", "_KillProcess")
Dim $REAL_BASE_ADDRESS = 0x00A521C0
Dim $ACTION_MOVE_ACTION[6]
$ACTION_MOVE_ACTION[1] = 0x1C
$ACTION_MOVE_ACTION[2] = 0x34
$ACTION_MOVE_ACTION[3] = 0x1010
$ACTION_MOVE_ACTION[4] = 0x30
$ACTION_MOVE_ACTION[5] = 0x4
Dim $ACTION_FINISHED_OFFSET[7]
$ACTION_FINISHED_OFFSET[1] = 0x1C
$ACTION_FINISHED_OFFSET[2] = 0x34
$ACTION_FINISHED_OFFSET[3] = 0x1010
$ACTION_FINISHED_OFFSET[4] = 0x30
$ACTION_FINISHED_OFFSET[5] = 0x4
$ACTION_FINISHED_OFFSET[6] = 0x8
Dim $ACTION_START_OFFSET[7]
$ACTION_START_OFFSET[1] = 0x1C
$ACTION_START_OFFSET[2] = 0x34
$ACTION_START_OFFSET[3] = 0x1010
$ACTION_START_OFFSET[4] = 0x30
$ACTION_START_OFFSET[5] = 0x4
$ACTION_START_OFFSET[6] = 0x14
Dim $ACTION_X_OFFSET[7]
$ACTION_X_OFFSET[1] = 0x1C
$ACTION_X_OFFSET[2] = 0x34
$ACTION_X_OFFSET[3] = 0x1010
$ACTION_X_OFFSET[4] = 0x30
$ACTION_X_OFFSET[5] = 0x4
$ACTION_X_OFFSET[6] = 0x20
Dim $ACTION_Y_OFFSET[7]
$ACTION_Y_OFFSET[1] = 0x1C
$ACTION_Y_OFFSET[2] = 0x34
$ACTION_Y_OFFSET[3] = 0x1010
$ACTION_Y_OFFSET[4] = 0x30
$ACTION_Y_OFFSET[5] = 0x4
$ACTION_Y_OFFSET[6] = 0x24
Dim $ACTION_Z_OFFSET[7]
$ACTION_Z_OFFSET[1] = 0x1C
$ACTION_Z_OFFSET[2] = 0x34
$ACTION_Z_OFFSET[3] = 0x1010
$ACTION_Z_OFFSET[4] = 0x30
$ACTION_Z_OFFSET[5] = 0x4
$ACTION_Z_OFFSET[6] = 0x28
Dim $ACTION_HEIGHT_OFFSET[7]
$ACTION_HEIGHT_OFFSET[1] = 0x1C
$ACTION_HEIGHT_OFFSET[2] = 0x34
$ACTION_HEIGHT_OFFSET[3] = 0x1010
$ACTION_HEIGHT_OFFSET[4] = 0x30
$ACTION_HEIGHT_OFFSET[5] = 0x4
$ACTION_HEIGHT_OFFSET[6] = 0x68
Dim $ACTION_UNK1[7]
$ACTION_UNK1[1] = 0x1C
$ACTION_UNK1[2] = 0x34
$ACTION_UNK1[3] = 0x1010
$ACTION_UNK1[4] = 0x30
$ACTION_UNK1[5] = 0x4
$ACTION_UNK1[6] = 0x64
Dim $ACTION_UNK2[7]
$ACTION_UNK2[1] = 0x1C
$ACTION_UNK2[2] = 0x34
$ACTION_UNK2[3] = 0x1010
$ACTION_UNK2[4] = 0x30
$ACTION_UNK2[5] = 0x4
$ACTION_UNK2[6] = 0x6C
Dim $ACTION_MOVE_TYPE_OFFSET[7]
$ACTION_MOVE_TYPE_OFFSET[1] = 0x1C
$ACTION_MOVE_TYPE_OFFSET[2] = 0x34
$ACTION_MOVE_TYPE_OFFSET[3] = 0x1010
$ACTION_MOVE_TYPE_OFFSET[4] = 0x30
$ACTION_MOVE_TYPE_OFFSET[5] = 0x4
$ACTION_MOVE_TYPE_OFFSET[6] = 0x2C
Dim $ACTION_NEW_ACTION_TYPE[5]
$ACTION_NEW_ACTION_TYPE[1] = 0x1C
$ACTION_NEW_ACTION_TYPE[2] = 0x34
$ACTION_NEW_ACTION_TYPE[3] = 0x1010
$ACTION_NEW_ACTION_TYPE[4] = 0xC
Dim $ACTION_SET_NEXT_ACTION[5]
$ACTION_SET_NEXT_ACTION[1] = 0x1C
$ACTION_SET_NEXT_ACTION[2] = 0x34
$ACTION_SET_NEXT_ACTION[3] = 0x1010
$ACTION_SET_NEXT_ACTION[4] = 0x18
Dim $ACTION_SET_NEW_ACTION_TYPE[5]
$ACTION_SET_NEW_ACTION_TYPE[1] = 0x1C
$ACTION_SET_NEW_ACTION_TYPE[2] = 0x34
$ACTION_SET_NEW_ACTION_TYPE[3] = 0x1010
$ACTION_SET_NEW_ACTION_TYPE[4] = 0x14
Dim $ACTION_ERROR1_OFFSET[7]
$ACTION_ERROR1_OFFSET[1] = 0x1C
$ACTION_ERROR1_OFFSET[2] = 0x34
$ACTION_ERROR1_OFFSET[3] = 0x1010
$ACTION_ERROR1_OFFSET[4] = 0x30
$ACTION_ERROR1_OFFSET[5] = 0x4
$ACTION_ERROR1_OFFSET[6] = 0x34
Dim $ACTION_ERROR2_OFFSET[7]
$ACTION_ERROR2_OFFSET[1] = 0x1C
$ACTION_ERROR2_OFFSET[2] = 0x34
$ACTION_ERROR2_OFFSET[3] = 0x1010
$ACTION_ERROR2_OFFSET[4] = 0x30
$ACTION_ERROR2_OFFSET[5] = 0x4
$ACTION_ERROR2_OFFSET[6] = 0x3C
Dim $PROCESS_IDENTIFIER = WinGetProcess("Perfect World International")
Dim $MEMORY_HANDLE = _MemoryOpen($PROCESS_IDENTIFIER)
_Move_Player(500.0, 0.0, 500.0, -1.0)
_KillProcess()
Func _Move_Player($DESTINATION_X, $DESTINATION_Y, $DESTINATION_Z, $HEIGHT)
_MemoryPointerWrite($REAL_BASE_ADDRESS, $MEMORY_HANDLE, $ACTION_ERROR1_OFFSET, 0)
_MemoryPointerWrite($REAL_BASE_ADDRESS, $MEMORY_HANDLE, $ACTION_ERROR2_OFFSET, 0)
$MOVE_ACTION = _MemoryPointerRead($REAL_BASE_ADDRESS, $MEMORY_HANDLE, $ACTION_MOVE_ACTION)
_MemoryPointerWrite($REAL_BASE_ADDRESS, $MEMORY_HANDLE, $ACTION_FINISHED_OFFSET, 0)
_MemoryPointerWrite($REAL_BASE_ADDRESS, $MEMORY_HANDLE, $ACTION_START_OFFSET, 1)
_MemoryPointerWrite($REAL_BASE_ADDRESS, $MEMORY_HANDLE, $ACTION_X_OFFSET, $DESTINATION_X, "float")
_MemoryPointerWrite($REAL_BASE_ADDRESS, $MEMORY_HANDLE, $ACTION_Y_OFFSET, $DESTINATION_Y, "float")
_MemoryPointerWrite($REAL_BASE_ADDRESS, $MEMORY_HANDLE, $ACTION_Z_OFFSET, $DESTINATION_Z, "float")
_MemoryPointerWrite($REAL_BASE_ADDRESS, $MEMORY_HANDLE, $ACTION_HEIGHT_OFFSET, $HEIGHT, "float")
_MemoryPointerWrite($REAL_BASE_ADDRESS, $MEMORY_HANDLE, $ACTION_UNK1, 26624)
_MemoryPointerWrite($REAL_BASE_ADDRESS, $MEMORY_HANDLE, $ACTION_UNK2, 65536)
_MemoryPointerWrite($REAL_BASE_ADDRESS, $MEMORY_HANDLE, $ACTION_MOVE_TYPE_OFFSET, 0)
_MemoryPointerWrite($REAL_BASE_ADDRESS, $MEMORY_HANDLE, $ACTION_NEW_ACTION_TYPE, $MOVE_ACTION[1])
_MemoryPointerWrite($REAL_BASE_ADDRESS, $MEMORY_HANDLE, $ACTION_SET_NEXT_ACTION, 1)
_MemoryPointerWrite($REAL_BASE_ADDRESS, $MEMORY_HANDLE, $ACTION_SET_NEW_ACTION_TYPE, $MOVE_ACTION[1])
EndFunc ;==>_Move_Player
Func _KillProcess()
_MemoryClose($PROCESS_IDENTIFIER)
Exit
EndFunc ;==>_KillProcess
If this is easier with packets, then that is fine too. ( I have read some of your posts ). But it looked more complicated