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


คำสั่งเมื่อเกมถูกปิดแล้วให้เปิดขึ้นใหม่

Share

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


จำนวนข้อความ : 3
ความนิยม : 0
เข้าร่วมเมื่อ : 28/09/2012

คำสั่งเมื่อเกมถูกปิดแล้วให้เปิดขึ้นใหม่

ตั้งหัวข้อ by sos007ok02 on 03/04/13, 07:02 pm

มีปัญหาเรื่องโค๊ดอะครับ
แบบถ้าหลุดจากเกมไปให้มันเปิดเกมมาใหม่ ล๊อกอินมาใหม่แล้วกลับเข้าไปคำสั่งเดิมเลยอะครับ
ผิดพลาดประการใดโปรดชี้แนะที TT

Opt("MouseCoordMode", 2)
Opt("PixelCoordMode", 2)
Opt("CaretCoordMode", 2)
Global $GameHD ;ประกาศตัวแปร $GameHD เพื่อนำไปใช้ทั้งเกม
Global $number[3] = [ 0x666666, 0x888888 ,0x999999];ใส่รหัสสีที่จะหา
Global $gameX1, $gameY1

Func _PSsixLoadH($gtitle) ;ฟังก์ชันสำหรับตรวจหาหน้าต่างเกม
$GameHD = WinGetHandle($gtitle) ;ดึงเอาค่า Handle ของหน้าต่างเกมเก็บไว้ในตัวแปร $GameHD
If @error Then
MsgBox(4096, "Error", "ไม่พบหน้าต่างเกม") ;ถ้าไม่เจอหน้าต่างเกมแสดงกรอบหน้าต่างแจ้งให้ทราบ
Else
Return 1
EndIf
EndFunc
HotKeySet("{ESC}", "stop")

While 1
if($GameHD)=0 then Run (""D:\Program Files\Maple\MapleStory\ExtaliaMS.exe"")
while ($GameHD)=1
If _PSsixLoadH("ExtaliaMS")Then
WinActivate($GameHD) ;ส่งค่าชื่อไตเติลเกมเข้าไปยังฟังก์ชัน หากตรวจพบก็จะสั่ง
Sleep(100)
Else
Run (""D:\Program Files\Maple\MapleStory\ExtaliaMS.exe"")
Sleep(100)
EndIf
WEnd

if PixelGetColor(526,161)=0xBB2200 Then
Sleep(3000)
ControlSend($GameHD, "", "","0487682596")
Sleep(1000)
MouseClick("",477,304,1,1)
Sleep(5000)
MouseClick("",158,58,1,1)
Sleep(2000)
MouseClick("",321,353,2,10)
Sleep(2000)
MouseClick("",670,451,1,1)
Sleep(200)
Else

EndIf
WEnd

Func stop()
Exit
EndFunc


Fast
PSsix Member Super Class III
PSsix Member Super Class III

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

Re: คำสั่งเมื่อเกมถูกปิดแล้วให้เปิดขึ้นใหม่

ตั้งหัวข้อ by Fast on 05/04/13, 07:45 pm

ใส่สคริ๊ปนี้ตรวจดูครับท่าน

if ProcessExists("notepad.exe") Then ;เปลี่ยนชื่อ notepad.exe เป็นชื่อเกมส์
Sleep(100)
Else
Run("notepad.exe") ;สั่งรันโปรแกรม
EndIf

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


จำนวนข้อความ : 3
ความนิยม : 0
เข้าร่วมเมื่อ : 28/09/2012

Re: คำสั่งเมื่อเกมถูกปิดแล้วให้เปิดขึ้นใหม่

ตั้งหัวข้อ by sos007ok02 on 08/04/13, 02:22 am

คำสั่งที่เหลือก็ถูกแล้วใช่ไหมครับ ผมไม่ค่อยเข้าใจกับคำสั่ง while ($GameHD)=1 พวกนี้เลย เขียนเอง งงเอง พอจะอธิบายหน่อยได้ไหมครับ รูปแบบมันคือยังไง เงื่อนไขมันใช้แบบไหนอะครับ
avatar
flapjack
PSsix Member Super Class III
PSsix Member Super Class III

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

Re: คำสั่งเมื่อเกมถูกปิดแล้วให้เปิดขึ้นใหม่

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

sos007ok02 พิมพ์ว่า:คำสั่งที่เหลือก็ถูกแล้วใช่ไหมครับ ผมไม่ค่อยเข้าใจกับคำสั่ง while ($GameHD)=1 พวกนี้เลย เขียนเอง งงเอง พอจะอธิบายหน่อยได้ไหมครับ รูปแบบมันคือยังไง เงื่อนไขมันใช้แบบไหนอะครับ


ผมก็ไม่รู้รูปแบบของเกมน่ะครับว่าจะต้องทำอะไรบ้าง...
จะอธิบายคร่าวๆน่ะครับ
Code:

while ($GameHD)=1

เป็นคำสั่ง loop โดยมีเงื่อนไขจากตัวแปร $GameHD ที่มีค่า = 1 (ซึ่งต้องเป็นจริงจะทำคำสั่ง ข้างใน loop)
ตัวแปร $GameHD จะมีค่าได้จาก
Code:
 Func _PSsixLoadH($gtitle)
(โดยมีการเรียก _PSsixLoadH("ExtaliaMS"))

แต่โค๊ดของคุณ sos007ok02 ในส่วนของ Func _PSsixLoadH($gtitle)
Code:

Func _PSsixLoadH($gtitle) ;ฟังก์ชันสำหรับตรวจหาหน้าต่างเกม
$GameHD = WinGetHandle($gtitle) ;ดึงเอาค่า Handle ของหน้าต่างเกมเก็บไว้ในตัวแปร $GameHD
If @error Then
MsgBox(4096, "Error", "ไม่พบหน้าต่างเกม") ;ถ้าไม่เจอหน้าต่างเกมแสดงกรอบหน้าต่างแจ้งให้ทราบ
Else
Return 1
EndIf
EndFunc
ตัวแปร $GameHD มันไม่ได้ มีค่าเท่ากับ 1 น่ะครับ แต่มันเช็คว่า _PSsixLoadH("ExtaliaMS") มีค่าเท่ากับ 1 หรือเปล่า
แต่ตัวแปร $GameHD มันเก็บค่า Handle(ถ้าเจอ) ถ้าไม่เจอก็เก็บค่า ""
ซึ่งบรรทัด
Code:

while ($GameHD)=1
.....
.....
WEnd
 
เปลี่ยนเป็น
Code:

While (  _PSsixLoadH("ExtaliaMS") = 1)
....
....
WEnd
ถ้ามีอะไรผิด ผู้รู้ช่วยแนะนำด้วยน่ะครับ

    เวลาขณะนี้ 25/11/17, 07:13 am