Проблема с кодом

Помощь в написании скриптов для игр.
Vladik2304
Posts: 24
Joined: 20 Jan 2022, 15:58

Проблема с кодом

Post by Vladik2304 » 20 Jan 2022, 16:05

Помогите написать код для копирования текста начинающегося с определённого слова из чата SAMP. Нужен код, который при нажатии на F2 копировал ответ администратора и вывод мне в чат, но от моего имени.
Пример из чата от другого админа:
"Администратор name_surname[id] для name2_surname2[id]: "Ответ админа для игрока" "
мне надо, чтобы копировал его ответ.

Code: Select all

F2::
way = %A_MyDocuments%\RADMIR CRMP User Files\SAMP\chatlog.txt
FileDelete, %A_MyDocuments%\RADMIR CRMP User Files\SAMP\chatlog.txt
Loop
{
FileRead, file, %A_MyDocuments%\RADMIR CRMP User Files\SAMP\chatlog.txt
IfInString, file, Администратор
{
SendInput, {F6}/pm  | Приятной игры{left 16}
FileDelete, %A_MyDocuments%\RADMIR CRMP User Files\SAMP\chatlog.txt
}
}
return

mcl
Posts: 355
Joined: 04 May 2018, 16:35

Re: Проблема с кодом

Post by mcl » 22 Jan 2022, 00:43

Vladik2304 wrote:
20 Jan 2022, 16:05
Помогите написать код для копирования текста начинающегося с определённого слова из чата SAMP. Нужен код, который при нажатии на F2 копировал ответ администратора и вывод мне в чат, но от моего имени.
Пример из чата от другого админа:
"Администратор name_surname[id] для name2_surname2[id]: "Ответ админа для игрока" "
мне надо, чтобы копировал его ответ.
Предполагается, что name_surname не содержат двоеточия, иначе работать это с ошибками.
Отправлять полученный текст нужно сырым (SendRaw), иначе, если в нём есть фигурные скобки и другие специальные символы, они могут быть неверно истолкованы AHK.
Я бы рекомендовал добавить задержку после каждого чтения/удаления, потому что вряд ли админы умеют писать со сверхсветовой скоростью, а постоянным чтением без задержки вы на диске дыру протрёте.

Code: Select all

F2::
	chatfile = %A_MyDocuments%\RADMIR CRMP User Files\SAMP\chatlog.txt
	Loop
	{
		FileRead, chattext, %chatfile%
		Loop, Parse, chattext, `n, `r   ; Проходимся по каждой строке лога
		{
			If (InStr(A_LoopField, "Администратор ") = 1)      ; Если строка начинается со слова "Администратор"
			{
				colonPos   := InStr(A_LoopField, ":")          ; Находим двоеточие...
				resultText := SubStr(A_LoopField, colonPos+2)  ; Отсекаем всё, что до двоеточия и ещё два символа: само двоеточие и пробел.
				SendRaw %resultText%                           ; Пишем найденный ответ как сырой текст.
				Break                                          ; Выходим из цикла, дальше лог не смотрим.
			}
		}
		FileDelete, %chatfile%
		Sleep 500
	}
	Return
github://oGDIp - GDI+ wrapper for AHK v1.1

Post Reply

Return to “Скрипты для Игр”