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


เขียนบอท ช่วยดูให้น่อยคับ

Share

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


จำนวนข้อความ : 5
ความนิยม : 0
เข้าร่วมเมื่อ : 09/06/2011

เขียนบอท ช่วยดูให้น่อยคับ

ตั้งหัวข้อ by kingkong77 on 18/06/11, 10:40 pm

สวัสดีครับ สมาชิกใหม่คับ
ผมจะเขียนบอทให้มันคลิกเองเมื่อหน้าต่างนี้โผล่ขึ้นมาแล้วคลิกจุดอื่นต่อไปเรื่อยๆ
-------------
ที่ผมลองเขียน
-----------------
แล้วมันขึ้นแบบนี้
--------------
จะต้องทำยังไงช่วยหน่อยครับมือใหม่
avatar
flapjack
PSsix Member Super Class III
PSsix Member Super Class III

PSsix Moderator PSsix Master PSsix Game Coder
จำนวนข้อความ : 312
ความนิยม : 74
เข้าร่วมเมื่อ : 05/10/2010

Re: เขียนบอท ช่วยดูให้น่อยคับ

ตั้งหัวข้อ by flapjack on 19/06/11, 11:22 am

คร่าวหลังอย่าเอาภาพเกมมาลงเลยครับ(โดย... online)... เดี๋ยวจะเกิดปัญหาในเว็บนี้อีก
แนะนำช่วยนำ code มาลงด้วยน่ะครับผมจะได้ลอง RUN ดูว่ามันขึ้น Errorตรง (ดูจากรูปมองไม่ออกจริงๆ ครับ)
avatar
POS
PSsix
PSsix


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

Re: เขียนบอท ช่วยดูให้น่อยคับ

ตั้งหัวข้อ by POS on 19/06/11, 02:05 pm

จะสั่งคลิกเม้าส์ต้องใช้คำสั่ง ControlClick หรือ MouseClick

ControlSend หรือ Send ใช้สำหรับสั่งกดปุ่มบนคีย์บอร์ด


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

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

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

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


จำนวนข้อความ : 5
ความนิยม : 0
เข้าร่วมเมื่อ : 09/06/2011

Re: เขียนบอท ช่วยดูให้น่อยคับ

ตั้งหัวข้อ by kingkong77 on 19/06/11, 03:52 pm

flapjack พิมพ์ว่า:คร่าวหลังอย่าเอาภาพเกมมาลงเลยครับ(โดย... online)... เดี๋ยวจะเกิดปัญหาในเว็บนี้อีก
แนะนำช่วยนำ code มาลงด้วยน่ะครับผมจะได้ลอง RUN ดูว่ามันขึ้น Errorตรง (ดูจากรูปมองไม่ออกจริงๆ ครับ)
ผมลองมาใช้แบบนี้
Global $GameHD, $GameHD2

Func _PSsixLoadH($gtitle)
$GameHD = WinGetHandle($gtitle)
$GameHD2 = _WinAPI_GetWindow($GameHD, $GW_CHILD)
If @error Then
MsgBox(4096, "Error", "ไม่พบหน้าต่างเกม")
Else
Return 1
EndIf
EndFunc

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

While 1
If PixelGetColor(440, 412) = 0xC6FECD Then

Sleep(1000)
ControlClick($GameHD, "", $GameHD2, "left",1,454, 482")
Sleep(100)

ControlClick($GameHD, "", $GameHD2, "left",1,519, 482")
Sleep(100)

ControlClick($GameHD, "", $GameHD2, "left",1,791, 21")
Sleep(100)

ControlClick($GameHD, "", $GameHD2, "left",1,441, 537")
Sleep(100)

EndIf
Sleep(100)
WEnd

มันก็ขึ้นแบบนี้


C:\Program Files\AutoIt3\SciTE\furin กล่อง6.au3(5,51) : WARNING: $GW_CHILD: possibly used before declaration.
$GameHD2 = _WinAPI_GetWindow($GameHD, $GW_CHILD)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\SciTE\furin กล่อง6.au3(19,54) : ERROR: syntax error (illegal character)
ControlClick($GameHD, "", $GameHD2, "left",1,454, 482"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\SciTE\furin กล่อง6.au3(22,54) : ERROR: syntax error (illegal character)
ControlClick($GameHD, "", $GameHD2, "left",1,519, 482"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\SciTE\furin กล่อง6.au3(25,53) : ERROR: syntax error (illegal character)
ControlClick($GameHD, "", $GameHD2, "left",1,791, 21"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\SciTE\furin กล่อง6.au3(28,54) : ERROR: syntax error (illegal character)
ControlClick($GameHD, "", $GameHD2, "left",1,441, 537"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\SciTE\furin กล่อง6.au3(5,51) : ERROR: $GW_CHILD: undeclared global variable.
$GameHD2 = _WinAPI_GetWindow($GameHD, $GW_CHILD)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\SciTE\furin กล่อง6.au3(5,51) : ERROR: _WinAPI_GetWindow(): undefined function.
$GameHD2 = _WinAPI_GetWindow($GameHD, $GW_CHILD)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files\AutoIt3\SciTE\furin กล่อง6.au3 - 6 error(s), 1 warning(s)
ยังไงช่วยทีนะครับ ขอบคูครับ
avatar
POS
PSsix
PSsix


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

Re: เขียนบอท ช่วยดูให้น่อยคับ

ตั้งหัวข้อ by POS on 19/06/11, 04:06 pm

จุดที่ผิด

1. ไม่ได้ใส่

#include <Constants.au3>
#include <WinAPI.au3>

2.มีเครื่องหมาย " อยู่ด้านท้ายตัวเลขแกน y ตัวเลขพวกนี้ไม่จำเป็นต้องใส่เครื่องหมาย "


โค้ดแก้ไข

Code:
#include <Constants.au3>
#include <WinAPI.au3>

Global $GameHD, $GameHD2

Func _PSsixLoadH($gtitle)
 $GameHD = WinGetHandle($gtitle)
 $GameHD2 = _WinAPI_GetWindow($GameHD, $GW_CHILD)
 If @error Then
 MsgBox(4096, "Error", "ไม่พบหน้าต่างเกม")
Else
 Return 1
 EndIf
EndFunc

If _PSsixLoadH("เปลี่ยนชื่อเกมส์") Then WinActivate($GameHD);เปลี่ยนชื่อไตเติลเกมส์

While 1
If PixelGetColor(440, 412) = 0xC6FECD Then

Sleep(1000)
ControlClick($GameHD, "", $GameHD2, "left",1,454, 482)
Sleep(100)

ControlClick($GameHD, "", $GameHD2, "left",1,519, 482)
Sleep(100)

ControlClick($GameHD, "", $GameHD2, "left",1,791, 21)
Sleep(100)

ControlClick($GameHD, "", $GameHD2, "left",1,441, 537)
Sleep(100)

EndIf
Sleep(100)
WEnd


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

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

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com
avatar
flapjack
PSsix Member Super Class III
PSsix Member Super Class III

PSsix Moderator PSsix Master PSsix Game Coder
จำนวนข้อความ : 312
ความนิยม : 74
เข้าร่วมเมื่อ : 05/10/2010

Re: เขียนบอท ช่วยดูให้น่อยคับ

ตั้งหัวข้อ by flapjack on 19/06/11, 06:12 pm

แก้ตามทาง ท่าน POS เลยครับ em218

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


จำนวนข้อความ : 5
ความนิยม : 0
เข้าร่วมเมื่อ : 09/06/2011

Re: เขียนบอท ช่วยดูให้น่อยคับ

ตั้งหัวข้อ by kingkong77 on 20/06/11, 08:46 am

เกมส์นี้ใช็ มันไม่คลิก ใช้ program AutoKey แบบ CtrlS ก็ไม่ได้ ผมเลยเปลื่อนมาใช้ MouseClick แทน
ใช้งานได้ดีเลยครับ ขอบคุณมากครับ แต่อยากได้แบบ ControlClick มากกว่า ยังไงรบกวนด้วยครับ
Summary

>>>> Window <<<<
Title: FURINKAZAN(May 26 2011 10:09:43)
Class: FURINKAZAN
Position: 0, 0
Size: 1024, 768
Style: 0x96000000
ExStyle: 0x00000000
Handle: 0x00170274

>>>> Control <<<<
Class:
Instance:
ClassnameNN:
Name:
Advanced (Class):
ID:
Text:
Position:
Size:
ControlClick Coords:
Style:
ExStyle:
Handle:

>>>> Mouse <<<<
Position: 486, 181
Cursor ID: 0
Color: 0x35240D

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<


>>>> Hidden Text <<<<
EditWindow
avatar
POS
PSsix
PSsix


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

Re: เขียนบอท ช่วยดูให้น่อยคับ

ตั้งหัวข้อ by POS on 21/06/11, 07:54 pm

ถ้าคุณกดยุบหน้าจอลงส่วนใหญ่จะสั่งคลิกไม่ได้ เพราะขนาดหน้าจอจะกลายเป็น 0,0 ดังนั้นถ้าจะใช้พวก ControlClick ก็ต้องทำแบบไม่กดยุบหน้าจอ ใช้วิธีลากไตเติลบาร์หน้าจอไปมุมแทน (อาจจะได้หรือไม่ได้)


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

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

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

    เวลาขณะนี้ 29/05/17, 09:09 am