[Помощь]: Проверка текста
|
|
shamanchik9991 |
Дата: Среда, 28.09.2016, 17:08 | Сообщение # 1
|
Любитель
Сообщений: 31
Статус: Offline
|
Каким образом сделать проверку для /try (Удачно/Неудачно), и при выпадение одного из вариантов, одно значение, а при выпадении другого, соответственно другое. Вот текст из чатлога:
Код [01:01:01] Nick_Name увидел, как на экране появился код системы {FF6600}| Неудачно
[01:01:01] Nick_Name увидел, как на экране появился код системы {66CC00}| Удачно
Сообщение отредактировал shamanchik9991 - Среда, 28.09.2016, 17:11 |
|
|
|
McFree_ |
Дата: Среда, 28.09.2016, 18:10 | Сообщение # 2
|
В рядах СМ.
Сообщений: 321
Статус: Offline
|
через регулярное выражение
Код GetChatLine(0,Str)
if (RegexMatch(Str, " Nick_Name увидел, как на экране появился код системы {66CC00}| (.*)", Res)) { if (Res1 == "Удачно") { ; действие при удачном выпадении } else if (Res1 == "Неудачно") { ; действие при неудачном выпадении } }
Помогаю новичкам! По всем вопросам в ЛС!
|
|
|
|
shamanchik9991 |
Дата: Четверг, 29.09.2016, 12:43 | Сообщение # 3
|
Любитель
Сообщений: 31
Статус: Offline
|
Цитата McFree_ ( ![Ссылка на цитируемый текст](/.s/img/fr/ic/4/lastpost.gif) ) через регулярное выражение Код GetChatLine(0,Str)
if (RegexMatch(Str, " Nick_Name увидел, как на экране появился код системы {66CC00}| (.*)", Res)) { if (Res1 == "Удачно") { ; действие при удачном выпадении } else if (Res1 == "Неудачно") { ; действие при неудачном выпадении } }
Суть в том, что не я один буду использовать данный скрипт, по этому вводить ник в скрипт не нужно. Я убрал из строчки ник, но скрипт не выполняет команду UPD: Решил оставить ник в этой строчке, и попробовать еще раз. Он не выполняет команду. Может я что-то делаю не так? Может из-за timestamp? Часть кода:
Код vzlom: SendInput, {F6}/do На экране быстро быстро проскакивают строки кода{Enter} Sleep 2000 SendInput, {F6}/do На экране быстро быстро проскакивают строки кода{Enter} Sleep 2000 SendInput, {F6}/do Код на экране остановился{Enter} Sleep 1000 SendInput, {F6}/try увидел, как на экране появился код системы{Enter}
GetChatLine(0,Str)
if (RegexMatch(Str, "Мой_Ник увидел, как на экране появился код системы | (.*)", Res)) { if (Res1 == "Удачно") { SendInput, {F6}/do Код от системы: ***********************{Enter} Sleep 3000 SendInput, {F6}/me ввёл команду для резервации кода на накопитель{Enter} } else if (Res1 == "Неудачно") { SendInput, {F6}/me ввел команду заного, после чего нажал "ENTER" goto vzlom } } return
Сообщение отредактировал shamanchik9991 - Четверг, 29.09.2016, 12:50 |
|
|
|
McFree_ |
Дата: Четверг, 29.09.2016, 16:51 | Сообщение # 4
|
В рядах СМ.
Сообщений: 321
Статус: Offline
|
просто правильно составь регулярное выражение и все заработает
Помогаю новичкам! По всем вопросам в ЛС!
|
|
|
|
RellaX |
Дата: Четверг, 29.09.2016, 18:50 | Сообщение # 5
|
Боец
Сообщений: 282
Статус: Offline
|
Цитата if (RegexMatch(Str, "(.*) увидел, как на экране появился код системы (.*)", Res)) { if (Res2 == "{66CC00}| Удачно") { SendInput, {F6}/do Код от системы: ***********************{Enter} Sleep 3000 SendInput, {F6}/me ввёл команду для резервации кода на накопитель{Enter} } else if (Res2 == "{FF6600}| Неудачно") { SendInput, {F6}/me ввел команду заного, после чего нажал "ENTER" goto vzlom } } return
https://vk.com/zatkap
Сообщение отредактировал RellaX - Четверг, 29.09.2016, 18:51 |
|
|
|
MrGPro |
Дата: Четверг, 29.09.2016, 22:49 | Сообщение # 6
|
Боец
Сообщений: 202
Статус: Offline
|
Рекомендую добавить проверку ника ;~ -знак комментария
Код ;~ GetChatLine(0, Str) - не будет работать если файл (file) чатлога будет например на диске C://
;~ RegRead, NickName, HKEY_CURRENT_USER, SoftWare\SAMP, PlayerName ;~ или ;~ NickName := getUsername()
GetChatLine(0, Output) if (RegexMatch(Output, "" NickName " увидел, как на экране появился код системы [{(.*)}\][|]\s(.*)", Res)) { if (Res1 == "Удачно") { SendInput, {F6}/do Код от системы: ***********************{Enter} Sleep 2000 SendInput, {F6}/me ввёл команду для резервации кода на накопитель{Enter} } if (Res1 == "Неудачно") { SendInput, {F6}/me ввел команду заново, после чего нажал "ENTER" goto vzlom } } return
;~ Вырезанная Функция SampUDF которая читает файл chatlog GetChatLine(Line, ByRef Output, timestamp=0, color=0){ chatindex := 0 FileRead, file, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt ; <== если файл chatlog создаться не тут то не работает loop, Parse, file, `n, `r { if(A_LoopField) chatindex := A_Index } loop, Parse, file, `n, `r { if(A_Index = chatindex - line){ output := A_LoopField break } } file := "" if(!timestamp) output := RegExReplace(output, "U)^\[\d{2}:\d{2}:\d{2}\]") if(!color) output := RegExReplace(output, "Ui)\{[a-f0-9]{6}\}") return }
Добавлено (29.09.2016, 22:49) ---------------------------------------------
Цитата RellaX ( ![Ссылка на цитируемый текст](/.s/img/fr/ic/4/lastpost.gif) ) if (RegexMatch(Str, "(.*) увидел, как на экране появился код системы (.*)", Res)) { if (Res2 == "{66CC00}| Удачно") {
RellaX, серьезно (Res2 == "{66CC00}| Удачно")ничего что RegexMatch принимает выражение в формате{min,max}- если{66CC00} - возврат пустого значения
Тебе помогли не забывай про благодарность >> тыкни репутацию ---------------------------------------͡ ͋̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏͋͋' ͡ ͋̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏͋͋' ͡ ͋̏̏̏̏̏̏̏̏̏ ----------------------------------------------------- Зам.Администратора на проекте "DayZ Epoсh SPN" сервер Arma 2OA DayZ Epoch пиратка и лицензия
Сообщение отредактировал MrGPro - Четверг, 29.09.2016, 22:54 |
|
|
|
shamanchik9991 |
Дата: Пятница, 30.09.2016, 12:50 | Сообщение # 7
|
Любитель
Сообщений: 31
Статус: Offline
|
Цитата MrGPro ( ![Ссылка на цитируемый текст](/.s/img/fr/ic/4/lastpost.gif) ) Рекомендую добавить проверку ника ;~ -знак комментария Код ;~ GetChatLine(0, Str) - не будет работать если файл (file) чатлога будет например на диске C://
;~ RegRead, NickName, HKEY_CURRENT_USER, SoftWare\SAMP, PlayerName ;~ или ;~ NickName := getUsername()
GetChatLine(0, Output) if (RegexMatch(Output, "" NickName " увидел, как на экране появился код системы [{(.*)}\][|]\s(.*)", Res)) { if (Res1 == "Удачно") { SendInput, {F6}/do Код от системы: ***********************{Enter} Sleep 2000 SendInput, {F6}/me ввёл команду для резервации кода на накопитель{Enter} } if (Res1 == "Неудачно") { SendInput, {F6}/me ввел команду заново, после чего нажал "ENTER" goto vzlom } } return
;~ Вырезанная Функция SampUDF которая читает файл chatlog GetChatLine(Line, ByRef Output, timestamp=0, color=0){ chatindex := 0 FileRead, file, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt ; <== если файл chatlog создаться не тут то не работает loop, Parse, file, `n, `r { if(A_LoopField) chatindex := A_Index } loop, Parse, file, `n, `r { if(A_Index = chatindex - line){ output := A_LoopField break } } file := "" if(!timestamp) output := RegExReplace(output, "U)^\[\d{2}:\d{2}:\d{2}\]") if(!color) output := RegExReplace(output, "Ui)\{[a-f0-9]{6}\}") return } Попробовал вставить код, выдал ошибку по строчке "GetChatLine(Line, ByRef Output, timestamp=0, color=0){". Так же попытался вставить код человека выше: Цитата RellaX ( ![Ссылка на цитируемый текст](/.s/img/fr/ic/4/lastpost.gif) ) if (RegexMatch(Str, "(.*) увидел, как на экране появился код системы (.*)", Res)) { if (Res2 == "{66CC00}| Удачно") { SendInput, {F6}/do Код от системы: ***********************{Enter} Sleep 3000 SendInput, {F6}/me ввёл команду для резервации кода на накопитель{Enter} } else if (Res2 == "{FF6600}| Неудачно") { SendInput, {F6}/me ввел команду заного, после чего нажал "ENTER" goto vzlom } } return Все равно не выводит
|
|
|
|
MrGPro |
Дата: Пятница, 30.09.2016, 14:34 | Сообщение # 8
|
Боец
Сообщений: 202
Статус: Offline
|
Цитата shamanchik9991 ( ![Ссылка на цитируемый текст](/.s/img/fr/ic/4/lastpost.gif) ) Попробовал вставить код, выдал ошибку по строчке "GetChatLine(Line, ByRef Output, timestamp=0, color=0){".
Ругается потому что GetChatLine(Line, ByRef Output, timestamp=0, color=0)- уже существует то есть он подключен черезSamp UDf это я для наглядности вырезал данную функцию чтобы не подключать весь UDF
Читать надо:
Код ;~ Вырезанная Функция SampUDF которая читает файл chatlog GetChatLine(Line, ByRef Output, timestamp=0, color=0){
Насчёт этого:
Цитата shamanchik9991 ( ![Ссылка на цитируемый текст](/.s/img/fr/ic/4/lastpost.gif) ) Так же попытался вставить код человека выше: Цитата RellaX () if (RegexMatch(Str, "(.*) увидел, как на экране появился код системы (.*)", Res)) { if (Res2 == "{66CC00}| Удачно") { SendInput, {F6}/do Код от системы: ***********************{Enter} Sleep 3000 SendInput, {F6}/me ввёл команду для резервации кода на накопитель{Enter} } else if (Res2 == "{FF6600}| Неудачно") { SendInput, {F6}/me ввел команду заного, после чего нажал "ENTER" goto vzlom } } return Он не правильно сделал Res2 == "{66CC00}| Удачно" и Res2 == "{FF6600}| Неудачно" , эти закрывающие теги {66CC00}- возвращают Null(пустое,чистое) значение если между ними стоит например цветовой тег 66CC00, а если внутри сделано так {min, max} то вернет значение в скобках от min и до max
>> Следовательно Res2 == "| Удачно" и Res2 == "| Неудачно"
Тебе помогли не забывай про благодарность >> тыкни репутацию ---------------------------------------͡ ͋̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏͋͋' ͡ ͋̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏̏͋͋' ͡ ͋̏̏̏̏̏̏̏̏̏ ----------------------------------------------------- Зам.Администратора на проекте "DayZ Epoсh SPN" сервер Arma 2OA DayZ Epoch пиратка и лицензия
Сообщение отредактировал MrGPro - Пятница, 30.09.2016, 14:50 |
|
|
|
RellaX |
Дата: Пятница, 30.09.2016, 23:50 | Сообщение # 9
|
Боец
Сообщений: 282
Статус: Offline
|
MrGPro, Ок да, с этим я протупил т.к давно не юзал. Можно вообще не использовать текст не/удачно, а тупо код цвета в "{}"
https://vk.com/zatkap
Сообщение отредактировал RellaX - Пятница, 30.09.2016, 23:50 |
|
|
|