[Помощь]: Проверка текста - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Sanoxxx, Alowir, Phoenixxx_Czar  
Форум » Программирование » AHK Программирование » [Помощь]: Проверка текста
[Помощь]: Проверка текста
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_ ()
через регулярное выражение
Код
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 ()
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 ()
Рекомендую добавить проверку ника ;~ -знак комментария
Код
;~ 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 ()
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 ()
Попробовал вставить код, выдал ошибку по строчке "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 ()
Так же попытался вставить код человека выше:
Цитата 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
Форум » Программирование » AHK Программирование » [Помощь]: Проверка текста
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума
Лучшие пользователи
Admin [39113]

GеNius [7209]

[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]

Новые пользователи
pokotiloroman91 [18:24]

stephensh5 [12:00]

calliesv7 [06:11]

louqm16 [22:14]

artushak [16:32]

Kingpolker [15:42]

leeyv11 [15:12]

Trappa17 [01:00]

Djamalchik [16:40]

ajeense [14:24]

654470559 [08:55]

Newtone [03:01]

godspeed [21:31]