Автоматизация - ключ к успеху при разработке программного обеспечения. Это включает в себя автоматизацию повторяющихся задач, таких как построение конвейеров, а также кодирование и набор текста. Одними из самых эффективных средств экономии при кодировании являются шаблоны кода и автозаполнение.

Roblox Studio поставляется с автозаполнением (которое иногда не работает), но в нем нет шаблонов кода. Но не бойтесь, вы можете создавать свои собственные шаблоны кода, используя расширители текста.

AutoHotkey спешит на помощь

AutoHotkey - очень мощный бесплатный инструмент автоматизации Windows с открытым исходным кодом. Он существует уже довольно давно и используется во всем мире всеми ИТ-профессионалами (и непрофессионалами в том числе). Согласно их веб-сайту:

Лучший язык сценариев автоматизации для Windows. AutoHotkey - это бесплатный язык сценариев с открытым исходным кодом для Windows, который позволяет пользователям легко создавать небольшие и сложные сценарии для всех видов задач, таких как заполнители форм, автоматический щелчок, макросы и т. Д.

Как программист, я использую его практически с момента его запуска в 2004 году и могу сказать, что не могу без него жить.

Скачайте и установите его: https://autohotkey.com/download/. Официальная документация: https://autohotkey.com/docs/AutoHotkey.htm.

Как создать расширяющиеся слова и шаблоны?

AutoHotkey имеет функцию под названием Hotstrings, которую мы и собираемся использовать. С помощью Hotstrings вы определяете текстовое сокращение, которое хотите заменить другим словом, фразой или даже текстом, состоящим из нескольких строк. Вы также можете имитировать любое нажатие клавиши (пример: {ввод} {влево 2}, чтобы поместить клавишу ВВОД и переместить курсор два раза влево).

Откройте Блокнот или любой другой текстовый редактор и создайте новый файл.

Одна из наиболее распространенных строк в сценариях Roblox: local parent = script.Parent или обычно объявляется как local sp = script.Parent. Как создать шаблон для этой строки?

:*:xsp::local sp = script.Parent`n

Ого! Что это за чушь? Подожди! Это проще, чем кажется:

:*: - this is telling AutoHotkey that this is a Hotstring
xsp - this is our abbreviation
::  - this is a separator between the abbreviation and the output
local sp = script.Parent`n - is what is going to be replaced when we type xsp. The backtick n (`n) means a new line.

Сохраните файл и сохраните его как roblox-templates.ahk. Дважды щелкните его, чтобы открыть и запустить AutoHotkey в фоновом режиме. Вы можете увидеть запущенный файл по значку AutoHotkey на панели задач. Вы можете приостанавливать и приостанавливать действие горячих клавиш в любое время, щелкнув значок правой кнопкой мыши.

Кроме того, каждый раз, когда вы изменяете свой файл .ahk, вам необходимо там нажать «Перезагрузить этот скрипт».

Как использовать расширения?

Просто откройте Roblox Studio и введите любое из ваших сокращений. В нашем случае давайте протестируем только что созданный. Введите xsp в скрипт Lua. Вот что происходит:

Конечно, вы можете изменить аббревиатуру на что угодно, например / sp, localsp, scriptparent и т. Д.

Поместите курсор в круглые скобки

Допустим, у вас есть шаблон, в котором размещается метод, а затем вы хотите ввести только параметры после раскрытия. Это означает перемещение каретки в круглые скобки. Вызовите {left [amount to move]}, чтобы имитировать нажатие клавиши ВЛЕВО.

:*:xwfc:::WaitForChild(""){left 2}

Как заменить аббревиатуру, если вы уже в другом слове?

Если вы попробовали приведенный выше пример точно так же, как я, вероятно, у вас не сработало, потому что было набрано spxwfc, а не xwfc. Когда вы используете: *, AutoHotkey ожидает аббревиатуру отдельно, отдельно.

Чтобы заставить его работать внутри существующего слова, как в примере выше, добавьте? после: *. Пример:

:*?:xwfc:::WaitForChild(""){left 2}

Теперь, когда я что-то печатаю, AutoHotkey заменяет слова!

С помощью AutoHotkey и команды #IfWinActive мы можем выделить аббревиатуры и шаблоны для запуска только в определенных программах! В нашем случае мы можем изолировать наши шаблоны от Roblox Studio.

Сначала запустите AutoHotkey Window Spy, чтобы получить имя приложения: щелкните правой кнопкой мыши значок на панели задач - ›Window Spy -› сделайте Roblox Studio активной программой, а затем скопируйте строку ahk_exe [Something], как я показываю здесь:

Теперь в вашем скрипте .ahk поместите свои шаблоны в предложение возврата #IfWinActive:

#IfWinActive, ahk_exe RobloxStudioBeta.exe
:*:xsp::local sp = script.Parent`n
:*?:xwfc:::WaitForChild(""){left 2}
return

Перезагрузите AutoHotkey (щелкните правой кнопкой мыши на панели задач - ›перезагрузите этот скрипт), и все готово!

Дополнительные советы

Необработанные шаблоны

Если в вашем шаблоне есть символы, которые конфликтуют с командами и синтаксисом AutoHotkey, вы можете поместить их в фигурные скобки, особенно двоеточие (:). Пример:

:*:xeq::tool.Equipped{:}connnect(){left}

Многострочные шаблоны

Вы можете использовать `n, {Enter} или Разделы продолжения.

Образцы шаблонов

#IfWinActive, ahk_exe RobloxStudioBeta.exe
:*:l;::local{Space}
:*:llf::local function{Space}
:*:localsp::local sp = script.Parent`n
:*:getreplicated::local ReplicatedStorage = game:GetService("ReplicatedStorage")`n
:*:getscriptservice::local ServerScriptService = game:GetService("ServerScriptService")`n
:*:getsstorage::local ServerStorage = game:GetService("ServerStorage")`n
:*:getphysics::local PhysicsService = game:GetService("PhysicsService")`n
:*:localtool::local tool = script.Parent`n
:*?:waitchild:::WaitForChild(""){left 2}
:*?:firstchild:::FindFirstChild(""){left 2}
:*:tooleq::tool.Equipped{:}connnect(){left}
:*:tooluneq::tool.Unequipped{:}connnect(){left}
:*:getservice::game:GetService(""){left 2}
:*?:econnect::{:}connect{(}{)}{left}
:*?:connectfn::{:}connect{(}function{(}{)}{Enter}{up}{End}{Left}
:*:mtuple::local tuple = {{}...{}}`n
:*:inew::Instance.new(""){left 2}
:*:v3new::Vector3.new(){left}
:*:cfnew::CFrame.new(){left}
:*:cfang::CFrame.Angles(){left}
:*:c3new::Color3.new(){left}
:*:gwork::game.Workspace
:*?:brickcolor::.BrickColor = BrickColor.new(""){left}
:*:mrand::math.random(){left}
:*:/delay::delay(, function{(}{)}{Enter}{up}^{left}^{right}^{right}{left 2}
:*?:/cf::CFrame.
:*?:/v3::Vector3.
:*?:/p::Parent
:*?:gethumanoid::local humanoid = player.Character{:}WaitForChild("Humanoid")`n
:*?:gettorso::local torso = player.Character{:}WaitForChild("Torso")`n
:*:infwhile::while true do{Enter}
:*?:kids::{:}GetChildren()`n
:*:tins::table.insert(){left}
:*:trem::table.remove(){left}
return

Но безопасно ли это?

Если вас беспокоит, что AutoHotkey является безопасным программным обеспечением, проверьте следующие ссылки. Сообщество говорит само за себя.





На его официальных форумах тысячи участников и постов:

Https://autohotkey.com/boards/

Поиск в Google возвращает 3,8 миллиона результатов, в основном учебники, документацию и так далее:

Https://www.google.com.br/search?q=autohotkey&oq=autoh&ie=UTF-8