Перейти к содержанию

Дайджесты за январь-февраль

Обновления гайдов и аддонов

Январь Февраль

Мониторинг серверов и редактор аддонов

Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.

Мониторинг серверов Редактор аддонов

Подсказки из игры на вашем сайте

Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.

Подробнее

Апдейтер аддонов

Представляем вам программу для автообновления аддонов и делимся подробностями.

Подробнее Скачать

Создаём свой аддон (больше не актуально)


SLA

Рекомендуемые сообщения

ЭТА ТЕМА БОЛЬШЕ НЕ АКТУАЛЬНА.

Т.к. начиная с версии 1.0.07, появился официальный API для сознания аддонов.

Здесь актуальными остались только пункты Публикация , Оформление , Обновления аддона .

---------------------------------------------------------------------------------------------------------------------------------

Создаём свой аддон (на примере ShowContextLvl)

Это версия 2.0 (что называется, "издание второе, переработанное и дополненное") статьи skillcoder'a, со вставками постов gsomgsom, беспощадным плагиатом аддона от kosh, и гигантской кучей моей отсебятины:

Что к чему

С тех пор, как появился "подпольный" сайт аддонов UI9.RU, на котором создаются первые (и пока неофициальные) аддоны для АО, этот сайт был негласно объявлен "вне закона", наверное, за создание аддона AutoLogin (кстати, и вправду, НЕ рекомендую использовать его, если у вас стоит Программа обновления аддонов). А также за то, что вся наша деятельность, на данный момент, в принципе, нарушает лицензионное соглашение между игроками и Нивалом. Лично мы по этому поводу не переживаем, но Нивал, всё-таки, вставили нам палку в колёса. (Нивал, мы вас всё равно любим и уважаем, но поймите, мы и дальше будем делать аддоны, т.к. мы любим это дело. И мы очень ждём от вас выпуска официального API, чтобы наша деятельность считалась легальной).

О палке в колёсах. Проблема вот в чём: До версии 1.0.04, в файле Interface.pak (PAK-файлы, на самом деле являются ZIP-архивами), находилась целая куча LUA-скриптов на все случаи жизни, которые можно было "доработать", и подменить, упаковав в виде аддона. Но начиная с версии 1.0.04, разработчики изъяли скрипты из Interface.pak, СКОМПИЛИРОВАЛИ ИХ, и положили в 2 новых файла LuaCompiledIngame.pak и LuaCompiledSystem.pak. Ещё, они убрали некоторые функции, они убрали все функции для работы со строками, чтобы мы не могли наворачивать интерфейс дополнительной информацией в виде текстов. Выкручиваемся, как умеем.

Но мы сохранили последние версии всех НЕскомпилированных LUA-скриптов:

Interface.1.0.03.26.2.zip (Подробнее)

А также, у нас есть API (!), используемый в LUA-скриптах AO:

AO_Formatted_Api_v1.zip (Подробнее)

UPD: Kosh занялся декомпиляцией последних версий скриптов(!!!):

Декомпиленные оффициальные скрипты

Некоторые скомпилированные LUA-скрипты изменились с времён 1.0.03, поэтому некоторые аддоны, основанные на скриптах версии 1.0.03, перестали работать (Chatfix, aVatarGa, XYHintCompass, jCritVisuator, setTargetSelect). Но Kosh недавно сумел расшифровать современный скомпилированный скрипт, и сейчас занялся декомпиляцией других скриптов!!! Это означает возможность исправить баги, починить нерабочие аддоны, и создавать новые без багов!

Программирование

Предыдущий вариант статьи рассказывал о том, как сделать аддон jCritVisuator, отличный аддон, но в данный момент он не работает, поэтому, расскажу на примере простейшего аддона ShowContextLvl.

Хотя, гораздо интереснее было бы покопаться в более сложных аддонах, таких как PetAttack, TabSelector, jAutoLoot, KColorImp...

Но вы всегда можете сделать это сами, сравнивая LUA-скрипт из аддона с оригинальным LUA-скриптом из Interface.1.0.03.26.2.zip. Особенно удобно сравнивать их в программе WinMerge.

Итак, будем делать ShowContextLvl. Аддон, который, при выделении сильного противника, вместо бесполезных вопросиков "??" показывает его реальный уровень.

Нам необходимо найти исходник оригинального LUA-файла, показывающего портрет и статус цели (таргета).

Ищем его в Interface.1.0.03.26.2.zip. Копаясь в этом архиве, вам в голову придёт более 9000 хороших идей новых аддонов...

Кстати, в поисках вам очень здорово поможет программа просмотра текстур AO Texture Viewer, потому, что визуальный поиск может оказаться гораздо быстрее и удобнее. Программа показывает, как выглядят все текстуры в Interface.pak (текстуры нужно искать не в этом архиве (1.0.03), а в том Interface.pak, который лежит в вашем клиенте игры, в \data\Packs\). Ведь пути к LUA-файлам, и их названия, ОЧЕНЬ похожи на пути и названия текстур. Буквально, нашёл текстуру - считай, нашёл LUA-файл.

Нашли в Interface.1.0.03.26.2.zip наш LUA-файл, вот он где:

\Interface\Ingame\ContextPlates\ScriptContextPlates.lua

Открываем, вникаем, что к чему. Исходник может быть достаточно понятен, или нет, но вам также поможет API. Вскоре находим то, что нам нужно:

Code:
Global( "MAX_LEVEL_DIFFERENCE", 4 )

Это лимит, максимальная разница в уровнях между персонажем и противником. Ха-ха, поднимаем до 40 :-)

Code:
Global( "MAX_LEVEL_DIFFERENCE", 40 )

Упаковка аддона

Готово. Теперь, сохраняем, и упаковываем в аддон. Всё просто - создаём ZIP-архив, внутри которого повторяем весь путь к файлу, и кладём туда наш модифицированный файл, т.е. так:

\Interface\Ingame\ContextPlates\ScriptContextPlates.lua

Меняем расширение получившегося файла с ZIP на PAK, называем его, например !ShowContextLvl.pak (да как угодно), и кладём в ту папку, где игра хранит все свои PAK-файлы, т.е. сюда:

(папка-установки-аллодов)\data\Packs\

Аддон готов! Запускаем игру, и проверяем, как он работает.

Подмена скрипта в игре происходит благодаря тому, что "Аллоды Онлайн", при загрузке, сканирует и загружает абсолютно все PAK-файлы в \data\Packs, без разбора. А если натыкается на дублирующиеся скрипты (скрипты в нашем аддоне дублируют оригинальные скрипты), то загружает тот LUA, дата сохранения которого новее. И не важно, скомпилировал LUA-скрипт, или не скомпилирован, работают оба варианта.

Если у вас, например, с первого раза не работает ваш самодельный аддон, то внесите в LUA нужные исправления, и обязательно ПОЛНОСТЬЮ ВЫЙДИТЕ ИЗ ИГРЫ перед перепаковкой PAK-файла, перепакуйте его, и только тогда входите в игру снова, чтобы игра загрузила ваш новый вариант аддона.

LUA-скрипт обязательно ДОЛЖЕН быть без единой синтаксической ошибки, иначе он ВООБЩЕ не будет работать. Совсем. Поэтому, проверяйте его на ошибки, например, в редакторе LuaEdit 2010 (синтаксис проверяется по нажатии Ctrl+Alt+C).

Публикация

Если у вас получился полезный и рабочий аддон, залейте его на наш сайт:

Идём сюда:

http://ui9.ru

Жмём кнопку "Добавить свой Аддон"

Заполняем открывшуюся форму, например, так:

Имя аддона: ShowContextLvl (сначала ХОРОШО ПОДУМАЙТЕ, т.к. переименовать потом будет нельзя)

Описание: Показывает левел противника вместо вопросиков. (тоже ПОДУМАЙТЕ, т.к. на данный момент, менять его можно только обратившись к Skillcoder'у. Скоро это будет доработано.)

pak файл: Вбиваем тот файл который мы создали.

И жмём кнопку "Отправить".

Таким образом можно сделать любой аддон. Нужно тока понимать что ты делаешь и знать API.

Оформление

Остальные действия не обязательны, но ЖЕЛАТЕЛЬНЫ.

(Хотя, если вы этого не сделаете, ничего страшного, за вас это сделают админы сайта.)

После того, как мы закачали аддон, мы ждём, пока Skillcoder сделает аддону "Approve", и тогда аддон появится на стартовой странице. Но даже пока он этого не сделал, аддон УЖЕ досягаем по такой ссылке:

http://ui9.ru/forum/название-аддона/about

Надо бы оформить эту страницу!

Скриншот очень желателен, т.к. скоро мы будем показывать скриншоты на стартовой странице. Скриншот добавляется так: Наверху той страницы есть закладки. Жмём закладку "Администрирование", затем закладку "Изменить", и там будет "Прикрепить скриншот". Скриншот, желательно, должен быть КВАДРАТНЫЙ, т.к. он, в любом случае, будет сплющен в квадрат! Если вы залили не квадратный скриншот, но админы сайта оставляет за собой право отредактировать его, и заменить на квадратный.

И там же можно, если хотите, изменить описание (Addon Description), можно даже сделать его в нескольких строк. Я, например, обычно пишу русское описание, и добавляю внизу английский перевод (перевод не обязателен, но с ним лучше). Здесь никакие теги использовать нельзя:

Code:
Показывает настоящий уровень противника вместо вопросиков ("??").

English:

Shows the real level of target instead of question marks ("??").

И не бойтесь за стартовую страницу, на которой описание только в одну строку, т.к. "Addon Description", который вы здесь редактируете, не имеет никакого отношения к тому описанию, которое вы вписали при закачке аддона. И это описание будет видно только на этой странице (.../about), ну а на стартовой так и останется то описание, что вы вписали при закачке аддона.

Вы знаете, для вашего аддона создан специальный раздел форума! :) Теперь, давайте откроем в нём тему для обсуждения аддона. Просто, если вы этого не сделаете сами, то за вас это может сделать первый попавшийся пользователь сайта, который захочет прокомментировать ваш аддон, т.к. это обычный форум, где каждый может создавать темы. С одним нюансом - ВЫ админ-властелин этого форума :)

На только что оформленной странице "об аддоне", жмём кнопку [Обсудить], или просто переходим на такую ссылку: http://ui9.ru/forum/название-аддона

Нажав на закладку "новая тема", создаём тему, например: "Название-аддона (Обсуждение)". И пишем там всё, что хотим, вставляем какие хотим скриншоты, и троллим сколько влезет, это ведь ваш собственный форум! :)

Обновления аддона

Может случиться, что вы будете дополнять свой аддон, или исправлять в нём ошибки...

Обновлённая версия закачивается так:

На странице "об аддоне" (или на форуме аддона), вверху вам доступна закладка "Обновить аддон". Там можно закачать новый PAK-файл, и если хотите, написать в "Лог изменений", что вы изменили в аддоне. Этот лог будет виден всем, на закладке "Лог изменений", что находится прямо над описанием и скриншотом на странице http://ui9.ru/forum/название-аддона/about.

Ссылка на комментарий
Поделиться на другие сайты

Берём отсюда файл \Wrap\MainMenu\EULA\ScriptEULA.lua.

Читаем, вникаем, понимаем, что можно удалить 90% скрипта, и из всех 195 строк оставляем только это:

Code:
function AcceptEula()

local version = common.GetGameVersion()

local section = {}

section [ "version" ]  = version

common.SetGlobalConfigSection( "eula", section )

common.SendEvent( "SCRIPT_EULA_ACCEPT", {} )

common.ConfirmAcceptEula()

end

AcceptEula()

Запаковываем в аддон. Всё, прощайте, лицензионные соглашения, мы вас больше никогда не увидим, но скучать не будем! :)

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Тему я уже пытался опустить, видимо не сработало, опускаю снова.

Насчёт подключения PAKов меня терзает смутное неприятное предчувствие... Сейчас буду проверять...

Ссылка на комментарий
Поделиться на другие сайты

Теперь надо создавоть новую тему - как создать аддоны на новом API

Ссылка на комментарий
Поделиться на другие сайты

как создавать свой аддон есть в примерах. так что эт лишнее.

А вот по мере сил на вопросы на те или иные будем стараться отвечать.

Ссылка на комментарий
Поделиться на другие сайты

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

Пользуясь сайтом, вы принимаете Условия использования