[Помощь] Чтение чат лога | Соединение 2-х скриптов. - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Sanoxxx, Alowir, Phoenixxx_Czar  
[Помощь] Чтение чат лога | Соединение 2-х скриптов.
Logins007 Дата: Четверг, 16.08.2018, 16:44 | Сообщение # 1
Новичок
Сообщений: 14
Статус: Offline
Не находит сообщение "Вы надели бронежилет" в чат логе, в чём проблемка?
Код

FileCLog:=% A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt"
loop
{
lastline := GetNewLine(FileCLog)
if RegExMatch(lastline, "Вы надели бронежилет")
{
SendChat("/me одел бронь")
}
}
GetNewLine(filename)
{
static old
static new
if !old
{
FileGetSize, old, %filename%
new := old
}
while old = new
{
sleep 100
FileGetSize, new, %filename%
}
old := new
Loop, read, %filename%
if A_LoopReadLine
{
last := A_LoopReadLine
}
return last
}


Сообщение отредактировал Logins007 - Воскресенье, 19.08.2018, 00:53
[CM]James17 Дата: Четверг, 16.08.2018, 16:56 | Сообщение # 2
Новичок
Сообщений: 22
Статус: Offline
Я думаю, лучше использовать UDF и GetChatLine(line, output) из него.
Код
Loop
{
    GetChatLine(0, chat)
    if chat contains Вы надели бронежилет
    {
  SendChat("/me надел бронижилет")
    }
}
return

Если и это не будет работать, то следует эту строчку найти в самом чатлоге и проверить на наличие цвета, ну типо {FFFFFF}


Сообщение отредактировал [CM]James17 - Четверг, 16.08.2018, 16:59
Logins007 Дата: Четверг, 16.08.2018, 17:08 | Сообщение # 3
Новичок
Сообщений: 14
Статус: Offline
[CM]James17, Работает, но как сделать несколько таких? т.к есть 2 отыгровки снятия/одевания бронежилета
slavawar Дата: Четверг, 16.08.2018, 17:16 | Сообщение # 4
Проверенный
Сообщений: 172
Статус: Offline
Цитата Logins007 ()
как сделать несколько таких?

Все такие вместо constains используй RegExMatch
Примерно формат будет такой:
Код

if (RegExMatch(chat, "Вы надели бронежилет"))
{
   Всякий код..
}
else if (RegExMatch(chat, "Вы сняли бронежилет"))
{
   Всякий код
}

Не знаю как все, но лично мнение от меня. Не люблю я читать чат или брать строки функциями UDF, лично у меня они всегда работали криво.
Пример проще, делаем таймер и используем FileRead, если строка нашлась делаем действие и удаляем эту строку. Есть свои минусы и плюсы. Кто-то скажет что костыль и страшно.


Мои темы:
[AHK] Шифратор текста
[AHK] Акцент 3 в 1
[C#] Генератор RP ников
CZAR Дата: Четверг, 16.08.2018, 17:20 | Сообщение # 5
Czar Of Scripts
Сообщений: 1373
Статус: Offline
[CM]James17, GetChatLine() - не идеальная ибо она пропускает строки. Лучше воспользоваться Chatlog Reader от Тумкина (ссылка).
Опять же.. Когда идет цикл - остальное останавливается, что не прикольно..





Я в ВК
Ушел в веб.

• Ничего не покупаю.
• Способы не проверяю.


У меня теперь новый домен, если ссылка не работает - напишите.

Гарант Cheat-Master:
*тема*

AHK
[S-RP] House Finder / House Teleporter
[SAMP] Online Counter
[S-RP] [For Event] Show Star
[S-RP] AntiCasino
[S-RP] [BOT] Auto Fisher + Auto Find Worm + Auto Cook
[S-RP] [BOT] /dance
Winner | Делаем розыгрыши среди участников темы.
SAMP-UDF
[AHK Урок] Выбор в диалогах мышкой и enter`ом
[SAMP] Быстрый ответ на СМС
[ERP] Помощник для адвоката
[DRP] FakeTime

Достижения:
- 26.02.2017
- 03.01.2018
- 26.05.2018
- 22.09.2018
- 04.04.2019
Logins007 Дата: Четверг, 16.08.2018, 17:20 | Сообщение # 6
Новичок
Сообщений: 14
Статус: Offline
slavawar, Ноль реакции cry
slavawar Дата: Четверг, 16.08.2018, 17:41 | Сообщение # 7
Проверенный
Сообщений: 172
Статус: Offline
Logins007, держи такой пример:
Код

#Persistent
SetTimer, read, on
File := A_MyDocuments "\GTA San Andreas User Files\SAMP\Chatlog.txt"

read:
FileRead, out, % File
if (RegExMatch(out, "\[.*\] Вы надели бронежилет")) {
    ; Всякий код
    delLine("\[.*\] Вы надели бронежилет")
}
else if (RegExMatch(out, "\[.*\] Вы сняли бронежилет")) {
    ; Всякий код
    delLine("\[.*\] Вы сняли бронежилет")
}
return

delLine(string) {
    File := A_MyDocuments "\GTA San Andreas User Files\SAMP\Chatlog.txt"
    FileRead, All, % File
    FileOpen(File, "w").Write(RegExReplace(All, "(^|\R)" . string . "|" . string . "(\R|$)"))
}


Мои темы:
[AHK] Шифратор текста
[AHK] Акцент 3 в 1
[C#] Генератор RP ников
Logins007 Дата: Четверг, 16.08.2018, 18:00 | Сообщение # 8
Новичок
Сообщений: 14
Статус: Offline
slavawar, Не работает с цветом
Код

if (RegExMatch(out, "\[.*\] [Информация] {FFFFFF}Вы надели бронежилет.")) {
    SendChat("ss")
    delLine("\[.*\] [Информация] {FFFFFF}Вы надели бронежилет.")
}
else if (RegExMatch(out, "\[.*\] [Информация] {FFFFFF}Вы успешно выкинули бронежилет.")) {
    SendChat("ss")
    delLine("\[.*\] [Информация] {FFFFFF}Вы успешно выкинули бронежилет.")
}
return
CZAR Дата: Четверг, 16.08.2018, 18:06 | Сообщение # 9
Czar Of Scripts
Сообщений: 1373
Статус: Offline
Logins007, перед "[", "]", "{", "}", "." нужно ставить "\"




Я в ВК
Ушел в веб.

• Ничего не покупаю.
• Способы не проверяю.


У меня теперь новый домен, если ссылка не работает - напишите.

Гарант Cheat-Master:
*тема*

AHK
[S-RP] House Finder / House Teleporter
[SAMP] Online Counter
[S-RP] [For Event] Show Star
[S-RP] AntiCasino
[S-RP] [BOT] Auto Fisher + Auto Find Worm + Auto Cook
[S-RP] [BOT] /dance
Winner | Делаем розыгрыши среди участников темы.
SAMP-UDF
[AHK Урок] Выбор в диалогах мышкой и enter`ом
[SAMP] Быстрый ответ на СМС
[ERP] Помощник для адвоката
[DRP] FakeTime

Достижения:
- 26.02.2017
- 03.01.2018
- 26.05.2018
- 22.09.2018
- 04.04.2019
Logins007 Дата: Четверг, 16.08.2018, 18:49 | Сообщение # 10
Новичок
Сообщений: 14
Статус: Offline
slavawar, Спасибо помог +rep

Добавлено (19.08.2018, 00:53)
---------------------------------------------
В общем прошу помощи по соединению 2-х скриптов
1 - так называем сортировщик скриншотов.
2 - чтение чат лога
Проблема в том, что работает 1 раз и при повторном выборе чего либо не хочет сохранять скриншот. В чём может быть проблема то?

Код

#Persistent
#NoEnv
#IfWinActive GTA:SA:MP
#Include udf.ahk

SetTimer, read, on
global SampDirScrennShot := % A_MyDocuments . "\GTA San Andreas User Files\SAMP\screens" ; путь к папке скриншотов samp
global MoveDirScheenShot := % A_ScriptDir . "\ScreenShots\" ; путь перемещения скриншотов
global NameScreenShot := "MyScreenShot-" ; приставка скриншота
global File := % A_MyDocuments . "\GTA San Andreas User Files\SAMP\Chatlog.txt"

:?:/org::
showDialog(2, "Helper","[1]Уволить игрока`n[2]Выдать выговор`n[3]Увольнительный рапорт", "ОК")
Result := LineResult()
if (!Result)
return
Gosub, dil%Result%
return

dil1:
SendChat("/me уволил игрока")
addChatMessage("уволил игрока")
return

dil2:
SendChat("/me выдал выговор")
addChatMessage("выдал выговор")
return

dil3:
SendChat("/me рапорт")
addChatMessage("рапорт")
return

read:
FileRead, out, % File
if (RegExMatch(out, "\[.*\] уволил игрока")) {
LectioName := "Увал"
SetTimer, ScreenTakeMove, On
    delLine("\[.*\] уволил игрока")
}

if (RegExMatch(out, "\[.*\] выдал выговор")) {
LectioName := "Выговор"
SetTimer, ScreenTakeMove, On
    delLine("\[.*\] выдал выговор")
}

if (RegExMatch(out, "\[.*\] рапорт")) {
LectioName := "Рапорт"
SetTimer, ScreenTakeMove, On
    delLine("\[.*\] рапорт")
}
return

delLine(string) {
    File := A_MyDocuments "\GTA San Andreas User Files\SAMP\Chatlog.txt"
    FileRead, All, % File
    FileOpen(File, "w").Write(RegExReplace(All, "(^|\R)" . string . "|" . string . "(\R|$)"))
}

return

ScreenTakeMove:
SetTimer, ScreenTakeMove, Off ; отключаем таймер во избежания мульти процессов
Send {F8} ; имитирум нажатие клавиши f8
sleep 4000 ; пауза 4сек (4*1000)
Line := 0 ; сбос строки с линии чата
Loop
{
    GetChatLine(Line, Chat) ; udf функция (считывание строк и чата) я хз вроде была ранше построена на основе чтения файла chatlog.txt рядом с папкой скринов
    IfInString, Chat, Screenshot Taken ; если в чате есть строка делаем следующее
    {
        RegExMatch(Chat, "Screenshot Taken - sa-mp-(?<index>.+).png", screen_) ; берем переменную чила скриншота и сохраняем как %screen_index%
        FormatTime, now_timecode, %A_Now%, dd.MM-HH.mm.ss ; создаем таймкод скрину с текущей датой на системе
        IfNotExist, % MoveDirScheenShot . LectioName
          FileCreateDir, % MoveDirScheenShot . LectioName
        FileMove, % SampDirScrennShot . "\sa-mp-" . screen_index . ".png", % MoveDirScheenShot . LectioName . "\" . NameScreenShot . now_timecode . ".png", 1 ;перемещаем с ключем 1 (если есть такой файл то с заменой)
        break ; завершаем цыкл
    }
    else
        Line++ ; добавляем +1 к циклу тоесть новую строку для чтения и поиска
}
return

LineResult() {
if (!isDialogOpen() || getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
return false
while (isDialogOpen())
continue
if(GetKeyState("Esc", "P"))
return false
return getDialogLineNumber()
}
return
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума
Лучшие пользователи
Admin [39113]

GеNius [7210]

[CM]Russel [5557]

kenlo763 [4952]

[CM]AGRESSOR [4639]

Snake_Firm [4452]

Сэс [4416]

Artem_Buero [4223]

[CM]Durman [3204]

[CM]Рафаэль [3080]

iMaddy [2855]

sky_Woker [2854]

getrekt [2745]

Новые пользователи