Список клавиш и кнопок мыши/джойстика
Мышь (работает только с Windows NT/2000/XP)
LButton — левая кнопка мыши
RButton — правая кнопка мыши
MButton — средняя кнопка мыши (или колесо)
WheelDown — поворот колеса мыши «вниз»
WheelUp — поворот колеса мыши «вверх»
Поддерживается только Windows 2000/XP:
XButton1 — четвертая кнопка мыши, боковая
XButton2 — пятая кнопка мыши, боковая
Клавиатура
Примечание: названия буквенных и цифровых клавиш точно такие же, как и сами символы этих клавиш. То есть, клавиша «b» записывается как b, а клавиша «5» как 5.
Space — пробел
Tab
Enter (или Return)
Escape (или Esc)
Backspace (или BS)
Delete (или Del)
Insert (или Ins)
Home
End
PgUp
PgDn
Up
Down
Left
Right
ScrollLock
CapsLock
NumLock
NumpadDiv — слэш «/»
NumpadMult — звездочка «*»
NumpadAdd — плюс «+»
NumpadSub — минус «-«
NumpadEnter — клавиша «Numpad-Enter»
Следующие названия клавиш используются, когда Numlock выключен:
NumpadDel
NumpadIns
NumpadClear — та же кнопка, что и Numpad5 на клавиатуре
NumpadUp
NumpadDown
NumpadLeft
NumpadRight
NumpadHome
NumpadEnd
NumpadPgUp
NumpadPgDn
Эти названия клавиш используются при включенном Numlock’e:
Numpad0
Numpad1
Numpad2
Numpad3
Numpad4
Numpad5
Numpad6
Numpad7
Numpad8
Numpad9
NumpadDot — «Numpad-точка»
С F1 по F24 — двенадцать или более функциональных клавиш, на большинстве клавиатур представлены в самом верхнем ряду.
AppsKey — клавиша, вызывающая контекстное меню файла/программы, как при правом клике мышкой.
LWin — левая клавиша «Windows»
RWin — правая клавиша «Windows»
Control (или Ctrl)
Alt
Shift
Примечание: в большинстве случаев работа со следующими шестью клавишами не поддерживается под Windows 95/98/Me. Используйте в этом случае вариант их записи, приведенный выше, вместо следующего:
LControl (или LCtrl) — левый «Сontrol»
RControl (или RCtrl) — правый «Сontrol»
LShift
RShift
LAlt — левый «Alt»
RAlt — правый «Alt». Примечание: если на вашей клавиатуре вместо клавиши RAlt сделана клавиша AltGr, вы можете использовать следующую запись данной клавиши: <^>! Также заметим, что клавишу AltGr можно записать как сочетание клавиш «LControl & RAlt::».
PrintScreen
CtrlBreak
Pause
Break
Help — довольно редкая клавиша, присутствует далеко не на всех клавиатурах. И работает совсем не как F1.
Sleep — предупреждаем, что клавиша «Sleep» на некоторых клавиатурах не работает под этой записью.
Клавиши расширенных функций Мультимедийных и Интернет-клавиатур:
Browser_Back
Browser_Forward
Browser_Refresh
Browser_Stop
Browser_Search
Browser_Favorites
Browser_Home
Volume_Mute
Volume_Down
Volume_Up
Media_Next
Media_Prev
Media_Stop
Media_Play_Pause
Launch_Mail
Launch_Media
Launch_App1
Launch_App2
Запись вида SCnnn, где nnn — это сканкод клавиши, позволяет нам работать с остальными клавишами, не упоминавшимися выше. Подробнее об этом — см. ниже.
Возможна запись VKnn, где nn является шестнадцатиричным виртуальным кодом клавиши. Несмотря на то, что этот редко используемый метод поддерживается всеми версиями программы, только с версии 1.0.38.02 и выше для некоторых типов горячих клавиш реализовано предотвращение отслеживания их функцией «keyboard hook» (обработчик клавиатурных прерываний). Например, следующая комбинация клавиш не использует обработчик клавиатурных прерываний (keyboard hook), и как следствие может быть запущена нажатием как клавиши Home, так и NumpadHome:
^VK24::MsgBox Вы нажали Home или NumpadHome`, удерживая клавишу Control.
Джойстик
Joy1 — Joy32: кнопки джойстика. Для удобства определения номеров кнопок вашего джойстика был создан специальный тест-скрипт (см. ссылку в оригинале статьи). Обратите внимание, что такие префиксы, как ^ (control) и + (shift) здесь не поддерживаются (тем не менее, команда GetKeyState может использоваться). Также обратите внимание, что нажатия клавиш джойстика всегда обращены напрямую в активное окно, поддерживающее приём таких сигналов.
Несмотря на то, что следующие управляющие элементы джойстика не могут использоваться как горячие клавиши, их можно использовать при помощи команды GetKeyState:
JoyX, JoyY, и JoyZ: где X (горизонтальная), Y (вертикальная), и Z (высота/глубина) — оси координат джойстика.
JoyR: руль джойстика или 4-ая ось джойстика.
JoyU и JoyV: 5-ая и 6-ая оси джойстика.
JoyPOV: the point-of-view (hat) control (POV control, «шляпка» или «переключатель видов»; например, вид глазами игрока).
JoyName: название джойстика.
JoyButtons: количество кнопок, поддерживаемых джойстиком (не всегда точное).
JoyAxes: количество направлений, поддерживаемых джойстиком.
JoyInfo: генерирует строку, состоящую из нуля или более знаков, иллюстрирующих возможности джойстика: Z (имеется Z направление), R (имеется R направление), U (имеется U направление), V (имеется V направление), P (имеется POV control), D (POV control имеет ограниченное количество дискретных/промежуточных настроек), C (POV control передает непрерывные/точные данные). Пример строки: ZRUVPD.
Несколько джойстиков: если вы используете несколько джойстиков одновременно, то для более точной адресации команды используйте при записи номер джойстика перед именем клавиши джойстика. Например запись 2joy1 будет обозначать первую кнопку второго джойстика.
Примечание: если у вас возникли проблемы с определением скриптами вашего джойстика, вы можете попробовать изменить номер джойстика с 1 на что-нибудь другое, даже несмотря на то, что к компьютеру у вас подключен всего один. Неизвестно, по каким мистическим причинам, но иногда это вместе с использованием нашего тестового скрипта даёт положительный результат.
Использование джойстика как мыши: специальный скрипт превращает ваш джойстик в мышь (см. ссылку в оригинале статьи).
Дистанционные пульты управления
Получение сигналов от дистанционных пультов управления с помощью специального клиентского скрипта WinLIRC — см. ссылку в оригинале статьи.
Специальные клавиши
Если ваши клавиатура или мышь имеют клавиши, не перечисленные выше, вы всё равно имеете возможность использовать их в качестве горячих клавиш, используя следующий метод (необходимы Windows NT/2000/XP или выше):
1. Вначале убедитесь, что у вас проинсталлирован обработчик клавиатурных прерываний (keyboard hook) — #InstallKeybdHook.
2. Запускаем этот скрипт, и затем двойным кликом по его иконке в системном трее открываем его главное окно.
3. Затем нажимаем ту самую клавишу, которую пытаемся определить.
4. Далее открываем меню окошка скрипта «View — Key history and script info» и прокручиваем записи до самого низа.
5. Где-то внизу этого лога должны быть записи по нажатию-отпусканию нашей искомой клавиши. Сам лог обновляется нажатием клавиши F5. Примечание: если после нажатия искомой клавиши никаких записей в логе не появилось, значит такая клавиша не распознаётся данной программой. В этом случае вы не можете использовать данную клавишу как горячую, т.к. либо драйвер вашей клавиатуры, либо сама её «железная» составляющая даёт сигнал слишком низкого уровня, недоступного для AutoHotkey. В случае со «злобными» драйверами, вы можете попробовать либо перенастроить сами «родные» драйвера, либо заменить их на другие, более дружественые, например такие, как дефолтные клавиатурные драйвера Windows.
6. Если ваша клавиша успешно определилась, обратите внимание на трехзначное шестнадцатеричное число во второй колонке лога (например, 159).
7. Теперь, чтобы использовать данную клавишу как горячую, следуйте данному примеру:
SC159:: ; Замените 159 на индекс вашей клавиши.
MsgBox, Вы нажали клавишу %A_ThisHotKey%
Return
Как альтернативный способ или в добавление к описанному выше: для переназначения какой-либо клавиши в нашу «искомую» клавишу, используйте запись вида #c::Send {vkFFsc159}. Замените 159 на индекс вашей клавиши, определённый вышеописанным методом. При необходимости замените буквы FF на те, что отображены в первой колонке лога «View-Key history» (код вашей виртуальной клавиши).
© Dmitrij_Medvedev
На чтение 3 мин Просмотров 2.3к. Опубликовано 26.01.2023
AutoHotkey — сценарный язык программирования, который существенно упрощает процесс PR отыгровок посредством автоматического ввода в игровой чат ряда подготовленных фраз.
AHK по большей части нужен тем игрокам, которые работают в силовых структурах (таких как LSPD, FIB и др.), ведь именно там высокая концентрация коммуникативных действий, где при нажатии нескольких клавиш вы в считанные секунды можете воспроизводить объемные отыгровки с использованием /do, /me, /try и т.д. (например, при проверке гос. сотрудником угнанной машины на предмет взлома).
В crime фракциях отыгровки понадобятся при ограблении гражданских или похитках
Содержание
- Установка языка
- Создание файла
- Написание отыгровок
- Работа скрипта
Установка языка
Установка AHK не занимает много времени и не требует специальных знаний, нужно лишь скачать файл с официального сайта и установить языковой пакет на свой компьютер.
Ссылка на скачивание с оф. сайта (v1.1): www.autohotkey.com
Создание файла
Установив AutoHotkey, открываем контекстное меню нажатием правой кнопки мыши на рабочем столе, создаем файл скрипта, выбрав пункт «Создать › AutoHotkey Script», и открываем его любым доступным редактором (например, Блокнот).
Написание отыгровок
Разберем принцип написания кода на примере простой отыгровки.
Numpad7::
{
Sendinput, {F6}
Sleep, 200
Sendinput /do Ключ-карта находится на поясе.{Enter}
Sleep, 2200
Sendinput, {F6}
Sleep, 200
Sendinput /me снял ключ-карту с пояса, открыл КПЗ и провел туда задержанного{Enter}
Sleep, 2200
Sendinput, {F6}
Sleep, 200
Sendinput /me закрыл КПЗ и повесил ключ-карту на пояс{Enter}
Return
}
Numpad7:: — клавиша (7 на цифровом блоке клавиатуры), по нажатию которой будет воспроизводиться сценарий в синих скобках.
Сокращение клавиш: # — Win, ! — Alt, ^ — Ctrl, + — Shift (например, !6:: — среагирует на нажатие сочетания клавиш Alt+6)
Sendinput, {F6} — нажимает клавишу F6, которая открывает форму ввода в игровой чат.
Sleep, 200 — ожидание/задержка в ms после открытия формы ввода в чат.
Sleep, 2200 — ожидание/задержка в ms после отправки текста/отыгровки в игровой чат.
Sleep необходимо указывать между каждым действием, например, нажали F6 — подождали, ввели текст в поле и отправили в чат — подождали
Если код будет сбоить, можете увеличить задержку на 10-20%
Sendinput … {Enter} — вводит в поле заданный текст/отыгровку и нажимает клавишу Enter.
При необходимости ввести символ # ! ^ +, заключите его в фигурные скобки — {!}
Return — оператор, который возвращает результат воспроизведения/выполнения функции (перед Return не нужно указывать Sleep).
Скачать файл с примерами отыгровок: TEST_AHK.rar (Google Диск)
Работа скрипта
Наполнив файл нужными отыгровками, сохраняем его и запускаем, кликнув на значок правой кнопкой мыши и выбрав пункт «Run Script». Если вы все сделали правильно, то на панели задач появится зеленая иконка с буквой «H». Теперь, находясь в игре, при каждом нажатии ранее заданных клавиш будут проигрываться относящиеся к ним сценарии.
Выбрав «Exit» в контекстном меню на иконке в трее, вы завершите работу скрипта
- Регистрация
- 8 Дек 2021
- Сообщения
- 358
- Лучшие ответы
- 4
- Репутация
- 94
- Адрес
-
Российской империи
-
#1
Всем привет! Сегодня я расскажу как создать свой скрипт АХК для Samp. Тоесть его задача выполнять быстрые задачи нажав кнопку.
Я буду использовать программу AutoHotkeyScript(AHK).
Первым делом скачаем саму программу на её оффициальном сайте.
После скачивания, создаем файл на рабочем столе.
Кликаем ПКМ по файлику и нажимаем «Edit Script».
У нас открывается файл, в ней будут символы но нам они не нужны, мы их просто удаляем.
И начинаем писать код скрипта, я буду писать для Полиции Лос-Сантоса.
PHP:
NumPad0::
SendMessage, 0x50,, 0x4190419,, A
NumPad0:: — Это клавиша на которой после нажатия будет производиться сам АХК.
SendMessage, 0x50,, 0x4190419,, A — Нужное системное сообщение, без него АХК работать не будет.
Код:
NumPad0::
SendMessage, 0x50,, 0x4190419,, A
SendInput, {F6}/do Удостоверение лежит в правом кармане.{Enter}
Sleep 750
SendInput, {F6}/me достал в открытом виде удостоверение и показал{Enter}
Sleep 750
SendInput, {F6}/do Удостоверение показано.{Enter}
Sleep 750
SendInput, {F6}/me засунул обратно удостоверение в карман{Enter}
Return
SendInput, {F6} — Это команда сама открывает чат с помощью клавиши F6.
{Enter} в конце команды — Это значит что сообщение само будет отправлятся.
Sleep — Это задержка сообщения, НЕ рекомендую ставить меньше 350 потому что может сработать анти-флуд.
Return — Возвращает функцию.
Вот и всё, сейчас я вам показал как сделать простейшую АХК команду. Если возникнут вопросы писать в данной теме.
Форум » Мусорка » Корзина » AHK Уроки создаем скрипт (Урок по созданию скриптов для ахк ( для сампа )) |
AHK Уроки создаем скрипт |
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
|
||
|
||
Приветствую всех! 👋
Данная статья должна помочь разобраться новичкам в Регулярных выражениях и помочь им самостоятельно писать скрипты на автоматический ответ, при появлении в чате N-строки (по задумке).
🆘🆘🆘
Перед игроком появляется будто бы непреодолимая стена, посмотрев на которую, он побежит по форумам просить помощи.
🆘🆘🆘
Хочу предупредить — данная статья рассчитана на незнающих пользователей. Поэтому подробность данной статьи — это скорее плюс (как по мне).
Для начала, предлагаю взять каркас нашего скрипта:
#Include samp.ahk
#IfWinActive GTA:SA:MP
ChatLog = C:UsersUserDocumentsGTA San Andreas User FilesSAMPchatlog.txt
loop {
lastline := GetNewLine(ChatLog)
;Здесь будет наше регулярное выражение
If expression !=
SendChat("команда")
}
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
}
!end::ExitApp
end::Reload
Что же мы имеем в нашем каркасе? Давайте разберёмся:
;Строка # 1 отвечает за загрузку библиотеки SAMP UDF (обязательно действие при написании скриптов с использованием UDF)
;Строка # 2 исполняет скрипт только в открытом приложении GTA
#Include samp.ahk
#IfWinActive GTA:SA:MP
;Путь к chatlog.txt, а именно к файлу, где сохраняются все сообщения из чата игры
ChatLog = C:UsersUserDocumentsGTA San Andreas User FilesSAMPchatlog.txt
; Начало нашего цикла
loop
{
; lastline - переменная, что хранит в себе данные, полученные с функции GetNewLine.
lastline := GetNewLine(ChatLog)
;Здесь будет наше регулярное выражение и этим всё сказано (вернёмся позже).
;Условие, которое будет исполнено при НЕ пустой переменной регулярного выражения.
If expression !=
{
;SendChat - функция, которая позволяет писать в чат не используя клавиатуру и базовые возможности АХК. (Send, SendInput, SendRaw и.т.д.)
SendChat("команда")
; 1. Закрыли условие expression
; 2. Закрыли цикл loop
}
}
; Далее идёт функция, что определяет появившуюся строку в чате.
; На данном этапе не вижу смысла разбирать эту функцию построчно,
; но в будущем, при потребности - мы обязательно это сделаем.
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
}
; Строка № 1 - Сочетание клавиш Alt+END - завершит процесс данного скрипта
; Строка № 2 - Нажатие END - перезагрузит скрипт, после чего он будет готов к работе
!end::ExitApp
end::Reload
Надеюсь, вы поняли структуру и что за чем идёт.
Теперь смело копируйте каркас нашего скрипта, чтобы мы смогли
вместе его редактировать
.
(Копируйте цельным блоком, что я предоставил вам в самом начале)
И вот мы подошли к моменту, на котором желторотики вскрывают себе вены, а новички бьются в конвульсиях, я говорю о РеГуЛяРнЫх ВыРаЖеНиЯх.
Я не собираюсь копировать термин из Википедии, что такое «Регулярные выражения«. Скажу своими словами: Регулярные выражения — это возможность копировать/вырезать/отправлять, одним словом — обработать необходимую нам строку и достать из неё N-слова. Будь они статичны или переменны — роли не играет.
:hunter:Строку, что нам нужна, будем определять благодаря этим же Регулярным выражениям.:hunter:
В нашем случае — мы будем рассматривать строки такого типа:
[16:24:44] Nick_Name[7]: по чём штаны?
[20:33:41] — рюмка водки (Nick_Name) [178]
[54:23:41] [23] — Патрик, привет! (Nick_Name)
В Регулярных выражениях есть такое понятие, как литеральный текст. Звучит страшно, но расскажу максимально понятно и только то, что нужно.
Если в искомой строке есть/могут быть литеральные символы, необходимо — нет, не плакать.
Перед и После литеральный символ необходимо обставить Q и E соответственно.
Таким образом, например » [ «, будет считаться не буквально и будет воспринято как часть строки.
; Строка в стандартном виде
Nick_Name[7]
; Строка в виде регулярного выражения
Nick_NameQ[E7Q]E
; Или же
Nick_Name[7]
Поправка: Q .. E в написании, можно заменить на перед любым литеральным символом.
Пример выше.
Главное — не забыть о существовании литеральных символов в принципе.
Запомнили? Молодцы.
Так же, Регулярное выражение не прощает опечаток!
Лишний пробел или его отсутствие может запороть любую «регулярку». И уж поверьте — одним криком от отчаяния и злости от глупого прокола вы не обойдётесь.
Поэтому, всегда следите при написании Регулярного выражения за тем, чтобы они были 1 в 1: «регулярка» в своём понимании, а наша строка — в своём.
;Пример № 1, правильно составленное регулярное выражение:
var = ert tre zsdf
RegExMatch(var, "ert t(.)e zsdf", var)
MsgBox % var1
;Пример № 2, НЕправильно составленное регулярное выражение:
var = ert tre zsdf
RegExMatch(var, "ert t(.)e zsdf", var)
MsgBox % var1
;Ошибка примера № 2, в виде лишнего пробела перед zsdf.
;Не допускайте таких ошибок.
Структура Регулярного выражения до боли проста:
RegExMatch(ПеременнаяОтСюдаЧитаем, "Опции искомой строки", результат на выходе)
Плавно подошли к написанию собственного Регулярного выражения.
Возьмём за пример эту строку:
[16:24:44] Nick_Name[7]: по чём штаны?
Из неё нам необходимо «вытащить» Фамилию, ID и само сообщение. Приступим?
;Для примера нам необходимо создать переменную var, в которой будет находиться наша строка.
var = [16:24:44] Nick_Name[7]: по чём штаны?
Выражение (.*), иногда называют ВсёЧтоУгодно, оно позволит скопировать необходимые нам части сообщения.
RegExMatch(var, "[16:24:44] Nick_(.*)[(dd?d?)]: (.*)", find)
Теперь занимаемся литеральными символами. У нас их 4.
Две [ скобочки и две ] скобки.
RegExMatch(var, "[16:24:44] Nick_(.*)[(.*)]: (.*)", find)
Так как наша строка будет читаться из чатлога, время из [16:24:44] и при необходимости Nick_ будут переменны. Поэтому добавляем выражение и для них:
RegExMatch(var, "[(dd):(dd):(dd)] (.*)_(.*)[(dd?d?)]: (.*)", find)
Что мы имеет на выходе?
Строка, что будет подходить под параметры нашего Регулярного выражения, будет читаться.
И переменная » find » обретёт содержимое.
Хочу добавить примеры строк, что могут и будут определены:
[16:24:44] Boll_Name[7]: по чём штаны?
[08:14:34] Trol_Toga[228]: Стол твёрдый.
[56:44:24] Sjjj_Oma[12]: Афганистан — это страна!
[02:54:14] WQaa_Side[82]: Эвропа загнивает?
Теперь немного о переменной find.
Как вы помните, выражение (.*) позволяет не только пропускать N-слова в строчке под условие,
но и определять их для дальнейшего использования.
В данном выражении у нас есть 7 элементов
RegExMatch(var, "[(dd):(dd):(dd)] (.*)_(.*)[(dd?d?)]: (.*)", find)
Для того, чтобы использовать каждый элемент для своих нужд, необходимо слитно с переменной find записать порядковый номер элемента (.*)
;[16:24:44] Nick_Name[7]: по чём штаны?
;RegExMatch(var, "[(dd):(dd):(dd)] (.*)_(.*)[(dd?d?)]: (.*)", find)
msgbox % find5 ; покажет нам Name
msgbox % find7 ; покажет нам сообщение
msgbox % find6 ; покажет нам ID
Используем наше выражение
Вот мы и составили наше Регулярное выражение. Теперь вставляем его в пример ниже:
#Include samp.ahk
#IfWinActive GTA:SA:MP
ChatLog = C:UsersUserDocumentsGTA San Andreas User FilesSAMPchatlog.txt
loop
{
lastline := GetNewLine(ChatLog)
RegExMatch(var, "[(dd):(dd):(dd)] (.*)_(.*)[(dd?d?)]: (.*)", find)
If find6 !=
{
SendChat("команда")
}
}
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
}
!end::ExitApp
end::Reload
Если элемент «ID» не будет пуст, в чат будет отправлено сообщение «команда».
Дальше уже можно по своему вкусу изменять данное условие. Приведу лишь пару примеров:
If find6 !=
{
SendChat("/mute " find6 " 30 флуд")
}
; Если элемент "ID" не будет пуст, в чат от вас последует команда /mute id 30 флуд, что выдаст мут по данному ID
If find5 !=
SendChat("Адмирал " find5 " , что вы хотели этим сказать?")
;В чат будет отправлено сообщение: Адмирал Name, что вы хотели этим сказать?
If find7 !=
{
SendChat("Цитирую: " find7)
}
;В чат будет отправлено сообщение: Цитирую: по чём штаны?
На этом тема данной статьи подошла к концу.
Используйте данный пример, составляйте свои «регулярки» и будьте всегда первыми в конкурсе «Решите пример: 557 + 992″
Немного о функции SendChat
Для отправки сообщения, необходимо его закрыть в «», чтобы получилось так:
Чтобы в строке читалась переменная, необходимо закрыть открытую » и вписать имя переменной, не используя %%, так как в этом случае значение переменной будет читаться так же, как переменная.
Немного о функции addChatMessage
addChatMessage позволяет отправлять в чат фэйк-сообщения, которые видите только вы.
Это можно использовать для того, чтобы при запуске скрипта — в чат было отправлено сообщение о запуске, при любом действии, и т.д.
addChatMessage("Сообщение")
; Самое стандартное сообщение
Чтобы изменить цвет сообщения, необходимо добавить HTML коды цветов:
addChatMessage("{FF8C00} bass_devware")
Подведём итоги
Я не заявляю, что данный гайд самый подробный и при прочтении его вы обязательно научитесь составлять Регулярные выражения любой сложности.
Нет.
Однако нюанс в том, что таких гайдов и не будет.
В конце статьи я оставлю справку по Регулярным выражениям для тех, кому интересно и для тех, кому не понятно до сих пор.
Любые вопросы можете задавать в данной теме и просьба БЛАГОДАРИТЬ тех, кто вам поможет своим ответом.
Светлого будущего и удачи!
Спасибо, что дочитали до конца.
RegEx | RegExMatch | RegExReplace | samp.udf | AutoHotKey
Alan Arbatskiy
Активный пользователь
— 0. Вступление
Скачать биндер можно на оффициальном сайте: https://www.autohotkey.com/
После полной установки программы, нажмите ПКМ по свободному месту в папке/на рабочем столе и в разделе «Создать» выберите «AutoHotKey Script».
После этого нажмите ПКМ по созданному файлу и выберите пункт «Edit Script». В открывшемся окне можете стереть примечание от автора и начать писать свой шедевр.
— 2. Автоматическое определение языка и раскладки клавиатуры.
Данный шаг Вы можете пропустить, но тогда при неправильной раскладке клавиатуры вместо красивого текста, который вы расписывали несколько десятков минут, в чат будут отправляться сплошные вопросительные знаки, так как скрипт не будет видеть на вашей текущей раскладке бо’льшую часть нужных для набора текста символов. Во избежание этих проблем, настоятельно Вам рекомендую на следующей строке, после назначение горячей клавиши, прописать следующее:
SendMessage, 0x50,, 0x4190419,, A
Также немаловажно задать паузы между сообщениями, иначе программа может сойти с ума и начать смешивать ваши сообщения в единое целое.
Так, прописав команду Sleep и число миллисекунд после нее (1000 = 1 секунда), Вы задаете задержку между выполнениями следующих команд.
Рекомендую использовать задержку 700 между отыгровками /me /do /todo, и 1000 между сообщениями в чат (IC, /b), дабы антифлуд не триггерился на ваш скрипт. (насколько мне известно, в /f /c задержку можно ставить 200, там антифлуд почти не срабатывает).
— 4. Окончание скрипта
После того, как вы прописали все сообщения, не забудьте написать завершающую команду Return, которая останавливает чтение макроса. Иначе, если у Вас в одном файле сразу несколько скриптов, последствия будут неутешительными.
Источник
[ Работает ] [Гайд][AHK] Учимся создавать скрипты с AutoHotKey (на примере BDO)
Статьи и гайды по Black Desert
: Раздел со статьями для BDO не обязательно читерской тематики.
[Гайд][AHK] Учимся создавать скрипты с AutoHotKey (на примере BDO)
Доброе время суток, друзья!
Сегодня я расскажу Вам об основах создания и использования скриптов, используя AutoHotKey!
В этой ветке много макросов на Bloody, однако лично мое мнение, что блуди не удобная штука. Ну тут каждому на свой вкус.
Далее по тексу саму программу и скриптовый язык AutoHotKey я буду называть AHK или АХК.
Создаем пустой скрипт.
После того как Вы внесли какой либо код в скрипт, сохраняем его и запускаем от имени администратора.
Давайте рассмотрим основные команды (те, которые я чаще всего использую).
Обратите внимание, что ПОЛНЫЙ синтаксис команд с примерами представлен на официальном сайте autohotkey.com
В АХК конец предыдущей команды обозначается концом прошлой команды, переносом на следующую строку, либо завершением <блока команд>. Я представляю насколько непонятно это выглядит, однако я думаю чуть дальше вы поймете.
В первую очередь я Вам советую в скрипт вписывать несколько строк, которые в случае Вашей ошибкинедоработки позволят отключать скрипт. Например, если Вы поставили нажиматься Alt+F4 каждые 0.1 секунд. Короче если вы не можете остановить скрипт мышкой, чтоб мы могли это сделать кнопкой.
Что это такое? При нажатии на F11 у нас будет выполнена команда pause, которая запаузит скрипт. При повторном нажатии скрипт продолжит работу с того места, где закончил. При нажатии F12 соответственно скрипт будет перезагружен совсем. На заметку: если вы изменили код скрипта, сохранили, то при нажатии на f12 будет загружен уже измененный скрипт. Это удобно когда вы только создаетеотлаживаете скрипт.
Эту строку я советую тоже вставлять во все скрипты, где у Вас будут использоваться координаты. (ну например нажать мышкой на крестик в ворде ). Дело в том, что в этом случае координаты будут смотреться не относительно вашего разрешения(монитора), а относительно текущего окна. Т.е. если у вас играворд запущены не в полное окно, то вы можете их двигать куда угодно, координаты будут одинаковы.
Далее. Привязка действий к клавишам. Существует список кучи модификаторов. Я приведу основные:
При нажатии сочетания ALT и цифры 1 у нас выведется пустое окошечко.
Таким же образом привязываются абсолютно все действия.
Если у Вас больше одной команды, то я советую заключать их в <>.
Как это будет выглядеть?
В данном случае у нас будут появляться два окошечка последовательно. Но это лишь пример.
Далее рассмотрим одну из самых важных команд: Send, SendPlay, SendInput. Эти команды нужны нам, чтобы посылать какие-то тексты иили кнопки в игру. Первая делает это чуть медленнее, однако работает всегда. Вторая и третьи(предпочтительна вторая) делают отправку мгновенно.
Важно! Если вы хотите послать отправку КНОПКИ, а не ТЕКСТА, то вы должны заключить кнопку в <>.
Пример: нам нужно отправить строку объявления в игровой чат мгновенно, чтоб оно не мешало нам фармить.
Все знаки пунктуации нужно заключать в <>.
Теперь при нажатии Ctrl+1 у нас отправится объява в чат, причем скорее всего мы даже не успеем заметить как открылся чат.
При нажатии Ctrl+2 мы гарантированно изменим чат на Общий, после чего напишется строка и остановится на «Цена:» но не отправится, там мы сможем ввести цену. Ну я надеюсь суть вы поняли
При нажатии на Пуск+1 у нас зажмется шифт на 2 секунды.
Теперь попробуем разобраться с мышкой.
При нажатии на Альт+NumPad0 у нас произойдет «клик» левой кнопкой по координатам 5 5.
При нажатии Альт+NumPad1 у нас произойдет клик правой кнопкой по 10 10, через секунду правая кнопка зажмется на полсекунды.
Как нам собирать эти координаты? Я пользуюсь двумя способами. Первый: запускаем любой скрипт, в трее нажимаем правой кнопкой, потом Window Spy. Откроется окошечко
Нас интересует строка In Active Window:
Второй: использовать код, который будет показывать нам координаты при нажатии на кнопочку.
Разберемся с циклами. То есть со случаями, когда нам нужно одно и то же действие повторить много раз.
Например, нам нужно кормить кота каждые пять минут.
после ; мы можем писать комментарии.
В случае, когда нам нужно повторить действие определенное количество раз, просто после Loop, ставим цифру сколько раз:
У нас отправиться 10 нажатий с интервалом в полсекунды.
Ну вот наверное и всё, из основного Теперь перед Вами всё ограничено лишь воображением.
Я прошу Вас задавать вопросы, если появятся, а также сказать, надо ли что-то еще добавить в гайд?
Источник
Исходник Гайд AHK RegExMatch | SAMP | Пишем свой авто-ответчик
BASS_DEVSOFTWARE
Приветствую всех!
Данная статья должна помочь разобраться новичкам в Регулярных выражениях и помочь им самостоятельно писать скрипты на автоматический ответ, при появлении в чате N-строки (по задумке).
Перед игроком появляется будто бы непреодолимая стена, посмотрев на которую, он побежит по форумам просить помощи.
Надеюсь, вы поняли структуру и что за чем идёт.
Теперь смело копируйте каркас нашего скрипта, чтобы мы смогли вместе его редактировать.
(Копируйте цельным блоком, что я предоставил вам в самом начале)
И вот мы подошли к моменту, на котором желторотики вскрывают себе вены, а новички бьются в конвульсиях, я говорю о РеГуЛяРнЫх ВыРаЖеНиЯх.
В Регулярных выражениях есть такое понятие, как литеральный текст. Звучит страшно, но расскажу максимально понятно и только то, что нужно.
Плавно подошли к написанию собственного Регулярного выражения.
Источник
Enter::
sleep, 30
if (isInChat() = 0)
return
sleep 150
dwAddress := dwSAMP + 0x12D8F8
chatInput := readString(hGTA, dwAddress, 512)
writeString(hGTA, dwAddress, «»)
if (RegExMatch(chatInput, «^/mask»))
<
SendChat(«/do Маска в кармане.»)
Sleep 1100
SendChat(«/me протянувшись рукой, взял маску в руки»)
Sleep 1100
SendChat(«/me надевает маску на лицо»)
Sleep 1100
SendChat(«/do Маска на лице»)
>
return
[CM]Anonimys, Не скажешь кто тебе дал код второго варианта?
• Ничего не покупаю.
• Способы не проверяю.
Enter::
if (isInChat() = 1) && (!isDialogOpen())
<
BlockChatInput()
sleep 250
dwAddress := dwSAMP + 0x12D8F8
chatInput := readString(hGTA, dwAddress, 256)
if ( InStr(chatInput, «/») ) <
if chatInput contains /mycommand
<
unBlockChatInput()
if (StrLen(chatInput) > 0 ) <
params := StrSplit(chatInput, » «)
command := params[1]
params.Remove(1)
SendCommand(command, params)
>
dwAddress := dwSAMP + 0x12D8F8
writeString(hGTA, dwAddress, «»)
AntiCrash()
> else <
unBlockChatInput()
SendChat(chatInput)
>
> else <
unBlockChatInput()
SendChat(chatInput)
SendCommand(command, params) <
if (command == «/mycommand») <
SendChat(command » » params[1])
>
>
Помогаю новичкам!
По всем вопросам в ЛС!
Источник
Краткое обучение (начать здесь)
Оказавшись на этой странице, вероятно, вы собираетесь начать осваивать язык автоматизации Autohotkey.
В этой статье описана установка программы, ее базовые возможности и примеры кода. Наберитесь терпения, запасайтесь чаем и приступаем
Все интересующие вопросы вы можете задать в нашей группе Вконтакте.
Autohotkey в играх
Обратите внимание, что макросы запрещены во многих играх. За использование Autohotkey ваш аккаунт может быть забанен!
Кроме этого, многие современные игры имеют активный античит, препятствующий программной эмуляции нажатий. Это значит, что нажатия, воспроизводимые скриптом могут игнорироваться. Мы не содействуем читерству, и если античит блокирует работу Autohotkey в определенной игре- не будем помогать вам обойти защиту!
Стоит так же учитывать, что Autohotkey разработан для взаимодействия со средой Explorer’a и его окон. Такие команды как PixelSearch, PixelGetColor и ImageSearch вероятнее всего не будут работать в полноэкранных 3D приложениях. Чаще всего Autohotkey воспринимает окна с отрисовкой 3D как черный квадрат (цвет 0x000000). Иногда проблема решается переводом игры в оконный режим, но корректная работа все равно не гарантируется и единого решения НЕТ.
Установка Autohotkey и редактора Notepad++
Перед началом работы неплохо бы скачать Autohotkey с оффициального сайта.
После запуска инсталятора выбираем Unicode версию программы, иначе получим иероглифы вместо русских букв. Лучше выбрать разрядность, соответствующую вашей ОС. Но стоит помнить что скрипты, скомпилированные x64 версией не запустятся на 32-разрядных ОС.
Для редактирования скриптов можно использовать любой текстовый редактор, включая «Блокнот». Но для удобства работы с кодом лучше использовать Notepad++, который так же скачиваем с оффициального сайта и устанавливаем.
После установки вам понадобится файл подсветки синтаксиса Autohotkey userDefineLang_AHK.xml. Сохраняем его в любое удобное место.
Теперь запускаем Notepad++, в меню «Синтксисы» выбираем «Задать свой синтаксис. «. В открывшемся окне жмем «Импортировать» и выбираем скачанный файл.
После перезапуска программы в меню «Синтаксисы» появится Autohotkey, а файлы с расширением .ahk будут сразу открываться с подсветкой синтаксиса.
Рекомендую сразу включить отображение расширений файлов в системе. Для этого откройте любое окно проводника, в верхнем меню «Файл» выберите пункт «Параметры папок и поиска». В открывшемся окне во вкладке «Вид» снимите галочку «Скрывать расширения для зарегистрированных типов файлов».
Создание первого скрипта
После того, как среда Autohotkey и текстовый редактор установлены, можно приступать к созданию первого скрипта.
Скрипты являются обычными текстовыми файлами, имеющими расширение .ahk. Запускаются как любое приложение, двойным кликом мыши.
Чтобы отредактировать скрипт, нажмите на нем ПКМ > Открыть с помощью > Notepad++.
Создайте скрипт со следующим кодом и запустите его. Если вы увидели окно с приветствием- все установлено правильно и можно продолжать.
Порядок исполнения команд
Обратите внимание! Данный пункт крайне важен для понимания работы программы.
В момент запуска скрипта, команды начинают выполняться по очереди сверху вниз. Выполнение новой команды не будет начато до тех пор, пока не окончена предыдущая.
Так интерпретатор будет последовательно исполнять код, пока не встретит Return. Эта команда прерывает текущий поток. С его помощью обозначаются пределы макрокоманды, а так же возвращаются значения из функций.
Если по мере выполнения кода встречается цикл- он выполняется до тех пор, пока истинно его условие, или он не будет разорван командой Break. Как выглядят циклы мы разберем чуть ниже, не торопитесь
Комментарии в коде и отладка
Когда нужно оставить в коде строчку с пояснением- на помощь приходит комментарий, по умолчанию он отделяется точкой с запятой. Вся строка после ; игнорируется интерпретатором. Обратите внимание, что в Autohotkey нет многострочных комментариев! Каждая строка экранируется отдельно.
Для отладки кода (проверки условий, просмотра значений переменных и т.д.) проще всего использовать команды MsgBox и ToolTip. Первая выводит информацию в виде окна и ждет подтверждения, вторая показывает всплывающую подсказку и не прерывает выполнение кода.
Горячие клавиши
Основным назначением Autohotkey является назначение горячих клавиш. Они представляют собой сочетания клавиш и кнопок мыши, при нажатии которых выполняется заданная последовательность команд (макрокоманда, она же- макрос).
Запись горячей клавиши может иметь однострочный и многострочный вид, в зависимости от необходимого количества команд.
Перед двоеточием указывается клавиша или сочетание клавиш, вызывающие действие. Больше о горячих клавишах можно узнать здесь. Так же, наверняка, вам пригодится список клавиш и кнопок мыши.
Строки автозамены
Строки автозамены имеют тот же принцип, что и горячие клавиши, но заменяют не сочетание клавиш, а фрагмент строки. Чаще всего используются для развертывания аббревиатур.
Все возможности строк автозамены, такие как чувствительность к регистру, замена части слова, задержка нажатий- ищите в соответствующей Статье.
Эмуляция нажатий
Для эмуляции нажатий и ввода текста используется команда Send.
Она имеет несколько вариаций: Send, SendPlay, SendInput и SendRaw. Подробно про их отличия можно прочитать по ссылке выше.
Переменные и выражения
Для хранения и обработки информации служат переменные. Во вступительном гайде мы рассмотрим лишь три основных вида: логический, числовой и текстовый. Переменные в Autohotkey динамически изменяют свой тип в зависимости от последнего присвоенного значения.
Логический (булевый) тип предназначен для хранения 1 или 0 (true или false). Чаше всего используется в условиях, где есть всего два варианта выбора, а так же в функциях, для обозначения успешности или провала операции.
Числовой тип, как не сложно догадаться, применяется для операций с числами. Поддерживается большинство арифметических операций, а так же десятичные дроби.
Строковый тип хранит отдельные символы или фрагменты текста. Работа со строками немного отличается от цифровых и булевых переменных- для них есть целый ряд специальных строковых функций.
Логическое ветвление
Наверняка вы уже задумались, как выполнять действие только при соблюдении конкретного условия? На помощь приходит ветвление с логическими операторами if и else. Так же существуют и другие команды, представляющие собой условие.
Пожалуй, самым простым применением условия является назначение двух чередующихся действий на одну и ту же горячую клавишу. В этом примере введена переменная, которая принимает противоположное значение при каждом новом вызове ГК.
Еще одним примером может служить определение времени суток:
Блок кода <>
Блок кода обозначается фигурными скобками и объединяет несколько комад или функций. Он нужен чтобы указать интерпретатору, что несколько команд нужно выполнить вместе. Чаще всего блок <> используется для группировки команд внутри условий или циклов.
Циклы
Для повторения определенного участка кода несколько раз используются циклы. В Autohotkey их несколько видов, самым простым из которых является Loop.
Запуск программ, открытие ссылок
Для запуска EXE приложений, открытия окон проводника или браузера используется команда Run.
Команды и функции
В Autohotkey есть две основных структуры: команды и функции. Обе предназначены для выполнения какого-либо действия, но отличаются способом записи.
У многих команд есть функция-двойник, выполняющая ту же операцию.
В отличае от функций, команды нельзя комбинировать или использовать одну команду как аргумент другой.
Команды не используют скобки вокруг параметров, вы можете легко отличить их от функций:
Обратите внимание, что:
Заключение
В этой статье приведены самые базовые возможности программы. Полный список функций можно найти на Главной странице справочника.
Рекомендуем последовательно пройти по описанию всех команд для примерного понимания их назначения перед тем, как начинать писать свой первый скрипт
Перед тем, как приступить к написанию кода, необходимо составить алгоритм. Распишите по шагам, что должна делать ваша программа. Так будет гораздо проще искать команды, необходимые для выполнения каждого из шагов.
Источник