Как написать аддон для ВоВ. Сохранение настроек и Умолчания. Слэш команды.
|
Сохранение настроекМногие аддоны должны уметь сохранять свои настройки между вашими входами в игровой мир. Реализовать эту возможность в вашем аддоне крайне легко. Это делается с помощью специальной директивы из файла toc. Сохранение настроек может происходить на уровне учетной записи, или на уровне персонажа. В разных ситуациях вам могут понадобиться различные подходы.
Сохраняет переменные, указанные в списке на уровне учетной записи. Т.е. для всех персонажей. Переменные хранятся в файле: WTF\Account\НАЗВАНИЕ_УЧЕТНОЙ_ЗАПИСИ\SavedVariables\НазваниеАддона.lua
Сохраняет переменные, указанные в списке на уровне персонажа. Т.е. у каждого будет своё значение. Переменные хранятся в файле: WTF\Account\НАЗВАНИЕ_УЧЕТНОЙ_ЗАПИСИ\ИГРОВОЙ_МИР\ИМЯ_ПЕРСОНАЖА\НазваниеАддона.lu Сохранять можно только строковые, логические, числовые переменные и таблицы. При загрузке вашего аддона, значения будут автоматически прочитаны из файла настроек и сохранены в соответствующие переменные. Сохранение значения переменных в файл происходит при:
При загрузке и выгрузке переменных используются только глобальные переменные. Т.е. если вы хотите оперировать переменными локально, то вам нужно загрузить их из глобальной таблицы _G при событии VARIABLES_LOADED, и выгрузить их обратно перед сохранением на диск по событию PLAYER_LOGOUT. (прим. если вы только начинаете, то не забивайте себе этим голову. Просто помните, что сохраняемые переменные не нужно объявлять как local, и вообще объявлять не нужно). Значения по умолчаниюПри первом запуске вашего аддона, использующего сохранение переменных, неплохо бы установить значения по умолчанию. Важно знать, что управление коду вашего аддона может быть передано до того, как значения переменных будут загружены с диска. Но здесь нам на помощь приходит игровое событие VARIABLES_LOADED, срабатывающее после загрузки переменных. Т.е. нам нужно написать обработчик для этого события, который проверяет, инициализирована наша переменная, или нет. И будет инициализировать её во втором случае. Сделать это несложно. В файле toc укажем переменную, которая должна сохранятся на диске:
Напишем обработчик события в файле lua:
В файле XML поставим обработчик на событие VARIABLES_LOADED. Установку обработчика стоит делать в обработчике события виджета onLoad.
Здесь, после загрузки нашего фрейма вызовется обработчик onLoad, который зарегистрирует событие VARIABLES_LOADED. А обработчик события onEvent вызовет нашу функцию myaddon_VarsLoaded(), которая проверит и, при необходимости, инициализирует нашу переменную. Слэш командыЕщё один важный для аддонов механизм, это управление, или слэш команды. Для того, чтобы научить ваш аддон понимать команды пользователся нужно сделать 4 шага:
Обычно принято выбирать идентификатор так: если у вас используется одна команда (в разных вариациях), то идентификатор MYADDON, если несколько, то MYADDON_COMMANDNAME.
Эта не совсем интуитивно понятная конструкция сделает так, что все команды из переменных вида SLASH_MYADDON* будут передаваться в функцию-обработчик myaddon_SlashHandler. В качестве параметра передаётся текст после команды и ссылка (врать не буду, не знаю на что). Т.е. в нашем случае, при вводе команды "/myaddon test call" функция myaddon_SlashHandler(msg, editbox) получит значение msg, равное "test call", которое она и напечатает в чат. Продолжение: Как написать аддон для ВоВ. Пишем автоинвайтер. |


Данная статья является продолжением цикла статей об аддонах. Предыдущая часть: