Page 1 of 1

Minecraft Chat auslesen

Posted: 14 May 2019, 16:19
by StrikerLK
Guten Tag,
mein Ziel ist es, ein Script zu schreiben, was den Minecraft Chat ausliest und wenn Signalwörter vorkommen darauf reagiert.
Jedoch ist mein Problem, dass ich nicht genau weiß, wie ich den Minecraft Chat auslesen soll. Ich hatte mal im Internet etwas geguckt und bin dort auf ein Beitrag gestoßen, wo geschrieben steht, man muss eine geeignete API.dll + API.ahk downloaden und kann dann mit Befehlen wie GetChatLine den Chat auslesen. Jedoch weiß ich weder ob dies noch funktioniert, noch woher man diese Datei bekommt. Von daher wollte ich fragen, von wo man diese Dateien bekommt und falls dies nicht mehr klappt, wie ich es sonst machen kann?

Würde mich sehr über eine Antwort freuen.

Mit freundlichen Grüßen
StrikerLK

Re: Minecraft Chat auslesen

Posted: 17 May 2019, 08:36
by Scr1pter
Hi,

hast du Zugriff auf die Chatdatei?
Ich weiß nicht, was die von dir erwähnten Skripte tun,
aber du könntest mit AHK ganz einfach den Inhalt einer Textdatei einlesen und auswerten.

Wenn es um Live-Chat geht, müsste dieser ja auch in einer Datei protokolliert werden.
Soll das Skript dann dauerhaft laufen und somit den Chat prüfen?

Grüße

Re: Minecraft Chat auslesen

Posted: 22 May 2019, 05:34
by Guest
Hallo,
erstmal Schuldigung für meine späte Antwort und es sieht derzeit so aus:

Ich habe heraus gefunden, dass ich den Minecraft Chat über den Log auslesen kann.
Dazu habe ich jetzt eingestellt, dass der Log immer automatisch aktualisiert wird.
Es gibt zwar eine leichte Verzögerung, aber das sollte kein Problem sein.
Jedoch wollte ich dann versuchen, den Log auszulesen, aber immer wenn ich den Key betätige,
öffnet sich nur eine MsgBox mit keinem Inhalt.

Wo ist der Fehler?

Code: Select all

1::
FileRead, Text, C:Users\StrikerLK\AppData\Roaming\.minecraft\logs\latest.log
msgbox %Text%
Liebe Grüße
StrikerLK

Re: Minecraft Chat auslesen

Posted: 22 May 2019, 14:26
by Scr1pter
Vielleicht ist die Datei zu groß für eine MessageBox?
Du kannst ja erstmal versuchen, die Datei einfach zu öffnen.
(Leg vorher fest, dass log-Dateien z.B. mit Notepad geöffnet werden sollen.,)

Danach entweder normal über Run oder FileOpen.
Vielleicht kannst du sie auch in Word öffnen und bestimmte Wörter markieren lassen.

Grüße

Re: Minecraft Chat auslesen

Posted: 23 May 2019, 01:30
by nnnik
Ich würde mir erstmal den Inhalt von Errorlevel nach dem FileRead ansehen. Es kann z. B. sein das Minecraft grade was in die log Datei schreibt.

Re: Minecraft Chat auslesen

Posted: 23 May 2019, 12:53
by StrikerLK
Also, erstmal habe ich getestet, ob ich die Datei einfach mit Run öffnen kann, was geklappt hat.
Danach habe ich einfach mal ErrorLevel eingebaut, wo eine eins raus kam und damit mir gezeigt hat, es gibt ein Fehler.
Doch wo liegt der Fehler?

Code: Select all

1::
FileRead, Text, C:Users\StrikerLK\AppData\Roaming\.minecraft\logs\latest.log
MsgBox, %ErrorLevel%
return

Re: Minecraft Chat auslesen

Posted: 23 May 2019, 13:22
by gregster
1 heißt, dass die Datei nicht existiert bzw nicht gefunden wurde. Ich nehme stark an, es liegt am fehlenden \ :

C:\Users\StrikerLK\...

Re: Minecraft Chat auslesen

Posted: 23 May 2019, 14:38
by StrikerLK
Ich habe das Slash hinzugefügt und jetzt funktioniert es.
Außerdem kann ich jetzt auch, wenn bestimmte Wörter drinnen vorkommen, darauf automatisch reagieren.
Doch wie schaffe ich es jetzt, dass immer nur die Wörter auf der letzten Zeile vom Log kontrolliert werden?
Was auch nur einmal passieren soll, bis es wieder eine neue letzte Zeile gibt.

Re: Minecraft Chat auslesen

Posted: 23 May 2019, 16:52
by Ragnar

Code: Select all

#Persistent

file := FileOpen("C:\Users\StrikerLK\AppData\Roaming\.minecraft\logs\latest.log", "r")
pos := file.Length
SetTimer, Log_Read, 100
return

Log_Read:
file.Seek(pos)       ; Move file pointer to new position
lines := file.Read() ; Get new lines
pos := file.Pos      ; Get new file pointer position
Loop, Parse, lines, `n, `r
{
  if not A_LoopField ; Skip blank lines
    continue
  
  ToolTip % A_LoopField
  
  ; if InStr(A_LoopField, "keyword")
	; Do things
}
return
Eine performante Methode, die ich häufig zum Auslesen von LOG-Dateien verwendet habe. Sollte relativ zuverlässig sein. Sprich, es werden keine Zeilen ausgelassen oder doppelt ausgewertet.

Re: Minecraft Chat auslesen

Posted: 24 May 2019, 16:49
by StrikerLK
Ich muss ehrlich sagen, ich habe noch nicht ganz verstanden wie der Code funktioniert, aber es klappt super.
Jetzt muss ich nur noch zwei Sachen ergänzen.

Die erste Sache wäre es, ob es auch möglich ist, das Signalwort auf die passende Farbe zu überprüfen.
Also das immer nur reagiert wird, wenn das Wort grün ist.

Re: Minecraft Chat auslesen

Posted: 24 May 2019, 23:39
by gregster
Ich wäre verwundert, wenn die log-Datei Formatierungen wie Schriftfarbe speichern würde (obwohl es schon möglich wäre). Ich nehme an, dass die Schriftfarbe vom Minecraft-Chat gesetzt wird... für bestimmte Wörter - wahrscheinlich imer die gleichen, die man dann per Skript identifizieren könnte? Dafür enthält Ragnars Code ja schon (bislang auskommentierten) Beispielcode... ; if InStr(A_LoopField, "keyword") [...]

Oder wie muss man sich eine typische Zeile mit einem grünen Wort in der log-Datei vorstellen? Wie sind grüne Wörter dort markiert?
Tu einfach so, als hätte ich das Spiel noch nie gespielt und noch nie einen Minecraft-Chat gesehen (zumindest nicht bewusst)... :D

Re: Minecraft Chat auslesen

Posted: 26 May 2019, 14:25
by StrikerLK
Okay, ich versuche das ganze mal zu beschreiben:

Um eine Nachricht in Farbe zu schreiben, muss man ein & und dann ein Farbcode vor der eigentlichen Nachricht angeben.
Zum Beispiel:
&a - grün
&6 - orange
1.PNG
1.PNG (1.14 KiB) Viewed 1114 times
Und wenn man dann die Nachricht absendet, sieht es so aus:
2.PNG
2.PNG (534 Bytes) Viewed 1114 times
Jedoch sieht man im Log nur folgendes:
3.PNG
3.PNG (1.15 KiB) Viewed 1114 times
Und jetzt ist die Frage, ob man das irgendwie bei Notepad++ umstellen kann, dass die Farbcodes angezeigt werden oder ob man irgendwie anders die Farbe des bestimmten Wortes überprüfen kann?

Re: Minecraft Chat auslesen

Posted: 26 May 2019, 15:05
by gregster
Das sieht nicht aus als würde die Farbformatierung überhaupt im Log gespeichert.

Re: Minecraft Chat auslesen

Posted: 13 Jun 2019, 06:43
by Folllast
Ich hab damals mal angefangen für den GTA SA - Multiplayer eine Erkennung für die Payday-Aufforderung zu schreiben.
Ich habe versucht mit wenigen Markanten punkten (PixelSearch oder PixelGetColor) das Payday-Wort zu finden. Wenn es dann gefunden wurde, wurde mit der selben Methode versucht, die Zahlen danach zu erkennen. Das Ganze ist dann daran gescheitert, dass ich mit dem verfügbaren Maß an Fleiß keine stabile und performante Lösung hinbekommen habe. Hauptproblem hierbei war, dann auch, die Zahlen danach zu entziffern. Aber ich bin immernoch davon überzeugt, dass das eigentlich nicht so schwer ist.

Re: Minecraft Chat auslesen

Posted: 13 Jun 2019, 07:29
by nnnik
Es gibt für die Texterkennung sogenannte OCR Programme die das für dich machen. Wenn du dir so eins suchst wird das ganze eventuell um einiges leichte für dich.
In Minecraft würde man für die meisten Dinge mit der eingebauten Skriptsprache arbeiten.
Weiterhin gibt es die Möglichkeit die Serversoftware ziemlich leicht um mods zu erweitern.
Manche dieser mods bieten ihre eigenen eingebauten Sprachen an um das Spiel zu modifizieren.