Классы
Статы, идеальное соотношение · Умения и вехи, как получить · Души · Сравнение классов
Воин · Жрец · Некр · Лучник · Шаман · Мист · Бард · Инж · Демон
Игровой процесс
Как одеваться · Драконий облик · Наследие Богов · Фарм золота
Прохождения локаций
Мониторинг серверов и редактор аддонов
Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.
Подсказки из игры на вашем сайте
Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.
SLA
Пользователь-
Постов
1 641 -
Зарегистрирован
-
Посещение
Тип контента
Загрузки
Форумы
Статьи и объявления
Гардероб
Маунты
Сообщения Allods Team
Магазин
Галерея
Весь контент SLA
-
Видимо, да. Если они остались, то только здесь: Interface.1.0.03.26.2.zip Нет, нельзя.
-
SCRIPT_REQUEST_CONTEXT_TOOLTIP - это событие возникает, когда указатель мышки задержался на 1 секунду над каким-то "активным" элементом интерфейса (например, любая иконка). Раньше это событие приходило в аддоны, и мы им пользовались, чтобы показывать свои тултипы. Но когда у нас отобрали common.SendEvent(), дав нам взамен урезанный userMods.SendEvent(), пропал способ запрашивать показ подсказки. Поэтому, мы перестали пользоваться подсказками. Ну а работает ли сейчас SCRIPT_REQUEST_CONTEXT_TOOLTIP в аддонах - я не в курсе. Надеюсь, что работает, тогда всплывающие подсказки можно будет оживить, создав для этого специальный набор функций.
-
HOW-TO: Совместимость аддонов с EU/US версиями Наверное, никому не нужно объяснять, что хороший аддон должен уметь работать как в русской, так и в иностранных версиях игры. Иначе это не "хороший" аддон Но вот беда, у нас более новая версия, чем у иностранцев. Соответственно, немного другой API, какие-то функции добавлены, какие-то убраны, какие-то изменились. Для тех, кто не в курсе, под "иностранными" версиями подразумеваются все версии "Allods Online", выпускаемые в Европе и Америке (на английском, немецком, французском языках), и все они имеют одинаковый номер версии. Кроме того, в Китае и Японии уже начат ЗБТ, но версия ещё ниже, чем в Европе. Вот текущие версии АО: AO RUS - 2.0.03 AO EU/US - 1.1.04 AO China/Japan - 1.1.02 (?) Определение номера версии: Главная идея в том, чтобы либо не использовать новые функции вообще, либо окружить их "заглушками", либо выполнять разный код в разных версиях игры. Для этого, аддону было бы неплохо знать, с какой версией игры он имеет дело. А штатной функции определения версии в API нет! Комрады, больше по этому поводу беспокоиться не нужно: Code: -- AO game Version detection by SLA, ver. 2011-02-14. function GetGameVersion() if avatar.GetUnlocks then return 2003 elseif astral.GetAllTLs then return 2002 elseif mount.SetSkin then return 2001 elseif group.IsLeader then return 2000 elseif social.GetFriendInfo then return 1104 elseif not unit.IsDead then return 1103 end return 1102 end Функция возвращает число, например 1102 для 1.1.02, 1103 для 1.1.03., 1104 для 1.1.04, 2000 для 2.0.00, 2001 для 2.0.01. Её содержание может показаться странным для человека, не знакомого с Lua. Она просто проверяет, существуют ли в API некоторые функции. К счастью, каждая крупная версия игры всегда добавляет какие-нибудь новые функции, так что, мы всегда найдём способ "опознать" версию игры по её API. Эту функцию, как и всю эту статью, я буду оперативно обновлять, по мере выхода новых версий АО. Функция протестирована, и работает правильно в современной русской и иностранных версиях. Различия в версиях API: Чтобы иметь полное представление о том, как ваш аддон поведёт себя в иностранных версиях АО, сверьте вот эти 4 версии API. Посмотрите, существуют ли функции API, используемые в вашем аддоне, в старых версиях API, а также совпадают ли их параметры и возвращаемые значения: http://www.gamefront.com/files/20014147/API-1102-2003.7z Кроме того, вам никто не мешает скачать английскую версию игры с http://en.allods.gpotato.eu/, и установить её (всего-то 3 ГБ) параллельно с русской версией, для тестирования своих аддонов. В крайнем случае, обращайтесь ко мне, постараюсь помочь с тестированием, т.к. у меня эта английская версия установлена. По поводу поддержки нескольких языков: Если в вашем аддоне есть локализуемые тексты (в смысле, тексты на русском языке), то загляните ещё и в инструкцию по созданию многоязычного аддона. С переврдом на английский, если нужно, я могу помочь. А когда кроме русского, будет и английский язык, то немецкие и французские игроки с удовольствием помогут с переводом на немецкий и французский языки
-
Я уже довольно давно обещаю "в скором времени" написать учебник по созданию аддонов Но до него вечно не доходят руки... Пока его нет, будет эта тема. Потому, что она просто нужна. Что можно сделать средствами аддонов. Хотите сделать свой первый аддон? Прекрасно! Но сначала, нужно разобраться, что можно сделать средствами аддонов, и чего нельзя. В борьбе с (воображаемым?) ботоводством, разработчики игры довольно сильно ограничили спектр доступных в API функций. Поэтому, сразу предупреждаю, что ничего не выйдет, если вы хотите сделать: Автоатаку. Автоматизировать (почти любые) действия персонажа. Программно отправлять сообщения в чат. Всё остальное, что можно сделать средствами данного нам API, это: Любые информативные аддоны (сбор, обработка, и показ любой доступной инфотмации) Кое-какая автоматизация действий (при работе с аукционом, почтой, и др.) Возможно, ещё что-то, до чего мы пока не додумались. Ну что, не остыл ещё пыл? Поверьте, ещё миллион отличных аддонов можно сделать на том API, что у нас есть. Простор огромен, т.к. мы ещё только начинаем его осваивать Что для этого нужно? Во-первых, чтобы создавать аддоны, нужно хоть немного владеть языком программирования Lua. Этот язык нигде не преподаётся, и почти нигде профессионально не используется. Поэтому, программисты изучают его сами, на дому. Вот ссылки на учебники: http://www.lua.org/m...5.1/manual.html http://www.lua.ru/doc/ Кстати, в АО используется Lua 5.1 (LuaJIT 2.0.3) Ну а, собственно, для АО, официальная документация по созданию аддонов находится в папке с игрой: Allods Online\data\Mods\Docs\ModdingDocuments.zip\Index.html онлайн-версия здесь Несколько элементарных примеров аддонов находятся в папке: Allods Online\data\Mods\SampleAddons А теперь внимание! Лирчик Али-Бабы! вот он: Interface.1.0.03.26.2.zip Желательно, чтобы ваш аддон был бы совместим не только с русской, но и с иностранными версиями АО. Подробнее об этом написано здесь: "Совместимость аддонов с EU/US версиями". Кроме того, имеет смысл сделать его доступным и для иностранных игроков, ведь AO существует ещё и на английском, немецком, французском языках. О способе определения локализации клиента игры, написано здесь: "Многоязычный аддон / Multilangual addon". Графический интерфейс. Графику для аддона можно вытащить прямо из ресурсов игры, с помощью AoTextureViewer Далее, в официальной документации (ModdingDocuments.zip) есть вводный учебник, и полная справка по Lua API (функции, события, переменные). Но там практически ничего не сказано о создании графических интерфейсов, то есть об XDB-файлах. Правда, все шаблоны XDB-файлов можно найти в папке ResourceSystem (которая там же, в ModdingDocuments.zip), но к ним никакой документации нет, не считая того, что есть в нескольких примитивных примерах аддонов в SampleAddons. Приходится с XDB-файлами разбираться самим. Поэтому, загляни ещё и сюда: Создание GUI Это, конечно, далеко не всё. Но этого вам точно хватит, чтобы начать создавать аддоны. Тестирование аддона в игре. LUA-скрипты аддона можно тестировать очень удобно, не выходя из игры, а просто перезагружая ваш аддон с помощью встроенного менеджера аддонов. Если что-то в вашем аддоне не работает или поломалось, то загляните в лог ошибок, наверняка там найдёте подробное сообщение об ошибке: Allods Online\Personal\Logs\Mods.txt Как видите, с LUA-файлами всё просто Нажал кнопочку, аддон перезагрузился - удобно. Однако, с тестированием графики (XDB-файлы, BIN-файлы) и вообще, всех ресурсов (ещё и TXT-файлы), всё гораздо сложнее. Во-первых, если вы что-то меняете в XDB/BIN/TXT-файлах, то для того, чтобы изменения отразились в игре, перезагрузки аддона недостаточно. Придётся ПОЛНОСТЬЮ ПЕРЕЗАГРУЖАТЬ ИГРУ... Это усугубляется ещё и тем, что никаких ошибок XDB/BIN/TXT в логе не сообщается. Если у вас что-то из графики не работает, то вы это увидите в своём аддоне, да. Но никто вам не сообщит, в чём проблема - придётся разбираться самому, где в XDB-файлах вы допустили ошибку. Публикация готовых аддонов. Как правильно выложить и оформить аддон, читайте здесь: Публикация новых аддонов (Инструкция) Ну вот! Буду править и дополнять это сообщение по мере необходимости.
-
Просто показать картинку с раскладкой - да, можно, легко. Но сделать, чтобы кнопочки работали, и при нажатии на них буквы печатались в чат - технически невозможно. Потому, что разработчики защитили чат от воздействия аддонов, чтобы не появлялись спам-боты для АО.
-
Yes, heal-meter is possible, and it is planned to be included in future versions of DarkDPSMeter. BTW, even aggro-meter is possible, but it is harder to make it, because it requires a knowledge of how different spells modifies aggro (some spells have different aggro multipliers, and some spells acts with aggro even more tricky). "RealAgroR" was very simple addon, without any logic or calculation, it was just getting aggro-list via special API function. This API function is now forbidden, that's why "RealAgroR" stopped working. But it is still possible to create an advanced and complicated aggro-meter, based on the knowledge about how different spells modifies aggro.
-
ОБНОВЛЕНИЕ R27 / UPDATE R27 : RU: -- ЗВЕРСКИ ОПТИМИЗИРОВАН ВЕСЬ КОД, огромное спасибо Ramirez !!! Он частично или полностью переписал примерно с половину функций, тотально упростил и ускорил работу с массивами, их сортировку, и многое другое. Однозначно, это самая крупная переработка скриптов после DarkMaster'а. Аддон стал невероятно "лёгким", возможно даже, что больше НЕТ необходимости делать кнопку выключения/упрощения подсчёта статистики. -- Исправлено определение немецкой и французской локализаций. Спасибо Carnifex, без него мы бы и не узнали, что у немцев и французов аддон был на английском. Теперь это исправлено, аддон показывается немцам по-немецки, и французам по-французски. EN: -- Addon is TOTALLY OPTIMIZED by Ramirez It is now several times faster than before! Update is highly recommended! -- Localization detection is now fixed, thanks to Carniflex for reporting this bug. Now, German players will see it in German language, and French players will see it in French language. DE: -- Addon ist nun VOLLSTÄNDIG OPTIMIERT von Ramirez Es ist nun um ein Vielfaches schneller als vorher! Update wird dringend empfohlen! -- Sprache Erkennung ist nun behoben, dank Carniflex für die Meldung dieses Fehlers. Nun Deutschen Spielern wird es in Deutscher Sprache sehen, und Französisch Spielern wird es in Französisch Sprache sehen. FR: -- Addon est ENTIÈREMENT OPTIMISÉE par Ramirez Il est maintenant plusieurs fois plus rapide qu'avant! Mise à jour est fortement recommandée! -- Détection de la langue est maintenant corrigé, Merci à Carniflex pour avoir signalé ce bug. Maintenant, les joueurs français le verrez dans la langue française, et les joueurs allemands le verrez dans la langue allemande.
-
ОЛОЛО! Это пять! =)))))))))))))))))))) Давным давно, уже целых 3,5 месяца, есть замена "GuildGui", вот она: GuildGui1b =)) Возможно, стоит внимательнее просмотреть стартовую страницу сайта, наверняка найдётся что-нидудь ещё, совершенно новенькое, или нуждающееся в обновлении
-
Quote: Замалчивать ошибки в скрипте нехорошо, нечего спрашивать размер у всякого мусора. Но ведь некоторые функции API, при некоторых обстоятельствах, могут вернуть nil вместо таблицы. В таких случаях, имхо, лучше вернуть 0, чем генерировать ошибку.
-
НИФИГА СЕБЕ, быстрый Ramirez быстр !!! =) Всё это этой ночью окажется в обновлении аддона. Я не успеваю так быстро вникать в код, как быстро ты его пишешь ) Это что-то. Смотрю, и охреневаю. GetTableSize() растворился как утренний туман. И функции сортировки стали совсем-совсем короткими... P.S. LUA ведь почти нигде профессионально не используется, откуда у тебя такие навыки в LUA ?
-
Ясно, EVENT_INGAME_UNDER_CURSOR_CHANGED для этой цели не подходит. Тогда загляни в этот ларчик Али-Бабы: Interface.1.0.03.26.2.zip Это все скрипты разработчиков из игры версии АО 1.0.03.26.2, последней версии, после которой они были зашифрованы. Если там не будет ответа, то значит, никак. Но очень велики шансы, что ответ ты там найдёшь. P.S. Прочитал отрывками статью о гармонии, ОЧЕНЬ интересно, только читается медленно
-
HOW-TO: UITextureConvertEditor.exe 1. Нужно поместить TGA-картинки куда-нибудь в папку Allods Online\data\Mods (или в любую её подпапку), и оттуда уже можно конвертировать ) Иначе будет FAIL. Необычное поведение для софта, да. 2. TGA-картинки должны быть либо 32-битными (если есть альфа-канал), либо 24-бинными (если его нет). Ну а 16-битные TGA вообще НЕ поддерживаются, правда, сама программа об этом не знает, поэтому и предупредить не может )) 3. Насколько помню (правда, НЕ уверен), TGA картинки должны быть БЕЗ компрессии. 4. В программе выбрать тип текстуры "WidgetLayerTiledTexture" или "UISingleTexture". Другие 2 типа текстур она генерирует бракованными, поэтому их делать ею нельзя. 5. Ещё, она очень долго стартует, и на некоторых системах вообще отказывается запускаться. Как видишь, всё очень просто =)) Именно поэтому, в планах развития AoTextureViewer вторым пунктом написано: "Удобный и интуитивно понятный конвертер текстур для аддонов (альтернатива UITextureConverter.exe)."
-
Quote: Она выдает количество не nil-элементов в массиве Дык ведь Дарк удаляет элементы массива именно так: массив [элемент] = nil Но тут очень запутанная история, почитай этот холивар о работе массивов в луа. Там наши даже выложили примеры кода, воспроизводящие баг.
-
Quote: , а не [0] , как считают в Нивале. =))))))))))))))))) Я плакал... Так вот, оказывается, у кого руки не из того места растут. А я и думаю, почему не получается обойтись без такой уродской функции как GetTableSize()... Значит, получается, для спасения DarkDPSMeter, надо добавить в библиотеку что-то типа этого? Code: function GetTableSize( t ) if not t then return 0 end if t [0] then return table.getn(t)+1 end return table.getn(t) end Я только протестирую всё это, сначала. Если такой фикс будет работать, то это значительно ускорит весь DarkDPSMeter. P.S. А в LUA можнл ли вместо local wtChildren = self.Widget:GetNamedChildren() local wtChild = wtChildren [ index ] сделать так? local wtChild = self.Widget:GetNamedChildren() [ index ] P.S.2. Кстати, аналогичный стиль программирования и в файле DarkDPSMeterData.lua, так что его тоже можно аналогичным образом оптимизировать. Там даже есть любопытная СОРТИРОВКА массива в трёх функциях: TSpellDamageData:SortSpellDetailsByCount() TCombatant:SortSpellByDamageAmount() TFight:SortCombatantsByDamageAmount() Функции эти вызываются при каждом ударе, как я понял. Так что, возможно, это именно они хавают все ресурсы ЦПУ? Ramirez, можешь, как специалист по LUA, посмотреть, что можно с ними сделать?
-
@ Carniflex: Yes, I have noticed, how badly gPotato have localized the English game. I guess, German and French localizations aren't better. But it don't matter, how badly it is translated. Vermin needs the exact name just for technical reasons - to make the addon work Now I'll ask him to tell, where exactly you have to look for this string (in Ability Tree? In chat?) "Carniflex" wrote: BTW: it is possible to write an addon, that changes the description of skills? (if gPotato can't make a good localisation, we can improve it ) No, this is technically impossible. @ Vermin: Скажи, где ТОЧНО нужно посмотреть, чтобы узнать, как эта строка выглядит на немецком? В дереве навыков? В чате? Где именно? Carniflex посмотрит, напишет точную фразу, и проблема с немецким будет решена
-
@ Vermin: У тебя в аддоне, насколько знаю, хитрая система позиционирования строк в окне. То есть, когда добавляется новая строка (например "Блок щитом: 12 (12.5%)"), то аддон рассчитывает координаты для новой строки. Он помещает её под всеми остальными строками в этой категории. Carniflex имеет ввиду, что иногда, добавляемая строка ставится в координаты предыдущей строки (без сдвига вниз по Y), поэтому и получается, что там две строки наложены одна на другую... Это логическая ошибка (не синтаксическая), поэтому в Mods.txt ошибок не будет. И ни номер версии АО, ни язык здесь не при чём. Ты можешь исправить это где-то в своём LUA.
-
Нужно бы сделать тестовый аддон, который напишет в Mods.txt любые локализованные строки, и попросить французов и немцев его запустить, и прислать нам то, что будет написано в Mods.txt. P.S. "Heilige Barriere" = Святой Барьер. @ Carniflex: BTW, how EXACTLY this paladin's ability is called in German - "Heilige Barriere" or "Barriere"? Vermin needs to know the exact name, because in newer game versions (like 1.1.02) damage from barriers will be detected by this exact ability name.
-
Ramirez, респект! Библиотека оптимизирована славно, нужно теперь проверить, насколько это ускорит DarkDPSMeter. Только, имхо, основные тормоза, всё же, в самом подсчёте статистики. Вернее в том, наверное, что там выполняется слишком много операций со строками... Надо бы посмотреть, везде ли оправдано использование строк, может, можно заменить где-то строки на числа... А ещё, можно здорово упростить рассчёты при скрытом окне, ведь многое можно не считать и не обновлять... Кстати, заканчиваю изучать твои оптимизации, и наткнулся на использование функции table.getn() вместо GetTableSize(). Здесь нужно разобраться, можно ли её использовать. Как известно, в АО используется движок LUA 5.0.3. Так вот, Google сразу выдал такую ссылку про эту функцию: table.getn in Lua 5.0.2/3. Это всё в продолжение темы о багах LUA 5.0 в работе с таблицами, начатой здесь. Так что, сначала проводим тест. Если НЕ работает, то возвращаемся к GetTableSize(). Если работает, то ДОБАВЛЯЕМ в аддон новую функцию GetTableSize(), вычисляющую всё через table.getn(). Потому, что этот GetTableSize() в аддоне используется повсеместно.
-
Это написано в документации в Allods Online\data\Mods\Docs\ModdingDocuments.zip\Creating.html С помощью Allods Online\bin\UITextureConvertEditor.exe
-
А вот ещё и французская локализация от Izuldar French localization by Izuldar File: AnatomySelfDefence_FR.zip
-
Carnifex, thank you very much for help! I have answered you in another topic, special topic, which is dedicated to this method of game localization detection. Read it here: HOW-TO: Многоязычный аддон / Multilangual addon
-
Carnifex, Thank you very much for reporting this very important problem, and for doing even more research. Without your help this method didn't even worked! I have already fixed the article above, and its attachment. Also, DarkDPSMeter will be fixed today, together with some other improvements. Also, I will PM Vermin to fix localization detection in his addons (GuildGui1b and AnatomySelfDefence). I even didn't knew, but this method was working only in Russian version... While English, German, French was always detected as English, because all 3 strings for those languages was wrong! As far as I remember, I took all those zone name translations from AllodsDatabase.com about 1 month ago. Today, all those zone names on AllodsDatabase.com have changed. Of course, I have tested it in Russian and English version. It worked in Russian version because it had correct Russian string, and worked in English version just because English is default language when language is not detected. This is why I didn't knew it was not actually working. The correct MB[5].name is: rus = Дальний Астрал eng = Holy Land Archipelagos deu = Archipele des Heiligen Landes fra = Archipels de la Terre Sacrée But since MB[5].name is too long in EN, DE, FR languages, I've decided to detect languages by MB[4].name - it is much shorter Here is how MB[4].name is called in all 4 languages: rus = Святая Земля eng = Holy Land deu = Heiliges Land fra = Terre Sacrée Now the same info in Russian: ПО-РУССКИ: Carnifex, наш немецкий коллега, рапортировал и даже исследовал серьёзную проблему - этот метод определения локализации ДО СИХ ПОР НЕ РАБОТАЛ! =) Вернее, в немецкой и французской версиях, язык всегда определялся как английский. Такой вот неприятный, и неожиданный сюрприз. А всё потому, что на AllodsDatabase.com, где я взял локализованные названия зон, месяц назад эти названия были НЕПРАВИЛЬНЫЕ. Например, "Дальний Астрал", по-немецки, на самом деле НЕ "Weiter Astralraum", а "Archipele des Heiligen Landes". По-французски НЕ "Astral Lointain", а "Archipels de la Terre Sacrée". И по-английски НЕ "Far Astral", а "Holy Land Archipelagos". Сегодня эти названия там уже исправлены. Но поскольку все эти названия зон слишком уж длинные, имхо, лучше определять язык по MB [4] .name: rus = Святая Земля eng = Holy Land deu = Heiliges Land fra = Terre Sacrée Поэтому, статья вверху обновлена, и обновлён её аттачмент. Чтобы исправить аддоны, использующие этот способ, нужно сделать всего 2 вещи: 1) В коде функции GetGameLocalization() поменять одну цифру (вместо MB[5] стало MB[4]): Code: local MBI = cartographer.GetMapBlockInfo( MB [4] ) 2) И, конечно, заменить четыре файла (rus.txt, eng.txt, ger.txt, fra.txt), на те, которые в обновлённом аттачменте к статье вверху - SampleLocalization-1.1.00_v2.zip.
-
ОБНОВЛЕНИЕ R25: -- Отремонтирована поддержка Группы. -- Добавлена немецкая локализация. Спасибо Carnifex Hinzugefügt Deutsche Lokalisierung. Danke, Carnifex
-
Последняя версия действительно НЕ работает в группе. Сейчас занимаюсь этим... Похоже, функция raid.GetMembers() ведёт себя не совсем так, как написано в документации.
-
All icons are located in Interface.pak file. Mass convertion to PNG will be added in next version. I'm currently working on the next version. First of all, I have to update it to support all new textures from AO 1.1.02. Then, there must be added a possibility to extract BIN+XDB files for addon developers. And later, there will be added a new feature, which is top secret right now, it will be a surprise.
