копирка Topic is solved
-
- Posts: 24
- Joined: 20 Jan 2022, 15:58
-
- Posts: 24
- Joined: 20 Jan 2022, 15:58
Re: копирка
Я немного отредактировал просьбу о помощи @mcl
Re: копирка
Насколько я понял из предыдущих вопросов, вы для этой цели читаете файл с чат-логом − хотелось бы увидеть несколько строк из него (судя по регулярке, в начале строк там ещё будут метки времени).Vladik2304 wrote: ↑Мне надо чтобы код копировал id игрока которому даётся ответ(в примере это id 25) и ответ администратора и выводил мне в чат
И, если не трудно, для вашего примера − полную команду ответа, которую нужно набрать.
-
- Posts: 24
- Joined: 20 Jan 2022, 15:58
Re: копирка
Кажется, должно работать. По Alt+2 читается чат-лог, и копии всех сообщений администраторов отправляются от вашего имени.Vladik2304 wrote: ↑И мне надо скопировать id(в данном случае 25) и ответ админа(в данном случае слежу | Приятной Вам игры)
Code: Select all
!2::
chatlogfile = %A_MyDocuments%\RADMIR CRMP User Files\SAMP\chatlog.txt
FileRead, chattext, *P65001 %chatlogfile% ; 65001 - кодировка UTF-8
; Проходимся по каждой строке чат-лога
Loop, Parse, chattext, `n, `r
{
; Если сообщение не от администратора - пропускаем
If (InStr(A_LoopField, "Администратор") != 12)
Continue
; Соответствие шаблону: [ Время ] Администратор (username) [userid] для (username) [userid] : Текст
RegexMatch(A_LoopField, "^\[[\d:]+\] Администратор ([^\[\]]+)\[(\d+)\] для ([^\[\]]+)\[(\d+)\]\s*: (.+?)$"
, chatmatch)
; Если строка не соответствовала шаблону - пропускаем её
If (chatmatch1 == "")
Continue
; Теперь переменные chatmatch содержат:
; chatmatch1 - имя написавшего админа
; chatmatch2 - id написавшего админа
; chatmatch3 - имя игрока-адресата
; chatmatch4 - id игрока-адресата
; chatmatch5 - текст сообщения
; Если вы администратор - впишите здесь свой id, или сделайте схожую проверку на имя,
; иначе скрипт станет копировать ваши же ответы и уйдёт в бесконечный цикл.
If (chatmatch2 == 9999)
Continue
SendMessage, 0x50,, 0x4190419,, A
SendInput, {F6}
SendText, /t %chatmatch4% %chatmatch5%
SendInput, {Enter}
}
; Удаляем файл с чат-логом, чтобы в следующий раз получить только свежие сообщения
FileDelete, %chatlogfile%
Return
-
- Posts: 24
- Joined: 20 Jan 2022, 15:58
Re: копирка
@mcl
Код не работает. При нажатии на Alt+2 абсолютно ничего не выводит и не отображается. Я пытался разобраться, но эффекта 0, помогите, пожалуйста
Код не работает. При нажатии на Alt+2 абсолютно ничего не выводит и не отображается. Я пытался разобраться, но эффекта 0, помогите, пожалуйста
-
- Posts: 24
- Joined: 20 Jan 2022, 15:58
Re: копирка
Чат лог он читает и удаляет, но не более
@mcl
@mcl
Re: копирка Topic is solved
Возможно, моё предположение о кодировке файла чат-лога было неверным − из-за этого все русские буквы скрипт видит как кракозябры и слово «Администратор» не находит.
Попробуйте удалить в третьей строке *P65001.
Другое решение − убрать проверку в строках 9−10 и переписать регулярное выражение в 13-й строке без русских букв:
Попробуйте удалить в третьей строке *P65001.
Другое решение − убрать проверку в строках 9−10 и переписать регулярное выражение в 13-й строке без русских букв:
Code: Select all
...
Loop, Parse, chattext, `n, `r
{
; Соответствие шаблону: [ Время ] Администратор (username) [userid] для (username) [userid] : Текст
RegexMatch(A_LoopField, "^\[[\d:]+\] .+? ([^\[\]]+)\[(\d+)\] .+? ([^\[\]]+)\[(\d+)\]\s*: (.+?)$", chatmatch)
...