Ahk сообщение в чат
Обновлено: 05.05.2024
Начнём с определения, что же такое программа AutoHoyKey.
AutoHotKey - это программа для создание "горячих клавиш", то есть с помощью неё(программы) вы можете установить часто используемые команды или фразы в sa:mp, и быстро их использовать.
Как изготовить свой скрипт? Тут все просто, надо только руководствоваться этим FAQ.
1) Для начала скачиваем и устанавливаем саму программу autohotkey.
2) Теперь открываем блокнот(по умолчанию: пуск > стандартные > блокнот) и начинаем писать свой скрипт по команде на одну строчку.
F1::SendPlay, Привет всем.
!1::SendPlay, Привет всем.
В примере приведённом выше при нажатии альта и цифры один над буквами у вас напечатается в чат "Привет всем".
Также есть команды в которых необходимо дописать что-либо, за примером далеко ходить не буду команда /frisk id (обыск у законников):
В этом примере я написал на конце - то есть нажав F1 вам остаётся вписать только ид игрока для того чтобы его обыскать.
Для того чтобы пользоваться кнопками на нумпаде необходимо писать вот так:
Numpad1::SendPlay, Привет всем.
Ну вот вроде и все, осталось сохранить скрипт.
3) Сохраняем скрипт:
Фаил > Сохранить как > В типе файлов выбираем "Все файлы" - обязательно!
Название пишем вот так пример Skript.ahk - тут главное окончание .ahk
Далее есть возможность изменить формат скрипта из .ahk в .exe - для того чтобы запускать скрипт без самой программы. Вот инструкция:
Открываем: Пуск > Все программы > AutoHotKey > Convert .ahk to .exe
Остался всего лишь пустяк: в первой строчке указываем путь к файлу .ahk, а во второй туда куда хотите сохранить "самостоятельный скрипт". Жмём Convert и готово!
4) Запуск бинда:
Щёлкаем по иконке бинда, если у часов в правом углу появился зелёный значок с белой буквой Н то все работает и готово к использованию.
Выкладываю часть бинда составленного для полиции:
F1::Sendplay, /enter
F2::Sendplay, /exit
1::Sendplay, /m Пожалуйста прижмитесь к обочине и остановите машину
2::Sendplay, /m Немедленно остановите машину или мы открываем огонь
Numpad1::Sendplay, /m Пожалуйста выйдите из машины
Numpad2::Sendplay, /me показал значек офицера полиции
!1::Sendplay, Здравствуйте
!2::Sendplay, Сохраняйте спокойствие, выйдите из машины
^1::Sendplay, Будьте так добры, предъявите свои лицензии((/showlicenses id))
+1::Sendplay, Мне придётся вас обыскать. Поднимите руки вверх((/handsup))
Всем привет, сегодня разберём некоторые функции для чата.
Функция используется так:
Пример полного кода:
Как вы можете видеть, я использовал фигурные скобки, это не обязательно, но правильно. Чтобы не писать много строк, если у вас большой текст, есть методы оптимизации, но к этому не скоро.
Например функция SendInput , сама функция удобная, но только не для отправления в чат, а для нажатия какой-то клавиши, функция Send тоже может для этого использоваться. То есть если вам просто нужно нажать нужную кнопку, например выбрать нужную вкладку в диалоге вы можете это использовать так:
Кстати о коде клавиш, скину в конце темы ссылку на программу для определения кода клавиши. Вы просто нажимаете нужную вам клавишу и копируете " vk "
Но в данном случае скрипт активируется только тогда, когда команда была вручную введена в чат, а также к активации может привести нажатие пробела. Меня интересует, как сделать активацию командой таким образом, что бы скрипт активировался только по нажатию Enter и его можно было ввести как вручную так и автоматически. Подскажите пожалуйста.
2 Ответ от svoboden 2017-07-18 15:48:12
- svoboden
- Разработчик
- Неактивен
3 Ответ от cathippo2012 2017-07-18 16:18:25 (изменено: cathippo2012, 2017-07-18 18:38:43)
- cathippo2012
- Участник
- Неактивен
svoboden
Не работает.
4 Ответ от svoboden 2017-07-18 16:52:25
- svoboden
- Разработчик
- Неактивен
Даже в блокноте не работает?
5 Ответ от cathippo2012 2017-07-18 17:09:08 (изменено: cathippo2012, 2017-07-18 18:38:37)
- cathippo2012
- Участник
- Неактивен
svoboden Да, проверил твою команду в новом текстовом документе, при вводе /privet ничего не происходит, но если открыть чат (F6) и нажать на Up то там будет написано " SendInput ".
6 Ответ от svoboden 2017-07-18 17:17:19 (изменено: svoboden, 2017-07-18 17:17:41)
- svoboden
- Разработчик
- Неактивен
но если открыть чат (F6) и нажать на Up
На какой еще "UP", автозамена активируется на нажатие клавиши "Enter".
7 Ответ от cathippo2012 2017-07-18 17:23:31 (изменено: cathippo2012, 2017-07-18 18:38:29)
- cathippo2012
- Участник
- Неактивен
svoboden
После ввода команды в чате будет фраза SendInput (Up - стрелочка вверх).
8 Ответ от svoboden 2017-07-18 17:58:08 (изменено: svoboden, 2017-07-18 18:01:10)
- svoboden
- Разработчик
- Неактивен
Так, значит, все работает, или тебе надо запустить автозамену без активации на Enter?
Вот пример:
И откудово взялся Up, я так и не понял.
9 Ответ от cathippo2012 2017-07-18 18:02:03 (изменено: cathippo2012, 2017-07-18 18:38:20)
- cathippo2012
- Участник
- Неактивен
svoboden
Забудь про UP, не работает.
10 Ответ от cathippo2012 2017-07-18 18:03:33
- cathippo2012
- Участник
- Неактивен
Мне нужно чтобы скрипт активировался командой, и чтоб при этом ее можно было вставить тем же самым SendInput,а также чтобы активация команды происходила не на Space и Enter, а только на Entersvoboden
11 Ответ от svoboden 2017-07-18 18:03:44 (изменено: svoboden, 2017-07-18 18:10:43)
- svoboden
- Разработчик
- Неактивен
Так я же писал
уже, как такое можно сделать. И в блокноте работает же.
12 Ответ от cathippo2012 2017-07-18 18:08:11 (изменено: cathippo2012, 2017-07-18 18:38:05)
- cathippo2012
- Участник
- Неактивен
svoboden
Проверил снова сейсас, вроде работает, но не так как хотелось бы, скрипт активируется сразу после того как я ввел последний символ, то есть "t", а мне нужно чтобы я мог свободно написать эту команду в чат и скрипт активировался только тогда, когда я отправлю ее в чат (Enter).
13 Ответ от svoboden 2017-07-18 18:12:19 (изменено: svoboden, 2017-07-18 18:17:07)
- svoboden
- Разработчик
- Неактивен
Там нет такого символа `t. Символ `n - это клавиша "Enter" в автозамене.
14 Ответ от cathippo2012 2017-07-18 18:14:48 (изменено: cathippo2012, 2017-07-18 18:37:55)
- cathippo2012
- Участник
- Неактивен
svoboden
Последний символ в коменде /privet - t. Скрипт активируется сразу после того как я ввожу его, а Enter нажимается автоматически. Мне нужно чтобы я сам нажимал Enter.
15 Ответ от cathippo2012 2017-07-18 18:18:24
- cathippo2012
- Участник
- Неактивен
svoboden
Если ты понимаешь как работают обычные команды на любом сервере в сампе, то мне нужно сделать также.
16 Ответ от ypppu 2017-07-18 18:24:00
17 Ответ от svoboden 2017-07-18 18:25:21
- svoboden
- Разработчик
- Неактивен
Не понимаю ничего, может, тебе другие пользователи помогут.
18 Ответ от belyankin12 2017-07-18 22:56:47
- belyankin12
- Модератор
- Неактивен
Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.
Developer := "http://xfamily.zzz.com.ua/family.txt"
XChat = %A_Temp%\xchat.txt
Family = Top Chat
Loop
URLDownloadToFile, %Developer%, %XChat%
FileRead, LastString, %XChat%
if (LastString != OldLastString)
AddChatMessageEx("ffffff", "" LastString)
>
OldLastString := LastString
>
~Enter::
~NumpadEnter::
if (isInChat())
Sleep 200
AntiCrash()
dwAddress := dwSAMP + 0x12D8F8
ChatInput := readString(hGTA, dwAddress, 256)
if ChatInput contains /x
RegExMatch(ChatInput, "\/x\s(.*)", AddChat)
if (AddChat1 != "")
phpserver := "http://xfamily.zzz.com.ua/awfjiafjiowjioafw.php"
global direct = A_Temp
global direct2 = A_ScriptDir
Name := getUsername()
PID := getId()
ServerFull := getServerName()
color := getPlayerColor(PID)
Colorstr := ColorToStr(color)
RegExMatch(ServerFull, "[A-Za-z ]\s\|\s(.*)", Server)
if (colorstr = "")
colorstr := ""
>
Final := "[" family "] [" Server1 "] " colorstr "" Name ": " AddChat1
URLDownloadToFile, %phpserver%?Text=%Final%, %a_temp%/r_status.php
AddChat1 := ""
>
>
Free:
ProcessWriteMemory("" ,dwSAMP + 0x12D8F8, "gta_sa.exe", "Str", 126)
>
return
Сохраняем скрипт
5. Тестим скрипт на работоспособность
Скидываем AHK другу и просим запустить и запускаем его сами. Прописываем /x и, если вы все настроили правильно - у вас все заработает.
По всем вопросам писать мне ВКонтакте
PostMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText] SendMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]
Параметры
ErrorLevel
PostMessage: нуль, если программа выполнена успешно; иначе 1.
Примечания
Параметры Msg, wParam и lParam должны быть целыми числами между -2147483648 и 4294967295 (0xFFFFFFFF). Как обычно в AutoHotkey, префикс 0x означает шестнадцатеричное число. Например, 0xFF эквивалентно 255.
Послать строку через параметры wParam или lParam можно путём указания адреса переменной. Пример ниже использует оператор адреса (&), чтобы сделать это:
Начиная с версии 1.0.40.05 строка в кавычках (литеральная строка) также может быть послана; оператор & в этом случае не используется. Например:
Заголовки и текст окон чувствительны к регистру. Скрытые окна не определяются, если это не задано командой DetectHiddenWindows.
Читайте также: