ฟอรั่ม 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


2 posters

    รบกวนสอบถาม แนวทางการย่อ สคลิป ด้วยครับ

    logo2007
    logo2007
    สมาชิกทั่วไป
    สมาชิกทั่วไป


    รบกวนสอบถาม แนวทางการย่อ สคลิป ด้วยครับ Empty รบกวนสอบถาม แนวทางการย่อ สคลิป ด้วยครับ Empty
    จำนวนข้อความ : 13
    ความนิยม : 1
    เข้าร่วมเมื่อ : 20/06/2011

    รบกวนสอบถาม แนวทางการย่อ สคลิป ด้วยครับ Empty รบกวนสอบถาม แนวทางการย่อ สคลิป ด้วยครับ

    ตั้งหัวข้อ by logo2007 21/06/12, 10:24 am

    จากที่ได้ศึกษาจากบล็อคที่คุณ POS ได้เขียนไว้แต่ละบท รวมถึงได้อ่านกระทู้ ของคุณ AUT และอีกหลายๆท่านที่มาถก กันไว้ ทำให้ได้แนวทางในการเขียนสคลิปที่ชัดเจนมากครับ ต้องขอขอบคุณอีกครั้งครับ em218

    ผมได้ลองทำสคลิปมาชุดหนึ่งเกี่ยวกับการหาค่าสี กดปุ่ม และคลิกเม้า ทดสอบแล้วก็ทำงานได้ดี แต่เป็นการเขียนแบบทีละ step ซึ่งผมดูแล้วมันเป็นการซ้ำซ้อนและค่อนข้างยาวมากๆ เลยจะขอแนวทางในการปรับปรุง สคลิปจากท่านผู้รู้ ช่วยแนะนำดังนี้ครับ
    1. การปรับปรุง code ให้กระชับ
    2. มีปัญหาเรื่องการหยุดหรือปิดโปรแกรมด้วย GUI แต่ปิดได้ด้วย Esc (hot key) เนื่องจากผมนำไปใช้กับเวทย์เพื่อบัพให้กับปาร์ตี้ ผมจึงเขียนให้รอรอบประมาณ T นาที

    Code:

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
       GUICtrlSetData($Button1, "ทำงาน")
       $t = GUICtrlRead($input1)
       sleep(3000)
    While Sleep(100)
    If GUIGetMsg() = -3 Then Exit
    If GUICtrlRead($Checkbox20)=1 Then
    A()
    sleep(10)
    EndIf
    If  GUICtrlRead($Checkbox0)=1 Then
    B()
    sleep(10)
    EndIf
    If GUIGetMsg()= $Button2 Then ExitLoop
    If GUIGetMsg()= $GUI_EVENT_CLOSE Then Exit
    sleep($t)
    WEnd
    Case $Button2
       If GUICtrlRead($Button1) = "ทำงาน" Then
       GUICtrlSetData($Button1, "เริ่ม")
    sleep(1000)
    EndIf
    If GUIGetMsg()= $Button2 Then ExitLoop
    If GUIGetMsg()= $GUI_EVENT_CLOSE Then Exit
    EndSwitch
    WEnd

    Func A()
    If  PixelGetColor(681,377,$GameHD) = 0x000000  Then
    Send ("a")
    sleep(1000)
    MouseClick("",690,377,1,1)
    EndIf
    If  PixelGetColor(681,398,$GameHD) = 0x000000  Then
    Send ("a")
    sleep(1000)
    MouseClick("",690,398,1,1)
    EndIf
    If  PixelGetColor(681,419,$GameHD) = 0x000000  Then
    Send ("a")
    sleep(1000)
    MouseClick("",690,419,1,1)
    EndIf
    If  PixelGetColor(681,440,$GameHD) = 0x000000  Then
    Send ("a")
    sleep(1000)
    MouseClick("",690,440,1,1)
    EndIf
    If  PixelGetColor(681,461,$GameHD) = 0x000000  Then
    Send ("a")
    sleep(1000)
    MouseClick("",690,461,1,1)
    EndIf
    sleep(3000)
    If GUIGetMsg()= $GUI_EVENT_CLOSE Then Exit
    EndFunc

    Func B()
    If GUICtrlRead($Checkbox1)=1 Then
    Send("1")
    sleep(300)
    MouseClick("",690,377,1,1)
    sleep(4000)
    EndIf
    If GUICtrlRead($Checkbox2)=1 Then
    Send("2")
    sleep(300)
    MouseClick("",690,377,1,1)
    sleep(4000)
    EndIf
    If GUICtrlRead($Checkbox3)=1 Then
    Send("3")
    sleep(300)
    MouseClick("",690,377,1,1)
    sleep(4000)
    EndIf
    If GUICtrlRead($Checkbox4)=1 Then
    Send("4")
    sleep(300)
    MouseClick("",690,377,1,1)
    sleep(4000)
    EndIf
    If GUIGetMsg()= $GUI_EVENT_CLOSE Then Exit
    EndFunc

    Func stop()
        Exit
    EndFunc


    จาก code ด้านบน ผมลองแก้ส่วนของ Func A() โดย เพิ่ม $cood[8] =[377,398,419,440,461,482,503,524]
    แล้วแก้ ฟังก์ชั่นเป็น
    Func A()
    For $R = 0 to 7
    If PixelGetColor(681,$cood[$R],$GameHD) = 0x000000 Then
    Send ("a")
    sleep(1000)
    MouseClick("",690,$cood[$R],1,1)
    EndIf
    If GUIGetMsg()= $Button2 Then ExitLoop
    Next
    sleep(3000)
    EndFunc

    แต่ส่วน Func B() ผมนำ checkbox มากำหนดเงื่อนไขการ buff ด้วยว่าจะเลือกสกิลไหนบ้าง เวลาจะใช้ For เพื่อทำงานวนลูป ไม่รุ้จะเขียนคำสั่งวนยังไงให้ เลื่อนการตรวจสถาณะ GUICtrlRead($Checkbox) ไปด้วย

    และในตอนระหว่างทำงานใน function และช่วงเวลารอ sleep($t) ตามที่กำหนดเวลารอบบัพไว้ ถ้าต้องการหยุดด้วย botton 2 หรือ ปิด ด้วย gui ต้องเพิ่มส่วนไหนของสคลิปครับ(เจตนาคือหยุดการทำงานของโปรโดยไม่ต้องปิดด้วยปุ่ม 2 ) รบกวนขอคำแนะนำด้วยครับ
    aut
    aut
    PSsix Powerful Scripting Class
    PSsix Powerful Scripting Class


    PSsix Game Coder
    จำนวนข้อความ : 472
    ความนิยม : 126
    เข้าร่วมเมื่อ : 24/07/2010

    รบกวนสอบถาม แนวทางการย่อ สคลิป ด้วยครับ Empty Re: รบกวนสอบถาม แนวทางการย่อ สคลิป ด้วยครับ

    ตั้งหัวข้อ by aut 21/06/12, 12:11 pm

    เอาไปดัดแปงเองนะนาย ชินจัง

    #include
    #include
    #include
    #include

    AdlibRegister("b",100)
    Global $GameHD
    Global $exloop = 0
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 263, 156, 192, 124)
    $Button1 = GUICtrlCreateButton("a", 24, 8, 75, 25)
    $Button2 = GUICtrlCreateButton("พอ", 120, 8, 75, 25)
    $Label1 = GUICtrlCreateLabel("Label1", 24, 56, 35, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###


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

    Case $Button1
    $exloop =0
    a()
    EndSwitch
    WEnd

    Func a()
    for $i = 1 to 10000
    if $exloop =1 Then
    GUICtrlSetData($Label1,"พอ")
    ExitLoop
    EndIf

    Sleep(1000)
    GUICtrlSetData($Label1,$i)
    If PixelGetColor(681,222,$GameHD) = 0x000000 Then
    Send ("a")
    sleep(1000)
    MouseClick("",690,222,1,1)
    EndIf
    Next
    EndFunc



    Func b()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button2
    $exloop =1
    EndSwitch
    EndFunc
    logo2007
    logo2007
    สมาชิกทั่วไป
    สมาชิกทั่วไป


    รบกวนสอบถาม แนวทางการย่อ สคลิป ด้วยครับ Empty รบกวนสอบถาม แนวทางการย่อ สคลิป ด้วยครับ Empty
    จำนวนข้อความ : 13
    ความนิยม : 1
    เข้าร่วมเมื่อ : 20/06/2011

    รบกวนสอบถาม แนวทางการย่อ สคลิป ด้วยครับ Empty Re: รบกวนสอบถาม แนวทางการย่อ สคลิป ด้วยครับ

    ตั้งหัวข้อ by logo2007 21/06/12, 01:20 pm

    ขอบคุณมากครับ คุณ aut ได้ละครับ ส่วนนี้สำคัญจริงๆ ไม่อย่างนั้น โปรแกรมจะดูเอ๋อๆไปเลย

      เวลาขณะนี้ 19/04/24, 07:12 pm