Jump to content

Pixelgetcolor Pencereye Odaklanmıyor


blue7wolf
 Share

Recommended Posts

Autoit'i öğrenebilmek için herkesin ilk yaptığı gibi oyuna bot yapmaya çalışıyorum :D
Controlclik ve Controlsend komutlarında sıkıntı yok simge durumda bile istediğimi yapıyor.
Ancak Pixelgetcolor çalıştıramadım. Daha doğrusu oyunun penceresine odaklayamadım.
Oyun penceresini ekranın başka bir yerine taşıdığımda yada simge durumuna küçüldüğünde çalışmıyor.
 
#include <MsgBoxConstants.au3>

$Oyun = WinGetHandle("Oyun-Penceresi")
sleep(100)

$iColor = PixelGetColor(200,300,$Oyun)
sleep(100)

MsgBox($MB_SYSTEMMODAL, "", "The decimal color is: " & $iColor)
MsgBox($MB_SYSTEMMODAL, "", "The hex color is: " & Hex($iColor, 6))

Tavsiye ve yardımlar için şimdiden teşekkürler.

 

Link to comment
Share on other sites

Simge durumuna küçüldüğünde zaten pixel get color u çalıştıramazsın fakat oyun penceresini taşıdığın zaman çalışması lazım.Normal çalışırken ki msgboxlar ne diyor ve çalışmazken msgboxlar ne diyor yazarsan belki bi sonuca ulaşabiliriz.

Link to comment
Share on other sites

denerken msgbox yerine tooltip kullanıp (buldum-bulamıyorum) döngüye bıraktım Opt("PixelCoordMode") 0-1-2 denedim ama odaklanmıyor yine de. tahminimce win8 in hatalarından biri. çözümü pencere konumuna göre oran vermekte buldum ama pixelgetcolor ile istediğime ulaşamadım oyun geç tepki veriyor.

bu yüzden PixelChecksum ve PixelSearch kullanmayı deniyorum ama aklıma takılıp anlayamadığım noktalar var.

 

1) Opt("PixelCoordMode") 1 dersem masaüstü koordinatlarını baz alıyor 2 dersem aktif olan pencereyi baz alacak yani hangi pencere aktifse onun masaüstü koordinatlarındaki yeri benim için x=0 y=0 olacak  peki ozaman benim Opt("PixelCoordMode",0) mı kullanmam gerekiyor ya da o ne işe yarıyor anlayamadım bende hiçbiri işlemediği için

 

2) PixelChecksum için hız ve hassasiyet ayarını değiştirebilirmiyiz? belirttiğim kare içinde herhangi bir pixel renk değiştirdiğinde (hepsi eş zamanlı kontrol) oluyor ama bir önceki pixel ile bir sonraki pixele bakma olayı "baktım pixelin rengi mavi 10ms sonra baktım değişmiş" şeklinde mi eğer böyle ise bu süre değiştirilebilir mi? yoksa kendini ekranın hertz değerine mi bağlıyor ?

 

3) PixelSearch ile renk taraması yaptığımda belirttiğim kare içinde soldan sağa ve yukardan aşağı tarama yapıyor yani PixelChecksum daki gibi eş zamanlı değil. ya da eş zamanlı yapıyor da bana sadece en düşük kordinattakinin mi yerini söylüyor ? bunu belirttiğim renkten kaçtane olduğunu bulmak için soruyorum. şuan yaptığım $i = $i+1 şeklinde bir döngü ama zaten hepsini aynı anda buluyorsa boşuna fazladan işlem yaptırıp zorlamaya gerek yok ondan soruyorum.

 

4) Opt("MouseClickDownDelay") gibi ayarlar en başta ve sadece 1 defa mı belirtilir yoksa istediğim yerde bunların değerlerini değiştirebilir miyim ? ve ayrıca Opt("MouseClickDownDelay - MouseClickDelay - MouseClickDragDelay ayarları controlclick için de geçerli değil mi istediğim hızda yapmıyor da

 

5) bazı butonlar fare imlecini üzerine getirdiğinizde parlar tıklanmaya hazırım diye mouse kıpırdatmadan mouse senin üstünde duruyor demenin bir yolu var mı ama bahsettiğim şey bir buton veya checkbox falan değil. controlclick(......"middle") kullanarak yapıyorum da başka bir yolu var mı

 

Farkettiğiniz gibi Autoitte hala Yontma Taşdevrindeyim :D ama yardımlarınızla medeniyete doğru ilerleyebilirim :)

Link to comment
Share on other sites

Oyun ekranına farklı bir nesne gelip gelmediğini anlamak için pixel taraması yaptırmaya çalışıyorum.
1)duruyorsam belirttiğim pixel değişmemiştir 2)Hareket ediyorsam belirttiğim pixel yakında biryerde olmalı mantığı ile
Fakat dururken bile $PG ile aldığım rengi $PS ile bulamıyor sebebi ne olabilir ?
 
#include <MsgBoxConstants.au3>

Opt("PixelCoordMode",2)
Opt("MouseClickDownDelay",5)
Opt("MouseClickDelay",5)


Global $OP = WinGetHandle("OYUN-PENCERESİ")
Global $OPSize = WinGetClientSize($OP)
Global $fPaused = False
Global $ccx, $ccy, $PS, $PG, $BAK

Func TARA()
	ToolTip('TARANIYOR',0,0)
	$ccx = 50
	$ccy = 50

	While $ccy < ($OPSize[1]-100)
		While $ccx < $OPSize[0]
			$PG = PixelGetColor($ccx,$ccy,$OP)
			Sleep(5)
			$PS = PixelSearch(($ccx-25),($ccy-25),($ccx+25),($ccy+25),$PG,5,$OP)
			If @error Then
				MsgBox(0,"",$ccx&"-"&$ccy&"--"&("0x"&Hex($PG,6))) ;==> Burası Call("BAKIN")
			EndIf
			$ccx = $ccx+100
		WEnd
		If $ccx >= $OPSize[0] Then
			$ccx = 50
			$ccy = $ccy+100
		EndIf
	WEnd
EndFunc

Edited by blue7wolf
Link to comment
Share on other sites

  • 1 yıl yıl...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...