Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Rekomendowane odpowiedzi

Opublikowano

Siemka próbuje odczytac z pamięci ilość życia w pewnej gry.

Zalazłem offsety i teraz nie wiem jak to mogę odczytac.

 

beztytuujo.png

 

To jest ukryta treść, proszę

 

Powiem także że nigdy z offsetów nie odczytywałem i nie wiem jak to się robi.

Jedynie sam adres.

 

Bardzo proszę o porawienie mnie.

max 5 linijek tekstu.

Opublikowano

pokombinuj sobie z tym , zapisz jako nosmemory.au3 i do include .

gotowe funkcje odczytu tylko uzyć odpowiednio znając offsety , zresztą do weilu gier też sie może przydać :)

 

 

#cs----------------------------------------------------------------------------------------------------

 

;; Nostale Memory Reading. by Blinko

 

;; AutoIt Version: 3.2.9.14 (beta)

 

;;

 

;;

 

;;

 

;; Installation:

 

;; Put NosMemory.au3 in your C:\Program Files\AutoIt3\include folder to install.

 

;; Then use #include <NosMemory.au3> to use the functions

 

;; Since this Project is Open Source it is up to you to update it after you download it.

 

;; However i do Keep mine updated often due to the fact i use it myself.

 

;; Remeber to update your addresses every wednesday as needed or when the Client updates.

 

;;

 

;; I've Used Wiccan's NosMemory Autoit Piece, and Added in Some Memory Reading Functions for Nostale.

 

;; I was able to create functions to read Hp/Mp, Player Name,Basic & Additional SP thus far.

 

;; Which can be used as Follows.

 

;;

 

;; In your Project add the line at the top #include <NosMemory.au3>

 

;; Then for Example a Label named $pName.

 

;; GUICtrlSetData($pName,GetPlayerName(),"") will be the command then used to gather the information..etc...

 

;; Using it in such a manner would tell your Labeled named $pName to return the Player Name.

 

;; GUICtrlSetData($pGold,GetPlayerGold(),"") <---gold example

 

;;

 

;;

 

;; Updated: 09/08/2008

 

;; ~ Tidied the Clutter up a bit, still much more to come.

 

;; Updated: 09/09/2008

 

;; ~ New Addresses Found however i've lost the Zoom and Mouse Coord/Click locations.

 

;; ~ New Function Format added

 

;; ~ Usage: Format(<expression>, <separator>, <size>)

 

;; ~ GUICtrlSetData($pGold,Format(GetPlayerGold(), ',' , 3),"") <---gold example from above with new Usage.

 

;;

 

;; Updated: October 23, 2008

 

;; ~ Addresses changed after Special Red Fairy Event.

 

;;

 

;; Updated: November 5, After Halloween Event

 

;; ~ Addresses changed a bit.

 

#ce----------------------------------------------------------------------------------------------------

 

#include-once

 

 

 

#Region "NosMemory"

 

; ====================================================================================================

 

;~ ===========================================================

 

;~ == Function: _GetProcessIdByName

 

;~ == Purpose:

 

;~ == Obtains the process ID of the given process by

 

;~ == its name shown in the task manager list.

 

;~ ===========================================================

 

;~ == Written By: Wiccaan, Revised by Blinko

 

;~ == Written On: Sept. 09, 2007

 

;~ ===========================================================

 

Func _GetProcessIdByName($szProcessName)

 

 

 

;~ Constants

 

Const $TH32CS_SNAPPROCESS = 0x00000002

 

Const $INVALID_HANDLE_VALUE = -1

 

 

 

;~ Local Variables

 

Local $hSnapshot, $pe32, $bFound, $procId

 

 

 

;~ Create ProcessEntry32 Struct

 

$pe32 = DLLStructCreate("int;int;int;uint;int;int;int;int;int;char[260]")

 

DllStructSetData($pe32,1,DllStructGetSize($pe32))

 

 

 

;~ Create Snapshot Of Processes Using CreateToolhelp32Snapshot

 

$hSnapshot = DllCall("kernel32.dll", "hwnd", "CreateToolhelp32Snapshot", "int", $TH32CS_SNAPPROCESS, "int", 0)

 

If $hSnapshot[0] = $INVALID_HANDLE_VALUE Then Return 0

 

 

 

;~ Attemp To Locate The Given Process By Its Name

 

$bFound = DllCall("kernel32.dll","int","Process32First","hwnd",$hSnapshot[0],"ptr",DllStructGetPtr($pe32))

 

If $bFound[0] Then

 

Do

 

If StringLower(DllStructGetData($pe32,10)) = StringLower($szProcessName) Then

 

$procId = DllStructGetData($pe32,3)

 

ExitLoop

 

EndIf

 

$bFound = DllCall("kernel32.dll","int","Process32Next","hwnd",$hSnapshot[0],"ptr",DllStructGetPtr($pe32))

 

Until Not $bFound[0]

 

EndIf

 

 

 

;~ Close Any Open Handle

 

DllCall("kernel32.dll","int","CloseHandle","int",$hSnapshot[0])

 

 

 

;~ Return Our Process Id, If One Was Found

 

Return $procId

 

 

 

EndFunc

 

;~ ===========================================================

 

;~ == Function: _GetModuleBaseByName

 

;~ == Purpose:

 

;~ == Obtains the base address of the given module

 

;~ == inside the given process id.

 

;~ ===========================================================

 

;~ == Written By: Wiccaan, Revised by Blinko

 

;~ == Written On: Sept. 09, 2007

 

;~ ===========================================================

 

Func _GetModuleBaseByName($dwProcId, $szModuleName)

 

 

 

;~ Constants

 

Const $TH32CS_SNAPMODULES = 0x00000008

 

Const $INVALID_HANDLE_VALUE = -1

 

 

 

;~ Local Variables

 

Local $hSnapshot, $me32, $bFound, $baseAddress

 

 

 

;~ Create ModuleEntry32 Struct

 

$me32 = DllStructCreate("int;int;int;int;int;int;int;int;char[256];char[260]")

 

DllStructSetData($me32,1,DllStructGetSize($me32))

 

 

 

;~ Create Snapshot Of This Processes Modules

 

$hSnapshot = DllCall("kernel32.dll","hwnd","CreateToolhelp32Snapshot","int",$TH32CS_SNAPMODULES,"int",$dwProcId)

 

If $hSnapshot[0] = $INVALID_HANDLE_VALUE Then Return 0

 

 

 

;~ Find The NosTaleX.dat Module Base

 

$bFound = DllCall("kernel32.dll","int","Module32First","hwnd",$hSnapshot[0],"ptr",DllStructGetPtr($me32))

 

If $bFound[0] Then

 

Do

 

If StringLower(DllStructGetData($me32,9)) = StringLower($szModuleName) Then

 

$baseAddress = DllStructGetData($me32,6)

 

ExitLoop

 

EndIf

 

$bFound = DllCall("kernel32.dll","int","Module32Next","hwnd",$hSnapshot[0],"ptr",DllStructGetPtr($me32))

 

Until Not $bFound[0]

 

EndIf

 

 

 

;~ Close Any Open Handle

 

DllCall("kernel32.dll","int","CloseHandle","int",$hSnapshot[0])

 

 

 

;~ Return Our Base Address, If One Was Found

 

Return $baseAddress

 

 

 

EndFunc

 

;~ ===========================================================

 

;~ == Function: _ReadMemoryEx

 

;~ == Purpose:

 

;~ == Reads the given processes memory. Instead of

 

;~ == the single address being read, this function

 

;~ == will calculate a base and offset for a pointer

 

;~ == and read it. Following that it will also read

 

;~ == another extension address if needed.

 

;~ ===========================================================

 

;~ == Written By: Wiccaan, Revised by Blinko

 

;~ == Written On: Sept. 09, 2007

 

;~ ===========================================================

 

Func _ReadMemoryEx($szProcessName, $szModuleToBase, $dwPointerOffset, $stepOffset)

 

 

 

;~ Find And Check Our Process Id

 

Local $procId = _GetProcessIdByName($szProcessName)

 

If $procId = 0 Then Return 0

 

 

 

;~ Find And Check Our Base Address

 

Local $baseAddress = _GetModuleBaseByName($procId, $szModuleToBase)

 

If $baseAddress = 0 Then Return 0

 

 

 

;~ Add The Base And First Pointer Offset Together

 

Local $addrFirst = Hex($baseAddress + $dwPointerOffset)

 

 

 

;~ Open The Memory Of The Given Process

 

Local $openMem = _MemOpen($procId)

 

 

 

;~ Read The Location For Our Pointer Address Value

 

Local $dwPointer = _MemRead($openMem, "0x" & $addrFirst)

 

 

 

;~ Incase someone was using this like a normal ReadProcessMemory, Return If Step Is 0

 

If $stepOffset = 0 Then

 

_MemClose($openMem)

 

Return $dwPointer

 

EndIf

 

 

 

;~ Step Had A Value, So Add The New Pointer Value To The Step And Read For The Value

 

Local $dwNewPointer = Hex($dwPointer + $stepOffset)

 

Local $dwNewValue = _MemRead($openMem, "0x" & $dwNewPointer)

 

 

 

;~ Close The Process Memory And Return

 

_MemClose($openMem)

 

Return $dwNewValue

 

 

 

EndFunc

 

;~ ===========================================================

 

;~ == Function: _ReadStringEx

 

;~ == Purpose:

 

;~ == Reads the given processes memory. Instead of

 

;~ == the single address being read, this function

 

;~ == will calculate a base and offset for a pointer

 

;~ == and read it. Following that it will also read

 

;~ == another extension address if needed.

 

;~ == This Returns the Value in Character Form.

 

;~ ===========================================================

 

;~ == Revised By: Blinko

 

;~ == Written On: Sept. 29, 2008

 

;~ ===========================================================

 

Func _ReadStringEx($szProcessName, $szModuleToBase, $dwPointerOffset, $stepOffset)

 

 

 

;~ Find And Check Our Process Id

 

Local $procId = _GetProcessIdByName($szProcessName)

 

If $procId = 0 Then Return 0

 

 

 

;~ Find And Check Our Base Address

 

Local $baseAddress = _GetModuleBaseByName($procId, $szModuleToBase)

 

If $baseAddress = 0 Then Return 0

 

 

 

;~ Add The Base And First Pointer Offset Together

 

Local $addrFirst = Hex($baseAddress + $dwPointerOffset)

 

 

 

;~ Open The Memory Of The Given Process

 

Local $openMem = _MemOpen($procId)

 

 

 

;~ Read The Location For Our Pointer Address Value

 

Local $dwPointer = _MemRead($openMem, "0x" & $addrFirst)

 

 

 

;~ Incase someone was using this like a normal ReadProcessMemory, Return If Step Is 0

 

If $stepOffset = 0 Then

 

_MemClose($openMem)

 

Return $dwPointer

 

EndIf

 

 

 

;~ Step Had A Value, So Add The New Pointer Value To The Step And Read For The Value

 

Local $dwNewPointer = Hex($dwPointer + $stepOffset)

 

Local $dwNewValue = _MemRead($openMem, "0x" & $dwNewPointer, 'char[16]')

 

 

 

;~ Close The Process Memory And Return

 

_MemClose($openMem)

 

Return $dwNewValue

 

 

 

EndFunc

 

;~ ===========================================================

 

;~ == Function: _WriteMemoryEx

 

;~ == Purpose:

 

;~ == Writes Back to the Given Pointer.

 

;~ == However Client Side changes are not made.

 

;~ == But the Pointer WILL be changed. Also the Changing of the Character Name

 

;~ == Work's but it only allows up to 6 Characters so Far.

 

;~ ===========================================================

 

;~ == Revised By: Blinko

 

;~ == Written On: Sept. 29, 2008

 

;~ ===========================================================

 

Func _WriteMemoryEx($szProcessName, $szModuleToBase, $dwPointerOffset, $stepOffset, $value)

 

 

 

;~ Find And Check Our Process Id

 

Local $procId = _GetProcessIdByName($szProcessName)

 

If $procId = 0 Then Return 0

 

 

 

;~ Find And Check Our Base Address

 

Local $baseAddress = _GetModuleBaseByName($procId, $szModuleToBase)

 

If $baseAddress = 0 Then Return 0

 

 

 

;~ Add The Base And First Pointer Offset Together

 

Local $addrFirst = Hex($baseAddress + $dwPointerOffset)

 

 

 

;~ Open The Memory Of The Given Process

 

Local $openMem = _MemOpen($procId)

 

 

 

;~ Read The Location For Our Pointer Address Value

 

Local $dwPointer = _MemRead($openMem, "0x" & $addrFirst)

 

 

 

;~ Incase someone was using this like a normal ReadProcessMemory, Return If Step Is 0

 

If $stepOffset = 0 Then

 

_memClose($openMem)

 

Return $dwPointer

 

EndIf

 

 

 

;~ Step Had A Value, So Add The New Pointer Value To The Step And Read For The Value

 

Local $dwNewPointer = Hex($dwPointer + $stepOffset)

 

;;Local $dwNewValue = _MemWrite($openMem, "0x" & $dwNewPointer, $value)

 

_MemWrite($openMem, "0x" & $dwNewPointer, $value, 'dword')

 

;~ Close The Process Memory And Return

 

_MemClose($openMem)

 

;;Return $dwNewValue

 

 

 

EndFunc

 

;~ ================================================================================

 

;~ == _MemOpen, _MemRead, _MemClose

 

;~ ==

 

;~ == This functions can be found in the default Memory script that comes with

 

;~ == the AutoIT Script Editor. I take no credit in writing these functions, I

 

;~ == simply rewrote them to my fitting and understanding. They are almost exactly

 

;~ == the same as the functions found in the original file.

 

;~ ==

 

;~ == Credits: Paul Campbell & Gary Frost [Revised By: Blinko]

 

;~ ================================================================================

 

 

 

Func _MemOpen($dwProcId, $dwAccess = 0x1F0FFF, $dwInheritHandle = 1)

 

 

 

Local $dwHandles[2] = [DllOpen("kernel32.dll")]

 

If @error Then

 

SetError( 2 )

 

Return 0

 

EndIf

 

 

 

Local $dwOpenProc = DllCall($dwHandles[0],"int","OpenProcess","int",$dwAccess,"int",$dwInheritHandle,"int",$dwProcId)

 

If @error Then

 

SetError( 3 )

 

Return 0

 

EndIf

 

 

 

$dwHandles[1] = $dwOpenProc[0]

 

Return $dwHandles

 

 

 

EndFunc

 

 

 

Func _MemRead($dwHandles, $dwAddress, $dwType = 'dword')

 

 

 

If Not IsArray($dwHandles) Then

 

SetError( 1 )

 

Return 0

 

EndIf

 

 

 

Local $dwBuffer = DllStructCreate($dwType)

 

If @error Then

 

SetError( @error +1 )

 

Return 0

 

EndIf

 

 

 

DllCall($dwHandles[0],"int","ReadProcessMemory","int",$dwHandles[1],"int",$dwAddress,"ptr",DllStructGetPtr($dwBuffer),"int",DllStructGetSize($dwBuffer),"int",'')

 

If Not @error Then

 

Local $dwValue = DllStructGetData($dwBuffer,1)

 

Return $dwValue

 

Else

 

SetError( 6 )

 

Return 0

 

EndIf

 

 

 

EndFunc

 

 

 

Func _MemWrite($dwHandles, $dwAddress, $dwData, $dwType = 'dword')

 

 

 

If Not IsArray($dwHandles) Then

 

SetError(1)

 

Return 0

 

EndIf

 

 

 

Local $dwBuffer = DllStructCreate($dwType)

 

 

 

If @Error Then

 

SetError(@Error + 1)

 

Return 0

 

Else

 

DllStructSetData($dwBuffer, 1, $dwData)

 

If @Error Then

 

SetError(6)

 

Return 0

 

EndIf

 

EndIf

 

 

 

DllCall($dwHandles[0], 'int', 'WriteProcessMemory', 'int', $dwHandles[1], 'int', $dwAddress, 'ptr', DllStructGetPtr($dwBuffer), 'int', DllStructGetSize($dwBuffer), 'int', '')

 

 

 

If Not @Error Then

 

Return 1

 

Else

 

SetError(7)

 

Return 0

 

EndIf

 

 

 

EndFunc

 

 

 

Func _MemClose($dwHandles)

 

 

 

If Not IsArray($dwHandles) Then

 

SetError( 1 )

 

Return 0

 

EndIf

 

 

 

DllCall($dwHandles[0],"int","CloseHandle","int",$dwHandles[1])

 

If Not @error Then

 

DllClose( $dwHandles[0] )

 

Return 1

 

Else

 

DllClose( $dwHandles[0] )

 

SetError( 2 )

 

Return 0

 

EndIf

 

 

 

EndFunc

 

 

 

#EndRegion

 

 

 

#Region "Globals"

 

;;Old HP 00379BB4,0037ABD8

 

Global $PlayerHPPointer = 0x0037CC38; 0037CC64

 

Global $PlayerNameLocation = 0x001EDC84 ;;0x001EBC84 ;;old 001EBC98

 

Global $PlayerGold = 0x0037CDE8 ;;0x0037AD88

 

Global $PlayerMPPointer = 0x0037CC38

 

Global $PlayerSPLocation = 0x0037CBF4 ;;0x0037AB94 ;;old 00379B70

 

;;old Speed 001ED0A4

 

;;event speed 001EE0B4

 

Global $PlayerSpeedLocation = 0x001F00B8 ;001F00B8

 

Global $ZoomLocation = 0x001E75B4 ;0x001E35A8

 

 

 

;;Global $PlayerMapLocation = 0x00378968

 

;;Global $PlayerMapLocation = 0x00378E74

 

 

 

;;Global $Player_x[2]

 

;;$Player_x[0] = $PlayerMapLocation

 

;;$Player_x[1] = 0x4

 

 

 

;;Global $Player_y[2]

 

;;$Player_y[0] = $PlayerMapLocation

 

;;$Player_y[1] = 0x6

 

 

 

;;;Global $MapX_MouseClick[2]

 

;;;$MapX_MouseClick[0] = $PlayerMapLocation

 

;;;$MapX_MouseClick[1] = 0x8

 

 

 

;;;Global $MapY_MouseClick[2]

 

;;;$MapY_MouseClick[0] = $PlayerMapLocation

 

;;;$MapY_MouseClick[1] = 0xA

 

Global $Zoom[3]

 

$Zoom[0] = $ZoomLocation

 

$Zoom[1] = 0x39A

 

$Zoom[2] = 0x386

 

 

 

Global $PlayerSpeed[2]

 

$PlayerSpeed[0] = $PlayerSpeedLocation

 

$PlayerSpeed[1] = 0x8A

 

 

 

Global $PlayerSP[2]

 

$PlayerSP[0] = $PlayerSPLocation

 

$PlayerSP[1] = 0x104

 

 

 

Global $Gold[2]

 

$Gold[0] = $PlayerGold

 

$Gold[1] = 0x134

 

 

 

Global $PlayerName[2]

 

$PlayerName[0] = $PlayerNameLocation

 

$PlayerName[1] = 0x0

 

 

 

Global $PlayerHealth_Total[2]

 

$PlayerHealth_Total[0] = $PlayerHPPointer

 

$PlayerHealth_Total[1] = 0x138

 

 

 

Global $PlayerHealth_Current[2]

 

$PlayerHealth_Current[0] = $PlayerHPPointer

 

$PlayerHealth_Current[1] = 0x13C

 

 

 

Global $PlayerMana_Total[2]

 

$PlayerMana_Total[0] = $PlayerMPPointer

 

$PlayerMana_Total[1] = 0x1B0

 

 

 

Global $PlayerMana_Current[2]

 

$PlayerMana_Current[0] = $PlayerMPPointer

 

$PlayerMana_Current[1] = 0x1B4

 

 

 

 

 

Global $ProcessID = WinGetProcess('Nostale')

 

 

 

 

 

#EndRegion

 

 

 

 

 

 

 

#Region "Misc Functions - Formatter Here"

 

;~ Function-'Format'-Description-------------------------------------------------------

 

;~ Format Function Created by Blinko

 

;~ Description: Format( $value )

 

;~ This was made to imitate Visual Basic's Format Function.

 

;~ Where (Example Text1 = Format( Text1, "###,###" )

 

;~ If Text1.text = 1000

 

;~ then Format(Text1, "###,###") = 1,000

 

;~ However AutoIt doesnt have a function for this. So i made one up.

 

;~

 

;~ Usage: Format($expression, $separator, $nSize)

 

;~ As the Above Example u want a string like 100000 to read as 100,000

 

;~ You simply say for example Format('100000' , ',' , 3)

 

;~ Usage Example: GuiCtrlSetData( $Label, Format(GetPlayerGold(), ',' , 3) )

 

;~ ---------------------------------------------------------------------------------------

 

Func Format($expression, $separator, $nSize)

 

Local $split = StringSplit($expression, "")

 

Local $newText = ""

 

Local $counter = 0

 

If StringLen($expression) > $nSize Then

 

For $i = $split[0] To 1 Step -1

 

If $counter = $nSize Then

 

$newText = $split[$i] & $separator & $newText

 

$counter = 0

 

Else

 

$newText = $split[$i] & $newText

 

EndIf

 

$counter +=1

 

Next

 

Else

 

$expression = $expression

 

Return $expression

 

EndIf

 

 

 

Return $newText

 

EndFunc

 

#EndRegion

 

 

 

#Region "Player Commands"

 

Func GetPlayerName()

 

;open the process

 

Global $Process = _MemOpen($ProcessID)

 

Global $pName = _ReadStringEx("nostalex.dat","nostalex.dat",$PlayerName[0],$PlayerName[1])

 

 

 

Global $Name = _MemRead($Process, $pName, 'char[16]')

 

 

 

;close the process

 

_MemClose($Process)

 

 

 

Return $Name

 

EndFunc

 

 

 

Func GetPlayerSP()

 

;open the process

 

Global $Process = _MemOpen($ProcessID)

 

Global $sp = _ReadMemoryEx("nostalex.dat","nostalex.dat",$PlayerSP[0],$PlayerSP[1])

 

 

 

Global $NewAddy = $sp + 0x150

 

Global $basicsp = _MemRead($Process, $NewAddy, 'dword')

 

 

 

 

 

;close the process

 

_MemClose($Process)

 

 

 

Return $basicsp

 

EndFunc

 

 

 

Func GetPlayerADDSP()

 

;open the process

 

Global $Process = _MemOpen($ProcessID)

 

Global $sp = _ReadMemoryEx("nostalex.dat","nostalex.dat",$PlayerSP[0],$PlayerSP[1])

 

 

 

Global $NewAddy = $sp + 0x220

 

Global $addsp = _MemRead($Process, $NewAddy, 'dword')

 

 

 

 

 

;close the process

 

_MemClose($Process)

 

 

 

Return $addsp

 

EndFunc

 

 

 

Func GetPlayerSpeed()

 

Return _ReadMemoryEx("nostalex.dat","nostalex.dat",$PlayerSpeed[0],$PlayerSpeed[1])

 

EndFunc

 

 

 

Func GetPlayerGold()

 

Global $pGold = _ReadMemoryEx("nostalex.dat","nostalex.dat",$Gold[0],$Gold[1])

 

Return $pGold

 

EndFunc

 

 

 

Func GetPlayerCurrentHP()

 

Global $pcHP = _ReadMemoryEx("nostalex.dat","nostalex.dat",$PlayerHealth_Current[0],$PlayerHealth_Current[1])

 

Return $pcHP

 

EndFunc

 

 

 

Func GetTotalHP()

 

Global $ptHP = _ReadMemoryEx("nostalex.dat","nostalex.dat",$PlayerHealth_Total[0],$PlayerHealth_Total[1])

 

Return $ptHP

 

EndFunc

 

 

 

Func GetPlayerCurrentMP()

 

Global $pcMP = _ReadMemoryEx("nostalex.dat","nostalex.dat",$PlayerMana_Current[0],$PlayerMana_Current[1])

 

Return $pcMP

 

EndFunc

 

 

 

Func GetTotalMP()

 

Global $ptMP = _ReadMemoryEx("nostalex.dat","nostalex.dat",$PlayerMana_Total[0],$PlayerMana_Total[1])

 

Return $ptMP

 

EndFunc

 

 

 

;need 2 byte reading for this =\

 

;;Func GetPlayer_X()

 

;; Return _ReadMemoryEx("nostalex.dat","nostalex.dat",$Player_x[0],$Player_x[1])

 

;;EndFunc

 

 

 

;Func GetPlayer_Y()

 

; Return _ReadMemoryEx("nostalex.dat","nostalex.dat",$Player_y[0],$Player_y[1])

 

;EndFunc

 

 

 

#EndRegion

 

#Region "Set Controls"

 

Func SetPlayerName($p_name)

 

 

 

;Works Fine Client Side. Kinda Weird sometimes..only allows like 6 characters

 

 

 

;open the process

 

Global $Process = _MemOpen($ProcessID)

 

Global $pName = _ReadStringEx("nostalex.dat","nostalex.dat",$PlayerName[0],$PlayerName[1])

 

 

 

_MemWrite($Process, $pName, $p_name, 'char[14]')

 

;close the process

 

_MemClose($Process)

 

 

 

EndFunc

 

 

 

Func SetPlayerSpeed($speed_value)

 

_WriteMemoryEx("nostalex.dat","nostalex.dat",$PlayerSpeed[0],$PlayerSpeed[1], $speed_value)

 

EndFunc

 

 

 

Func SetPlayerCurrentHP($value)

 

;;not working client side only GUI

 

_WriteMemoryEx("nostalex.dat","nostalex.dat",$PlayerHealth_Current[0],$PlayerHealth_Current[1], $value)

 

EndFunc

 

 

 

Func SetPlayerGold($value)

 

;not working client side only GUI

 

;GUI Reads the Address back as we wrote it, it only doesn't go ingame

 

;since more than one address points towards gold.

 

 

 

_WriteMemoryEx("nostalex.dat","nostalex.dat",$Gold[0],$Gold[1], $value)

 

EndFunc

 

 

 

Func ZoomOut($value)

 

$sp = StringSplit($value,":")

 

 

 

_WriteMemoryEx("nostalex.dat","nostalex.dat",$Zoom[0],$Zoom[2],$sp[1])

 

_WriteMemoryEx("nostalex.dat","nostalex.dat",$Zoom[0],$Zoom[1],$sp[2])

 

EndFunc

 

#EndRegion

 

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

Mam bliblioteke nosmemory.au3

Używałem już jej do edycji pamięci.

Ale nie wiem jak mam użyć jej do odczytu pamięci z poitnera.

Próbowałem już różnie.

max 5 linijek tekstu.

×
×
  • Dodaj nową pozycję...