Autopotter für mehrere metin2 Fenster? (Auto key presser)

05/22/2023 18:36 iMave#1
Huhu,

ich benutze einen Auto Key presser der die ganze Zeit F1 presst fürs potten. Der funktioniert leider nur für 1 Fenster, hab aber 20 metin2 Fenster offen. Gibt es einen mit dem ich mehrere Fenster autopotten kann?

Autojagd für 20$ wäre mir leider echt zu teuer.

[Only registered and activated users can see links. Click Here To Register...]
05/25/2023 16:08 MaxChri#2
Das ist leider nicht so einfach möglich in Metin2. Wenn du auf einen offiziellen Server spielst, würde ich dir [Only registered and activated users can see links. Click Here To Register...] empfehlen.
05/26/2023 16:44 HappyMajor#3
Könntest die fenster switchen und dann F1 Pressen Ist EzPz doable
schreib mir doch mal auf disc HappyMajor#6771
05/27/2023 23:55 EasyFarm#4
Quote:
Originally Posted by MaxChri View Post
Wenn du auf einen offiziellen Server spielst, würde ich dir [Only registered and activated users can see links. Click Here To Register...] empfehlen.
Entweder das (danke für die Schleichwerbung), oder du schreibst dir selbst ein Script, welches für dich alle Metin2-Fenster durchgeht und die Taste zum Potten drückt. Das geht eigentlich easy. Oder benutzt meinen Bot, da kannst du Tränke nutzen lassen, ohne dass diese auf einem speziellen Slot sein müssen.
05/28/2023 00:01 .Neil Moody.#5
Bitte sehr.
Du benötigst python sowie NodeJS auf deinem Rechner.

Code:
import win32gui
import win32api
import time
import keyboard
import random

def get_window_classes_by_title(window_title):
    def callback(hwnd, window_classes):
        title = win32gui.GetWindowText(hwnd)
        if window_title in title:
            class_name = win32gui.GetClassName(hwnd)
            window_classes.append(class_name)
        return True

    window_classes = []
    win32gui.EnumWindows(callback, window_classes)
    return window_classes

def find_window(window_class):
    return win32gui.FindWindow(window_class, None)

def bring_window_to_top(hwnd):
    win32gui.SetForegroundWindow(hwnd)

def get_window_text(hwnd):
    length = win32api.SendMessage(hwnd, win32gui.WM_GETTEXTLENGTH) + 1
    buffer = win32gui.PyMakeBuffer(length)
    win32api.SendMessage(hwnd, win32gui.WM_GETTEXT, length, buffer)
    text = buffer[:length].decode("utf-16")[:-1]
    return text

fenster_info = [
    {"class": "Qt5152QWindowIcon"}
]

while True:
    window_index = 0
    window_info = fenster_info[window_index]
    window_class = window_info["class"]
    hwnd = find_window(window_class)
    bring_window_to_top(hwnd)
    keyboard.press(F1)
    time.sleep(0.1)
    keyboard.release(F1)
Ist nur für 1 Fenster um nun deine ganzen Fenster zu laden brauchst Du für jedes Fenster die Fenster-Klasse
Dafür führst Du folgende Python aus.
Code:
import win32gui

def get_window_classes_by_title(window_title):
    def callback(hwnd, window_classes):
        title = win32gui.GetWindowText(hwnd)
        if window_title in title:
            class_name = win32gui.GetClassName(hwnd)
            window_classes.append(class_name)
        return True

    window_classes = []
    win32gui.EnumWindows(callback, window_classes)
    return window_classes

# Beispielaufruf
window_classes = get_window_classes_by_title("METIN2")
print(window_classes)
Bei window_classes = get_window_classes_by_title("METIN2") gibst Du den Fenster Titel ein. Denke mal METIN2 wird es überall sein.
Somit kriegst Du alle Fensterklassen aufgelistet aus.
Diese kopierst Du und trägst diese in "fenster_info" ein.
Danach erhöhst Du nur noch im Script nach jedem "Einsatz von F1" den fenster_info[NUMBER] damit das nächste Fenster geöffnet F1 gedrückt wird und weiter gegangen wird.