ฟอรั่มของบล็อก http://pssix.blogspot.com


ขอคำชี้แนะหน่อยครับ

Share

mrnutgit
มือใหม่เพิ่งสมัคร
มือใหม่เพิ่งสมัคร


จำนวนข้อความ : 3
ความนิยม : 0
เข้าร่วมเมื่อ : 05/01/2013

ขอคำชี้แนะหน่อยครับ

ตั้งหัวข้อ by mrnutgit on 29/01/13, 08:31 pm

ผมได้ลองทำโปรปัม HP MP โดยใช้ cheatengine ผมใช้ค่าเดียวมันทำงานได้ปกติ อยากจะเเปลี่ยนเป็นแบบใช้ค่า Pointer เริ่มไม่ถูกช่วยชี้แนะหน่อยครับ

อันนี้ที่ใช้อยู่

#RequireAdmin
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=C:\Program Files (x86)\AutoIt3\Icons\au3script_v10.ico
#AutoIt3Wrapper_Outfile_x64=Auto64.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include
# Hp = 3FB872E0
# Mp = 2F596698


Func _Run1()
WinActivate ('Game') ;ชื่อเกม
Return
EndFunc

While 1
Start()
Sleep(100)
WEnd

Func Start()
$Process_Pid = ProcessExists ( "Client.exe" )
$MemoryOpen = _MemoryOpen($Process_Pid)
$Mp = '10'
$Mp1 = '20'
$Hp = '50'
$Hp1 = '90'
while 2
_Run1()
$Mem_Read = _MemoryRead('0x' & '3FB872E0', $MemoryOpen)
$Mem_Read1 = _MemoryRead('0x' & '2F596698', $MemoryOpen)
ToolTip($Mem_Read,0,0,"Hp")
if ($Mem_Read) < $Hp Then
send ("{1}")
sleep(200)
EndIf
if ($Mem_Read) < $Hp1 Then
send ("{2}")
sleep(200)
EndIf
if ($Mem_Read1) < $Mp Then
send ("{4}")
sleep(200)
EndIf
if ($Mem_Read1) < $Mp1 Then
send ("{5}")
sleep(200)
EndIf
WEnd
_MemoryClose($MemoryOpen)
EndFunc


อันนี้ Pointer มัน

HP 0x0075509C
Offset[0] = 0
Offset[1] = 458
Offset[2] = 48
Offset[3] = 8F8
MP 0x0075509C
Offset[0] = 0
Offset[1] = 458
Offset[2] = 4C
Offset[3] = 8F8


POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

Re: ขอคำชี้แนะหน่อยครับ

ตั้งหัวข้อ by POS on 31/01/13, 09:29 am

ถ้าหาค่าพ้อยเตอร์ได้แล้ว ก็นำค่าที่ได้ใส่ลงไปในสคริปต์ตามลำดับ (ดูบทความการทำบอทที่หน้าบล็อก จะมีบอกวิธีดูลำดับ) แต่ถ้าค่าพ้อยเตอร์ที่หาไม่ถูกต้อง การใส่ค่าเข้าไปก็ไม่มีความหมาย ทดลองปิดและเปิดเกมส์ขึ้นมาใหม่ แล้วใช้ CE อ่านค่าจากพ้อยเตอร์ดูก่อนครับ ถ้าเป็นค่าที่ถูกต้องก็จะอ่านค่าได้


||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
[You must be registered and logged in to see this link.]

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com

mrnutgit
มือใหม่เพิ่งสมัคร
มือใหม่เพิ่งสมัคร


จำนวนข้อความ : 3
ความนิยม : 0
เข้าร่วมเมื่อ : 05/01/2013

Re: ขอคำชี้แนะหน่อยครับ

ตั้งหัวข้อ by mrnutgit on 02/02/13, 11:19 am

ผมได้ลองแปลงดูแล้วแต่สคลิปไม่ยอมทำงาน

Code:

#RequireAdmin
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=C:\Program Files (x86)\AutoIt3\Icons\au3script_v10.ico
#AutoIt3Wrapper_Outfile_x64=Auto64.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
; als erster f?gen wir die gui ein die wir erstellt haben.
; dann f?gen wir das Pointerscript ein
#RequireAdmin ; wird bei windows vista/7 ben?tigt.
#include <Pointer.au3> ; enth?lt _memorygetbaseadress
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("HP/MP", 250, 95, 243, 147)
$Label1 = GUICtrlCreateLabel("HP:", 24, 16, 22, 17)
$Label2 = GUICtrlCreateLabel("MP:", 24, 64, 23, 17)
$Progress1 = GUICtrlCreateProgress(64, 16, 134, 16) ; und das hier ist unsere Progressbar die uns den wert anzeigen soll.
; das machen wir so:
$Progress2 = GUICtrlCreateProgress(64, 64, 142, 16)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Func _Run1()
Return
EndFunc

While 1
Start()
Sleep(100)
WEnd

Func Start()
$Mp = '10' ; เลือดที่กำหนด
$Mp1 = '30' ; เลือดที่กำหนด
$Hp = '150' ; เลือดที่กำหนด
$Hp1 = '200' ; เลือดที่กำหนด
while 2

$PID = ProcessExists("Client.exe") ; hier den prozess der ge?ffnet werden soll hinschreiben.
$MemOpen = _MemoryOpen($PID) ;?ffnet den prozess
Global $Offset[4]; dazu gleich mehr.
$Offset[0] = 0 ; immer bei 0 lassen?
$Offset[1] = Dec("458") ; hier offset 2 hinschreiben.
$Offset[2] = Dec("4C"); hier offset 1 hinschreiben.
$Offset[3] = Dec("8F8"); hier offset 1 hinschreiben.
$StaticOffset = Dec("01A790DC") ; hier die statischadresse hineinschreiben.
$BaseAddr = _MemoryGetBaseAddress($MemOpen, 1)
$Addr = "0x" & Hex($baseADDR + $StaticOffset)
;und das hier ist unser momentaner wert
$MemOpen1 = _MemoryOpen($PID)
Global $Offset1[4]
$Offset1[0] = 0
$Offset1[1] = Dec("458")
$Offset1[2] = Dec("48")
$Offset1[3] = Dec("8F8")
$StaticOffset1 = Dec("01A790DC")
$BaseAddr1 = _MemoryGetBaseAddress($MemOpen1, 1)
$Addr1 = "0x" & Hex($baseADDR1 + $StaticOffset1)
;jetzt noch an die richtige stell packen.

; am besten wieder in eine while schleife packen damit sich die progressbar auch immer aktualisiert.
_Run1()
$Value = _MemoryPointerRead($Addr, $MemOpen, $Offset) ; liest den wert aus
$Value1 = _MemoryPointerRead($Addr1, $MemOpen1, $Offset1) ; das ist unser maximalwert
GUICtrlSetData ($Progress1, $Value[1]*100/$Value1[1])



if ($Value ) < $Hp Then
send ("{1}")
sleep(200)
EndIf
if ($Value ) < $Hp1 Then
send ("{2}")
sleep(200)
EndIf
if ($Value1 ) < $Mp Then
send ("{4}")
sleep(200)
EndIf
if ($Value1 ) < $Mp1 Then
send ("{5}")
sleep(200)
EndIf
WEnd
EndFunc



While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd

Fast
PSsix Member Super Class III
PSsix Member Super Class III

PSsix Program Coder
จำนวนข้อความ : 217
ความนิยม : 52
เข้าร่วมเมื่อ : 19/06/2011

Re: ขอคำชี้แนะหน่อยครับ

ตั้งหัวข้อ by Fast on 03/02/13, 02:12 pm

สคริ๊ปแปลกไม่ใช่อังกฤษละท่าน เปลี่ยนสคริ๊ปเป็น [You must be registered and logged in to see this link.]

POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

Re: ขอคำชี้แนะหน่อยครับ

ตั้งหัวข้อ by POS on 04/02/13, 12:32 pm

ถ้าติดปัญหาในตัวสคริปต์ ลองจับภาพการอ่านค่าพ้อยเตอร์ในโปรแกรม CE (ดับเบิลคลิกที่ค่าใน CE เพื่อให้เห็นลำดับพ้อยเตอร์) ที่คุณหาได้มาดูครับ ผมจะดูให้ว่าใส่ผิดที่ไหน อีกอย่างหนึ่งสคริปต์ต้องคอมไพล์เป็นแบบ 32 บิตด้วยนะครับ


||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
[You must be registered and logged in to see this link.]

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com

mrnutgit
มือใหม่เพิ่งสมัคร
มือใหม่เพิ่งสมัคร


จำนวนข้อความ : 3
ความนิยม : 0
เข้าร่วมเมื่อ : 05/01/2013

Re: ขอคำชี้แนะหน่อยครับ

ตั้งหัวข้อ by mrnutgit on 04/02/13, 04:05 pm

ขอบคุณทุกคนมากนะครับ ผมได้ลองแก้ สคริปใหม่ สามารถใช้แล้วครับ ถ้าจะใส่ GUI จะส่งคำสั่งอย่างไงครับ
Code:

#RequireAdmin
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=C:\Program Files (x86)\AutoIt3\Icons\au3script_v10.ico
#AutoIt3Wrapper_Outfile_x64=Auto64.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <NomadMemoryPSsix.au3>

While 1
Start()
Sleep(100)
WEnd

Func Start()
Global $address = "0x01A790DC" ;ค่าพ้อยเตอร์ที่ต้องนำไปใช้คู่กับค่าออฟเซ็ต
Global $Offset[4]
$Offset[0] = 0
$Offset[1] = 0x458
$Offset[2] = 0x4C
$Offset[3] = 0x8F8

Global $Offset1[4]
$Offset1[0] = 0
$Offset1[1] = 0x458
$Offset1[2] = 0x48
$Offset1[3] = 0x8F8


$memopen = _MEMORYOPEN(ProcessExists("Client.exe")) ;เปลี่ยนชื่อไฟล์เกม
If $memopen = 0 Then
    ConsoleWrite('ผิดพลาดไม่มีโปรแกรม =' & $memopen & @CRLF)
    Exit
EndIf


;;  2 อ่านค่า address  แบบ Pointer ชั้นเดียว
$CurMPread = _MemoryPointerRead($address, $memopen, $Offset)
$CurHPread = _MemoryPointerRead($address, $memopen, $Offset1)


$Mp = '40' ; เลือดที่กำหนด
$Hp2 = '200' ; เลือดที่กำหนด
$Hp = '250' ; เลือดที่กำหนด
$Hp1 = '350' ; เลือดที่กำหนด


ToolTip($CurHPread[1] ,0,0,"Hp")


if ($CurHPread[1]) < $Hp Then
send ("{1}")
sleep(500)
EndIf
if ($CurHPread[1]) < $Hp1 Then
send ("{2}")
sleep(500)
EndIf
if ($CurMPread[1] ) < $Mp Then
send ("{4}")
sleep(500)
EndIf
if ($CurHPread[1] ) < $Hp2 Then
send ("{5}")
sleep(500)
EndIf



_MEMORYCLOSE($memopen)
EndFunc

POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

Re: ขอคำชี้แนะหน่อยครับ

ตั้งหัวข้อ by POS on 06/02/13, 02:27 pm

ใช้โปรแกรม koda สร้างหน้าต่างโปรแกรมขึ้นมา แล้วจับเอาฟังก์ชันเชื่อมเข้าไปในปุ่มที่ต้องการเรียกใช้งานครับ

[You must be registered and logged in to see this link.]


||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
[You must be registered and logged in to see this link.]

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com

    เวลาขณะนี้ 08/12/16, 02:51 pm