Suchfunktion automatisieren

  • Guten Morgen allerseits,

    wünsche jedem einen guten Start in die Woche. Ich persönlich habe mir die komplette Nacht um die Ohren gehauen um eine Idee zu verwirklichen, von der ich ausging, dass es im Grunde machbar sein sollte. Bin dabei jedoch auf ein paar Probleme gestoßen und suche seitdem nach einer Lösung. Leider bekomme ich langsam das Gefühl, dass es weitaus komplizierter ist als geahnt. Daher Frage ich einfach mal euch was ihr davon haltet. Ich möchte dazu sagen, dass ich seit Jahren mit AutoIT arbeite, allerdings nie wirklich etwas großes. Allerdings kenne ich mich mitlerweile etwas aus und lerne sehr schnell, sofern es etwas content gibt. Studiere atm Informatik und hatte früher viel mit C++ zu tun. Also nicht ganz untalentiert.

    Die Idee klingt zuerst sehr einfach: Ich spiele auf PokerStars des öfteren etwas Poker. Dort gibt es eine Suchfunktion (Strg+F) welche das Fenster "Find a Player" öffnet. Hier kann man nun einen Spielernamen eingeben und sich in einem neuen ("Find a Player")-Fenster anzeigen lassen, in welchen Turnieren er gerade sitzt (sofern dieser diese Funktion nicht in den Optionen deaktiviert hat). Bis hierhin nichts besonderes.
    Mein Plan ist jedoch, die Suchfunktion z.B. alle 10-30 Sekunden automatisch laufen zu lassen, sodass ich meinem Freund folgen kann, sobald er z.B. in einem MultiTableTournament (MTT) zufällig auf einen anderen Tisch gesetzt wird, ohne, dass ich erneut manuell nach ihm suchen muss. Also absolut nichts verbotenes! Ich möchte lediglich die Such-Funktion automatisieren. Habe mir dafür ein nützliches GUI gebastelt, wo ich neue Spieler hinzufügen/löschen kann.
    Da ich wärend das automatisierte Such-script läuft, gleichzeitig selbst Pokern und am PC arbeiten möchte ist es wichtig, dass die Suchbefehle im Hintergund ausführbar sind was das ganze leider etwas erschwert.

    So siehts aus, wenn man STRG+F drückt:

    Spoiler anzeigen


    Die Window-Infos zum Editfeld des Fensters:

    Spoiler anzeigen

    Problem #1: Habe es vorerst auf die einfachste Art probiert. Mit WinExists("PokerStars Lobby") erstmal prüfen ob die PokerStars Lobby geöffnet ist, np. Doch selbst wenn ich WinAvtivate benutze kann ich durch den Send("^!F") nicht die Suchfunktion öffnen. War sowieso nicht mein Plan, weshalb ich mit dem WinInfo-Tool versuchte die nötigen Infos auszulesen, um diese direkt und wenn möglich auch im Hintergrund auszuführen. Würde es mit ControlSend("Find a Player", "", "[CLASS:Edit; INSTANCE:1]", "Spielername") versuchen, komme aber nicht dazu, das Fenster überhaupt zu öffnen. Gibt es da weitere Möglichkeiten um das Suchen-Fenster, wenn möglich, im Hintergrund zu öffnen/auszuführen? Will hier Pixel/Picture-Search gänzlich vermeiden. Wenn möglich nur den Befehl senden und die Infos abfangen, ohne, dass man dabei bei der Arbeit am PC beeinträchtigt oder getört wird. Da es sich um eine Funktion eines fremden Programmes handelt weis ich nicht ob das überhaupt geht.

    Hat man erst einmal jemanden eingegeben, den man suchen möchte, so öffnet sich folgendes Fenster:

    Spoiler anzeigen


    Die Infos zum ListCLass:

    Spoiler anzeigen

    Problem #2: Hier ist das Ziel, jeden angezeigten Tisch (üblich mit Doppellclick) zu öffnen und anzeigen zu lassen, solange der gesuchte Spieler daran sitzt. Steht der Spieler auf, soll der Tisch wieder geschlossen werden. Das schliessen ist dabei das kleinste Hinderniss. Die Frage ist hier im Grunde die selbe, nämlich ob es hier nun auch eine Möglichkeit gibt das Programm durchlaufen zu lassen ohne es tatsächlich zu sehen und trotzdem jede Spalte(Tisch) der Liste irgendwie zu öffnen.

    Gibt es einen Weg an den ich nicht gedacht habe? Speicher auslesen mit ner APIHook scheint etwas zu extrem und PixelSearch zu einfach, da das Programm wenn möglich im Hintergrund ablaufen soll. Wenn jemand einen Lösungsvorschlag, eine Idee oder Richtung kennt, die mir hier weiterhelfen könnte wäre ich für jede Inspiration sehr dankbar. Falls Ihr mehr Informationen benötigt, gebt mir bescheid, dann tue ich mein Bestes um euch diese schnellstmöglich zu liefern. PokerStars ist zudem kostenlos downloadbar, falls sich jemand mal intensiever daran probieren möchte. Hier ist mein Code. Ist ja noch am Anfang aber macht ja wenig Sinn weiter zu machen, sofern derartige Probleme unklar sind. Nicht wundern, dass hier keine falschen Lösungsansätze drinstehen, macht ja keinen Sinn, wenn es nicht funktioniert.

    Code:

    Spoiler anzeigen


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>

    ;declarations
    Dim $msg, $Window_Menue, $Menue_File, $Menue_Help, $hListView, $Menue_ListView, $Button_Start, $Button_Stop, $Button_Exit, $Button_AddPlayer, $NewPlayer, $YesOrNo, $TrackingInAction = 0

    Sleep(300)
    $Window_Menue = GUICreate("ShadowTracker v1.0", 790, 340, 1000, 350)

    $Menue_File = GUICtrlCreateMenu("File")
    $Menue_File_1 = GUICtrlCreateMenuItem("Add Player", $Menue_File)
    $Menue_File_2 = GUICtrlCreateMenuItem("Delete All", $Menue_File)
    $Menue_File_3 = GUICtrlCreateMenuItem("Exit", $Menue_File)

    $Menue_Help = GUICtrlCreateMenu("Help")
    $Menue_Help_1 = GUICtrlCreateMenuItem("Support", $Menue_Help)

    $hListView = GUICtrlCreateListView("Player|Track|Live|Active Tables|Time (hours)|Last action", 130, 10, 650, 300, -1)

    $Menue_ListView = GUICtrlCreateContextMenu($hListView)
    $Menue_ListView_1 = GUICtrlCreateMenuItem("Track On/Off", $Menue_ListView)
    $Menue_ListView_2 = GUICtrlCreateMenuItem("Reset Time(hours)", $Menue_ListView)
    $Menue_ListView_3 = GUICtrlCreateMenuItem("Delete", $Menue_ListView)

    _GUICtrlListView_SetColumnWidth($hListView, 0, 150)
    _GUICtrlListView_SetColumnWidth($hListView, 1, 50)
    _GUICtrlListView_SetColumnWidth($hListView, 2, 60)
    _GUICtrlListView_SetColumnWidth($hListView, 3, 90)
    _GUICtrlListView_SetColumnWidth($hListView, 4, 100)
    _GUICtrlListView_SetColumnWidth($hListView, 5, 195)

    $Button_Start = GUICtrlCreateButton("Start Tracking", 10, 10, 100, 20)
    $Button_Stop = GUICtrlCreateButton("Stop Tracking", 10, 40, 100, 20)
    $Button_Exit = GUICtrlCreateButton("Close", 10, 290, 100, 20)

    GUISetState()

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    case -3
    $YesOrNo = MsgBox(1, "Exit", "Do you want to close ShadowTracker?")
    If $YesOrNo == 1 Then
    Exit
    EndIf

    case $Button_Start
    $TrackingInAction = 1
    _CheckLobby()

    case $Menue_File_1
    $NewPlayer = InputBox("Add new Player", "Enter new players name:", "", "", 200, 120)
    GUICtrlCreateListViewItem($NewPlayer & '|' & "ON" & '|' & "" & '|' & "" & '|' & "" & '|' & "", $hListView)

    case $Menue_File_2
    _DeleteAll()

    case $Menue_File_3
    $YesOrNo = MsgBox(1, "Exit", "Do you want to close ShadowTracker?")
    If $YesOrNo == 1 Then
    Exit
    EndIf

    case $Menue_ListView_1


    case $Menue_ListView_2


    case $Menue_ListView_3
    _DeletePlayer()

    case $Button_Stop
    $TrackingInAction = 0

    case $Button_Exit
    $YesOrNo = MsgBox(1, "Exit", "Do you want to close ShadowTracker?")
    If $YesOrNo == 1 Then
    Exit
    EndIf
    EndSwitch
    WEnd


    Func _CheckLobby()
    If WinExists("PokerStars Lobby") Then
    MsgBox(0, "Client found", "Poker-Client ready", 3)
    Else
    MsgBox(0, "Client not found!", "Poker-Client not found!", 3)
    EndIf
    EndFunc


    Func _DeletePlayer()
    _GUICtrlListView_DeleteItemsSelected($hListView)
    EndFunc


    Func _DeleteAll()
    $YesOrNo = InputBox("Caution", "You are about to DELETE all Players statistics! If you want to preceed type 'YES'")
    If $YesOrNo == "YES" Then
    _GUICtrlListView_DeleteAllItems($hListView)
    MsgBox(0, "Delete complete", "All Players deleted", 5)
    EndIf
    EndFunc


    Func _TrackMode()
    EndFunc


    Das GUI könnte dann etwa so aussehen:

    Spoiler anzeigen

    ich hoffe auf eure Unterstützung!

    euer noXQses

    Wer nichts sinnvolles beizutragen hat - sollte lieber die Finger still halten. :thumbdown:

    Einmal editiert, zuletzt von noXQses (13. April 2015 um 09:08)

    • Offizieller Beitrag

    Mein Plan ist jedoch, die Suchfunktion z.B. alle 10-30 Sekunden automatisch laufen zu lassen, sodass ich meinem Freund folgen kann, sobald er z.B. in einem MultiTableTournament (MTT) zufällig auf einen anderen Tisch gesetzt wird, ohne, dass ich erneut manuell nach ihm suchen muss. Also absolut nichts verbotenes!


    Wirklich nicht?

    5. VERBOTENE NUTZUNGEN

    • ....
    • 5.6 AUTOMATISCHE SPIELER (BOTS). Die Nutzung künstlicher Intelligenz - einschließlich, jedoch nicht begrenzt auf, "Robots" - ist in Verbindung mit der Dienstleistung strengstens verboten. Alle Handlungen, welche ein Nutzer in Bezug auf die Dienstleistung vornimmt, müssen von den Spielern persönlich über die Benutzeroberfläche vorgenommen werden, welche durch die Nutzung der Software zugänglich ist.
  • Ich glaube wenn man es aus dieser Sicht betrachtet ist fast nichts mehr legal. Siehe Windows Datenschuterklärungen und Nutzungsbedingungen von jedem Programm/Browser das wir heutzutage nutzen ;) Sicherheitsklauseln müssen dennoch vorhanden sein, um sich vor etwaigen Bedrohungen abzusichern, was ja verständlich ist. Dennoch gibt es so etwas wie eine Grauzone.

    Nichtsdestotrotz kenn ich mich sehr gut aus mit PokerStars und kann dir versichern, dass es ziemlich viel Pokersoftware gibt, die einem sogar beim Pokern ganze Huds an den Tisch zaubern um seine Gegner besser schlagen zu können. Ich sag nur Pokertracker4, HoldemManager und Coffeehud. Alles übrigens völlig legal und von PokerStars und allen anderen Pokerseiten im netz offiziell zugelassen. Wenn ich es nicht sicher wüsste, würde ich "Also absolut nichts verbotenes!" bestimmt nicht so daherposten! Kannst ihnen gerne mal ne mail schicken und fragen. Die haben übrigens den besten Support den man im www finden kann. Da hättest du in spätestens 30minuten den Beweis.

    Hoffe nun, du informierst dich etwas genauer anstatt die erstbeste Regel rauszusuchen die dagegenspricht und dich damit direkt zufrieden zu geben. Hoffe auch, dass andere sich davon jetzt nicht abschrecken lassen und meinen Post, der mich locker 1 Std gekostet hat ignorieren. Ich programmiere ja keine Pokerbots die für mich spielen, oder sharkystrator, huds, autoregister oder sonstirgendwelche finanziell bereichernden oder schädigenden Scripts! Es ist lediglich ein Erleichterungstool, sowie ein Login- oder Installations-Script an dem ich meine Freude habe, ebenso wie die Herausforderung etwas zu erschaffen!

    Trotzdem Danke für's lesen und kritisch sein. Aber weniger A****loch-Modus wäre nice <3

    Wer nichts sinnvolles beizutragen hat - sollte lieber die Finger still halten. :thumbdown:

    • Offizieller Beitrag

    Aber weniger A****loch-Modus wäre nice


    Bei jedem Post, der Automatisierungen in Bezug mit einer Software/einer Website zum Inhalt hat, werfe ich einen Blick in die AGB des Anbieters. Und das aus gutem Grund. Du hast unsere Forenregeln gelesen? Dann wird der Bezug klar.
    Persönlich sehe ich in deinem Vorhaben auch kein großes Problem. Aber der explizite Hinweis in den Nutzungsbedingungen schließt ein solches Vorgehen defacto aus. Deshalb mein Hinweis.

    Vorschlag zu einer Win-Win-Situation:
    Da bei PS solch top Support besteht, lass dir doch einfach bestätigen, dass dein Vorhaben von PS nicht als Verstoß gegen die Nutzungsbedingungen gesehen wird. Dann kann man auch guten Gewissens hier Unterstützung anbieten.

    P.S. Manchmal muss ich auch A****loch sein, das bringt der Job als Mod so mit sich. ;)

  • Ich kenne die Regeln in diesem Forum. Ich bin bin dessen sogar so sehr bewusst, dass ich von vornerein überlegte ob ich es hier oder lieber in einem anderen Forum posten sollte. Dachte mir nur, dass ich hier auf der sicheren Seite bin. Kenne aber auch unsere Mods hier, die auf solche Anfragen sehr gerne so reagieren. Alles was ich wollte war ein Wink mit dem Zaunpfahl oder ein Tipp in die richtige Richtung, sofern jemand eine kennt.

    Aber gut, werde mal zur Belustigung den Support anschreiben und nachfragen ob ich ihre Nutzungsbedingunen brechen darf :P

    Wer nichts sinnvolles beizutragen hat - sollte lieber die Finger still halten. :thumbdown:

  • Sprich du hast wissentlich und in voller Absicht gegen die Forenregeln verstoßen.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Och ich würde jetzt nicht sagen, dass so nur die Mods hier reagieren. Du hast seid du dich angemeldet hast genau die 8 Beiträge aus diesem Thread geschrieben (wobei ich vermute, dass es durchaus noch andere gegeben haben könnte, die einfach allesamt gelöscht wurden) und behauptest bereits zu wissen, wie hier jeder Tickt? Also entschuldige mich wenn ich wie von dir erwartet nun mal herzhaft lachen muss :D:D:D .

    Das Problem sind nicht die heiklen Mods hier sondern die Nutzer, die obwohl sie ihren Angaben nach die Regeln gelesen haben schlicht unfähig sind, diese auch zu befolgen.
    Wie bereits deutlich Zitiert wurde, handelt es sich hier um eine verbotene Aktion, finito.
    Der einzige Tipp den du hier erhalten wirst ist: "Lass es".

    Aber schreib ruhig doch mal den Support an...die werden dir sicher mit FREUDEN einen weiteren A-Tritt geben :D

    Bild1: Ich beim debuggen

  • Dachte mir nur, dass ich hier auf der sicheren Seite bin.

    Hab es bisher etwa 3 mal deutlich gemacht. Wie oft muss ich mich denn noch wiederholen? Langsam komm ich mir hier vor wie bei ner Hexenjagd! Interessiert das Programmiertechnische an meinem Post hier niemanden? Ich iab mir seit 14 Stunden AutoIT beigebracht, von arrays über .inis bis hin zur GUI und menus und jetzt raubt ihr mir mehr Zeit damit mich rechtfertigen zu müssen als es Hilft hier gepostet zu haben...obv Fehlentscheidung. Allerdings kann man den Paragraphen auch mal genau unter die Lupe nehmen:

    • 5.6 AUTOMATISCHE SPIELER (BOTS). Die Nutzung künstlicher Intelligenz - einschließlich, jedoch nicht begrenzt auf, "Robots" - ist in Verbindung mit der Dienstleistung strengstens verboten. Alle Handlungen, welche ein Nutzer in Bezug auf die Dienstleistung vornimmt, müssen von den Spielern persönlich über die Benutzeroberfläche vorgenommen werden, welche durch die Nutzung der Software zugänglich ist.

    Zuersteinmal sieht man, dass die Richtlinien sich bei der Überschrift schon besonders auf AUTOMATISCHE SPIELER (Bots) bezieht, womit offensichtlich Bots gemeint sind, welche für den Benutzer, anstatt seiner sebst, spielen. Hier heist es auch "..., welche durch die Nutzung der Software zugänglich ist." Was deutlich zum Ausdruck bringt, dass nur von PokerStars bereitsgestellte Funktionen und Programme benutzt werden dürfen. Und das tun wir ja auch. Wir automatisieren sie bloß für eine leichtere Bedienung. Und ja, dort steht auch "persönlich über die Benutzeroberfläche vorgenommen". Und würde es nicht dort stehe, wäre ja alles erlaubt. Aber wie gesagt. Es gibt unzählige Programme, welche offiziell oder zumindest inoffiziell von Pokerseiten akzeptiert werden und die brechen diese Bedingungen definitiv!

    Wie auch immer. Ich sage ja nicht, dass ihr unrecht habt. Ich kenne mich offensichtlich einfach nur besser aus. Werde jetzt noch die PokerStars Support-Antwort abwarten und hier posten. Dann könnt ihr noch drüber lachen und ich seh mich woanders nach Hilfe um oder ihr belohnt meinen Einsatz mit ein paar guten Ideen zur Problembehebung.

    Wer nichts sinnvolles beizutragen hat - sollte lieber die Finger still halten. :thumbdown:

  • @Kaboom: Deine Vermutungen zu meiner Vergangenheit in diesem Forum ist falsch und hat hier absolut nichts verloren. Das ist respektlos gegenüber meiner Person, die du nicht kennst und noch mehr gegenüber meiner Arbeit und Zeit die ich für diesen Thread aufgewandt habe. Wenn dir langweilig ist schreib dir lieber was eigenes. Kann die gelangweilten Skriftkiddies nicht verstehen, die durch Hilfe-foren streifen nur um letzenendes alles zu wiederholen, nur um auch mal was sagen zu dürfen.
    Ich bin sehr wohl in der Lage die Regel zu befolgen, da ich mich mit reinem Wissen und Gewissen dafür entschieden habe das richtige zu tun. Wollen wir wetten, dass wenn ich nur stark genug suche, auch einen Grund finde, wieso jeder hier in diesem Forum schon mindestens einmal die Regeln gebrochen hat?! Sparen wir uns den Zickenkrieg und warten auf die Antwort von PS.

    Wer nichts sinnvolles beizutragen hat - sollte lieber die Finger still halten. :thumbdown:

    • Offizieller Beitrag

    Allerdings kann man den Paragraphen auch mal genau unter die Lupe nehmen:

    Deshalb mein Angebot, dass du Klarheit über Kontakt zum PS Support herstellst. Was ist an dem Vorschlag falsch?
    Wenn die Lesart hier tatsächlich unterschiedlich ist, liegt doch nichts näher als Eindeutigkeit zu schaffen. Und ich habe absolut kein Problem damit eine Entscheidung zu korrigieren.

    Wir haben in der Vergangenheit oft Probleme mit deutlichen Regelverstößen gehabt. Das hat natürlich zu einer Sensibilisierung für dieses Themas bei allen Usern geführt. Sei also bitte nicht zu dünnhäutig, wenn hier etwas emotionale Äußerungen aufkommen.

    Bitte hab Verständnis, dass ich den Thread vorerst schließe, bis die Einverständniserklärung vom PS Support vorliegt. (per PN/Mail an mich oder anderen Mod)
    Das bewahrt dich auch vor eventuellen weiteren emotionalen Posts.


    EDIT:

    Die Rückmeldung vom Support liegt nun vor:

    Spoiler anzeigen

    Somit steht einer Hilfestellung nichts im Wege, das Thema ist wieder offen.