Новости ВоВ в Google+ Новости ВоВ в Facebook Новости ВоВ Вконтакте Новости WoWRaider.Ru через RSS Видео World of Warcraft Новости WowRaider.Ru в Твиттере Поддержите проект WowRaider.Ru

Как написать аддон для ВоВ. Введение.

Разработка аддонов для World of WarcraftОбстоятельства сложились так, что мне нужно написать аддон для нашей базы данных. Аддоны я никогда не писал, но хотел. И идеи были. Но не было времени. А теперь - нужно. Под это дело я начинаю цикл статей, который познакомит желающих с тем, как пишутся аддоны для World of Warcraft. Очень надеюсь на помощь и советы тех, кто аддоны уже писал или правил, вобщем - разбирается.

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

Данный цикл статей ориентирован на клиент версии 4.x, доступный сейчас на бета тесте и некоторые вещи могут не работать с младшими версиями. Это сделано из тех соображений, что когда мы доберемся до конца - как раз выйдет Катаклизм, или, по крайней мере - патч 4.0.1.

По первому впечатлению, разработка аддона во многом похожа на разработку Веб-приложения.

Начнем с начала.

Введение


World of Warcraft позволяет дорабатывать имеющийся интерфейс с помощью дополнительных модулей, называемых - аддонами. Функциональная часть аддонов реализована на языке программирования LUA. Общую информацию о языке вы можете найти в википедии: http://ru.wikipedia.org/wiki/Lua

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

Что нужно для начала


  • Учтите, Близзард официально не поддерживает разработку аддонов, так что все вопросы, которые у вас могут возникнуть можно задавать здесь или на официальном форуме, посвященным макросам и аддонам (на английском языке): http://forums.worldofwarcraft.com/board.html?forumId=11114&sid=1
  • Клиент ВоВа и аддоны работают в кодировке UTF-8, все файлы, кроме графических, являются простым текстом. Так что вам потребуется текстовый редактор, поддерживающий UTF-8. Лично я пользуюсь Notepad++: http://notepad-plus-plus.org/ru/node/88
  • Текстуры в ВоВ хранятся в проприетарном формате Близзард -.blp. В сети существует утилита, может даже не одна, позволяющая сконвертировать blp в png, чтобы было удобно просматривать файлы.
  • Для написания аддонов можно так же использовать свою графику в формате TARGA -.tga: http://ru.wikipedia.org/wiki/Truevision_TGA
  • Так же может быть полезно скачать Blizzard Addon Kit, который содержит документацию для начинающих, примеры и позволяет извлечь текстуры из клиента World of Warcraft. Документация на английском языке и во многом будет использоваться в моих статьях. Кит по умолчанию устанавливается в папку, где установлен World of Warcraft. Выбрать другую папку - нельзя.
  • Документацию по самому языку LUA можно найти:

Файлы аддона


Аддон World of Warcraft состоит из трех основных типов файлов:

  • в папке World of Warcraft\Interface\Addons нужно создать папку с названием вашего аддона - myaddon.
  • myaddon.toc - table of contents - это заголовочный файл, должен обязательно быть. Содержит информацию об аддоне и включаемых файлах.
  • myaddon.xml - содержат элементы интерфейса, окна, панели и т.п. один файл обычно используется для одного элемента интерфейса.
  • myaddon.lua - содержат программный код, "оживляющий" ваш аддон.

Формат файла toc

Заголовочный файл toc содержит скелет вашего аддона - заголовок и включаемые файлы. В фале допустимы комментарии, начинающиеся с одного знака #.

Описание аддона делается в следующем формате:

## Interface: 40000 ## Title: My first addon ## Notes: Additional addon information ## Dependencies:

Где:

  • Interface - это версия клиента, для которого написан ваш аддон. По всей видимости, это версия без точек. Т.е. в нашем случае 4.0.000 (хотя в бете 4.0.1. работает)
  • Title - это название аддона, можно по-русски, но не забываем про UTF-8.
  • Description - описание аддона.
  • Dependencies - описание зависимостей, через запятую. Некоторые аддоны используют ресурсы других аддонов, функции, ресурсы. Так что здесь вы указываете то, без чего ваш аддон работать не будет. Яркий пример - DBM.

Далее вы указываете включаемые файлы, по одному на строку. Важно, что внутренний интерпретатор читает файлы в том порядке, в котором вы указали их в файле toc. Т.е. если в файле myaddon.xml вызывается функция из файла myaddon.lua, то сначала должен идти lua файл, потом xml. В противном случае, вы получите ошибку вызова неизвестной функции. Таким образом файл должен выглядеть примерно так:

## Interface: 40000 ## Title: Hello world ## Notes: My hello world addon helloworld.lua helloworld.xml

Формат файла xml

Определение XML файла для интерфейса аддона должно быть следующим:

<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\..\FrameXML\UI.xsd"> </Ui>

Формат файла lua

Обычный файл LUA, содержащий код и функции.

Продолжение: Как написать аддон для ВоВ. API. XML. События.

Самые оперативные новости: RSS, , Вконтакте, Facebook, Google+
Interface - это версия клиента, для которого написан ваш аддон. По всей видимости, это версия без точек. Т.е. в нашем случае 4.0.000 (хотя в бете 4.0.1. работает)

Насколько я понял из тех моментов, что разбирал сам, эта версия - ни что иное, как индикатор, для какой версии данный аддон будет считаться "устаревшим". Причём, учитывается "старшинство" или "вес" версии клиента.

Так, если мы укажем 40000, то все версии 4.х.х будут работать с аддоном как с "актуальным", и только версия 5.х.х скажет, что аддон устарел.

При указании, например, 42000, будем иметь актуальность для клиентов версий 4.1.х (если в данном патче не изменили что-то используемое нами) и 4.2.х но никак не для 4.3-9.х.

Как-то так...

может есть вариант создать какой-то раздел отдельно, и посветить его исключительно написанию аддонов.. для чайников скажем так...

c0ns0l3, +1

С большим интересом прочитал статью и буду с нетерпением ждать продолжения.