1 (изменено: ICEICEONE, 2015-03-03 20:29:42)

Тема: Не корректно работает скрипт с выводом нужного текста из файла

Приветствую.

Существует скрипт для удобного администрирования на сервере. Суть скрипта проста: банится пользователь, в логе сохраняется его ип, скрипт находит последний ип в логе и при нажатии rctrl вводит команду /banip ip.

У других администраторов работает нормально, у меня со скриптом возникла проблема. Скрипт ни в какую не хочет вставлять ип. Т.е. у меня он отправляет просто "/banip ". Менял путь файла "chatlog.txt", пробовал заставить скрипт вывести другой текст из лога - выводит просто пробел. Прошу помочь, в чем может быть проблема и/или предложить свой код для работы. Сам если честно не очень разбираюсь в AHK.

Вот сам код:

rctrl::
FileRead, file, C:\Users\Maxim\Documents\GTA San Andreas User Files\SAMP\chatlog.txt
foundpos:=RegExMatch(file, " IP \[([0-9.]*)\]", code, -400)
sleep 500
SendInput {F6}/banip %code1%{enter}
return

2

Re: Не корректно работает скрипт с выводом нужного текста из файла

ICEICEONE, ознакомьтесь с этой темой, отредактируйте свой пост.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: Не корректно работает скрипт с выводом нужного текста из файла

teadrinker пишет:

ICEICEONE, ознакомьтесь с этой темой, отредактируйте свой пост.

Отредактировал.

4

Re: Не корректно работает скрипт с выводом нужного текста из файла

Скорее всего, неверный паттерн в RegEx. Чтоб составить правильный, нужен пример лога.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: ICEICEONE, 2015-03-03 20:48:59)

Re: Не корректно работает скрипт с выводом нужного текста из файла

teadrinker пишет:

Скорее всего, неверный паттерн в RegEx. Чтоб составить правильный, нужен пример лога.

Вот пример лога:

[14:26:34] {FFFFFF}SA-MP {B9C9BF}0.3z {FFFFFF}Started
[14:26:34] Connecting to 5.254.104.120:7777...
[14:26:35] Connected. Joining the game...
[14:26:37] Connected to {B9C9BF}Samp-Rp.Ru | Server: 10 | Client: 0.3z
[14:26:37]  Добро пожаловать на Samp Role Play
[14:26:45] Server closed the connection.

IP пишется следующим образом:

[21:37:36]  Администратор: NickName забанил NickName. Причина: cheat
[21:37:36]     Nik [NickName]   R-IP [192.168.0.1]   L-IP [192.168.0.1]   IP [192.168.0.1]

6

Re: Не корректно работает скрипт с выводом нужного текста из файла

В момент обращения скрипта к логу там уже есть запись с IP? Сколько там таких записей? Если несколько, по какому признаку определить нужную?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7 (изменено: ICEICEONE, 2015-03-03 22:03:19)

Re: Не корректно работает скрипт с выводом нужного текста из файла

Записей несколько, определяет по признаку самой последней записи, т.е. ип последнего заблокированного человека.
Лог обновляется постоянно. Скрипт начинает работу после забаненного человека, т.е. когда уже есть ип в логе.

8

Re: Не корректно работает скрипт с выводом нужного текста из файла

file =   ; содержание файла в переменной file
(
[14:26:34] {FFFFFF}SA-MP {B9C9BF}0.3z {FFFFFF}Started
[14:26:34] Connecting to 5.254.104.120:7777...
[14:26:35] Connected. Joining the game...
[14:26:37] Connected to {B9C9BF}Samp-Rp.Ru | Server: 10 | Client: 0.3z
[14:26:37]  Добро пожаловать на Samp Role Play
[14:26:45] Server closed the connection.
[21:37:36]  Администратор: NickName забанил NickName. Причина: cheat
[21:37:36]     Nik [NickName]   R-IP [192.168.0.2]   L-IP [192.168.0.2]   IP [192.168.0.2]
[21:40:36]  Администратор: NickName забанил NickName. Причина: cheat
[21:40:36]     Nik [NickName]   R-IP [192.168.0.1]   L-IP [192.168.0.1]   IP [192.168.0.1]
[21:41:50]   ещё какой-то текст
[21:42:50]   ещё какой-то текст
)

rctrl::
;  раскомментировать следующую строчку, когда содержание считывается из файла
;  FileRead, file, C:\Users\Maxim\Documents\GTA San Andreas User Files\SAMP\chatlog.txt
   ip := RegExReplace(file, "s).* IP \[([0-9\.]+)].*", "$1")
   ToolTip, Найденный IP %ip%   ; для демонстрации, можно закомментировать
   SendInput {F6}/banip %ip%{enter}
   return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: Не корректно работает скрипт с выводом нужного текста из файла

Все равно категорически отказывается вставлять ип.
"/banip пробел"
Может быть какая-то проблема в кодировке? Сама и суть, что у других администраторов всё в порядке.

10

Re: Не корректно работает скрипт с выводом нужного текста из файла

А если, как в моём коде, считывать текст не из файла, а из переменной, тогда получается или нет?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11 (изменено: ICEICEONE, 2015-03-03 22:53:32)

Re: Не корректно работает скрипт с выводом нужного текста из файла

Чтобы это реализовать, нужно вставить полный код вашего поста? Извиняюсь конечно за своё нубство, но не могу понять, как заставить код работать иначе).

12

Re: Не корректно работает скрипт с выводом нужного текста из файла

Просто запустить код, как есть, и нажать RCtrl, когда активно окно, куда должно вставляться.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13 (изменено: ICEICEONE, 2015-03-03 23:03:41)

Re: Не корректно работает скрипт с выводом нужного текста из файла

Всё та же песня, снова "/banip ".
К слову, ранее использовал в этой же игре скрипт со вставкой текста, тогда он вставлял текст из буфера обмена после ряда операций. Текст вставлялся нормально.

Кстати, ип AHK находит верно.

14

Re: Не корректно работает скрипт с выводом нужного текста из файла

Если находит нормально, проблема не в коде. А куда вставляем-то, в обычное окно командной строки? У меня всё вставляется нормально.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: Не корректно работает скрипт с выводом нужного текста из файла

Вставляем в чат. F6 открывает окно с чатом.

16

Re: Не корректно работает скрипт с выводом нужного текста из файла

Значит, дело в окне чата. Здесь не подскажу, т. к. не могу проэкспериментировать.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

17

Re: Не корректно работает скрипт с выводом нужного текста из файла

Тогда можно ли изменить код таким образом, чтобы найденный ип копировался в буфер обмена? Т.е. далее я уже вручную вставлю его в чат. Заранее благодарю, думаю это займет не много времени.

18

Re: Не корректно работает скрипт с выводом нужного текста из файла

rctrl::
   FileRead, file, C:\Users\Maxim\Documents\GTA San Andreas User Files\SAMP\chatlog.txt
   ip := RegExReplace(file, "s).* IP \[([0-9\.]+)].*", "$1")
   ToolTip, Найденный IP %ip%   ; для демонстрации, можно закомментировать
   Clipboard := ip
   return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

19

Re: Не корректно работает скрипт с выводом нужного текста из файла

Огромное спасибо, пусть и полностью проблему решить не удалось, но все равно

20

Re: Не корректно работает скрипт с выводом нужного текста из файла

Кстати, благодаря вам всё-таки доработал код. Вот так работает полностью:


rctrl::
   FileRead, file, C:\Users\Maxim\Documents\GTA San Andreas User Files\SAMP\chatlog.txt
   ip := RegExReplace(file, "s).* IP \[([0-9\.]+)].*", "$1")
   ToolTip, Найденный IP %ip%   ; для демонстрации, можно закомментировать
   Clipboard := ip
   SendInput {F6}/banip {LControl Down}{sc02F}{LControl Up}{enter}
   return