ฟอรั่ม PSsix

Would you like to react to this message? Create an account in a few clicks or log in to continue.

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


3 posters

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

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


    ขอคำชี้แนะหน่อยครับ Empty ขอคำชี้แนะหน่อยครับ Empty
    จำนวนข้อความ : 4
    ความนิยม : 0
    เข้าร่วมเมื่อ : 05/01/2013

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

    ตั้งหัวข้อ by mrnutgit 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
    POS
    PSsix
    PSsix


    ขอคำชี้แนะหน่อยครับ Empty ขอคำชี้แนะหน่อยครับ Empty ขอคำชี้แนะหน่อยครับ Empty
    จำนวนข้อความ : 1152
    ความนิยม : 326
    เข้าร่วมเมื่อ : 19/07/2010

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

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

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


    ขอคำชี้แนะหน่อยครับ Empty ขอคำชี้แนะหน่อยครับ Empty
    จำนวนข้อความ : 4
    ความนิยม : 0
    เข้าร่วมเมื่อ : 05/01/2013

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

    ตั้งหัวข้อ by mrnutgit 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
    avatar
    Fast
    PSsix Member Super Class III
    PSsix Member Super Class III


    ขอคำชี้แนะหน่อยครับ Empty PSsix Program Coder
    จำนวนข้อความ : 217
    ความนิยม : 54
    เข้าร่วมเมื่อ : 19/06/2011

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

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

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


    ขอคำชี้แนะหน่อยครับ Empty ขอคำชี้แนะหน่อยครับ Empty ขอคำชี้แนะหน่อยครับ Empty
    จำนวนข้อความ : 1152
    ความนิยม : 326
    เข้าร่วมเมื่อ : 19/07/2010

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

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

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


    ขอคำชี้แนะหน่อยครับ Empty ขอคำชี้แนะหน่อยครับ Empty
    จำนวนข้อความ : 4
    ความนิยม : 0
    เข้าร่วมเมื่อ : 05/01/2013

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

    ตั้งหัวข้อ by mrnutgit 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
    POS
    PSsix
    PSsix


    ขอคำชี้แนะหน่อยครับ Empty ขอคำชี้แนะหน่อยครับ Empty ขอคำชี้แนะหน่อยครับ Empty
    จำนวนข้อความ : 1152
    ความนิยม : 326
    เข้าร่วมเมื่อ : 19/07/2010

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

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

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

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

      เวลาขณะนี้ 26/04/24, 04:42 pm