- 1,214
- 1,043
Синтаксис регулярных выражений: http://ahk-wiki.ru/regex и RegExMatch() -Autohotkey(http://ahk-wiki.ru/regexmatch)
Пример есть внизу страницы.
Пример есть внизу страницы.
Легче будет подключить SAMP UDF и воспользоваться SendChat(text) функцией...Здравствуйте, у меня такая проблема при команде в AHK
:?:/lc2::
SendMessage, 0x50,, 0x4190419,, A
Sendinput, {F6}/todo Хорошо, подождите одну минуту*открывая базу данных Автошколы{Enter}
sleep, 1000
Sendinput, {F6}- Для выполнения данной услуги мне нужен ваш паспорт и мед. карта.{Enter}
return
У меня не выводит команду /todo в чате пишеться примерно так
do Хорошо, подождите одну минуту*открывая базу данных Автошколы
- Для выполнения данной услуги мне нужен ваш паспорт и мед. карта
Что делать, подскажите
Это - самый простой вариант. Вместо {Down 4} - вставляешь, сколько раз надо нажать стрелку вниз, чтобы выделена была, к примеру, аптечка.С помощь чего в AHK можно реализовать авто покупку, допустим открываю диалоговое окно и при нажатии на определённую кнопку происходила бы покупка, например Аптечки(2шт.) и Маска(2шт.). Как это можно реализовать?
Imgur(https://imgur.com/a/MiWIbtd)
!1::
{
SendInput, {down 4}
Sleep, 150
SendInput, {Enter}
}
return
Не рабит, тупо профлуживает чатLoop
{
if (A_Hour == "12") and (A_Min == "15")
}
}
un:
SendMessage, 0x50,, 0x4190419,, A
("1","Причина", "Выберите причину увольнения:`n`n1- Продажа военного имущества.`n2 - Улучшение навыков стрельбы без разрешения.`n3 - Самовольное покидание части.`n4 - Самовольный перевод в ВО.`n5 - Стрельба по сослуживцам.`n6 - Неадекватное поведение.`n7 - Растрата боеприпасов.`n8 - Снятие повязки.`n9 - Нахождение в лаборатории.`n10 - Хождение по вентиляции.`n11 - Нарушение правил сна.`n12 - Езда по части.`n13 - Оскорбление.`n14 - (( Самовол сменой спавна. ))`n15 - (( Читы. ))`n16 - (( Мат в ООС. ))`n", "закрыть")
while isDialogOpen
sleep 0
if GetKeyState("Esc","p")
{
KeyWait Esc
return
}
KeyWait Enter
KeyWait NumpadEnter
goto, uval
uval:
if (prichinanumber=="")
{
AddChatMessage (" Причина увольнения не указана.")
return
}
if RegExMatch(prichinanumber, "^\d+$")
if (prichinanumber==1)
prichina = Продажа военного имущества.
if (prichinanumber==2)
prichina = Улучшение навыков стрельбы без разрешения.
if (prichinanumber==3)
prichina = Самовольное покидание части.
if (prichinanumber==4)
prichina = Самовольный перевод в ВО.
if (prichinanumber==5)
prichina = Стрельба по сослуживцам.
if (prichinanumber==6)
prichina = Неадекватное поведение.
if (prichinanumber==7)
prichina = Растрата боеприпасов.
if (prichinanumber==8)
prichina = Снятие повязки.
if (prichinanumber==9)
prichina = Нахождение в лаборатории.
if (prichinanumber==10)
prichina = Хождение по вентиляции.
if (prichinanumber==11)
prichina = Нарушение правил сна.
if (prichinanumber==12)
prichina = Езда по части.
if (prichinanumber==13)
prichina = Оскорбление.
if (prichinanumber==14)
prichina = (( Самовол сменой спавна. ))
if (prichinanumber==15)
prichina = (( Читы. ))
if (prichinanumber==16)
prichina = (( Мат в ООС. ))
else if !(prichinanumber<1 or prichinanumber<17)
{
AddChatMessage ("Причина увольнения указана неверно. Введите значение от 1 до 16, либо впишите причину словами.")
return
}
else
prichina:=prichinanumber
SendChat ("/uninvite " id1 " " prichina)
return
blc:
UrlDownloadToFile, https://docs.google.com/spreadsheets/d/1h7kmg5iE0Z_jVMtkHzIKbKo5GMhF-asB-NvIdSUARC8/export?exportFormat=csv, %A_ScriptDir%\LVABLp.txt
Sleep, 30
checkLists++
AddChatMessage ("Списки загружены.")
Return
ch:
SendMessage, 0x50,, 0x4190419,, A
if (checkLists!=1)
{
addChatMessage ("Внимание! Вы зыбыли загрузить обновлённые списки!")
goto, load
}
warn:= "Нельзя принять игрока (имеется warn)"
fraka:= "Этот игрок уже состоит в организации"
bl = % getIdByPed (getTargetPed)
if ((bl=-1) or (!bl))
{
SendInput, {F6}/bl{Space}
Input, bl, v, {Enter}{Esc}{F6}
if ErrorLevel = EndKey:Enter
{
nick = % getPlayerNameById (bl)
if (nick=-1)
{
addChatMessage ("Персонажа с ID " bl " нет в сети.")
return
}
if bl not between 0 and 999
{
addChatMessage ("{Вы ввели что-то не то.")
return
}
}
else
{
Addchatmessage ("Вы не ввели ID персонажа.")
return
}
}
else
nick = % getPlayerNameById (bl)
RegExMatch(nick, "^(.*?)_(.*?)$", nickName)
SendChat ("/me заглянул в паспорт")
ping = % getPlayerPingById (getUsername) + 1500
Sleep, %Ping%
FileEncoding
FileRead, Chatloglegal, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
if RegExMatch(Chatloglegal, "m`as)^.*\[[^\r\n].*?Имя:\s" nick ".*?Законопослушность:\s*(\-?\d+)", zakon)
{
if not RegExMatch(nick, "^[A-Z][a-z]*?[a-z]\_[A-Z][a-z]*$", rpnick)
{
ping = % getPlayerPingById (getUsername) + 1500
Sleep, %Ping%
SendChat ("Гражданин, ваш паспорт имеет явные следы подделки. Покиньте призыв.")
ping = % getPlayerPingById (getUsername) + 1500
Sleep, %Ping%
SendChat ("/b У вас не РП-ник. Обратитесь к администрации для смены ника.")
return
}
score := getPlayerScoreById (bl)
if not (score>2)
{
ping = % getPlayerPingById (getUsername) + 1500
Sleep, %Ping%
SendChat (nickName1 " " nickName2 ", вы недостаточно долго проживаете в штате.")
ping = % getPlayerPingById getUsername + 1500
Sleep, %Ping%
SendChat ("Поступить на службу можно с трёх лет проживания. Покиньте призыв.")
return
}
}
else
{
addChatMessage ("Персонаж с ID " bl " не предъявлял свой паспорт.")
return
}
SendChat (nickName1 " " nickName2 ", сейчас я проверю вас на нахождение в чёрных списках.")
ping = % getPlayerPingById (getUsername) + 1500
Sleep, %Ping%
SendChat ("/me пролистал страницы чёрных списков")
Sleep, 500
FileEncoding, UTF-8-RAW
Loop, Read, %A_ScriptDir%\LVABLp.txt
{
if RegExMatch (A_LoopReadLine, "^.*" nickName1 "[\s|_]" nickName2 "\W.*,(.*?)$", reason)
{
addChatMessage (" " nickName1 " " nickName2 " [" bl "] находится в ЧС LVA. Причина: " reason1 " .")
ping = % getPlayerPingById (getUsername) + 1500
Sleep, %Ping%
SendChat ("/do " nickName1 " " nickName2 " находится в ЧС LVA")
ping = % getPlayerPingById (getUsername) + 1500
Sleep, %Ping%
SendChat (nickName1 " " nickName2 ", вы находитесь в ЧС армии Лас Вентурас. Покиньте призыв.")
return
}
}
addChatMessage (" " nickName1 " " nickName2 " [" bl "] годен.")
ping = % getPlayerPingById (getUsername) + 1500
Sleep, %Ping%
SendChat ("/do " nickName1 " " nickName2 " не состоит в чёрных списках")
ping = % getPlayerPingById (getUsername) + 1500
Sleep, %Ping%
SendChat ("Всё в порядке.")
ping = % getPlayerPingById (getUsername) + 1500
Sleep, %Ping%
SendChat ("/b /time + F8 после принятия. Необходимо для дальнейшего перевода в ПД.")
ping = % getPlayerPingById (getUsername) + 1500
Sleep, %Ping%
pp = 0
tt = 0
FileEncoding
Loop, Read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
pp:=pp + 1
SendChat ("/invite " bl)
ping = % getPlayerPingById (getUsername) + 1500
Sleep, %Ping%
NewChatlog:=""
Loop, Read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
{
tt:=tt + 1
If (tt>pp)
NewChatlog:= NewChatlog "`n" A_LoopReadLine
}
IfInString, NewChatlog, %warn%
{
SendChat ("Погодите... " nickName1 " " nickName2 ", у вас оформлена инвалидность.")
ping = % getPlayerPingById (getUsername) + 1500
Sleep, %Ping%
SendChat ("Мы не можем принять вас на службу. Покиньте призыв.")
ping = % getPlayerPingById (getUsername) + 1500
Sleep, %Ping%
SendChat ("/b У вас имеется активный варн. Нельзя принять.")
Sleep, 10
}
else
{
IfInString, NewChatlog, %fraka%
{
SendChat ("Погодите... " nickName1 " " nickName2 ", вы уже имеете работу.")
ping = % getPlayerPingById (getUsername) + 1500
Sleep, %Ping%
SendChat ("Мы не можем принять вас на службу, пока вы не уволитесь.")
ping = % getPlayerPingById (getUsername) + 1500
Sleep, %Ping%
SendChat ("/b Вы уже состоите во фракции. Мы не можем вас принять.")
Sleep, 10
}
else
{
SendChat ("/me поставил штамп в паспорт")
ping = % getPlayerPingById (getUsername) + 1500
Sleep, %Ping%
FileEncoding, UTF-8-RAW
FileAppend, `n%nickName1%_%nickName2% принят %A_YYYY%-%A_MM%-%A_DD% %A_Hour%-%A_Min%-%A_Sec%, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Принятые.txt
SendChat (nickName1 " " nickName2 ", садитесь в вертолёт или хаммер. Если их нет, то подождите.")
}
}
pp = 0
tt = 0
Return
vr:
If ((tag1!="12") and (tag1!="13") and (tag1!="14") and (tag1!="15") and (tag1!="komenda"))
{
return
}
ld:
zakonitog =
FileDelete, %A_ScriptDir%\LVABLp.txt
FileDelete, %A_ScriptDir%\OBLp.txt
FileDelete, %A_ScriptDir%\GOSBLp.txt
checkLists = 0
addChatMessage ("Списки удалены.")
Return
vignat:
SendChat ("Вы числитесь в розыске. Обратитесь к офицеру полиции.")
Return
load:
UrlDownloadToFile, https://docs.google.com/spreadsheets/d/1h7kmg5iE0Z_jVMtkHzIKbKo5GMhF-asB-NvIdSUARC8/export?exportFormat=csv, %A_ScriptDir%\LVABLp.txt
Sleep, 30
checkLists++
AddChatMessage ("Списки загружены.")
return
StartCheckIn:
addChatMessage (" Поиск начался...")
i=0
If RegExMatch (CheckName, "^([A-Z][a-z]*[a-z])[_|\s]([A-Z][a-z]*[a-z])$", whoi)
NickName = %whoi1% %whoi2%
else
AddChatMessage ("Введённое вами имя некорректно.")
UrlDownloadToFile, https://docs.google.com/spreadsheets/d/1h7kmg5iE0Z_jVMtkHzIKbKo5GMhF-asB-NvIdSUARC8/export?exportFormat=csv, %A_Temp%\a5fv1c\LVABL.txt
FileEncoding, UTF-8-RAW
Loop, Read, %A_Temp%\a5fv1c\LVABL.txt
{
if RegExMatch(A_LoopReadLine, "^.*" NickName "\W.*,(.*?)$", reason)
{
i++
addChatMessage (" " NickName " находится в ЧС LVA. Причина: " reason1 ".")
}
}
FileDelete, %A_Temp%\a5fv1c\LVABL.txt
FileDelete, %A_Temp%\a5fv1c\OBL.txt
FileDelete, %A_Temp%\a5fv1c\GOSBL.txt
FileEncoding
If (i=0)
AddChatMessage (" Данный игрок не числится в Черных Списках.")
return
Numpad5::
SendMessage, 0x50,, 0x4090409,, A
SendMessage, 0x50,, 0x4190419,, A
showDialog(1, "{3366CC}Police - Script", "{FFFFFF}Напишите сюда ID преступника","Закрыть","Далее")
input, prich, V, {enter}
Sleep 300
SendChat("/me достал КПК из правого кармана после чего включил его")
Sleep 2100
SendChat("/me открыл базу данных МВД")
Sleep 2100
SendChat("/me вводит данные о задержанном преступнике")
Sleep 2100
SendChat("/do Дело закрыто.")
Sleep 2100
SendChat("/arrest " prich "")
Sleep 2100
SendChat("/me выключил КПК")
Sleep 2100
SendChat("/do Мини-наушник в правом ухе.")
Sleep 2100
SendChat("/me нажал на мини-наушники")
SendMessage, 0x50,, 0x4090409,, A
SendMessage, 0x50,, 0x4190419,, A
Sleep 2100
naparid := NearCopPlayersID(5)
nick := RegExReplace(getPlayerNameById(naparid), "_", " ")
SendChat("/r " RTag " Закрыто дело номер: " prich " | Напарник: " nick "")
Return
Кодировка ANSI-32 должно быть.Помогите, какой бы простенький ахк я не написал в игру это не пишется я незнаю уже что делать, например:
!1::
SendInput, {f6}Всем привет{enter}
sleep 3000
SendInput, {f6}Всем пока{enter}
return
Повторение - loop / setTimer / whileЗдраствуйте, не могу никак написать код на 2 действия...
Сесть в машину(клавиша G)(через 3 секунды), выйти из неё(клавиша F) и чтобы действие повторялось
Здраствуйте, не могу никак написать код на 2 действия...
Сесть в машину(клавиша G)(через 3 секунды), выйти из неё(клавиша F) и чтобы действие повторялось
loop,
{
sendinput, {g down}
sleep, 200
sendinput, {g up}
sleep, 3000
sendinput, {f down}
sleep, 200
sendinput, {f up}
sleep, 1000
}