Регулярное выражение

tsunami!

Новичок
Автор темы
5
0
Регулярное выражение:
#IfWinActive GTA:SA:MP
#include SAMP.ahk
#SingleInstance Force
#NoEnv
ListLines Off
SetBatchLines -1

chatlog := A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt"
FileDelete, %chatlog%

Words = (kick|mute|ban|prison|banip|offmute|offban|offprison|offbanip)

F2::
FileRead, Str, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
StringReplace, Str, Str, `r`n, `n, 1
StringReplace, Str, Str, `r, `n, 1

RegExMatch("`n" Str "`n", "i).*\n\[\d+:\d+:\d+]\s*\[A\]\s\w+_(\w+)\[.*?]:\s*(/`*" Words "\s.*?)\n", Match)
ToolTip % Clipboard := Match1
FileAppend,%Match2% | %Match1%`n,logachat.ini
SendMessage, 0x50,, 0x4190419,, A
Sleep 300
SendInput,{F6}%match2% | %match1% {enter}
clipboard =
ToolTip
FileDelete,%A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
Return

Всем привет, нашёл скрипт для авто выдачи наказаний, вроде работает. но если у администратора НРП ник то просто выдает |. Как фиксить ибо с регулярными выражениями я дуб дубом
 

tsunami!

Новичок
Автор темы
5
0
Никак, регулярное выражение для каждого ника не подберешь. Все автобаны предназначены для рп ников.
А что если читать текст после слова Администратор, и до определенного момента? Это возможно?
 

tsunami!

Новичок
Автор темы
5
0
Там абсолютно разные форматы могут быть, кинь пример
1628780676745.png

И вот
1628780886550.png
 

Valerii Kalashnikov

Известный
294
494

tsunami!

Новичок
Автор темы
5
0
Скинь строку саму с чат лога.


Ну либо вот пример, а там сам разберешься.

asd = "Администратор SALJdlaksjd выдал"
print(asd:match("Администратор ([^ ]+)"))
И так же само работает? -->

asd2 = "Администратор SALJdlaksjd посадил"
print(asd:match("Администратор ([^ ]+)"))


И как это юзануть допустим в коде? который выше.
 

darksoor

Известный
674
353
Никак, регулярное выражение для каждого ника не подберешь. Все автобаны предназначены для рп ников.
Если ты не умеешь пользоваться регулярками, то не нужно говорить, что этого никак не сделать.
Скинь строку саму с чат лога.


Ну либо вот пример, а там сам разберешься.

asd = "Администратор SALJdlaksjd выдал"
print(asd:match("Администратор ([^ ]+)"))
Посмотри код, это AutoHotKey...
Что ты тут кинул, если кодом считывается админ-чат (прим: [A] Nick_Name[id]: text)???? На скриншотах ведь наказания от администрации, которые видят все игроки!

В общем, решение твоё ниже:
AutoHotKey:
#IfWinActive GTA:SA:MP
#include SAMP.ahk
#SingleInstance Force
#NoEnv
ListLines Off
SetBatchLines -1

chatlog := A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt"
FileDelete, %chatlog%

Words = (kick|mute|ban|prison|banip|offmute|offban|offprison|offbanip)

F2::
FileRead, Str, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
StringReplace, Str, Str, `r`n, `n, 1
StringReplace, Str, Str, `r, `n, 1

RegExMatch("`n" Str "`n", "i).*\n\[\d+:\d+:\d+]\s*\[A\]\s(\w+_|)(\w+)\[.*?]:\s*(\/" Words "\s.*)\n", Match)
ToolTip % Clipboard := Match2
FileAppend,%Match3% | %Match2%`n,logachat.ini
SendMessage, 0x50,, 0x4190419,, A
Sleep 300
SendInput,{F6}%match3% | %match2% {enter}
clipboard =
ToolTip
FileDelete,%A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
Return
 
Последнее редактирование: