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


ช่วยดูหน่อยครับ มือใหม่หัดเขียนออโต้คลิ้ก ฟีฟ่า

Share

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


จำนวนข้อความ : 2
ความนิยม : 0
เข้าร่วมเมื่อ : 14/05/2014

ช่วยดูหน่อยครับ มือใหม่หัดเขียนออโต้คลิ้ก ฟีฟ่า

ตั้งหัวข้อ by newzacup on 14/05/14, 08:03 pm

มันใช้งานไม่ได้อ่ะครับ ช่วยดูให้หน่อยครับ ว่าผมต้องแก้ตรงไหน เพิ่งลองเขียนอ่ะครับ

Global $GameHD

Func _PSsixLoadH($gtitle)
$GameHD = WinGetHandle($gtitle)
If @error Then
MsgBox(4096, "Error", "Not Found Game")
Else
Return 1
EndIf
EndFunc

If _PSsixLoadH("FIFA") Then WinActivate($GameHD)

HotKeySet("{ENTER}","_start")

Func _start()
  MsgBox("Start")
  While 1
 ControlClick ($GameHD,"","","Left",2,698,190) Sleep(2)
 ControlClick ($GameHD,"","","left",1,707,535) Sleep(2)
 ControlClick ($GameHD,"","","left",1,441,467) Sleep(2)
 ControlClick ($GameHD,"","","left",1,439,438) Sleep(2)
 ControlClick ($GameHD,"","","left",1,454,130) Sleep(2)
 ControlClick ($GameHD,"","","left",1,696,190) Sleep(2)
  WEnd
  EndFunc

HotKeySet("{ESC}","_stop")

Func _stop()
  MsgBox("End")
  Exit
  EndFunc
avatar
Arm
PSsix Member Super Class III
PSsix Member Super Class III

PSsix Master PSsix Program Coder
จำนวนข้อความ : 267
ความนิยม : 54
เข้าร่วมเมื่อ : 31/03/2011
อายุ : 20

Re: ช่วยดูหน่อยครับ มือใหม่หัดเขียนออโต้คลิ้ก ฟีฟ่า

ตั้งหัวข้อ by Arm on 14/05/14, 11:21 pm

เท่าที่ดูตอนนี้คือยังไม่ได้ใส่ลูปเพื่อรอการกดคีย์ลัดครับ ในสคริปต์มีจุด Error ด้วยนะครับ

1. ControlClick() กับ Sleep() ต้องอยู่เว้นบรรทัดกันครับแล้วหน่วยของ sleep เนี่ยมันเป็นมิลลิวินาทีนะครับ 1000 = 1 วิ
โค้ดอันเดิมของคุณใส่ไปแค่ 2 มันคือเสี้ยวววววินาที จริงๆนะครับ ขนาดผมแก้ให้เป็น 50 ก็ยังเป็นเสี้ยววินาทีอยู่ดี 55
2. MsgBox ผิดครับ มัพารามิเตอร์ที่ต้องใช้อย่างน้อย 3 ส่วนครับ (เปิด Help ดูตามก็ได้)
MsgBox(flag, "title", "text")
flag คือการกำหนดว่าอยากให้กล่องข้อความเรามีลักษณะแบบไหน ให้แจ้งเตือนแบบไหน
title คือชื่อไตเติ้ลบาร์ครับ
text ก็คือข้อความที่อยู่ในกล่องข้อความครับ

นี่คือสคริปต์ที่ผมแก้ให้ครับ
Code:
Global $GameHD
HotKeySet("{ENTER}", "_start")
HotKeySet("{ESC}", "_stop")

If _PSsixLoadH("FIFA") Then WinActivate($GameHD)

While 1
   Sleep(100)
WEnd

Func _PSsixLoadH($gtitle)
   $GameHD = WinGetHandle($gtitle)
   If @error Then
      MsgBox(4096, "Error", "Not Found Game")
   Else
      Return 1
   EndIf
EndFunc  ;==>_PSsixLoadH

Func _start()
   MsgBox(0, "", "Start")
   While 1
      ControlClick($GameHD, "", "", "Left", 2, 698, 190)
      Sleep(50)
      ControlClick($GameHD, "", "", "left", 1, 707, 535)
      Sleep(50)
      ControlClick($GameHD, "", "", "left", 1, 441, 467)
      Sleep(50)
      ControlClick($GameHD, "", "", "left", 1, 439, 438)
      Sleep(50)
      ControlClick($GameHD, "", "", "left", 1, 454, 130)
      Sleep(50)
      ControlClick($GameHD, "", "", "left", 1, 696, 190)
      Sleep(50)
   WEnd
EndFunc  ;==>_start

Func _stop()
   MsgBox(0, "", "End")
   Exit
EndFunc  ;==>_stop
ค่อยๆเรียนรู้ไปเดี๋ยวก็เป็นเองครับ em230 em233 ชินจัง

EDIT: อ้อๆ การเขียนสคริปต์ที่ดีควรจัดเรียงฟังก์ชั่น, ตัวแปรอะไรพวกนี้ให้เป็นกลุ่มๆชุดๆก็จะดีครับ เพื่อที่ว่าคนที่เข้ามาดูหรือศึกษาโปรแกรมของเราจะได้ไม่งงครับ ที่สำคัญก็คือเราจะไม่งงด้วยแหละ5555 (ถ้าเขียนซัก 400-500 บรรทัด หรือเป็นพันบรรทัดอะนะ)


แก้ไขล่าสุดโดย Arm เมื่อ 14/05/14, 11:27 pm, ทั้งหมด 2 ครั้ง (Reason for editing : แก้คำผิด + เพิ่มเติมนิดหน่อย)

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


จำนวนข้อความ : 2
ความนิยม : 0
เข้าร่วมเมื่อ : 14/05/2014

Re: ช่วยดูหน่อยครับ มือใหม่หัดเขียนออโต้คลิ้ก ฟีฟ่า

ตั้งหัวข้อ by newzacup on 15/05/14, 02:56 am

อ่อครับ ขอบคุณมากครับ

    เวลาขณะนี้ 21/11/17, 06:56 pm