Sign in to follow this  
Followers 0
syron

_MemoryRead

4 posts in this topic

#1 ·  Posted (edited)

Hello guys,

I've got a problem... Im pretty new to read memory. I learned how to get the datas from a game called "Perfect World". Everything is working except the character name. My ingame nick is "Gpunkt", it's just a testchar for my "getcharinformation" script.

Let me show you my script:

#include <Memory.au3>

Global $Pointer = 0x00903804
Global $oPointer = 0x00903238
Global $charNameOffset = 0x00000000
Global $CurHpOffset = 0x450
Global $MaxHpOffset = 0x478
Global $CurMpOffset = 0x454
Global $MaxMpOffset = 0x47C
Global $CurEpOffset = 0x458
Global $CurSpOffset = 0x45C
Global $CurLvlOffset = 0x448
Global $CurCultiOffset = 0x44C
Global $CurVigOffset = 0x464
Global $MaxVigOffset = 0x4F8
Global $Process = WinGetProcess("Element Client")
Global $DllInfo1 = _MemoryOpen($Process)

data()

Func _FindNewAddress($Pointer, $Oset)
    Return '0x' & Hex(_MemoryRead($Pointer,$DllInfo1) + $Oset, 8)
EndFunc

Func data()
    $readpointer = '0x' & Hex(_MemoryRead($Pointer, $DllInfo1) + 0x20, 8)
    
; HEALTH POINTS
    $readCurHp = _FindNewAddress($readpointer, $CurHpOffset)
    $CurHp = _MemoryRead($readCurHp, $DllInfo1)
    $readMaxHp = _FindNewAddress($readpointer, $MaxHpOffset)
    $MaxHp = _MemoryRead($readMaxHp, $DllInfo1)
    
; MANA POINTS
    $readCurMp = _FindNewAddress($readpointer, $CurMpOffset)
    $CurMp = _MemoryRead($readCurMp, $DllInfo1)
    $readMaxMp = _FindNewAddress($readpointer, $MaxMpOffset)
    $MaxMp = _MemoryRead($readMaxMp, $DllInfo1)
    
; VIGOUR POINTS
    $readCurVig = _FindNewAddress($readpointer, $CurVigOffset)
    $CurVig = _MemoryRead($readCurVig, $DllInfo1)
    $readMaxVig = _FindNewAddress($readpointer, $MaxVigOffset)
    $MaxVig = _MemoryRead($readMaxVig, $DllInfo1)
    
; CHARACTER
    $readCurEP = _FindNewAddress($readpointer, $CurEpOffset)
    $CurEp = _MemoryRead($readCurEP, $DllInfo1)
    $readCurSp = _FindNewAddress($readpointer, $CurSpOffset)
    $CurSp = _MemoryRead($readCurSp, $DllInfo1)
    $readCurLvl = _FindNewAddress($readpointer, $CurLvlOffset)
    $CurLvl = _MemoryRead($readCurLvl, $DllInfo1)
    $readCurCulti = _FindNewAddress($readpointer, $CurCultiOffset)
    $CurCulti = _MemoryRead($readCurCulti, $DllInfo1)
    
    $getCharName = _FindNewAddress($oPointer, $charNameOffset)
    $CharName = _MemoryRead($getCharName, $DllInfo1, 'char[16]')
    
    MsgBox(0, "Character information", $CharName)
EndFunc

$oPointer is the pointer for the charactername and $charNameOffset is the offset for it.

As u can see in data() function I wrote:

$getCharName = _FindNewAddress($oPointer, $charNameOffset)

$CharName = _MemoryRead($getCharName, $DllInfo1, 'char[16]')

to get the charactername. Well... my name is Gpunkt ingame and the message I get is only a "G". In CheatEngine I got the correct result.

What could be the problem?

Edited by syron

Share this post


Link to post
Share on other sites



does nobody have an idea? :) Im trying to fix that problem since 4 hours or something ;)

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

Show more patience, kid. 4 hours is nothing, and the purpose of this forum isn't to serve you, there are no experts lined up and waiting online 24/7 to answer any question, especially when the question concerns multiplayer game cheating.

Anyway...

my name is Gpunkt ingame and the message I get is only a "G". In CheatEngine I got the correct result.

Then it would be logical to assume that the name is kept as unicode string, not ansi. Therefore use "wchar" instead of "char" for the read buffer. Edited by Siao

"be smart, drink your wine"

Share this post


Link to post
Share on other sites

naw, its not cheating imo, its just reading out data from memory. I dont want want to make something which helps me! Datas do not help me. Well... I could create a bot or something, but that's not the thing I want to do. I want to make a small database test and I heared with Multiplayer games it's easy to learn AutoIt. Learning by doing...

But, thx. You're right. It works with wchar. now I can read out my ingame name.

and ya, I know the forum is not only for ME! but u know I was kinda fukked up by this script :/ Im sorry

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0