blue7wolf Posted April 6, 2014 Share Posted April 6, 2014 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. Quote Link to comment Share on other sites More sharing options...
MostWanted Posted April 7, 2014 Share Posted April 7, 2014 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. Quote Link to comment Share on other sites More sharing options...
blue_life Posted April 7, 2014 Share Posted April 7, 2014 + Aktif pencereye göre belirli koordinattaki renkleri almak istersen, kodlarının başına Opt("PixelCoordMode", 2) yi eklersin... Quote Link to comment Share on other sites More sharing options...
blue7wolf Posted April 8, 2014 Author Share Posted April 8, 2014 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 :) Quote Link to comment Share on other sites More sharing options...
blue7wolf Posted April 10, 2014 Author Share Posted April 10, 2014 (edited) 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 April 10, 2014 by blue7wolf Quote Link to comment Share on other sites More sharing options...
Ex_treme Posted December 6, 2015 Share Posted December 6, 2015 Konuyu Canladırıyorum Ama pixelsearch kodunda rgb renk paleti taban değerini 5 ile sınırlamışsın bu yüzden çalışmıyor olabilir... $PS = PixelSearch(($ccx-25),($ccy-25),($ccx+25),($ccy+25),$PG,"","",$OP) Boyle çalışır sanki... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.