1

Тема: [SA:MP] Работа с чат-логом и с файлом с никами

Есть два файла - чатлог и список с ник-нэймами.
В чатлог для каждого вошедшего на сервер игрока выделяться строчка виду 'Player подключился к серверу'.
Нужно чтобы при входе определенных игроков из списка происходило действие, например

MsgBox, Hello world

Как это реализовать можно?

2 (изменено: belyankin12, 2017-08-02 08:54:51)

Re: [SA:MP] Работа с чат-логом и с файлом с никами

Если список игроков большой (имеется тех, кого нужно отслеживать), то могут возникнуть проблемы с пропуском зашедшего в игру игрока.. А хотя.. Есть один вариант: не искать сообщение Player подключился к серверу, а просто проверять игрока онлайн: если он не был в сети и вдруг зашел, то вуаля - он подключился на сервер. Так пойдет?

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

3 (изменено: Pplus, 2017-08-02 10:10:48)

Re: [SA:MP] Работа с чат-логом и с файлом с никами

belyankin12 Да, думаю, пойдёт

4 (изменено: belyankin12, 2017-08-02 10:34:12)

Re: [SA:MP] Работа с чат-логом и с файлом с никами

#Include путь к udf
arr := []
begin:
Loop {
	FileReadLine, line, путь к файлу с никами, %A_Index%
		If ErrorLevel
			break
		id := getplayeridbyname(line)
		if (id >= 0) and (id <= 999) {
			var := indexof(line, arr)
			if (!var) {
				ind := arr.MaxIndex()
				if (ind = "") {
					ind := 0
				}
				num := ind + 1
				arr[num] := line
				msgbox, Hello world, %line%
			}
		} else {
			var := indexof(line, arr)
			if (var) {
				arr.RemoveAt(var)
			}
		}
}
goto begin

indexOf(var, Arr, fromIndex:=1) {
	Loop % Arr.MaxIndex() - fromIndex + 1
		If (var = Arr[A_Index + fromIndex - 1])
			Return A_Index + fromIndex - 1
	Return false
}

Для работы нужен samp udf. Указываете нужные пути и запускаете. В файле с никами ники должны быть записаны только так:

Nick_Name
Nick_Name

То есть в одной строчке один ник, никаких лишних пробелов и символов, иначе скрипт не будет определять вашу цель. Проверить не могу, так что проверяйте и делайте замечания.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

5 (изменено: Pplus, 2017-08-02 12:00:47)

Re: [SA:MP] Работа с чат-логом и с файлом с никами

belyankin12 Конешно, я понимаю(я чайник, который не разобрался толком в синтаксисе языка и пытаюсь что-то 'кодить'), что Ваш код более умён и я его буду использовать 24/7, хотелось бы узнать, моё творение, оно способно работать и правильно ли оно вообще написано:

#Include samp.ahk
#IfWinActive GTA:SA:MP
logfile := %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.log
check:
Loop, FileReadLine, nick.txt, %A_Index%
Loop, read, %logfile%
{
prelast := last_line
last_line := A_LoopReadLine
if prelast = "%line% подключился к серверу"
{
addMessageToChatWindow("AHTUNG! Admin %line% joined to server")
}
else
{
goto check
}

6

Re: [SA:MP] Работа с чат-логом и с файлом с никами

Pplus, боюсь я не смогу вам ответить, т.к. сам далеко не профессионал в этом языке. У вас есть несколько очевидных ошибок в плане синтаксиса (неужели скрипт запустился?), а в плане работоспособности этот скрипт если и пройдет по файлу с никами, то всего лишь один раз. Потом он остановится. Это как минимум. Есть к чему стремиться).

P.S. Мой код тоже не самый лучший, лучше использовать метод loop parse, чем filereadline, но я не умею(.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.