passive bot

06/14/2019 17:57 darksowrd#1
Code:
#RequireAdmin


HotKeySet ("{F1}", "exita") ;exit bot
;HotKeySet("{F2}", "autopot")
HotKeySet("{F2}", "atk")
HotKeySet("{F3}", "stop") ;pause




Opt("WinTitleMatchMode", 4)
WinActivate("ClassName=Florensia")
Global $ProcessID = WinGetProcess("ClassName=Florensia","")
If $ProcessID = -1 Then
	MsgBox(4096, "ERROR", "Failed to detect process.")
	Exit
EndIf



$maxhp = Max_HP ()
$currenthp = Current_HP ()

;$PlayerName = Target_Type ()

Global $mobname = Target_Name ()
Global	$targethp = Target_HP ()
Global $targetmaxhp= Target_MaxHP ()
Global $targethealth = (($targethp / $targetmaxhp)*100)
Global $notargetID = 1632923470
Global $currenthp = Current_HP ()
Global $Maxthp = Max_HP ()
Global $myhp = (($currenthp / $Maxthp)*100)
Global $Paused
;MsgBox(4096, "address", $myhp)
$attack = 1
$pot = 1
;Exit

while 1 ;add func or leave
	ToolTip("Press F2 to start",0,0)
	Global $mobname = Target_Name ()
Global	$targethp = Target_HP ()
Global $targetmaxhp= Target_MaxHP ()
Global $targethealth = (($targethp / $targetmaxhp)*100)
Global $currenthp = Current_HP ()
Global $Maxthp = Max_HP ()
Global $myhp = (($currenthp / $Maxthp)*100)
	;	If $myhp < 110 Then
	;	ControlSend("Florensia","","","9")
	;	Sleep(100)
	;	ElseIf $targethp = 0 Then
		;ControlSend("Florensia","","","6")
	;	Sleep(100)
		;ControlSend("Florensia","","","6")
		;Sleep(100)
		;ControlSend("Florensia","","","6")
		Sleep(1000)
	;	ControlSend("Florensia","","","0")
	;	Sleep(300)
	;Else ;If $targethp > 0 Then
		;ControlSend("Florensia","","","6")
		;Sleep(1000)
	;	ControlSend("Florensia","","","3")
		;Sleep(10)
		;ControlSend("Florensia","","","6")
		;Send("3")
	;	Sleep(100)
	;	ControlSend("Florensia","","","1")
	;	Sleep(100)
	;	ControlSend("Florensia","","","2")
		;Sleep(10)
		;ControlSend("Florensia","","","6")
				;Send("1")
		;Sleep(100)

	;ElseIf $myhp < 50 Then
	;ControlSend("Florensia","","","9")
	;Sleep(100)
;	EndIf
;call("autopot")
;Call("atk")

;WEnd

 ;While ($pot = 1)
	 ;	Global $mobname = Target_Name ()
;Global	$targethp = Target_HP ()
;Global $targetmaxhp= Target_MaxHP ()
;Global $targethealth = (($targethp / $targetmaxhp)*100)
;Global $currenthp = Current_HP ()
;Global $Maxthp = Current_HP ()
;Global $myhp = (($currenthp / $Maxthp)*100)
;	 Call(autopot)
WEnd


;Func Start_Attack()
;  MsgBox(0, "GUI Event", "Auto Attack Started")
;HotKeySet("{F3}", "atk")
;EndFunc

;Func Start_pot()
 ; MsgBox(0, "GUI Event", "Auto pot Started")
;HotKeySet("{F2}", "autopot")
;EndFunc


Func atk () ; add your skill bar under line;134
	ToolTip("bot started Press F1 to exit or F3 to pause",0,0)
	;MsgBox(0, "GUI Event", "Auto Attack Started")
	AdlibRegister("autopot")
	AdlibRegister("blyet")

		$i = 0
	Do
		Global $mobname = Target_Name ()
Global	$targethp = Target_HP ()
Global $targetmaxhp= Target_MaxHP ()
Global $targethealth = (($targethp / $targetmaxhp)*100)
Global $currenthp = Current_HP ()
Global $Maxthp = Max_HP ()
Global $myhp = (($currenthp / $Maxthp)*100)
	if $targethp = 0 Then
		;ControlSend("Florensia","","","6")
	;	Sleep(100)
		;ControlSend("Florensia","","","6")
		;Sleep(100)
		;ControlSend("Florensia","","","6")
	;	Sleep(1000)
		ControlSend("Florensia","","","0") ; auto target number "0" change to whatever you like
		Sleep(300)
	Else ;If $targethp > 0 Then ;	here add your skill bar here with controlsends
		;ControlSend("Florensia","","","6")
		;Sleep(1000)
		ControlSend("Florensia","","","3")
		;Sleep(10)
		;ControlSend("Florensia","","","6")
		;Send("3")
		Sleep(100)
		ControlSend("Florensia","","","1")
		Sleep(100)
		ControlSend("Florensia","","","2")
		;Sleep(10)
		;ControlSend("Florensia","","","6")
				;Send("1")
		Sleep(100)
		;$i += 1
	;ElseIf $myhp < 50 Then
	;ControlSend("Florensia","","","9")
	;Sleep(100)
	EndIf
	Until $i = 2
	EndFunc
; ToolTip($myhp,0,0,"my health")



Func autopot ()
	;ToolTip($myhp,0,0,"my health")
		If $myhp < 50 Then
		ControlSend("Florensia","","","9")
		Sleep(100)
		EndIf

	EndFunc

Func Current_HP ()

	;##################################
	;Define Local Variables
	;##################################

	;##################################
	;Open the Diablo II process using
	;the Process ID retrieved from
	;ProcessExists above.
	;##################################
	Local $DllInformation = _MemoryOpen($ProcessID)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to open memory.")
		Exit
	EndIf

	;##################################
	;Read the process and get the
	;players name.  You need to set
	;the 'type' to 'char', and Diablo II
	;names can be up to 15 characters in
	;length, so you need to put 'char[16]'
	;as the parameter. =P
	;##################################
	Local $Value, $Pointer_1	;, $Pointer_2, $Pointer_3
	Local $Offset1 = 572
	;Local $Offset2 = 200
	;Local $Offset3 = 4

local $Handle = _MemoryOpen($ProcessID)
local $Address = 0x71EF38
Local $base = 0x012A0000

		$Value = _MemoryRead($base + $Address, $DllInformation)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to read memory.")
		Exit
	EndIf

		$Pointer_1 = '0x' & hex($Value + $Offset1)

	$Value = _MemoryRead($Pointer_1, $DllInformation)

	;##################################
	;Close the process.
	;##################################
	_MemoryClose($DllInformation)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to close memory.")
		Exit
	EndIf

	;##################################
	;Return the name value.
	;##################################
	Return $Value

EndFunc


Func Max_HP ()

	Local $DllInformation = _MemoryOpen($ProcessID)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to open memory.")
		Exit
	EndIf


	Local $Value, $Pointer_1	;, $Pointer_2, $Pointer_3
	Local $Offset1 = 148
	;Local $Offset2 = 200
	;Local $Offset3 = 4

local $Handle = _MemoryOpen($ProcessID)
local $Address = 0x71EF38
Local $base = 0x012A0000

		$Value = _MemoryRead($base + $Address, $DllInformation)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to read memory.")
		Exit
	EndIf

		$Pointer_1 = '0x' & hex($Value + $Offset1)

	$Value = _MemoryRead($Pointer_1, $DllInformation)


	_MemoryClose($DllInformation)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to close memory.")
		Exit
	EndIf


	Return $Value

EndFunc


Func Max_MP ()


	Local $DllInformation = _MemoryOpen($ProcessID)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to open memory.")
		Exit
	EndIf


	Local $Value, $Pointer_1	;, $Pointer_2, $Pointer_3
	Local $Offset1 = 152
	;Local $Offset2 = 200
	;Local $Offset3 = 4

local $Handle = _MemoryOpen($ProcessID)
local $Address = 0x71EF38
Local $base = 0x012A0000

		$Value = _MemoryRead($base + $Address, $DllInformation)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to read memory.")
		Exit
	EndIf

		$Pointer_1 = '0x' & hex($Value + $Offset1)

	$Value = _MemoryRead($Pointer_1, $DllInformation)


	_MemoryClose($DllInformation)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to close memory.")
		Exit
	EndIf

	Return $Value

EndFunc


Func Current_MP ()


	Local $DllInformation = _MemoryOpen($ProcessID)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to open memory.")
		Exit
	EndIf


	Local $Value, $Pointer_1, $Pointer_2 ;, $Pointer_3
	Local $Offset1 = 100
	Local $Offset2 = 16
	;Local $Offset3 = 4

local $Handle = _MemoryOpen($ProcessID)
local $Address = 0x71EF38
Local $base = 0x012A0000

		$Value = _MemoryRead($base + $Address, $DllInformation)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to read memory.")
		Exit
	EndIf

	$Pointer_1 = '0x' & hex($Value + $Offset1)

	$Value = _MemoryRead($Pointer_1, $DllInformation)

	$Pointer_2 = '0x' & hex($Value + $Offset2)

	$Value = _MemoryRead($Pointer_2, $DllInformation)


	_MemoryClose($DllInformation)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to close memory.")
		Exit
	EndIf

	Return $Value

EndFunc


Func Target_MaxHP ()


	Local $DllInformation = _MemoryOpen($ProcessID)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to open memory.")
		Exit
	EndIf


	Local $Value, $Pointer_1	;, $Pointer_2 ;, $Pointer_3
	Local $Offset1 = 80
	;Local $Offset2 = 16
	;Local $Offset3 = 4

local $Handle = _MemoryOpen($ProcessID)
local $Address = 0x071EF7C
Local $base = 0x012A0000

		$Value = _MemoryRead($base + $Address, $DllInformation)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to read memory.")
		Exit
	EndIf

	$Pointer_1 = '0x' & hex($Value + $Offset1)

	$Value = _MemoryRead($Pointer_1, $DllInformation)

	;$Pointer_2 = '0x' & hex($Value + $Offset2)

	;$Value = _MemoryRead($Pointer_2, $DllInformation)


	_MemoryClose($DllInformation)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to close memory.")
		Exit
	EndIf

	Return $Value

EndFunc

Func Target_HP ()


	Local $DllInformation = _MemoryOpen($ProcessID)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to open memory.")
		Exit
	EndIf


	Local $Value, $Pointer_1, $Pointer_2 ;, $Pointer_3
	Local $Offset1 = 16
	Local $Offset2 = 16
	;Local $Offset3 = 4

local $Handle = _MemoryOpen($ProcessID)
local $Address = 0x071EF7C
Local $base = 0x012A0000

		$Value = _MemoryRead($base + $Address, $DllInformation)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to read memory.")
		Exit
	EndIf

	$Pointer_1 = '0x' & hex($Value + $Offset1)

	$Value = _MemoryRead($Pointer_1, $DllInformation)

	$Pointer_2 = '0x' & hex($Value + $Offset2)

	$Value = _MemoryRead($Pointer_2, $DllInformation)


	_MemoryClose($DllInformation)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to close memory.")
		Exit
	EndIf

	Return $Value

EndFunc

Func Target_Name ()


	Local $DllInformation = _MemoryOpen($ProcessID)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to open memory.")
		Exit
	EndIf


	Local $Value, $Pointer_1, $Pointer_2, $Pointer_3
	Local $Offset1 = 12
	Local $Offset2 = 16
	Local $Offset3 = 0

local $Handle = _MemoryOpen($ProcessID)
local $Address = 0x071EF7C
Local $base = 0x012A0000
Local $static = ($base + $Address)
		$Value = _MemoryRead($static, $DllInformation) ; 'char[31]')
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to read Target Name.")
		Exit
	EndIf

	$Pointer_1 = '0x' & hex($Value + $Offset1)

	$Value = _MemoryRead($Pointer_1, $DllInformation)

	$Pointer_2 = '0x' & hex($Value + $Offset2)

	$Value = _MemoryRead($Pointer_2, $DllInformation)

	$Pointer_3 = '0x' & hex($Value + $Offset3)

	$Value = _MemoryRead($Pointer_3, $DllInformation)

	_MemoryClose($DllInformation)
	If [MENTION=2544426]Error T[/MENTION]hen
		MsgBox(4096, "ERROR", "Failed to close memory.")
		Exit
	EndIf

	Return $Value

EndFunc


func blyet()
	If $currenthp = 0 Then
 $Paused = NOT $Paused
 While $Paused
  sleep(100)
  ToolTip('blyet is dead "press F2 to start"',0,0)
 WEnd
 ToolTip("")
 EndIf
EndFunc

func stop()
 $Paused = NOT $Paused
 While $Paused
  sleep(100)
  ToolTip('Script is "Paused"',0,0)
 WEnd
 ToolTip("")
EndFunc

Func exita()
	MsgBox(0, "ending", "bye")
	Exit
	EndFunc

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

;#include-once
#region _Memory
;=================================================================================================
; AutoIt Version:	3.1.127 (beta)
; Language:			English
; Platform:			All Windows
; Author:			Nomad
; Requirements:		These functions will only work with beta.
;=================================================================================================
; Credits:	wOuter - These functions are based on his original _Mem() functions.  But they are
;			easier to comprehend and more reliable.  These functions are in no way a direct copy
;			of his functions.  His functions only provided a foundation from which these evolved.
;=================================================================================================
;
; Functions:
;
;=================================================================================================
; Function:			_MemoryOpen($iv_Pid[, $iv_DesiredAccess[, $iv_InheritHandle]])
; Description:		Opens a process and enables all possible access rights to the process.  The
;					Process ID of the process is used to specify which process to open.  You must
;					call this function before calling _MemoryClose(), _MemoryRead(), or _MemoryWrite().
; Parameter(s):		$iv_Pid - The Process ID of the program you want to open.
;					$iv_DesiredAccess - (optional) Set to 0x1F0FFF by default, which enables all
;										possible access rights to the process specified by the
;										Process ID.
;					$if_InheritHandle - (optional) If this value is TRUE, all processes created by
;										this process will inherit the access handle.  Set to TRUE
;										(1) by default.  Set to 0 if you want it to be FALSE.
; Requirement(s):	A valid process ID.
; Return Value(s): 	On Success - Returns an array containing the Dll handle and an open handle to
;								 the specified process.
;					On Failure - Returns 0
;				 [MENTION=299637]ErRoR[/MENTION] - 0 = No error.
;							 1 = Invalid $iv_Pid.
;							 2 = Failed to open Kernel32.dll.
;							 3 = Failed to open the specified process.
; Author(s):		Nomad
; Note(s):
;=================================================================================================
Func _MemoryOpen($iv_Pid, $iv_DesiredAccess = 0x1F0FFF, $if_InheritHandle = 1)

	If Not ProcessExists($iv_Pid) Then
		SetError(1)
        Return 0
	EndIf

	Local $ah_Handle[2] = [DllOpen('kernel32.dll')]

	If [MENTION=2544426]Error T[/MENTION]hen
        SetError(2)
        Return 0
    EndIf

	Local $av_OpenProcess = DllCall($ah_Handle[0], 'int', 'OpenProcess', 'int', $iv_DesiredAccess, 'int', $if_InheritHandle, 'int', $iv_Pid)

	If [MENTION=2544426]Error T[/MENTION]hen
        DllClose($ah_Handle[0])
        SetError(3)
        Return 0
    EndIf

	$ah_Handle[1] = $av_OpenProcess[0]

	Return $ah_Handle

EndFunc

;=================================================================================================
; Function:			_MemoryRead($iv_Address, $ah_Handle[, $sv_Type])
; Description:		Reads the value located in the memory address specified.
; Parameter(s):		$iv_Address - The memory address you want to read from. It must be in hex
;								  format (0x00000000).
;					$ah_Handle - An array containing the Dll handle and the handle of the open
;								 process as returned by _MemoryOpen().
;					$sv_Type - (optional) The "Type" of value you intend to read.  This is set to
;								'dword'(32bit(4byte) signed integer) by default.  See the help file
;								for DllStructCreate for all types.
;								An example: If you want to read a word that is 15 characters in
;								length, you would use 'char[16]'.
; Requirement(s):	The $ah_Handle returned from _MemoryOpen.
; Return Value(s):	On Success - Returns the value located at the specified address.
;					On Failure - Returns 0
;				 [MENTION=299637]ErRoR[/MENTION] - 0 = No error.
;							 1 = Invalid $ah_Handle.
;							 2 = $sv_Type was not a string.
;							 3 = $sv_Type is an unknown data type.
;							 4 = Failed to allocate the memory needed for the DllStructure.
;							 5 = Error allocating memory for $sv_Type.
;							 6 = Failed to read from the specified process.
; Author(s):		Nomad
; Note(s):			Values returned are in Decimal format, unless specified as a 'char' type, then
;					they are returned in ASCII format.  Also note that size ('char[size]') for all
;					'char' types should be 1 greater than the actual size.
;=================================================================================================
Func _MemoryRead($iv_Address, $ah_Handle, $sv_Type = 'dword')

	If Not IsArray($ah_Handle) Then
		SetError(1)
        Return 0
	EndIf

	Local $v_Buffer = DllStructCreate($sv_Type)

	If [MENTION=2544426]Error T[/MENTION]hen
		SetError [MENTION=299637]ErRoR[/MENTION] + 1)
		Return 0
	EndIf

	DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')

	If Not [MENTION=2544426]Error T[/MENTION]hen
		Local $v_Value = DllStructGetData($v_Buffer, 1)
		Return $v_Value
	Else
		SetError(6)
        Return 0
	EndIf

EndFunc

;=================================================================================================
; Function:			_MemoryWrite($iv_Address, $ah_Handle, $v_Data[, $sv_Type])
; Description:		Writes data to the specified memory address.
; Parameter(s):		$iv_Address - The memory address you want to write to.  It must be in hex
;								  format (0x00000000).
;					$ah_Handle - An array containing the Dll handle and the handle of the open
;								 process as returned by _MemoryOpen().
;					$v_Data - The data to be written.
;					$sv_Type - (optional) The "Type" of value you intend to write.  This is set to
;								'dword'(32bit(4byte) signed integer) by default.  See the help file
;								for DllStructCreate for all types.
;								An example: If you want to write a word that is 15 characters in
;								length, you would use 'char[16]'.
; Requirement(s):	The $ah_Handle returned from _MemoryOpen.
; Return Value(s):	On Success - Returns 1
;					On Failure - Returns 0
;				 [MENTION=299637]ErRoR[/MENTION] - 0 = No error.
;							 1 = Invalid $ah_Handle.
;							 2 = $sv_Type was not a string.
;							 3 = $sv_Type is an unknown data type.
;							 4 = Failed to allocate the memory needed for the DllStructure.
;							 5 = Error allocating memory for $sv_Type.
;							 6 = $v_Data is not in the proper format to be used with the "Type"
;								 selected for $sv_Type, or it is out of range.
;							 7 = Failed to write to the specified process.
; Author(s):		Nomad
; Note(s):			Values sent must be in Decimal format, unless specified as a 'char' type, then
;					they must be in ASCII format.  Also note that size ('char[size]') for all
;					'char' types should be 1 greater than the actual size.
;=================================================================================================
Func _MemoryWrite($iv_Address, $ah_Handle, $v_Data, $sv_Type = 'dword')

	If Not IsArray($ah_Handle) Then
		SetError(1)
        Return 0
	EndIf

	Local $v_Buffer = DllStructCreate($sv_Type)

	If [MENTION=2544426]Error T[/MENTION]hen
		SetError [MENTION=299637]ErRoR[/MENTION] + 1)
		Return 0
	Else
		DllStructSetData($v_Buffer, 1, $v_Data)
		If [MENTION=2544426]Error T[/MENTION]hen
			SetError(6)
			Return 0
		EndIf
	EndIf

	DllCall($ah_Handle[0], 'int', 'WriteProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')

	If Not [MENTION=2544426]Error T[/MENTION]hen
		Return 1
	Else
		SetError(7)
        Return 0
	EndIf

EndFunc

;=================================================================================================
; Function:			_MemoryClose($ah_Handle)
; Description:		Closes the process handle opened by using _MemoryOpen().
; Parameter(s):		$ah_Handle - An array containing the Dll handle and the handle of the open
;								 process as returned by _MemoryOpen().
; Requirement(s):	The $ah_Handle returned from _MemoryOpen.
; Return Value(s):	On Success - Returns 1
;					On Failure - Returns 0
;				 [MENTION=299637]ErRoR[/MENTION] - 0 = No error.
;							 1 = Invalid $ah_Handle.
;							 2 = Unable to close the process handle.
; Author(s):		Nomad
; Note(s):
;=================================================================================================
Func _MemoryClose($ah_Handle)

	If Not IsArray($ah_Handle) Then
		SetError(1)
        Return 0
	EndIf

	DllCall($ah_Handle[0], 'int', 'CloseHandle', 'int', $ah_Handle[1])
	If Not [MENTION=2544426]Error T[/MENTION]hen
		DllClose($ah_Handle[0])
		Return 1
	Else
		DllClose($ah_Handle[0])
		SetError(2)
        Return 0
	EndIf

EndFunc

;=================================================================================================
; Function:			_MemoryPointerRead ($iv_Address, $ah_Handle, $av_Offset[, $sv_Type])
; Description:		Reads a chain of pointers and returns an array containing the destination
;					address and the data at the address.
; Parameter(s):		$iv_Address - The static memory address you want to start at. It must be in
;								  hex format (0x00000000).
;					$ah_Handle - An array containing the Dll handle and the handle of the open
;								 process as returned by _MemoryOpen().
;					$av_Offset - An array of offsets for the pointers.  Each pointer must have an
;								 offset.  If there is no offset for a pointer, enter 0 for that
;								 array dimension.
;					$sv_Type - (optional) The "Type" of data you intend to read at the destination
;								 address.  This is set to 'dword'(32bit(4byte) signed integer) by
;								 default.  See the help file for DllStructCreate for all types.
; Requirement(s):	The $ah_Handle returned from _MemoryOpen.
; Return Value(s):	On Success - Returns an array containing the destination address and the value
;								 located at the address.
;					On Failure - Returns 0
;				 [MENTION=299637]ErRoR[/MENTION] - 0 = No error.
;							 1 = $av_Offset is not an array.
;							 2 = Invalid $ah_Handle.
;							 3 = $sv_Type is not a string.
;							 4 = $sv_Type is an unknown data type.
;							 5 = Failed to allocate the memory needed for the DllStructure.
;							 6 = Error allocating memory for $sv_Type.
;							 7 = Failed to read from the specified process.
; Author(s):		Nomad
; Note(s):			Values returned are in Decimal format, unless a 'char' type is selected.
;					Set $av_Offset like this:
;					$av_Offset[0] = NULL (not used)
;					$av_Offset[1] = Offset for pointer 1 (all offsets must be in Decimal)
;					$av_Offset[2] = Offset for pointer 2
;					etc...
;					(The number of array dimensions determines the number of pointers)
;=================================================================================================
Func _MemoryPointerRead ($iv_Address, $ah_Handle, $av_Offset, $sv_Type = 'dword')

	If IsArray($av_Offset) Then
		If IsArray($ah_Handle) Then
			Local $iv_PointerCount = UBound($av_Offset) - 1
		Else
			SetError(2)
			Return 0
		EndIf
	Else
		SetError(1)
		Return 0
	EndIf

	Local $iv_Data[2], $i
	Local $v_Buffer = DllStructCreate('dword')

	For $i = 0 to $iv_PointerCount

		If $i = $iv_PointerCount Then
			$v_Buffer = DllStructCreate($sv_Type)
			If [MENTION=2544426]Error T[/MENTION]hen
				SetError [MENTION=299637]ErRoR[/MENTION] + 2)
				Return 0
			EndIf

			$iv_Address = '0x' & hex($iv_Data[1] + $av_Offset[$i])
			DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
			If [MENTION=2544426]Error T[/MENTION]hen
				SetError(7)
				Return 0
			EndIf

			$iv_Data[1] = DllStructGetData($v_Buffer, 1)

		ElseIf $i = 0 Then
			DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
			If [MENTION=2544426]Error T[/MENTION]hen
				SetError(7)
				Return 0
			EndIf

			$iv_Data[1] = DllStructGetData($v_Buffer, 1)

		Else
			$iv_Address = '0x' & hex($iv_Data[1] + $av_Offset[$i])
			DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
			If [MENTION=2544426]Error T[/MENTION]hen
				SetError(7)
				Return 0
			EndIf

			$iv_Data[1] = DllStructGetData($v_Buffer, 1)

		EndIf

	Next

	$iv_Data[0] = $iv_Address

	Return $iv_Data

EndFunc

;=================================================================================================
; Function:			_MemoryPointerWrite ($iv_Address, $ah_Handle, $av_Offset, $v_Data[, $sv_Type])
; Description:		Reads a chain of pointers and writes the data to the destination address.
; Parameter(s):		$iv_Address - The static memory address you want to start at. It must be in
;								  hex format (0x00000000).
;					$ah_Handle - An array containing the Dll handle and the handle of the open
;								 process as returned by _MemoryOpen().
;					$av_Offset - An array of offsets for the pointers.  Each pointer must have an
;								 offset.  If there is no offset for a pointer, enter 0 for that
;								 array dimension.
;					$v_Data - The data to be written.
;					$sv_Type - (optional) The "Type" of data you intend to write at the destination
;								 address.  This is set to 'dword'(32bit(4byte) signed integer) by
;								 default.  See the help file for DllStructCreate for all types.
; Requirement(s):	The $ah_Handle returned from _MemoryOpen.
; Return Value(s):	On Success - Returns the destination address.
;					On Failure - Returns 0.
;				 [MENTION=299637]ErRoR[/MENTION] - 0 = No error.
;							 1 = $av_Offset is not an array.
;							 2 = Invalid $ah_Handle.
;							 3 = Failed to read from the specified process.
;							 4 = $sv_Type is not a string.
;							 5 = $sv_Type is an unknown data type.
;							 6 = Failed to allocate the memory needed for the DllStructure.
;							 7 = Error allocating memory for $sv_Type.
;							 8 = $v_Data is not in the proper format to be used with the
;								 "Type" selected for $sv_Type, or it is out of range.
;							 9 = Failed to write to the specified process.
; Author(s):		Nomad
; Note(s):			Data written is in Decimal format, unless a 'char' type is selected.
;					Set $av_Offset like this:
;					$av_Offset[0] = NULL (not used, doesn't matter what's entered)
;					$av_Offset[1] = Offset for pointer 1 (all offsets must be in Decimal)
;					$av_Offset[2] = Offset for pointer 2
;					etc...
;					(The number of array dimensions determines the number of pointers)
;=================================================================================================
Func _MemoryPointerWrite ($iv_Address, $ah_Handle, $av_Offset, $v_Data, $sv_Type = 'dword')

	If IsArray($av_Offset) Then
		If IsArray($ah_Handle) Then
			Local $iv_PointerCount = UBound($av_Offset) - 1
		Else
			SetError(2)
			Return 0
		EndIf
	Else
		SetError(1)
		Return 0
	EndIf

	Local $iv_StructData, $i
	Local $v_Buffer = DllStructCreate('dword')

	For $i = 0 to $iv_PointerCount
		If $i = $iv_PointerCount Then
			$v_Buffer = DllStructCreate($sv_Type)
			If [MENTION=2544426]Error T[/MENTION]hen
				SetError [MENTION=299637]ErRoR[/MENTION] + 3)
				Return 0
			EndIf

			DllStructSetData($v_Buffer, 1, $v_Data)
			If [MENTION=2544426]Error T[/MENTION]hen
				SetError(8)
				Return 0
			EndIf

			$iv_Address = '0x' & hex($iv_StructData + $av_Offset[$i])
			DllCall($ah_Handle[0], 'int', 'WriteProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
			If [MENTION=2544426]Error T[/MENTION]hen
				SetError(9)
				Return 0
			Else
				Return $iv_Address
			EndIf
		ElseIf $i = 0 Then
			DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
			If [MENTION=2544426]Error T[/MENTION]hen
				SetError(3)
				Return 0
			EndIf

			$iv_StructData = DllStructGetData($v_Buffer, 1)

		Else
			$iv_Address = '0x' & hex($iv_StructData + $av_Offset[$i])
			DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
			If [MENTION=2544426]Error T[/MENTION]hen
				SetError(3)
				Return 0
			EndIf

			$iv_StructData = DllStructGetData($v_Buffer, 1)

		EndIf
	Next

EndFunc
#endregion

can run in background ;[i will not explain anything]

for autoMP add func with (( $currentmp / $mp ) *100) if u want to get the percentage , for mob name add 'char[number]' idk if it works or not.
f2 starts the bot , f3 pause, f1 exit bot < change hotkey to whatever you like. :)
08/20/2020 12:58 simonevagni#2
are those pointers correct for florensia?