Ахк скрипт(считывание строки)

Статус
В этой теме нельзя размещать новые ответы.

Андруша.

Известный
Автор темы
44
6
Здравствуйте.
Помогите пожалуйста с АХК скриптом.
Суть скрипта:
Numpad1::
1) К примеру жмякаю клавишу нум1, в чате выскакивает ID далее я ввожу ид (239 например) и жмякаю enter и с тем ид происходит определенное действие в других строках.
2) SendInput {F6}/free{ENTER} // после этого в чате появляется строка Пример: У Вас откат (39 секунд)
3) Далее нужно что бы в следующую строку вписывался текст (который указан в пункте 2) в этом случает "39"
SendInput {F6}/pm (расписано в 1 пункте) В данный момент у меня откат - 39 секунд.{ENTER}

Ну хоть это подскажите :(
SendInput {F6}/free{ENTER} // после этого в чате появляется строка Пример: У Вас откат (39 секунд)
Далее нужно что бы в следующую строку вписывался текст (который указан в пункте 2) в этом случает "39"
SendInput {F6}В данный момент у меня откат - 39 секунд.{ENTER}
 
Последнее редактирование модератором:

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,446
Такой ты конечно.
Из разряда - любишь кататься - люби и саночки возить.
Описание не очень и понятно. Что за выскакивающие иды, что ты именно хочешь: то ли выдрать число из строки, то ли скрипт за тебя сделать.
Всё это решается очень легко - пишем каждый свой вопрос(по мере написания кода) в строку поиска гугла и добавляем в конец ahk.
Дрыц-тыц!
 
  • Нравится
Реакции: applethecandy

Андруша.

Известный
Автор темы
44
6
Попробую еще раз объяснить чтобы было понятней :(
1)Нажимаю клавишу нумпад 1
2)Далее вводиться команда:
SendInput {F6}/free{ENTER}
3)После ввода этой команды в чате появляеться сообщение:
У Вас откат (39 секунд)
4)И в следующей строке должно выводиться то, что написано в пункте - 3
SendInput {F6}/s У меня откат 39 секунд.{ENTER}


Это к примеру я написал, за меня не нужно скрипт делать, мне просто нужно подсказать как "выдрать число из строки"
 
Последнее редактирование:

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,446
Хз как там делать до 3 пункта.
Вот функция для 3 пункта: http://ahk-wiki.ru/regexmatch
Что-то вроде
Код:
FoundPos := RegExMatch(text_line, "У Вас откат \((\d+) секунд\)", SubPat)  ;
Если FoundPos = 0, то совпадений не найдено; если больше - что-то найдено. В SubPat1(или просто SubPat) вернется значение(в твоем случае - число). По справке глянь - там более-менее понятно.
 
  • Нравится
Реакции: Андруша.

Андруша.

Известный
Автор темы
44
6
Не понятно:sad_frog2:
Вот мой код:
#include samp.ahk
Numpad1::
addchatmsg("У Вас откат (39 секунд)")
Sleep 200
FoundPos := RegExMatch(text_line, "У Вас откат \((\d+) секунд\)", SubPat) ;
SendInput {F6}%SubPat1%{ENTER} // нужно чтобы в этой строке выводился откат
return
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,446
В text_line текст из чата(я хз как там в ахк обмазываются), поэтому как-нибудь сам получи эту строку. А дальше - дело техники.
 

Андруша.

Известный
Автор темы
44
6
Отпишитесь еще кто нибудь кто шарит в АХК, пожалуйста, очень нужно сделать это :)

Еще раз напишу что должен делать скрипт:
1)пишет команду: /free ; это умею :)
после этого в чате появляется строка
У Вас откат (39 секунд)
2)далее нужно что бы этот откат писался в чат
SendInput {F6}У меня откат - 39 секунд.
Вот и все.
Помогите хоть кто нибудь :)
 
Последнее редактирование модератором:

RellaX

Известный
80
9
Задержку (Sleep 500) можешь отрегулировать под свой интернет(Быстро/Медленно отправляет серверу)
Код:
NumPad1::
Sendinput, {F6}/free{Enter}
Sleep 500
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
if RegExMatch(Chatlog, "s).*\[(..):(..):(..)\Q] У Вас откат (\E(.*)\Q секунд)\E", name)
{
    Sendinput, {F6}/s У меня откат %name1% секунд.{Enter}
}
Return
 

Андруша.

Известный
Автор темы
44
6
Задержку (Sleep 500) можешь отрегулировать под свой интернет(Быстро/Медленно отправляет серверу)
Код:
NumPad1::
Sendinput, {F6}/free{Enter}
Sleep 500
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
if RegExMatch(Chatlog, "s).*\[(..):(..):(..)\Q] У Вас откат (\E(.*)\Q секунд)\E", name)
{
    Sendinput, {F6}/s У меня откат %name1% секунд.{Enter}
}
Return

Спасбо большое за помощь, но оно не совсем правильно работает :C
 

Андруша.

Известный
Автор темы
44
6
Вот так работает, но считывает только раз, далее нужно очистить chatlog.txd только тогда обновиться таймер.
NumPad1::
addchatmsg("У Вас откат (34 секунд)")
Sleep 1000
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
FoundPos := RegExMatch(Chatlog, "У Вас откат \((\d+) секунд\)", name)
{
Sendinput, {F6}/c У меня откат %name1% секунд.{Enter}
}
Return
 

applethecandy

Now it's PHP time
Проверенный
253
328
Вот так работает, но считывает только раз, далее нужно очистить chatlog.txd только тогда обновиться таймер.
NumPad1::
addchatmsg("У Вас откат (34 секунд)")
Sleep 1000
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
FoundPos := RegExMatch(Chatlog, "У Вас откат \((\d+) секунд\)", name)
{
Sendinput, {F6}/c У меня откат %name1% секунд.{Enter}
}
Return
Ну так в чем проблема, очищай чатлог через FileDelete, %a_MyDocuments%\...\Chatlog.txt и по новой
 

Андруша.

Известный
Автор темы
44
6
О общем, такой вот скриптик вышел, огромное спасибо тем кто отписался в данной теме :)

Код:
#include samp.ahk
:?:-otk::
Send, ^{vk41}
Send, ^{vk43}{backspace}{esc}
var100=%clipboard%
SendChat("/id " var100 "")
sleep 500
SendChat("/free")
sleep 600
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
FoundPos := RegExMatch(Chatlog, "Команда будет доступна через (\d+) сек.", name)
{
SendInput {F6}/pm %var100% Извините, но у меня откат - %name1% секунд.{ENTER}
sleep 400
name = %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
to_skip = Команда будет доступна через
Loop, read, %name%
{
    IfInString, A_LoopReadLine, %to_skip%, continue
    a .= A_LoopReadLine . "`n"
}
FileDelete, %name%
FileAppend, %a%, %name%
}
return
Можно закрывать тему :)
 
Статус
В этой теме нельзя размещать новые ответы.