Классы
Статы, идеальное соотношение · Умения и вехи, как получить · Души · Сравнение классов
Воин · Жрец · Некр · Лучник · Шаман · Мист · Бард · Инж · Демон
Игровой процесс
Как одеваться · Драконий облик · Наследие Богов · Фарм золота
Прохождения локаций
Мониторинг серверов и редактор аддонов
Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.
Подсказки из игры на вашем сайте
Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.
SLA
Пользователь-
Постов
1 641 -
Зарегистрирован
-
Посещение
Тип контента
Загрузки
Форумы
Статьи и объявления
Гардероб
Маунты
Сообщения Allods Team
Магазин
Галерея
Весь контент SLA
-
Looks like this code is correct.
-
Quote: Аддон не учитывает урона с вех язычника "Помощь природы". Спасибо. Это уже исправлено в следующем обновлении, над которой я сейчас работаю. Quote: а так же, не учитывается дамаг от навешанных открытых ран у язычника. Да, как правильно заметил Nikon, "Открытые раны" наносит именно Пет, поэтому, урон от этого умения плюсуется к урону Пета. P.S. Ребят, я как раз работаю над довольно серъёзным обновлением, в котором будет несколько переделана логика движка ДПС-метра. Это сложно, поэтому, это заняло так много времени. Но я уже заканчиваю, скоро выпущу это довольно крупное обновление... Всем, кто отписался в этой теме, отвечу, как только закончу с переработкой движка, и станет ясно, что и как будет работать в новой версии.
-
Ура! Ура! Аддон уже выпущен, и доступен на главной странице: AddonManager Дальнейшее обсуждение - в форуме AddonManager: http://ui9.ru/forum/addonmanager
-
English translation: This text is for addon developers It describes how to enable AddonManager support in your own created addons. AddonManager support in other addons: Sending addon's allocated memory size: Every 5 seconds, while AddonManager window is open, it sends the "U_EVENT_ADDON_MEM_USAGE_REQUEST" event. Your addon's answer to this event must be: Code: onEvent [ "U_EVENT_ADDON_MEM_USAGE_REQUEST" ] = function( params ) userMods.SendEvent( "U_EVENT_ADDON_MEM_USAGE_RESPONSE", { sender = common.GetAddonName(), memUsage = gcinfo() } ) end Drag&Drop locking: Pressing the "Lock" icon sends the "U_EVENT_TOGGLE_DND" event. Its params is a table with those variables: target (string) -- targeted addon name, state (boolean) -- true - Enable Drag&Drop, false - Disable Drag&Drop. You must decide yourself, which of your addon's widgets should be locked by this event. Probably, those are the widgets, which are permanently visible on the screen, and should be locked to preserve from accidental dragging. Here is an "U_EVENT_TOGGLE_DND" reaction example, for the case, if you are using the LibDnD library: Code: onEvent [ "U_EVENT_TOGGLE_DND" ] = function( params ) if params.target == common.GetAddonName() then DnD:Enable( wtAddonButton, params.state ) DnD:Enable( wtAddonPanel, params.state ) end end Hiding addon from the screen: Here, AddonManager is using the standard "SCRIPT_TOGGLE_UI" event, which worked earlier (prior to "Rise of Gorluxor" patch) in all addons, on pressing ALT+Z. Now, addons don't get this event from the game itself, so AddonManager is using this event to show/hide all addons. Fortunately, almost all our addons still have this event reaction! If your addon haven't, then please make it: Code: onEvent [ "SCRIPT_TOGGLE_UI" ] = function( params ) mainForm:Show( params.visible ) end That's all for now And I hope, in the future there will be some new events added in AddonManager P.S. Pre-history of "AddonManager" development (in Russian).
-
Ура! Огромное спасибо! =) Теперь в каждом аддоне, который я буду заливать на сайт, будет поддержка событий "AddonManager". Надеюсь, остальные разработчики аддонов тоже не подведут Комрады, это для нас: Поддержка событий AddonManager в других аддонах: Scroll down for English translation Передача количества занятой аддоном памяти: Каждые 5 сек, если окно менеджера открыто, он отправляет событие "U_EVENT_ADDON_MEM_USAGE_REQUEST", ответом на которое должно быть: Code: onEvent [ "U_EVENT_ADDON_MEM_USAGE_REQUEST" ] = function( params ) userMods.SendEvent( "U_EVENT_ADDON_MEM_USAGE_RESPONSE", { sender = common.GetAddonName(), memUsage = gcinfo() } ) end Замочек: Нажатие по замочку отправляет событие "U_EVENT_TOGGLE_DND" -- таблицу с полями: target (string) -- аддон-адресат, state (boolean) -- true - Включить Drag&Drop, false - ВЫключить Drag&Drop. Вы должны сами решить, какие виджеты вашего аддона должно "пристёгивать" это событие. Скорее всего, это те виждеты, которые видны на экране постоянно, и пристёгиваются для того, чтобы пользователь не подвинул их случайно. Пример реакции на "U_EVENT_TOGGLE_DND", если в аддоне используется библиотека LibDnD: Code: onEvent [ "U_EVENT_TOGGLE_DND" ] = function( params ) if params.target == common.GetAddonName() then DnD:Enable( wtAddonButton, params.state ) DnD:Enable( wtAddonPanel, params.state ) end end Сокрытие аддонов с экрана: Здесь используется стандартное событие "SCRIPT_TOGGLE_UI", которое раньше работало во всех аддонах при нажатии ALT+Z. Какая удача, что почти во всех наших аддонах, ещё остался код реакции на это событие! Если в вашем аддоне его нет, то обязательно сделайте его: Code: onEvent [ "SCRIPT_TOGGLE_UI" ] = function( params ) mainForm:Show( params.visible ) end Пока всё, но в будущем, надеюсь, в AddonManager появятся дополнительные события P.S. Предыстория появления "AddonManager".
-
Есть всего один баг - "Замочки" не работают. Совсем. В смысле, они не нажимаются. В остальном - СУПЕР Замочки, по умолчанию, разомкнуты. Внизу добавились две закладки, и теперь аддоны не смешаны в одну кучу. Локализации приведены в порядок, кнопочки стали шире. Появилась кнопка Скрыть все аддоны. Появилось сохранение настроек. Всё просто супер! Всё остальное можно будет доделать уже после релиза. Почини "замочки", и.... НА ГЛАВНУЮ ЕГО, НА ГЛАВНУЮ!!!
-
Quote: I am in a raid (raid leader) and the "G" is shown and not the "R". Mmm... It really shouldn't act this way, because the raid-related code is very simple. It just checks if there is a Raid, and shows/hides the Raid button. Quote: BTW: /raidwarning is an unknown slashcommand and the "!" also does not work Removed this button from R13 Quote: one more bug, but I have no idea, how to fix is. I think we have to life with it but maybe you have an idea. This bug is fixed in R13. It was overlapping those dropdown menus, because addon's MainForm <Priority> was too high. I have lowered it.
-
ОБНОВЛЕНИЕ R13 / UPDATE R13: RU: -- Полностью переписан код аддона! Аддон стал в 6 раз компактнее -- Убрана кнопка "Шепот". Она была слишком "особенной", вызывала слишком много вопросов и жалоб, что она не работает. Аддон действительно не может полноценно отправлять "шепот", поэтому эта кнопка работала только наполовину, и вызывала проблемы, поэтому, я решил убрать её. Не думаю, что кто-то станет её оплакивать Убрана кнопка "RaidWarning", т.к. она больше не работала во всех современных версиях игры. -- Аддон больше не перекрывает выпадающие меню с Настройками Чата. EN: -- Complete code rewrite! Addon is now 6 times smaller -- Removed "Whisper" button. It was too "special", it caused a lot of questions and complaints that its not working. Since addon really wasn't capable of normally sending "whisper", this button was half working, and i have decided to remove it. I don't think anyone would mourn for it -- Removed "RaidWarning" button, because it wasn't working in any modern game version anymore. -- Addon do not overlaps the Chat Configuration dropdown menu anymore.
-
ВАЖНО: Исправлена функция GetGameVersion() для КОРРЕКТНОГО распознавания современной Европейской АО 1.1.02. Все, кто ею пользуется, обновите её до версии 2010-10-06. Дело в том, что оказалось, их современный API отличается от нашего 1.0.02! То есть, у них в 1.1.02 появилась функция object.IsFar(), которая должна была появиться только в АО 1.1.03... Поэтому, функция GetGameVersion() возвращала 1103. Я исправил её, заменив проверку "object.IsFar" на "not unit.IsDead" - теперь в EU/US версиях возвращает правильный номер - 1102.
-
Hey, hey, you shouldn't have social.GetIgnoreInfo() in EU/US versions yet, because it was added in AO 1.1.04 ! In AO 1.1.04, social.GetIgnoreList() have changed, just like social.GetFriendList(). Now, social.GetIgnoreList() returns NOT a table, but a list of IgnoreId's (list starts from index [0]). And to get data about any ignoreId, you have to use a new function - social.GetIgnoreInfo( IgnoreId ) In AO 1.1.02, social.GetIgnoreList() returns a table, filled with data, so you don't have to use social.GetIgnoreInfo() at all. Or am I wrong? I can be wrong, because I have just discovered that your API 1.1.02 differs from our API 1.1.02. I have noticed that your latest EU/US API (1.1.02) got a function from Russian API 1.1.03 (!!!) - object.IsFar(). And this fact makes my GetGameVersion() function wrong, because it returns 1103 in the laters English version I have to post an updated GetGameVersion() function. UPD: Done. For example, this is how I did backwards-compatibility in GuildGui1b, and it works in both 1.1.04 and EU/US 1.1.02: Code: local members = social.GetFriendList()for i = 0, GetTableSize( members ) - 1 do -- Hack for AO 1.1.04+: if social.GetFriendInfo then members = social.GetFriendInfo( members ) end -- Now we can use members in both AO 1.1.04 and 1.1.02: BaseList .name = members .name BaseList .level = members .level BaseList .class = members .raceClass.name end
-
OMFG, "PhanTime" is still broken, because chat messages STILL comes without timestamps In any case, "PhanTime" will start working in AO 1.1.03, because there will be new API function - mission.GetWorldTimeHMS().
-
Надо смотреть, какие ошибки он пишет в Mods.txt (если пишет). И несколько часов копаться в коде, изучить, как он работает, тогда будет понятно, где он поломался. У меня на это времени нет, мне бы DarkDPSMeter поскорее починить, и AoTextureViewer обновить.
-
Но они могли бы сделать менеджер аддонов в игре, где можно было бы отключать избранные аддоны. Например, такой Но, вместо этого, они пошли другим путём. Надеюсь, когда-нибудь (когда закончится ОБТ? xD ) API устоится, он уже не будет меняться, только дополняться. Тогда аддоны ломаться не будут, и разработчики смогут оставлять кнопку включения аддонов включенной после патчей. Да, ты прав, наверное, насчёт юридического хода. Это напомнило мне, как Микросакс ввели "защиту" в Виндовс Виста: Вместо того, чтобы ввести нормальную ТЕХНИЧЕСКУЮ защиту (как в Линукс), они ввели ноу-хау - ЮРИДИЧЕСКУЮ защиту. Теперь, когда человек скачивает что-то из интернета, или запускает что-то непонятное, система технически НЕ защищает его, но за то, ОНА ПРЕДУПРЕЖДАЕТ "Если ты откроешь это, оно может тебя укусить". То есть, защита эта, на самом деле, защищает НЕ пользователя от вирусов, а саму корпорацию Микросакс от судебных исков пользователей! Мол - если юзер был предупреждён, то с корпорации ответственность снимается. Ну и нафиг нам такая защита в наших ОС?
-
Мои идеи насчёт этого аддона были такие: 1) Сделать "стандартный" внешний вид окна. -- Это уже сделано, в лучшем виде 2) Сделать чтобы приоритет MainForm был бы эдак 25000, чтобы окно всегда отображалось поверх любого поломавшегося аддона. -- Сейчас приоритет 8192, в принципе, хватает. 3) Использовать userMods.SendEvent() для общения с аддонами. -- Это уже отчасти реализовано. Насчёт остальных идей ивентов, напишу подробно: Ивент "сообщить параметры" -- по этому специальному запросу, отправляемому менеджером аддонов один раз за сессию (где-то по "EVENT_AVATAR_CREATED" - когда все аддоны загружены), каждый аддон отправляет аддон-менеджеру свои характеристики. Это: 1) Описание аддона. Короткое, примерно как на стартовой странице UI9, для показа там, где у тебя сейчас "комментарий" , а лучше, во всплывающем тултипе. 2) Список событий аддон-менеджера, на которые он умеет реагировать. Это очень важно. Это сразу подскажет, какие опции, и каким аддонам нужно показывать (например, сейчас "замеочек" показан для всех аддонов. А поддерживает его пока один только GuildGui1b R43 , другим аддонам он не полагается - они его пока не поддерживают. То же самое с сокрытием/показом аддонов. И в будущем, этот список можно будет дополнять -- но обратная совместимость, при этом, будет сохраняться. 3) ?? Если потребуется, в будущем можно будет добавить новые параметры, не нарушив обратной совместимости. Статус-Ивент "показать/скрыть конкретный аддон" -- Для сокрытия всех окон/кнопок аддона, чтобы он не мозолил глаза. В следующем ивенте напишу, зачем это нужно. Кнопка-Ивент "показать главное окно" -- Аддон показывает своё главное окно (или окно настроек, если ему так надо, или просто выполнять какой-то код, если так нужно) - это хорошо не только для аддонов, у которых нет ни кнопки, ни окна. Самое главное, это нужно большим навороченным аддонам, все кнопки/окна которых СКРЫТЫ событием "показать/скрыть конкретный аддон". Дело в том, что это сейчас у нас всего 3 (?) кнопки, постоянно висящих на экране (GuildGui1b, DarkDPSMeter, LightDPS). А каждый уважающий себя аддон, по идее, должен рано или поздно, обзавестись такой кнопкой. Так вот, чтобы у нас в будущем таких кнопок не стало 30 штук, нужно уже сейчас придумать единый стандарт, и сделать ОДИН ЦЕНТР УПРАВЛЕНИЯ ПОЛЁТОВ, где можно было бы показывать/скрывать окна любых аддонов, не пользуясь кучей мелких кнопочек. Таким "центром управления", естественно, должен стать именно менеджер аддонов... В последнее время я уже подумывал сам взяться за написание такого "центра управления", так как тут нужно сделать не тяп-ляп, а всё серъёзно продумать. Нужен единый стандарт, качественный и расширяемый. Пока не увидел сегодня твой менеджер аддонов =) По-моему, тебе можно это доверить, думаю, ты отлично справишься =) И ещё, отдельная кнопка "показать/скрыть все аддоны" -- посылает ивент "SCRIPT_TOGGLE_UI" с params.visible = true/false Понятно, зачем. С тех пор, как у нас отняли SCRIPT_TOGGLE_UI, очень не хватает способа делать "чистые" скриншоты без окон и кнопок аддонов. Кстати, это именно тот вариант, где лучше не изобретать новый "U_EVENT...", а отправлять старый-добрый "SCRIPT_TOGGLE_UI" -- во многих аддонах, почти всех, ещё остался код реакции на это событие. Ну а ниваловские аддоны, к счастью, не реагируют на события от userMods.SendEvent(), так что за них беспокоиться не приходится Что ещё? Это не горит, но можно будет сделать сохранение настроек аддонов. То есть, сохранять в User.cfg все статусы -- включен/выключен, показан/скрыт, пристёгнут/отстёгнут. И при старте игры, рассылать эти сохранённые статусы аддонам (это все те же UI_TOGGLE_..., и т.д.), чтобы какие-то аддоны выключить, какие-то скрыть, и т.д.
-
+100500 Setras, а ты какой аддон делаешь, намекни? Спрашиваю, чтобы не вышло, что мы одно и то же делаем Если ты делаешь то же, что и я, то я тогда займусь другим аддоном.
-
А лучше, две закладки внизу окна, как в стандартных окнах АО. P.S. Замочки должны быть все *разомкнуты*, по умолчанию. То есть, ни один аддон не "пристёгнут", на самом деле, пока пользователь не пристегнул какие-то из них вручную. Возможно, с этим связана и вот эта ошибка (мне настрочило её раз тридцать. То ли по числу установленных аддонов, то ли по числу нажатий на "замочек" GuildGui1b): Error: addon AddonManager: Error while running the chunk Error: addon AddonManager: [string "mods/addons/addonmanager/scripts/scriptaddonmanager.lua"] attempt to index field `?' (a nil value) Error: addon AddonManager: func: ?, ?, line: -1, defined: C, line: -1, [c] Error: addon AddonManager: func: ?, ?, line: 33, defined: Lua, line: 28, [string "mods/addons/addonmanager/scripts/scriptaddonmanager.lua"] А может, это потому, что я попробовал перезагрузить AddonManager твоим предыдущим менеджером аддонов С первого раза не вышло, пришлось дописать в конце Init() такой код: Code: if avatar.IsExist() then addon._R [ "EVENT_AVATAR_CREATED" ] () end Кстати, нужно обязательно добавить английскую локализацию. Например, так: Code: en = { [ "Addon Manager" ] = "Addon Manager", [ "Cancel" ] = "Cancel", [ "Comment" ] = "Comment", [ "Load All" ] = "Load All", [ "Load Selected" ] = "Load Selected", [ "Lock" ] = "Lock", [ "Memory Usage" ] = "Memory", [ "Name" ] = "Name", [ "Reset" ] = "Reset", [ "Save" ] = "Save", [ "Show Default" ] = "Show Built-In Addons", [ "Status" ] = "State", [ "Unload All" ] = "Unload All", [ "Unload Selected" ] = "Unload Selected" }, Только 4 кнопки в нижнем-левом углу нужно сделать длиннее, а то английский перевод чуть-чуть не влазит, а сокращать его как-то не получается. Кстати, в немецком переводе надписи будут тоже длинные, почти как в русском, наверное. И ОБЯЗАТЕЛЬНО сделать проверку на наличие локализации. Иначе, у немцев и французов будет ПУСТО на всех кнопках и колонках ) Вместо этого, пока нет немецкой и французсвой локализаций, немцам и французам нужно показывать *английскую* локализацию. P.S. Блин, НЕ МОГУ НАИГРАТЬСЯ! xD
-
There are: group.Invite( unitId ) group.InviteByName( name ) raid.Invite( unitId ) P.S. Afaik, Raid always consists of 1 to 4 parties, so shouldn't group.InviteByName() function work in Raid? UPD: Maybe I'm wrong. If Raid members log out (without leaving the Raid), and then one of them log in, then looks like Raid still exists (surprise), but NO Party exists.
-
ААААААААААААААА!!!!!!!!!!! Я чуть не описался, когда скриншот увидел!!!!!!! х)))))))))))))))))) На главную его, НА ГЛАВНУЮ !!!!!!!!одинодин =) Правильно, что переименовал в "AddonManager", он именно так и должен называться. И на главной, такой аддон ОЧЕНЬ нужен. Особенно сейчас, когда заграница получила АО 1.1.02, и у них уже работают функции FromWString(), ToWString() и SendEvent(). Время AddonManager пришло!! В течение какого часа напишу, какие были идеи. Но можно выкладывать и без них, всё можно будет доделать когда угодно.
-
Обновлено первое сообщение темы, и ZIP с примером аддона. Ну вот, наконец-то, в EU/US выходит АО 1.1.02, и этот способ создания многоязычного аддона СИЛЬНО УПРОЩАЕТСЯ =) Теперь этот метод выглядит именно так, как всё и было задумано изначально. @Nikon: Да, тоже хороший вариант, и теперь им тоже можно пользоваться, т.к. в EU/US появилась долгожданная функция userMods.ToWString()
-
Обновил функцию GetGameVersion(), убрав определение версий АО 1.1.00 и АО 1.1.01. Обновил первое сообщение этой темы, перечислил все функции, которыми теперь МОЖНО пользоваться Потому, что сегодня, gPotato выпускает АО 1.1.02. В этой версии, НАКОНЕЦ-ТО, начнут работать userMods.ToWString() и userMods.FromWString(). А также, сильно упрощается определение локализации клиента, и способ хранения нескольких локализаций в аддонах. Подробнее об этом - в теме HOW-TO: Многоязычный аддон / Multilangual addon.
-
Блин. Прочитал твой пост сутки назад, а до сих пор не могу избавиться от неприятного предчувствия, насчёт 1.1.05... Однако, интуиция меня иногда подводит, буду надеяться на лучшее
-
Эх, тема, конечно, интересная была, но уже не актуальна. Оба способа уже давно не работают: Второй способ, как Wait написал выше, был запилен практически сразу, ещё в дремучей АО 1.0.7.14. Первый способ предлагает выделять скрипт разработчиков в обычный пользовательский аддон. Это тоже не будет работать (кроме самых примитивных и неинтересных случаев), т.к. в пользовательских аддонах, "из соображений безопасности", отключены очень многие функции, которыми пользуются разработчики игры в своих скриптах. Такие, вот, пироги...
-
Она называлась: protectedMission.UnitGetAggroList( targetId ) Просканировал все API начиная с 1.0.07.21 до 1.1.04 - ничего похожего давно уже нет. Нашлось только событие EVENT_UNIT_AGGRO_LIST_CHANGED, которое исчезло в АО 1.1.02.
-
OK, спасибо за альтернативную инструкцию В самом деле, с инструкциями нужно что-то сделать, только руки не доходят. Quote: 11. Если она "потухшая" - "зажгите" ее шелчком по шестерням..(этот пункт приходится повторять после каждого патча.. админам лень как у людей сделать) Им не лень! Они, с**и, специально это сделали! В файле User.cfg есть блок "UserMods", котором СПЕЦИАЛЬНО указана текущая версия игры (прямо как в блоке про лицензию), и если при запуске игры, этот номер версии не совпадает с текущим, то кнопка включения аддонов выключаются... Это сделано НАМЕРЕННО. Не знаю зачем, видимо, они считают наши аддоны чем-то "лишним" или "плохим", поэтому, навязчиво предлагают пользователю отключить их.
