League of Legends ingame Chat

  • Du stellst dir das zu einfach vor. Du musst eine DLL in den Prozess injizieren, und das geht nur mit statischen DLLs. Die .NET DLLs funktionieren da, da diese keinen ausführbaren Code enthalten sondern nur diesen ByteCode-Interpreter-Krams.


    Ist die DLL einmal im Prozess injiziert, arbeitet sie alleine. Sie gehört quasi zum Prozess (League of Legends.exe). Du musst der DLL nur sagen, was sie tun soll und das geht, wie dongdong schon sagte, über einen Socket oder ne Pipe.


    Erzähl mal was du sonst noch so vorhast. Nur Chat-Nachrichten senden klingt nicht spektakulär genug^^


    Gruß
    florian0

  • Naja okay, dann veröffentliche ich mal meine ganze Idee... :D


    Ich lese aus den LoL Logs alle Player namen die im Spiel vorhanden sind aus.
    Dann gehe ich auf LoLking.net suche die entsprechenden Elo werte mit den Wins und Losses. (funktioniert alles komplett schon)


    Dann sollen die Spieler namen mit der Elo im Chat geschrieben werden im format:




    florian0: dongdong spielt Rayze Top Elo: 1530 aktuelle Elo: 1378 wins: 142 losses: 234
    Awesome spielt Kayle Top Elo: 340 aktuelle Elo: 10 wins: 1 losses: 2222

  • Wenn es nur das ist, und während dem Spiel keinerlei weitere Daten ausgegeben werden sollen, dann kann man diese Infos auch in ne Textdatei legen und diese dann von der injizierten DLL auslesen lassen. Danach braucht die DLL ja nichtsmehr tun, sie muss eben nur zur richtigen Zeit injected werden (nach Spielbeginn, oder vorher und dann eben zur richtigen Zeit selbstständig "handelt".


    Gruß
    florian0

  • Also willst du zb wenn man !player1 ne kleine info über den player1 in den chat geschrieben bekommen?

    Ja so ca.

    Wenn es nur das ist, und während dem Spiel keinerlei weitere Daten ausgegeben werden sollen, dann kann man diese Infos auch in ne Textdatei legen und diese dann von der injizierten DLL auslesen lassen. Danach braucht die DLL ja nichtsmehr tun, sie muss eben nur zur richtigen Zeit injected werden (nach Spielbeginn, oder vorher und dann eben zur richtigen Zeit selbstständig "handelt".


    Gruß
    florian0

    Können wir so machen. Ist nicht ganz schön aber funktioniert.
    Machst du das mit einem FileSystemWatcher das er jeder textdatei nimmt die neu hinzugefügt wird (Also brauchst du nen ordner indem alle textdaten reinkommen)? Das wäre am einfachsten denke ich.

  • So dachte ich das eigentlicht nicht. Ich dachte du legst die Daten in ner Textdatei ab und injectest dann die DLL. Die DLL liest die Textdatei aus und schreibt den Kram in den Chat.


    Danach hast du eben keinen Zugriff mehr auf die DLL und kannst danach nichts mehr ausgeben. Wenn du das willst, ist die Socketlösung die bessere.


    Gruß
    florian0

  • Selbstverständlich, die DLL injected sich nicht von selbst

    Naja, hatte da auch gerade was falsches im Kopf... Dachte man könne die DLL einmal injecten und die DLL überprüft selber ob neuer text kommt mit einem FileSystemWather o.ä.


    Aber da der Process nach jedem Game sowieso weg ist, also auch die DLL, muss sie sowieso neu geladen werden.

  • Selbstverständlich, die DLL injected sich nicht von selbst :P

    Wenn man sie bei AppInit einträgt schon ;)
    Aber die DLL jedes mal neu zu injecten ist wohl das kleinste Problem.


    wie wäre es mit ner dll die du in den launcher machst und diese dll läd bei jedem game die 1. dll in den client?

    Das wäre dann der oben erwähnte FlashHook ... Der AirClient ist in ActionScript geschrieben, ka ob man da was hooken kann.

  • Wenn man sie bei AppInit einträgt schon ;)


    Ich wollte schon "in der Regel" dabei schreiben, hab gewusst das jmd. mit sowas kommt ;D



    Das wäre dann der oben erwähnte FlashHook ... Der AirClient ist in ActionScript geschrieben, ka ob man da was hooken kann.


    Ich vermute mal intern wird da auch irgendwo die WinApi zum starten eines Prozesses aufgerufen und die WinApi kann man immer hooken. :)

  • Hey,
    falls noch einer dran arbeitet:


    Sollte nach Updates weiterhin funktionieren.