Перед началом изучения макросов Injection ознакомьтесь с программой: Yoko Injection

Перед тем как начать создавать первый скрипты для Injection хочу порекомендовать программу, которая позволяет сделать этот процесс проще, понятнее и быстрее: Программа для редактирования скриптов инжекта

Полный справочный материал по командам инжекта доступен тут: http://yoko.com.ua/help
Первый скрипт

Самый первый скрипт — заставляет персонажа сказать фразу.

sub sayhello()
uo.msg(‘Hello world’);
end sub

В данном примере мы создали скрипт (функцию) под названием sayhello, при выполнение которой персонаж скажет hello world. Познакомимся с созданием макросов подробнее.

1. Синтаксис

Скрипты Yoko Injection состоят из функций, каждая функция определяется следующими ключевыми словами:

sub <Name> (param1,param2,param3…)

end sub

Таким образом, перед началом функции необходимо добавить слово sub, после которого следует название функции латинскими буквами без пробелов, затем скобки, в которых указываются параметры. Если параметров нет, то скобки всеравно нужно ставить. Заканчивается функция сочетанием слов end sub.

Параметры нужны когда необходимо вызывать функцию с различными данными, например, рассмотрим вариант, когда нам нужно менять слово в произносимой фразе. Параметры указываются в скобках через запятую.

sub tell(slovo)
uo.msg(‘Передаю всем ‘ + slovo);
end sub

Теперь мы создаем две разных функции, в которых можем использовать нашу:

sub tell_privet()
tell(‘привет!’)
end sub

sub tell_bye()
tell(‘пока…’)
end sub

Таким образом нам не приходится повторно выполнять действия функции tell, если это требуется в других функциях. Как пример параметры могут пригодится для перемещения предметов в сундук, когда требуется в разных макросах перемещать разные предметы, в данном случае информация о предметах и будет передаваться через параметры функции которая переместит его.

Стандартные функции вызываются использованием в начале приставки uo. необходимой для вызова всех встроенных функций Injection. Как вы видели в примере выше — мы писали uo.msg(‘Привет’)

Почти у всех стандартных функций есть параметры, параметры указываются в скобках, текстовые параметры заключаются в простые « или одинарные кавычки а числовые указываются как есть либо тоже в кавычках, однако для совмещения текстовых и числовых переменных необходимо использовать функцию STR для перевода числовых переменных в текстовые.

Переменными называются слова на латинском языке без пробелов которым назначаются различные значения — текстовые и числовые. Текстовые переменные позволяют хранить любые значения, однако если требуется выполнение математических операций с цифрами, то требуется применение числовых переменных. Перевод числовых переменных в текстовые, как было сказано выше, выполняется командой STR (переменная) ниже следует пример.

Для начала нужно определить переменную, это делается один раз, когда переменная используется первый раз, для определения переменной используется слово var (сокращение от variable — англ. переменная):

var mynum = 3 ; назначаем числовую переменную mynum со значением 3
var plusnum = 10 + mynum ; назначаем новую переменную plusnum со значением 10 + значение переменной mynum, в нашем случае plusnum = 13
var mytext = ‘мой текст’ ; назначаем переменной mytext фразу мой текст
var plustext = mytext + STR(plusnum) ; назначаем переменную plustext равной: мой текст 13

Комментарии используются для добавления комментариев к скриптам, комментарии не обрабатываются инжектом, то есть он видим только для Вас. Для обозначения комментария в начале необходимо поставить точку с запятой ; после которой следует комментарий.

Операторы
используются для создания циклов либо условий при которых буду выполняться те или другие команды. Например:

Оператор if предназначен для проверки условия, в случае соответствия выполняется часть скрипта между if <условие> then и end if

var num = 10
if num = 10 then
num = 11
end if

Оператор for предназначен для повторения нескольких шагов при этом автоматически суммируется числовая переменная указанная в условие, каждый шаг выполняется код между for <минимальное значение> to <максимальное значение> и next

var count = 0
for var num = 0 to 10
count = count + 1
next

Оператор repeat повторяет действие до тех пор, пока не будет выполняться заданное условие repeat … until <условие>, при этом если условие уже соответствует нужному значению, то после первого выполнения цикл оператора прекращается и код выполняется дальше

var num = 0
repeat
num = num + 1
until num < 10

Оператор while является более традиционным и полностью дублирует действие оператора repeat, однако у него есть свои плюсы, о которых мы расскажем далее. Основной особенностью данного оператора в отличие от repeat является то, что оператор не будет выполняться, если не выполняется условие while <условие> … wend

var num = 0
while num < 10
num = num + 1
wend

Вызов внутренних команд из вкладки hotkeys в Injection выполняется без указателя uo. и скобок. Например, для того, чтобы произнести фразу через hotkeys достаточно ввести команду: msg ‘Привет’ а для вызова ваших функций нужно написать: exec <название функции> см. картинку:

Для одной кнопки можно назначить несколько функций, указав их через ; например: msg ‘Привет’;exec tell_privet

2. Переходим к действиям

После того как вы изучили информацию из первого пункта, переходим непосредственно к созданию простых скриптов, даже если информация из первого пункта на вас обрушилась как снежный ком и вы её не успели переварить или не читали, а может быть просто не поняли смысл набора слов, то не отчаивайтесь, дальше всё станет понятно, а по мере изучения основ Вы можете возвращаться к первому разделу, который прольет свет на те моменты, которые мы будем рассматривать ниже.

Итак, все скрипты начиаются с автоматизации элементарных действий, которые мы подробно разберем. В данной главе мы рассмотрим создание скриптов для:

-Использования навыка
-Каста магии
-Рекола
-Использования предметов
-Перемещения предметов

Использование навыка

Для использования навыка нам потребуется внутренняя функция UseSkill, подробнее она выглядит так:
uo.useskill(skill,[last/object])

У функции два параметра, первый — skill указывает на то, какой именно навык мы хотим использовать, второй параметр указан в квадратных скобках, значит он является НЕ обязательным и его можно не указывать. Подробнее узнать о параметрах вы можете по ссылке выше. Полный список названий навыков доступе по ссылке skill.

Создадим скрипт, который будет использовать навык Hiding с паузой между задержками — 1 секунду.

sub useHidding()
uo.useskill(‘Hidding’)
wait(1000)
end sub

В данном примере мы впервые использовали команду wait, она предназначена для паузы скрипта на указанную долю миллисекунд. 1000 миллисекунд = 1 секунда.

Как видите, ничего сложного. Перейдем ко второму примеру, где мы будем использовать навык Anatomy на npc или животном.

Для начала необходимо узнать ID npc или животного, на котором мы будем качать Anatomy. Для этого на вкладке Objects в Injection мы добавляем новый объект и называем его, например, skilltarget, нажмите кнопку From Target и укажите в игре NPC или животное находящееся рядом с вами и сохраните объект.

Теперь рассмотрим скрипт

sub useHidding()
uo.useskill(‘Anatomy’,’skilltarget’)
wait(1000)
end sub

Как видите, в данном примере мы указали тот самый необязательный параметр. В качестве второго параметра требуется указать объект, подробнее об объектах можно узнать тут: object

Каст магии

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