Autohotkey || Zahl aus einer Chat-Nachricht auslesen/rauskopieren

  • Hey Community,


    Wie kann ich bei diesem Text: "Ernten 1.64$" nur die Zahl auslesen?
    Bei dieser API: https://github.com/paul-phoenix/SAMP-UDF-for-AutoHotKey


    Bisheriger Code:


    Danke <3

  • @malE Ich habe es jetzt so:

    Jetzt passiert nichts, außer wenn ich einen Dialog o. den Chat öffne kommt ein GameText ("test") (was auch korrekt ist)
    :( Aber danke! :)

  • Danke @malE funktioniert <3
    Ich hätte jetzt noch zwei Fragen:


    1: Wie kann ich es so einstellen, dass wenn ich jetzt "1" drücke, trotzdem z.B in Dialogen
    oder im Chatfenster es gesendet wird? - Derzeit, wenn ich "1" drücke, passiert nichts, außer
    dass die Funktion von Autohotkey ausgeführt wird. :/ - Das finde ich schade.


    2: Wie mache ich es am besten, alle "Ernten ZAHL$" zu addieren & irgendwo auszugeben?
    Kann ja auch mit .ini-Dateien/.txt Dateien gehen, oder?


    Derzeitiger Code:

  • Die Frage ist, ob du die Nachricht bei einem Tastendruck oder regelmäßig und automatisch auslesen willst. Wenn automatisch, musst du einen Timer setzen.

    Bei InStr passt du den String eben an deine Bedürfnisse an, er sollte ja möglichst nur bei der Server-Nachricht ausgelöst werden und nicht, wenn irgendjemand einfach "Ernten" in den Chat schreibt.


    Für 2. benutzt du am besten "Ernten (\d+)\.(\d+)\$" als Needle und kannst dann mit result1 (Dollar) und result2 (Cents) rechnen. Wenn du das ganze auch im Chat oder im Dialog verwenden willst, nimmst du einfach isInChat raus.

  • @malE @Madd92 @Hybris Ich hab' das ganze nicht wirklich durchdacht. :/
    Nochmal neu: Ich möchte' machen, dass wenn bei jeder Message mit z.B "Ernten 1.64$" oder
    "Ernten 0.42$" das Geld (in dem Fall "1.64$" & "0.42$") "geloggt" wird z.B in einer TXT-Datei
    und auf Tastendruck alles addiert + ausgegeben wird. :) - Ich hoffe, dass mir da jemand helfen kann. :/

    Einmal editiert, zuletzt von Impressiv_ ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Soll das Geld gespeichert werden, wenn der Keybinder beendet wird, oder warum eine TXT-Datei? Ansonsten wie gesagt, mit SetTimer:

    Die Variable ernte könntest du natürlich noch in eine Datei speichern. Das Problem dabei ist allerdings, dass eine gleiche Zeile immer wieder ausgelesen würde, wenn keine neue Zeile dazukommt. Daher ist getChatLine hier nur bedingt geeignet, du könntest allerdings nach jedem Auslesen AddChatMessage aufrufen und eine Nachricht in den Chat schreiben lassen (Zeile 16), sodass die Ernte-Nachricht nicht mehr die neueste ist. Allerdings kann es auch passieren, dass eine Zeile nicht ausgelesen wird, weil z.B. Nachrichten sehr schnell hintereinander in den Chat geschrieben werden.

  • Naja, die "Log-Datei" soll nur für die jetzige Sitzung verfügbar sein. Sollte
    das Programm beendet werden, wird die "Log-Datei" gelöscht. :) - Wenn es auch ohne "Log-Datei" geht,
    bitte sagen :D


    Ansonsten halt oben mein Post:


    @malE geloggt werden muss es nicht. - Hauptsache, ich kann es irgendwie aufrufen/auslesen & "rechnen".
    Jedoch, hatte ich vor, es auch in einem Dialog zu "loggen" wie viel ich bzw. man bekommen hat.
    Dafür wird man es per TXT o.Ä loggen, oder?

  • @Madd92 Ok. Danke! :) - Jedoch weiß ich nicht wie ich das jetzt machen soll :D
    Ich möchte alle Rechnungen bzw. alle "0.64", "0.58$" blabla in einem
    Dialog "loggen" & auf Tastendruck alles addieren & per AddChatMessage
    ausgeben.



    Ich schau mir gleich deinen Code oben an. Jedoch wie gesagt, ich möchte es
    ohne einen Timer haben. - Alle "Ernten ZAHL$" "merken" & auf Tastendruck dann
    in einem Dialog ausgeben lassen. (ich wiederhole mich gerade, ich weiß xD)

  • Ohne Timer funktioniert es nicht, wenn ich dich richtig verstanden habe. Du willst ja, dass es automatisch passiert? Die andere Möglichkeit wäre nur, das gesamte Chatlog auszulesen.
    Und möchtest du jeden einzelnen Betrag extra speichern, sodass du sie auflisten könntest?

  • Wenn du es nebenbei mitloggen willst, ohne selber was zu drücken o.ä. brauchst du einen Timer. Wenn du immer das gesamte Chatlog auslesen würdest, wäre das 1. nach einiger Zeit relativ aufwendig und würde immer länger dauern, und 2. würde ein Neustart des Keybinders immer noch das gesamte Chatlog auslesen. Das mit dem einzeln speichern kannst du ja einfach in einem Array machen.^