Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Auslesen des Chatlogs


  • Please log in to reply
7 replies to this topic
Lanzo
  • Members
  • 3 posts
  • Last active: Feb 09 2013 09:43 AM
  • Joined: 08 Feb 2013

Hallo,

ich arbeite zur Zeit öfters an einem Keybinder für SAMP, ich habe die API und arbeite eben mit Autohotkey.

Ich möchte das der Chatlog ausgelesen wird "deine Reload-Time ist nun 15 Minuten." und daraufhin

AddChatMessage Timer gestartet

dann sollte ein Timer von 15 Minuten runterzählen also "900000"

und danach wieder

AddChatMessage "Du kannst nun wieder ein Auto verticken"

 

Ich hoffe ihr könnt mir helfen

MfG 



ripper121
  • Members
  • 114 posts
  • Last active: Jan 16 2014 11:06 AM
  • Joined: 01 Nov 2012

wo wird der denn gespeichert der chatlog? In einer datei oder wo?


Ripper121 aka Ripp3r]D3[
Deutsches (original) Forum: Seit: 11.11.2007 Beiträge: 1912
ripper.gif
Top-10 German


Lanzo
  • Members
  • 3 posts
  • Last active: Feb 09 2013 09:43 AM
  • Joined: 08 Feb 2013

In einer .txt

C:\Users\Dominik\Documents\GTA San Andreas User Files\SAMP\chatlog.txt



SAPlayer
  • Members
  • 403 posts
  • Last active: Apr 11 2014 04:45 PM
  • Joined: 06 Nov 2012

So sollte es funktionieren (mal wieder ungetestet):

GetChatLine(Line, ByRef Output, timestamp=0, color=0){ ;Funktion, recht weit oben hin
	chatindex := 0
	FileRead, file, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
	loop, Parse, file, `n, `r
	{
		if(A_LoopField)
			chatindex := A_Index
	}
	loop, Parse, file, `n, `r
	{
		if(A_Index = chatindex - line){
			output := A_LoopField
			break
		}
	}
	file := ""
	if(!timestamp)
		output := RegExReplace(output, "U)^\[\d{2}:\d{2}:\d{2}\]")
	if(!color)
		output := RegExReplace(output, "Ui)\{[a-f0-9]{6}\}")
	return
}

SetTimer, CheckCar, 500 ;vor das erste return!
return

CheckCar:
if(!WinActive("GTA:SA:MP"))
  return
GetChatLine(0, chat)
if(InStr(chat, "deine Reload-Time ist nun 15 Minuten.")){
  SetTimer, CarSell, -900000
  AddChatMessage(0xFF6600, "Timer gestartet")
}
return
CarSell:
if(WinActive("GTA:SA:MP"))
  AddChatMessage(0xFF6600, "Du kannst nun wieder ein Auto verticken")
else
  MsgBox, Du kannst nun wieder ein Auto verticken


ripper121
  • Members
  • 114 posts
  • Last active: Jan 16 2014 11:06 AM
  • Joined: 01 Nov 2012

Test mal das:

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
Loop, read, C:\Users\Dominik\Documents\GTA San Andreas User Files\SAMP\chatlog.txt
{
  Needle = deine Reload-Time ist nun 15 Minuten.
  IfInString, A_LoopReadLine, %Needle%
  {
    MsgBox, The string %A_LoopReadLine% was found @ Line %A_Index%
  }
}
return


Ripper121 aka Ripp3r]D3[
Deutsches (original) Forum: Seit: 11.11.2007 Beiträge: 1912
ripper.gif
Top-10 German


Lanzo
  • Members
  • 3 posts
  • Last active: Feb 09 2013 09:43 AM
  • Joined: 08 Feb 2013

So sollte es funktionieren (mal wieder ungetestet):

GetChatLine(Line, ByRef Output, timestamp=0, color=0){ ;Funktion, recht weit oben hin
	chatindex := 0
	FileRead, file, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
	loop, Parse, file, `n, `r
	{
		if(A_LoopField)
			chatindex := A_Index
	}
	loop, Parse, file, `n, `r
	{
		if(A_Index = chatindex - line){
			output := A_LoopField
			break
		}
	}
	file := ""
	if(!timestamp)
		output := RegExReplace(output, "U)^\[\d{2}:\d{2}:\d{2}\]")
	if(!color)
		output := RegExReplace(output, "Ui)\{[a-f0-9]{6}\}")
	return
}

SetTimer, CheckCar, 500 ;vor das erste return!
return

CheckCar:
if(!WinActive("GTA:SA:MP"))
  return
GetChatLine(0, chat)
if(InStr(chat, "deine Reload-Time ist nun 15 Minuten.")){
  SetTimer, CarSell, -900000
  AddChatMessage(0xFF6600, "Timer gestartet")
}
return
CarSell:
if(WinActive("GTA:SA:MP"))
  AddChatMessage(0xFF6600, "Du kannst nun wieder ein Auto verticken")
else
  MsgBox, Du kannst nun wieder ein Auto verticken

Duplicate function definiton " GetChatLine irgendwas"



ripper121
  • Members
  • 114 posts
  • Last active: Jan 16 2014 11:06 AM
  • Joined: 01 Nov 2012

screnshot vom fehler machen


Ripper121 aka Ripp3r]D3[
Deutsches (original) Forum: Seit: 11.11.2007 Beiträge: 1912
ripper.gif
Top-10 German


SAPlayer
  • Members
  • 403 posts
  • Last active: Apr 11 2014 04:45 PM
  • Joined: 06 Nov 2012

Dann lass meine Funktion raus und nutze die API-Funktion - die funktioniert genauso.