Minecraft Chat auslesen

Stelle Fragen zur Automatisierung von Spielen

Moderator: jNizM

StrikerLK
Posts: 5
Joined: 13 May 2019, 18:15

Minecraft Chat auslesen

14 May 2019, 16:19

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
Last edited by BoBo on 31 May 2020, 11:45, edited 1 time in total.
Reason: Nach Spiele-Sektion verschoben.
User avatar
Scr1pter
Posts: 1271
Joined: 06 Aug 2017, 08:21
Location: Germany

Re: Minecraft Chat auslesen

17 May 2019, 08:36

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
Guest

Re: Minecraft Chat auslesen

22 May 2019, 05:34

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
User avatar
Scr1pter
Posts: 1271
Joined: 06 Aug 2017, 08:21
Location: Germany

Re: Minecraft Chat auslesen

22 May 2019, 14:26

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
Please use [code][/code] when posting code!
Keyboard: Logitech G PRO - Mouse: Logitech G502 LS - OS: Windows 10 Pro 64 Bit - AHK version: 1.1.33.09
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Minecraft Chat auslesen

23 May 2019, 01:30

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.
Recommends AHK Studio
StrikerLK
Posts: 5
Joined: 13 May 2019, 18:15

Re: Minecraft Chat auslesen

23 May 2019, 12:53

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
gregster
Posts: 8921
Joined: 30 Sep 2013, 06:48

Re: Minecraft Chat auslesen

23 May 2019, 13:22

1 heißt, dass die Datei nicht existiert bzw nicht gefunden wurde. Ich nehme stark an, es liegt am fehlenden \ :

C:\Users\StrikerLK\...
StrikerLK
Posts: 5
Joined: 13 May 2019, 18:15

Re: Minecraft Chat auslesen

23 May 2019, 14:38

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.
User avatar
Ragnar
Posts: 611
Joined: 30 Sep 2013, 15:25

Re: Minecraft Chat auslesen

23 May 2019, 16:52

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.
StrikerLK
Posts: 5
Joined: 13 May 2019, 18:15

Re: Minecraft Chat auslesen

24 May 2019, 16:49

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.
gregster
Posts: 8921
Joined: 30 Sep 2013, 06:48

Re: Minecraft Chat auslesen

24 May 2019, 23:39

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
StrikerLK
Posts: 5
Joined: 13 May 2019, 18:15

Re: Minecraft Chat auslesen

26 May 2019, 14:25

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 4872 times
Und wenn man dann die Nachricht absendet, sieht es so aus:
2.PNG
2.PNG (534 Bytes) Viewed 4872 times
Jedoch sieht man im Log nur folgendes:
3.PNG
3.PNG (1.15 KiB) Viewed 4872 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?
gregster
Posts: 8921
Joined: 30 Sep 2013, 06:48

Re: Minecraft Chat auslesen

26 May 2019, 15:05

Das sieht nicht aus als würde die Farbformatierung überhaupt im Log gespeichert.
Folllast
Posts: 91
Joined: 24 Jan 2018, 04:57

Re: Minecraft Chat auslesen

13 Jun 2019, 06:43

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.
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Minecraft Chat auslesen

13 Jun 2019, 07:29

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.
Recommends AHK Studio
CalledRainer
Posts: 3
Joined: 30 May 2020, 18:31

Re: Minecraft Chat auslesen

30 May 2020, 18:49

Ragnar wrote:
23 May 2019, 16:52

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.
Ich habe gerade versucht das zu verwenden, jedoch habe ich dabei 2 Probleme gehabt:
1) Ich habe ingame ständig neben dem Mauszeiger die letzte Zeile des Chatlogs, was ich nicht brauche bzw sogar ziehmlich nervig ist. Was muss man machen damit die nicht mehr angezeigt wird
2) Ich hätte gerne, dass bei erkennen des "Keywords" der Spieler 1 Block vorwärts geht, der Chat geöffnet wird, /track eingegeben wird, Enter

Wie du vielleicht schon gemerkt hast kenne ich mich kaum aus, da ich erst seit 10 tagen sachen mit AHK mache.

LG Rainer
User avatar
Ragnar
Posts: 611
Joined: 30 Sep 2013, 15:25

Re: Minecraft Chat auslesen

31 May 2020, 03:42

CalledRainer wrote: 1) Ich habe ingame ständig neben dem Mauszeiger die letzte Zeile des Chatlogs, was ich nicht brauche bzw sogar ziehmlich nervig ist. Was muss man machen damit die nicht mehr angezeigt wird
Zeile ToolTip % A_LoopField suchen und auskommentieren (; davorsetzen) oder entfernen.
2) Ich hätte gerne, dass bei erkennen des "Keywords" der Spieler 1 Block vorwärts geht, der Chat geöffnet wird, /track eingegeben wird, Enter
Kann ich dir nicht genau beantworten, weil ich Minecraft nicht spiele. Theoretisch musst du hier den Send-Befehl verwenden, der die Taste fürs Vorwärtslaufen (W? - wahrscheinlich mehrmals), die Taste fürs Chatöffnen (Enter?), "/track" und anschließend Enter sendet. Zum Beispiel: Send, {w 5}{Enter}/track{Enter}

Return to “Spiele”

Who is online

Users browsing this forum: No registered users and 18 guests