#NoEnv
#Persistent
#SingleInstance, force
#Include, CRMPUDF.ahk
#MaxMem, 256
global mainNick := "Nazar_Holod"
global chatLog := A_MyDocuments "\GTA San Andreas User Files\CR-MP\GenerationC\chatlog.txt"
global tempLog := 0
global ArrL := []
global afk_time := 0
global last_afk := 0
global last_noafk := 0
global noafk_time := 0
SetTimer, Main, 100
~F6::
~ESC::
ifWinNotActive, Criminal Russia Multiplayer Ревизия G
return
Dialog := 0
return
Main()
{
FileRead, tempLog, % chatLog
for k, v in StrSplit(tempLog, "`n")
{
if (RegExMatch(v, "\[(?<Time>\d+:\d+:\d+)\]\s+Администратор\s+" mainNick "\s+посадил\s+игрока\s+(?<WanNick>[A-z_]+)\s+в\s+тюрьму\.\s+Причина:\s+(?<Cause>.*)", out))
log(1, outTime, outWanNick, outCause)
if (RegExMatch(v, "\[(?<Time>\d+:\d+:\d+)\]\s+Администратор\s+" mainNick "\s+посадил\s+игрока\s+(?<WanNick>[A-z_]+)\s+в\s+Де\s+Морган\.\s+Причина:\s+(?<Cause>.*)", out))
log(2, outTime, outWanNick, outCause)
if (RegExMatch(v, "\[(?<Time>\d+:\d+:\d+)\]\s+Администратор\s+" mainNick "\s+кикнул\s+игрока\s+(?<WanNick>[A-z_]+)\.\s+Причина:\s+(?<Cause>.*)", out))
log(3, outTime, outWanNick, outCause)
if (RegExMatch(v, "\[(?<Time>\d+:\d+:\d+)\]\s+(?<WanNick>[A-z_]+)\s+получил\s+бан\s+чата\s+от\s+администратора\s+" mainNick , out))
log(4, outTime, outWanNick, 0)
if (RegExMatch(v, "\[(?<Time>\d+:\d+:\d+)\]\s+<\s+PM:\s+" mainNick "\s+игроку\s+(?<WanNick>[A-z_]+)\s+>\s+{FFFFFF}(?<Cause>.*)", out))
log(0, outTime, outWanNick, outCause)
}
afk := IsInAFK()
if (afk != -1)
{
if (afk == 1)
afk_time += 100
else if (afk == 0 && last_afk == 1)
{
log(5, afk_time, 0, 0)
afk_time := 0
}
last_afk := afk
if (afk == 0)
noafk_time += 100
else if ((afk == 1 && last_noafk == 0) || (afk == 0 && noafk_time > 10000))
{
log(6, noafk_time, 0, 0)
noafk_time := 0
}
last_noafk := afk
}else if (afk_time > 0)
afk_time := 0
else if (noafk_time > 0)
noafk_time := 0
}
log(mode, times, nick, texter)
{
dater := get("http://fforest.pro/time.php?time=MDY")
if (mode < 5)
saveCRMP(tempLog)
if (mode == 1){
RegRead, temp, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, punish
RegDelete, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, punish
RegWrite, REG_MULTI_SZ, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, punish, % temp "[" times "] |Т|`t" nick "`t`t`t" texter "`n"
}else if (mode == 2){
RegRead, temp, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, punish
RegDelete, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, punish
RegWrite, REG_MULTI_SZ, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, punish, % temp "[" times "] |Д|`t" nick "`t`t`t" texter "`n"
}else if (mode == 3){
RegRead, temp, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, punish
RegDelete, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, punish
RegWrite, REG_MULTI_SZ, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, punish, % temp "[" times "] |К|`t" nick "`t`t`t" texter "`n"
}else if (mode == 4){
RegRead, temp, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, punish
RegDelete, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, punish
RegWrite, REG_MULTI_SZ, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, punish, % temp "[" times "] |M|`t" nick "`t`t`t" texter "`n"
}else if (mode == 0){
RegRead, temp, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, ansver
RegDelete, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, ansver
RegWrite, REG_MULTI_SZ, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, ansver, % temp "[" times "] " nick "`t`t |О|: " texter "`n"
}else if (mode == 5){
RegRead, temp, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, timeAfk
RegDelete, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, timeAfk
RegWrite, REG_EXPAND_SZ, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, timeAfk, % (temp ? temp + times : times)
}else if (mode == 6){
RegRead, temp, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, timeNoAfk
RegDelete, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, timeNoAfk
RegWrite, REG_EXPAND_SZ, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" dater, timeNoAfk, % (temp ? temp + times : times)
}
}
saveCRMP(chatlog)
{
static logschat := A_MyDocuments "\GTA San Andreas User Files\CR-MP\GenerationC\ChatLogs\"
static chat := A_MyDocuments "\GTA San Andreas User Files\CR-MP\GenerationC\chatlog.txt"
FileCreateDir , % logschat A_MM "-" A_YYYY
FileAppend , % chatlog, % logschat A_MM "-" A_YYYY "\" A_DD "." A_MM "." A_YYYY ".txt"
FileDelete , % chat
}
StrInArr(str)
{
newArr := []
for k, v in StrSplit(str, "`n")
newArr.Push(v)
return (newArr.MaxIndex() >= 1 ? newArr.MaxIndex() - 1 : "0")
}
~F2::
tempTextDial := ""
Loop, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" , 2, 1
{
RegRead, tempP, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" A_LoopRegName, punish
RegRead, tempA, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" A_LoopRegName, ansver
RegRead, tempTA, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" A_LoopRegName, timeAfk
RegRead, tempNA, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" A_LoopRegName, timeNoAfk
tempTextDial .= "Д: " A_LoopRegName " | Наказания: " StrInArr(tempP) " | Ответы: " StrInArr(tempA) " | АФК: " time_afk(tempTa) " | Чистый: " time_afk(tempNA) "`n"
}
Sleep, 100
showDialog(2, "Логи", tempTextDial, "X", "X", 100)
Dialog := 1
return
~LButton::
Time := A_TickCount
while(isDialogOpen())
{
if (A_TickCount - Time > 500)
return
}
~NumpadEnter::
~Enter::
if (isDialogButton1Selected() == 1 || isDialogButton2Selected() == 1)
Dialog := 0
ifWinNotActive, Criminal Russia Multiplayer Ревизия G
return
if (Dialog == 1)
{
Dialog := 0
line_num := getDialogLineNumber()
line_text := getDialogLine(line_num)
RegExMatch(line_text, "Д:\s(?<date>[0-9.]+)\s\|\sНаказания:\s(?<pun>[0-9]+)\s\|\sОтветы:\s(?<ans>[0-9]+)\s\|\sАФК:\s(?<afk>[0-9:]+)\s\|\sЧистый:\s(?<onl>[0-9:]+)", out)
text := "Открыть лог наказаний [" outpun "]{00FF00} (Кликабельно)`nОткрыть лог ответов [" outans "]{00FF00} (Кликабельно)`nЧистый онлайн: {00FF00}~ {00FF00}" outonl " `nВремя в афк: {00FF00}~ {00FF00}" outafk
Sleep, 100
showDialog(2, outdate, text, "X", "X", 100)
Dialog:= 2
return
}
if (Dialog == 2)
{
Dialog := 0
line_num := getDialogLineNumber()
line_text := getDialogLine(line_num)
CaptionD := getDialogCaption()
if (line_num == 1){
RegRead, end, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" CaptionD, punish
Sleep, 100
showDialog(0, "Наказания", "{00FF00}Time`t`tNick`t`t`t`tPunish`n{FFFFFF}" end, "X", "X", 100)
}else if (line_num == 2){
RegRead, ender, HKEY_CURRENT_USER, % "Software\AdmLogCRMP\" CaptionD, ansver
Sleep, 100
showDialog(0, "Наказания", "{00FF00}Time Nick`t`t`tAnswer`n{FFFFFF}" ender, "X", "X", 100)
}else if (line_num > 2 )
return
}
return
time_afk(afk_time, min := 0)
{
if (!min)
{
sec := Ceil(afk_time/1000)
h := sec/3600 ^ 0
m := (sec-h*3600)/60 ^ 0
s := sec-h*3600-m*60
if (afk_time > 5)
return (h < 10 ? "0" h : h) ":" (m < 10 ? "0" m : m) ":" (s < 10 ? "0" s : s)
return -1
}
else
return isInteger((afk_time/1000)/60)
}
~F3::
ArrayLog := []
FileRead, tempLog, % chatLog
for k, v in StrSplit(tempLog, "`n")
ArrayLog.Push(v)
i := ArrayLog.MaxIndex()
while(i >= 0)
{
if (RegExMatch(ArrayLog[i], "\[\d+:\d+:\d+\]\s+Nik\s+\[(?<Nick>[A-z_]+)\]\s+(R-IP|Register-IP)\s\[(?<Reg>[0-9.]+)\]\s+(L-IP|Last-IP)\s\[(?<Last>[0-9.]+)\](\s+IP\s+\[(?<IP>[0-9.]+)\]|)", out_))
{
result := getIpReg(out_Reg, (!out_IP ? out_Last : out_IP))
text := "R-IP:`t{00FF00}" out_Reg "`n" (!out_IP ? "L-IP:`t{00FF00}" out_Last : "IP:`t{00FF00}" out_IP) "`nСтрана:`nR-IP:`t{00FF00}" result[1] "`n" (!out_IP ? "L-IP:`t{00FF00}" result[2] : "IP:`t{00FF00}" result[2]) "`nГород:`nR-IP:`t{00FF00}" result[3] "`n" (!out_IP ? "L-IP:`t{00FF00}" result[4] : "IP:`t{00FF00}" result[4]) "`nПровайдер:`nR-IP:`t{00FF00}" (result[6] ? result[6] : "Нет данных") "`n" (!out_IP ? "L-IP:`t{00FF00}" (result[7] ? result[7] : "Нет данных") : "IP:`t{00FF00}" (result[7] ? result[7] : "Нет данных")) "`nРастояние между IP:`t{00FF00}" result[5] "{FFFFFF}км."
showDialog(2, "{FF0000}CheckIP Nick: " out_Nick, text, "/*_*\")
Break
}
i--
}
return
getIpReg(ip1, ip2)
{
tempArray := []
WinHTTP := ComObjCreate("WinHTTP.WinHttpRequest.5.1")
WinHTTP.Open("POST", "https://2ip.ua/ru/services/information-service/site-distance", 0)
WinHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:65.0) Gecko/20100101 Firefox/65.0")
WinHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
WinHTTP.SetRequestHeader("Pragma", "no-cache")
WinHTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
WinHTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
WinHTTP.Send("a=act&ip=" ip1 "&ip2=" ip2)
Result := WinHTTP.ResponseText
for k, v in tempArray := StrSplit(Result, "`n")
{
if (RegExMatch(v, "\s+<td>Cтрана:</td>"))
{
RegExMatch(tempArray[A_Index + 1], "\s+<td>(?<Count1>\W+)<\/td>", out_)
RegExMatch(tempArray[A_Index + 2], "\s+<td>(?<Count2>\W+)<\/td>", out_)
}
if (RegExMatch(v, "\s+<td>Город:<\/td>"))
{
RegExMatch(tempArray[A_Index + 1], "\s+<td>(?<City1>\W+)<\/td>", out_)
RegExMatch(tempArray[A_Index + 2], "\s+<td>(?<City2>\W+)<\/td>", out_)
}
if (RegExMatch(v, "\s+<td>Километров<\/td>"))
{
RegExMatch(tempArray[A_Index + 1], "\s+<td>(?<km>\w+)|\.\w+<\/td>", out_)
}
if (RegExMatch(v, "\s+<td>Имя провайдера:<\/td>"))
{
RegExMatch(tempArray[A_Index + 1], "\s+<td>(?<Prov1>\W+)<\/td>", out_)
RegExMatch(tempArray[A_Index + 2], "\s+<td>(?<Prov2>\W+)<\/td>", out_)
}
}
Return [out_Count1, out_Count2, out_City1, out_City2, out_km, out_Prov1, out_Prov2]
}