Python pyautogui tıklamıyor

Merhabalar. Python pyautogui veya pydirectinput modülünü kullanarak mouse’un istediğim kordinata gitmesini sağlıyorum ve istediğim gibi gidiyor (bot) Fakat sol tıklamasını istediğim zaman tıklamıyor.
bu botu kullandığım oyunda insan harici bir tıklamayı engellemişler, yani python değil hiçbir macro çalışmıyor mousenin kendi makrosu bile çalışmıyor undetect bir şekilde mouseyi götürdüğü zaman tıklayacak bir şey yazmamız mümkün mü hocalarım

şuanki pyautogui.click(button=‘left’)

Bu tıklayamama sorunu çok fazla soruluyor bu aralar. Üzerinde durmak gerekir.

Şimdilik bir link vereceğim.

PyAutoGUI not working? Use DirectInput - YouTube

Ama bunun birden çok sebebi olabilir.

Emin değilim.

Varsayımlarla başlayacağım.

  1. Admin yetkisi gerektiriyor yürütülen kod. Pycharm admin çalıştırma çözümlerine bakın. Tabi Pycharm kullanıyorsanız.

Bu durumda bu ve benzeri çözümlere bakın: How to run python file with admin rights in pycharm - DevDreamz

  1. Koordinata gittikten sonra bir kaç saniye beklemek gerekebilir.
    O zaman :
time.sleep(5)

Gibi bir kod ile bir kaç saniye beklenebilir.

  1. Windows arayüzü yerine oyun ara yüzünün kendi özelliklerinden kaynaklanabilir.

Bu durumda farklı bir yaklaşım:

PyAutoGUI not working? Use DirectInput - YouTube

  1. Bir web sayfası üzerinde tıklanacak ise, tıklanacak frame in id si dikkatli tespit edilmelidir.

Hangisine girdiğini bilmek mümkün değil.

Bunun dışında da sebepler olabilir.

Bu nedenle oyunun yapısı önemli.

Hangi oyun, hangi arayüz hangi editör gibi sayısız soru gerekecektir.

Biraz daha açıklar, örnek kodlar koyarsanız, üzerinde çalışıp çözüm üreme ihtimalimiz artar.

GitHub - yazilimfuryasi/OpenCV-Game-Bot: Game bot with OpenCV kullandığım bot bu, oyun metin2,
söylediğiniz her şeyi denedim 30 saattir uğraşıyorum fakat bir çözüme ulaşamadım. tüm otomatik tıklama olaylarını engellemiş oyunun hile koruması. pyautogui harici farklı bir kütüphane var mı bot algılanmayacak makro algılanmayacak

Acil değilse kurup deneyim bir kaç gün içinde ne metin2’miş herkes bot yazmaya çalışıyor.

acil değil hocam ya 3 gündür uğraşıyorum bir şey bulamadım zaten. kurulum videolarına youtubeden bakabilirsen daha iyi olur, eğer metini tanımazsa bu linkteki GitHub - gokaykara1/yazilim en altta attığım cascadeyi kullanırsanız daha iyi olur
cevabınızı bekliyorum sabırsızlıkla hocam, teşekkürler

Kurup deneyim dedim, çözerim demedim. :slight_smile:

Beklentiyi yüksek tutma, bakalım bir neyi var neyi yokmuş.

Sonuçta bot koruması için bir şeyler yapmışlarsa bunu aşmak doğru mu emin değilim.

Ne kullanmışlar en kadar etkin görmem lazım.

Hocam arkadaşın kullanıdığı bot,

Şu linkteki tartıştığınız bot.

1 Beğeni

@Arif_RYG evet o botu kullanıyorum ama sorunum ordakinden farklı. o ekrana gelen bot koruması sorusunu çözmek için paylaşmış, ben iste mousenin tıklaması sorunu için

1 Beğeni

Autohotkey işe yarayabilir ama Python’dan kullanmanın kolay ve verimli bir yolunu bulamamıştım. Kendi sağladığı scripting dili de garip.

autohotkey’de çalışmıyor tüm makroları fixlemişler, dediğim gibi

metin2 yi kurdum.

Konu uzun.

Çözüm var mı? İmkansız diye bir şey yoktur, tabi ki aşılır.

Uğraşır mısın dersen uğraşmam şahsen.

Şöyle özetleyeyim.

Bir klasöre kurdum, CheatBlocker ile kodu hilelere karşı korumaya çalışmışlar.

Daha da komiği,

image

Adamlar istemciyi python ile yazmışlar.

image

Neden tıklayamadığımızın anlaşılması için,

DirectX 9 üzerinde çalışması gayet anlaşılır.

Şimdi windows un mesaj yapısı ve mesaj yapısını anlatmak istemiyorum. Çok yerde anlatan gördüm.

Ama normal bir GUI kullanımı ile directx çalışma mantıı aynı değil. Aslında artık aynı windows 10 ve üzeri directx’i gdi a entegre etti ( Ne diyorsun anlamadım diyebilirsin haklısın ama anlatamayacağım sonra belki)

Directx ile yazılan bir programın giriş çıkış işlemleri mesaj kuyuruğunda windows arayüz programlarının işlendiği gibi işlenmez.

Bu nedenle aslında ortada bir windows arayüzü yoktur. Gönderdiğin tıklama mesajlarını alacak bir kodu yok yani oyunun.

Bunun yerine kendi arayüz etkileşim kodlarını kullanır.

Ama bununla yetinmemişler, araya,

cheatblocker ı koymuşlar.

Chetblocker ın exe dosyasından importlarına baktım.

CB.exe

Tüm process i kontrol eden ve directx in işlemlerini işleyen api çağrıları var.

Bunlar göz ucuyla gördüklerim.

Yani oyun istemcisi windows mesajlaşma yapısını kullanmıyor,directx üzerinde arayüzü çalıştırıyor ama araya da cheatblocker ı koymuş.

Bu durumda process gönderilen tıklama mesajlarını geldiği kaynağa göre görmezden gelerek blocklayabilir.

Yani python kodlarında değil sorun.

Python kodları çalışmasın diye önlem alınmasın diye.

GitHub - yazilimfuryasi/OpenCV-Game-Bot: Game bot with OpenCV

Zaten bu durumla ilgili açıklama da verdiğiniz linkte mevcut.

Bu projeye başlama amacım sadece GÖRÜNTÜ İŞLEME de nesne algılama ve doğru MODEL EĞİTME idi. Ancak ilgi oldukça fazla olunca biraz daha geliştirip klavye fare kullanan oyun botu haline getirmiştim. Yakın zamanda(2022 Ocak) Tkinter kullanarak GUI (Grafiksel Kullanıcı Arayüzü) halinde olan bir video paylaşmıştım. Oyunlarda fare sol tıklaması engelli olduğu için sağ tık yaptırarak metinleri kestirebiliyorduk. Şimdi sanırım o da engelli.

Yani bu tür oyunlarda yazılan python botlarının suçu yok, pygui ve benzerleri çalışıyor.

Sorun oyunların bunlara cevap vermesi için tasarlanmış ara kodlar içermesi.

Bu durumda da çözüler var.

Ama ileri seviye ve programa özel.

DDK (Driver development kit/ sürücügeliştirme kitleri) ile botlarınızı driver olarak tasarlayıp, programın bu mesajların bir programdan gelmediğine mouse driver’ı tarafından gönderildiğin inandırmak, ya da,

Cheat engine gibi programlarla önce CheatBlocker ı çalışırken devre dışı bırakacak kodlar yazmak.

Üçüncü bir şey de Metin2 kodundan CB yerine kendi yazdığımız bir exe dosyasına çağrı yaptırıp, kandırmak.

Her bir yöntem, kodu kırmak anlamına geliyor ki, ben burada bunu öğretmem.

Kodu kırmam, yama yada benzerleri ile modifiye etmem( edemem değil) çünkü ticari bir oyun ve adamların amaçlarına saygı duyarım.

Tabi ki bunları aşmanın da bir yolu vardır mutlaka process leri gizlemek falan için basit yollar da olabilir.

Özetle;

Python sorunlu değil, python kodları sorunlu değil, pygui ve benzeri automation modülleri sorunlu değil.

Bu modüller normal çalışan windows uygulamaları ile normal çalışan direct input alabilen (directx) uygulamaları için çalışır.

Ama üzerinde önlem alınmış bir oyunda,

Bunları aşmak için ya oyunu patch lemek yada tasarımcısının gözden kaçırdığı bir açıktan faydalanmak gerekir.

Açığı bulsak bile bir sonraki güncellemede, yine çalışamayacaktır.

Tüm teknik detayara değinmiyorum ama çözüm için yamalar araştırın.

Normal python kodları ile çözülmemesi kodlama hatası değil, alınan tedbirlerden ibaret.

4 Beğeni

discord adresiniz var mı acaba @semtex

Metin2 oyununa 3. parti dış yazılım kullanarak otomasyon fonksiyon gönderemezsiniz. Metin2 için yazılan hileler otomasyon değil inject olarak işlem görür.

Yaptığınız program kaynak dosyalarına inject edilmeli. Oyunda kullanılan tüm botlar patch klasöründe yer alan dosyalar içerisine eklemeler yapmaktadır. Böylelikle oyun çalışırken dahili olarak o kodları çalıştırıyor. Üstüne çalıştırma yapmıyor.

Sizlerin de bahsettiği gibi bu engellenmiş bir durum. Kaynak dosyalar içerisinde bulacağınız açıklar ve uygun patch dosyaları içerisine inject edilmiş bir kaç satır kod ile bahsettiğiniz işlemi gerçekleştirmeniz mümkün.

Metin2 pvpler için kod yazmış biri olarak şunu da belirtmek isterim ki, adminlerin log panellerinde her oyuncunun tüm datası çok net bir şekilde görünür. Ayrı ayrı her patch dosyasının oyuncu üzerindeki durumu incelenebilir. Örneğin X oyuncusunun locale_tr.epk dosyası üzerindeki tüm etkinlikleri anlık olarak görebiliyorlar.

Ban yemeniz beni derinden üzer.

BKZ:

Ekran görüntüsü 2022-04-21 210443

yıl 2009…

2 Beğeni

cok kolay bir yolu var ama kimse paylasmadiysa bir bildikleri vardir diyorum :d

bizleri aydınlatmandan mutluluk duyarız

harbi hocam lütfen yardımcı olun günlerdir uyuyamıyorum bir şey bulamadım

1 Beğeni

bahsi gecen oyun yada oyunlarla ilgi ve alakam yok.
baslik ozelinde yorum yaptım yani fare ile ilgili kutuphane kullanmam gerektiginde pyautogui yerine win32api, win32con kullaniyorum

import win32api, win32con

def rightClick():
    win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTDOWN,0,0)
    time.sleep(.1)
    win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP,0,0)


def leftClick():
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0)
    time.sleep(.1)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0)

Adı geçen kütüphaneler ne kullanıyor sanıyorsunuz ki?

2 Beğeni

Adı geçen kütüphaneler ne kullanıyor sanıyorsunuz ki?

bilmiyorum yani kodlarin calismasi lazım ama belki bu yuzden olabilir

RIGHTDOWN
time.sleep(.1)
RIGHTUP

kodlar zaten çalışıyor başka serverda. benim oynadığım serverda çalışmıyor engellemişler