1 (изменено: besmojio4b, 2018-11-01 23:21:24)

Тема: На счёт считывания текстового файла.

Имеется вот такой вот код:

#Include, Udf.ahk
File := % A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt"
player := getClosestPlayerId()
:?:/lames::
Loop, Read, %File%
if(player != "-1")
{
RegExMatch(A_LoopReadLine, "Жалоба от [^/]* \[ID (\d+)[^/]* \Q" player "\E", rid)
sleep, 100
SendInput, {F6}/ames %rid1%{space}
}
else
{
addChatMessageEx("{FF0000}", "Ошибка: {E6E6FA}На текущего игрока не поступало жалоб.")
}
return

Работает всё не так, как хотелось бы, он должен найти ближайшего игрока, а именно его ид, и проверить в чатлоге, есть ли жалоба на этого игрока.
Так вот, работает всё как надо, но реагирует только на строки, которые вначале текстового файла, а нужно, чтобы считывалось с конца.

2 (изменено: Phoenixxx_Czar, 2018-11-03 19:59:58)

Re: На счёт считывания текстового файла.

#Include, Udf.ahk
File := A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt"

:?:/lames::
player := getClosestPlayerId()
if (player == -1)
{
	addChatMessageEx("FF0000", "Ошибка: {E6E6FA}Рядом никого нет.")
	return
}
find := 0
Loop, Read, % File
{
	if (RegExMatch(A_LoopReadLine, "Жалоба от [^/]* \[ID (\d+)[^/]* \Q" player "\E", rid))
		find := 1, id := rid1
}
if (find)
		SendInput, % "{F6}/ames " id "{space}"
else
	addChatMessageEx("FF0000", "Ошибка: {E6E6FA}На текущего игрока не поступало жалоб.")
return
Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

3

Re: На счёт считывания текстового файла.

А вообще я бы советовал сделать  нормальную регулярку..

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)