Вообщем есть скрипт который как задумывалось должен был из диалога /find На Advance RP читать ники и смотреть кто из низ есть в строю, а кого нет, с учетом людей стоящих в AFK
Получилось наподобие этого, но по какой-то причине всех он отмечает как 0 человек в строю, в AFK и т.д
Код
FileFind := % A_MyDocuments "\GTA San Andreas User Files\AHK для МВД\TextFind.txt"
!4::
SendChat("/find")
addChatMessage("Для продолжения {ff0088} Нажмите ""=""")
ArrayPlayers1 := []
PlayersOut:=""
CoutPlayerOut:=0
CoutPlayerNear:=0
ArrayPlayers1 := FindNearPlayers()
ArrayPlayers1.Insert(getUsername())
FileDelete, %FileFind%
KeyWait, vkBB, D T8
TextVar := getDialogText()
FileAppend, %TextVar%`n, %FileFind%
Sleep 1000
SendInput {Enter}
AFK := 0
Loop, Read, %FileFind%
{
if RegExMatch(A_LoopReadLine,"([A-Z][a-z]+\_[A-Z][a-z]+[A-Z]?[a-z]+)(\s\[AFK:.*\])?",match)
{
Ryadom := 0
for index, element in ArrayPlayers1
{
if (element=match1)
{
Ryadom := 1
CoutPlayerNear += 1
}
}
if not Ryadom
{
NameCop := match1
if match2
AFK += 1
NameCop := RegExReplace(NameCop,"_"," ")
addChatMessage("{FFAAFF}" NameCop " {8888FF} [" getPlayerIdByName(match1) "] {ff0088}" match2 )
addChatMessage("{8888FF} Cпросить в рацию:{aaff99} 1{8888FF}. Выдать выговор: {aaff99}2{8888FF}. Пропустить: {aaff99}3.")
loop
{
Input , OutputVar, L1 V, {1}{2}{3}
if (ErrorLevel = "EndKey:1") or (ErrorLevel = "EndKey:2") or (ErrorLevel = "EndKey:3")
break
}
if ErrorLevel = EndKey:1
{
SendChat("/R " TegR " " NameCop ", вы где?!")
}
else
if ErrorLevel = EndKey:2
{
SendChat("/r " TegR " " NameCop " получает выговор за неявку в строй.")
Sleep 800
SendChat("/с 060")
SendInput {F8}
}
if PlayersOut
PlayersOut:= % PlayersOut ", " NameCop
else
PlayersOut := NameCop
CoutPlayerOut += 1
}
}
}
addChatMessage("{FFFFFF} " CoutPlayerOut " человек отсутствуют. " CoutPlayerNear " человек в строю. " AFK " человек в AFK.")
addChatMessage("{FFFFFF} Отсутствуют: " PlayersOut)
return
FindNearPlayers()
{
ArrayPlayers := []
dist := 50
p := getStreamedInPlayersInfo()
if(!p)
return
lpos := getCoordinates()
if(!lpos)
return
For i, o in p
{
t:=getDist(lpos,o.POS)
if(t<=dist)
{
ArrayPlayers.Insert(o.NAME)
}
}
return ArrayPlayers
}