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

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

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

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

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

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

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

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

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

Подробнее

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

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

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

Zeno

Разработчик аддонов
  • Постов

    163
  • Зарегистрирован

  • Посещение

Весь контент Zeno

  1. Zeno

    TracksInfoZ

    Версия 3.4

    2 224 раза скачали

    Показывает временно отсутствующие отслеживаемые объекты (конкретно бафы на БГ). Списком известные или все во время сбора информации, а также отсутствующие известные на миникарте. Известные забиваются заранее через файл настроек или задаются сбором информации до выхода с карты. В известные заранее добавлены отслеживаемые объекты с БГ и Доминиона. Можно выбрать показывать ли список, названия в списке, на миникарте и собирать ли новую информацию отдельно с помощью меню по правому щелчку мыши на названии.
    Бесплатный
  2. Скорее всего, не секрет, но EVENT_UNIT_HEALTH_CHANGED лучше уже не использовать - его удалят. Если только цели, то, думаю, достаточно будет обрабатывать событие о смене цели EVENT_AVATAR_TARGET_CHANGED, при котором производить регистрацию и дерегистрацию обработчиков событий EVENT_OBJECT_HEALTH_CHANGED и EVENT_OBJECT_BUFFS_CHANGED с фильтрами по цели. Крайне желательно запоминать статус регистраций, т.к. его нельзя проверить. Если предполагать их статус и предположение окажется неверным, то будет вылетать некритическая ошибка (будет писать в лог, если у игрока он включен, а выполнение продолжится). А проводить дерегистрацию обязательно потому что есть предел в 500 регистраций обработчиков. Есть другой способ. По EVENT_SECOND_TIMER использовать object.GetHealthInfo(avatar.GetTarget()) и object.GetBuffs(avatar.GetTarget()). Раз в секунду сами спрашиваем здоровье и бафы цели.
  3. Как-то так должно работать, хотя мне почему-то кажется, что 40 размер шрифта великоват. function LogToChat(chatText) -- [138] Что ещё за цифровые комментарии? local wtChat = stateMainForm:GetChildUnchecked("ChatLog",false):GetChildUnchecked("Container",true) -- Это текстовый контейнер чата? if not wtChat or not wtChat.PushFrontValuedText then return end -- Видимо, не нашли чат или нашли не чат? if not common.IsWString(chatText) then chatText = userMods.ToWString(chatText) end -- [146] Опять они! local valuedText = common.CreateValuedText() -- Создаём новый объект с текстом и получаем на него ссылку local format = "<html fontname='AllodsFantasy' fontsize='40' shadow='1'><rs class='color'><r name='text'/></rs></html>" -- Это наша отформатированная строка с тегом для подстановки valuedText:SetFormat(userMods.ToWString(format)) -- Задаём нашу строку valuedText:SetClassVal("color", "LogColorRed") -- Подставляем класс valuedText:SetVal("text", chatText) -- Подставляем текст wtChat:PushFrontValuedText(valuedText) -- Пихаем наш объект с текстом в начало контейнера чата. Наверное, после этого оно должно появится в активной вкладке чата и будет там висеть, если снег не пойдёт end -- function [153] И снова! function GetCurrencyValue(currencyId) -- Возвращает кол-во валюты по CurrencyId local currencyValue = avatar.GetCurrencyValue(currencyId) -- Получаем кол-во и макс. кол-во валюты if currencyValue then return currencyValue.value end -- Возвращаем только количество, если нет ошибки end function GetCurrencyIdByName(currencyName) -- Возвращает ссылку на валюту (CurrencyId) по её имени local avatarCurrencies = avatar.GetCurrencies() or {} -- Получаем валюты for _, currencyId in pairs(avatarCurrencies) do -- Очередность перебора не имеет значения, индекс тоже local currencyInfo = currencyId:GetInfo() -- Получаем информацию о валюте под очередным индексом if currencyInfo and currencyInfo.name and userMods.FromWString(currencyInfo.name) == currencyName then return currencyId end -- Если ошибки нет и валюта имеет то же имя, что и искомая, то возвращаем ссылку на эту валюту (CurrencyId) end end function print_GG() -- Главная функция со странным названием local currencyName = "Соверен" -- Задаём имя нужной валюты local currencyId = GetCurrencyIdByName(currencyName) -- Получаем ссылку на нужную нам валюту по её имени if not currencyId then -- Если валюта не найдена, отправляем функции вывода в чат сообщение об этом и завершаем работу LogToChat(currencyName..": нет в наличии.") return end local currencyValue = GetCurrencyValue(currencyId) or 0 -- Получаем кол-во валюты по ссылке на валюту LogToChat(currencyName..": "..tostring(currencyValue)) -- Отправляем функции вывода в чат собранную строку с именем и кол-вом валюты end function Init() -- Инициализация if not avatar.IsExist() then -- Если нет аватара, будем запускать снова при появлении аватара, а пока всё common.RegisterEventHandler(Init,"EVENT_AVATAR_CREATED") return end print_GG() -- Вызываем главную функцию со странным названием end Init() -- Запускаем Если вкратце по ошибкам, то: - Очень много ненужного и неиспользуемого (почти половина строк). - Есть подозрение, что функция вывода в чат откуда-то выдрана, уже больно в ней много лишнего для текущей задачи, но наверное, рабочая. - Главная функция ничего не делает. То есть не ищет соверены и не получает их значение и не вызывает для этого другие функции. - local str = ("Соверен: ", currentValue) - это попытка присвоить одной переменной два значения, причём второе значение - это переменная, которая нигде не объявлена (а точнее объявлена локальной в другой функции, которая нигде не вызывается). Результатом подобного будет присвоение переменной исключительно первого значения. - Главная функция пытается передать две локальных переменных аргументами функции вывода в чат (LogToChat( str, str2)), которая принимает только один аргумент (function LogToChat(param1)). Результатом подобного будет передача лишь первого аргумента. - Процесс выполнения до передачи в чат был такой: Init() -> print_GG() -> local str = "Соверен: " -> LogToChat(str) ... Конечно же, в чате всегда "Соверен: ", ведь никаких других вариантов и быть не может.
  4. Попробуйте переводить число соверенов в строку примерно так: tostring(avatar.GetCurrencyValue(soverenId).value)
  5. Zeno

    PartyMapZ

    Технически возможно. Посмотрю, как будет время. Но мне кажется, будет хуже, потому что разноцветные точки будут перекрывать друг друга, если находятся в одном месте, как они перекрывают друг друга без всяких дополнений.
  6. Если переменная пустая после перебора валют, то такой валюты найдено не было. По-моему, тут возможно 4 варианта - стоит нерусская локаль, стоит нерусский клиент, стоит не windows-1251 кодировка скрипта, у персонажа нет такой валюты вообще. 1. Время и язык > Язык и регион > Административные языковые параметры > Изменить язык системы... В выпадающем списке выбрать "Русский (Россия), галку "Бета версия" убрать. Подтверждить изменения. 2. Вместо "Соверен" в скрипте искать соответствующую языку запись. 3. Скрипт дополнения должен быть в кодировке windows-1251, а не UTF-8, который обычно ставят все программы по умолчанию. Большинство программ позволяет сконвертировать кодировку в любую сторону, способ зависит от программы. В Блокноте, например, Файл > Сохранить как... В выпадающем списке выбрать ANSI. Подтвердить сохранение. 4. В игре открыть информацию о персонаже, вкладку Ценности, категорию Награды, перематывать в поисках Соверен. Если такой нет, получить Соверен на Ал-Риате или взять персонажа с такой валютой.
  7. local soverenId local avatarCurrencies = avatar.GetCurrencies() for _, currencyId in pairs(avatarCurrencies) do local currencyInfo = currencyId:GetInfo() if currencyInfo and userMods.FromWString(currencyInfo.name) == "Соверен" then soverenId = currencyId break end end soverenId в результате будет ссылкой на CurrencyID соверенов или будет пустым.
  8. По-моему это предлагается искать самостоятельно с помощью имеющегося инструментария. Должно быть где-то в валютах аватара по идее. local avatarCurrencies = avatar.GetCurrencies() for _, currencyId in pairs(avatarCurrencies) do local currencyInfo = currencyId:GetInfo() if currencyInfo then common.LogInfo("common", currencyInfo.name, "[", tostring(currencyInfo.sysName), "]: ", tostring(avatar.GetCurrencyValue(currencyId).value),"/",tostring(currencyInfo.maxValue)) end end Показывает, что соверены в этом есть, просто у них нет sysName, поэтому их нельзя найти с помощью avatar.GetCurrencyId(sysName). Так что каждый раз получаем таблицу, а её перебираем до соответствия по имени, не забывая переводить WString в string для сравнения. Найденную ссылку на CurrecnyId скорее всего можно просто запомнить один раз, вряд ли она изменяется в процессе сессии.
  9. ###Cartographer###O7.1##Exclamation01##E47EEC#B7FC64#FFFFF0B7##1889#14F5##Suslanger##Suslanger::##Уро-Борос##Место%_появления%_Уро-Бороса##Суслангер##Суслангер##Пески%_джиннов### ###Cartographer###O7.1##Exclamation01##E99EA4#B42850#FFFF8D84##1BF0#1858##Suslanger##Suslanger::##Уро-Борос##Место%_появления%_Уро-Бороса##Суслангер##Суслангер##Пески%_ифритов### ###Cartographer###O7.1##Exclamation01##EEB8E4#B30AC4#FFFEF8D7##1F53#1955##Suslanger##Suslanger::##Уро-Борос##Место%_появления%_Уро-Бороса##Суслангер##Суслангер##Пески%_ифритов### ###Cartographer###O7.1##Exclamation01##EC83A8#B08254#FFFF1D4B##1DDC#1B92##Suslanger##Suslanger::##Уро-Борос##Место%_появления%_Уро-Бороса##Суслангер##Суслангер##Пески%_ифритов### ###Cartographer###O7.1##Exclamation01##E27188#AB6E54#FFFF7E76##172D#2010##Suslanger##Suslanger::##Уро-Борос##Место%_появления%_Уро-Бороса##Суслангер##Суслангер##Пески%_ифритов### ###Cartographer###O7.1##Exclamation01##E1E6DC#B128BC#FFFFFAEF##16D1#1AFF##Suslanger##Suslanger::##Уро-Борос##Место%_появления%_Уро-Бороса##Суслангер##Суслангер##Пески%_джиннов### ###Cartographer###O7.1##Exclamation01##E3B8E0#B3EA34#1AC5##1806#188F##Suslanger##Suslanger::##Уро-Борос##Место%_появления%_Уро-Бороса##Суслангер##Суслангер##Пески%_джиннов### ###Cartographer###O7.1##Exclamation01##E12D50#B5D1B4#D96##1655#16E0##Suslanger##Suslanger::##Уро-Борос##Место%_появления%_Уро-Бороса##Суслангер##Суслангер##Пески%_джиннов### ###Cartographer###O7.1##Exclamation01##EBD890#AAFB7C#FFFF95BE##1D6A#2075##Suslanger##Suslanger::##Уро-Борос##Место%_появления%_Уро-Бороса##Суслангер##Суслангер##Пески%_ифритов### ###Cartographer###O7.1##Exclamation01##E65E9C#AAAC94#FFFF53D0##19C8#20BB##Suslanger##Suslanger::##Уро-Борос##Место%_появления%_Уро-Бороса##Суслангер##Суслангер##Пески%_ифритов### ###Cartographer###O7.1##Exclamation01##E8D12C#B09320#FFFF5882##1B68#1B83##Suslanger##Suslanger::##Уро-Борос##Место%_появления%_Уро-Бороса##Суслангер##Суслангер##Пески%_ифритов### ###Cartographer###O7.1##Exclamation01##EA2888#ACED88#FFFF3D8D##1C4B#1EBD##Suslanger##Suslanger::##Уро-Борос##Место%_появления%_Уро-Бороса##Суслангер##Суслангер##Пески%_ифритов### Все места появления Уро-Бороса. Координаты точно в местах остановки во время погони (там же где и появляется).
  10. Zeno

    PartyMapZ

    PartyMapZ Просмотр файла Показывает иконки классов аватара/группы/рейда на карте и миникарте. Зеленым - аватар, синим - группа, оранжевым - другие группы рейда. Можно выбрать точки или маркеры, а также показывать ли на карте/миникарте аватар/группу/рейд отдельно с помощью меню в игре или через файл настроек, сделав его приоритетным. Shows avatar/group/raid class icons on the map and minimap. Green - avatar, blue - group, orange - other raid groups. You can select dots or markers, as well as whether to show the avatar/group/raid on the map/minimap separately using the menu in the game or through the settings file after prioritizing it. Добавил Zeno Добавлено 18.10.2022 Категория Аддоны  
  11. Zeno

    PartyMapZ

    Версия 4.2

    4 268 раз скачали

    Показывает иконки классов аватара/группы/рейда на карте и миникарте. Зеленым - аватар, синим - группа, оранжевым - другие группы рейда. Можно выбрать точки или маркеры, а также показывать ли на карте/миникарте аватар/группу/рейд отдельно с помощью меню в игре или через файл настроек, сделав его приоритетным. Shows avatar/group/raid class icons on the map and minimap. Green - avatar, blue - group, orange - other raid groups. You can select dots or markers, as well as whether to show the avatar/group/raid on the map/minimap separately using the menu in the game or through the settings file after prioritizing it.
    Бесплатный
  12. Да. Ещё иногда полезны категории, которые группируют функции и события одного типа.
  13. Почти. Вот это всё: https://alloder.pro/docs/_/modding Локально доступно Папка игры\data\Mods\Docs\ModdingDocuments.zip
  14. Есть документация по Lua и документация по API Аллодов. К Lua есть куча справочников, где в отличии от документации, понятно написано и есть примеры. OnSlash - скорее всего функция обработчик события. Event, Reaction описаны в документации API. wtChat - скорее всего переменная содержащая ссылку на виджет. Widget описаны в документации API. valuedText - типа данных, описан в документации API.
  15. Тогда вот это должно быть неверно. Частая ошибка использование пути "Папка игры\Mods" вместо правильного. Правильный путь к папкам дополнений и файлам типа pak "Папка игры\data\Mods\Addons" Правильный путь к описателю каждого дополнения "Папка игры\data\Mods\Addons\Папка дополнения\AddonDesc.(UIAddon).xdb"
  16. А в игре включены, надпись зелёная? Галочки на нужных дополнениях стоят?
  17. Так парой сообщений выше они все есть по идее. Из этих списков я на данный момент уточнил координаты и подтвердил все, кроме одного. Толи не попадается, толи там не бывает (но вроде бывает). Будут все, скину целиком. https://alloder.pro/forums/topic/1444-cartographer/?do=findComment&comment=54864 https://alloder.pro/forums/topic/1444-cartographer/?do=findComment&comment=54866
  18. Zeno

    RaidBuffsZ

    https://alloder.pro/forums/topic/5953-raidbuffsz/?do=findComment&comment=54667
  19. [21:55:00]Error: addon ShipControl(1644947130): Game::LuaAstralGetHubRadius: astral hub zone not found, details: int __cdecl Game::LuaAstralGetHubRadius(struct lua_State *) func: GetHubRadius, field, line: -1, defined: C, line: -1, [C] func: EVENT_ASTRAL_HUB_CHANGED, field, line: 811, defined: Lua, line: 800, [string "Mods/Addons/ShipControlSA/Scripts/ShortMap.lua"] func: ShortMap_ShowAll, global, line: 1148, defined: Lua, line: 1132, [string "Mods/Addons/ShipControlSA/Scripts/ShortMap.lua"] func: AvatarShip, upvalue, line: 848, defined: Lua, line: 805, [string "Mods/Addons/ShipControlSA/Scripts/Main.lua"] func: ?, ?, line: 868, defined: Lua, line: 866, [string "Mods/Addons/ShipControlSA/Scripts/Main.lua"] Версия 76. Возможная причина - залёт в хаб лютого или в пустой хаб внутри.
  20. Zeno

    RaidBuffsZ

    Это сделано специально. Я занёс все, а некоторые закомментировал, чтобы их не было видно по умолчанию, но при необходимости их не надо было бы искать и вписывать. Если они вам нужны, то, конечно, убирайте символы комментирования.
  21. ###Cartographer###O7.1##Tick03##E9AF7A#B41B16#FFFF8D7E##1BFB#1864##Suslanger##Suslanger::##Червяк##Червяк##Суслангер##Суслангер##Пески%_ифритов### ###Cartographer###O7.1##Tick03##E1C98A#B0FF19#FFFFF509##16BD#1B24##Suslanger##Suslanger::##Червяк##Червяк##Суслангер##Суслангер##Пески%_джиннов### К меткам выше. Ещё 2. Примерные координаты.
×
×
  • Создать...

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

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