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

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

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

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

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

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

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

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

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

Подробнее

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

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

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

hal.dll

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

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

  • Посещение

Весь контент hal.dll

  1. В принципе, если там всё так плохо запутано можно сделать еще проще. Поскольку для инспекта самого аватара не надо запускать цикл инспекции, то можно запилить функцию прямого сбора статистики шмота аватара без плясок с очередями, эвентами, callback-ами и запросами в ведущую либу. Только, вероятно, это будет отдельной функцией в обход GS.RequestInfo. Я так не стал делать в GS.RequestInfo по умолчанию, потому что при нескольких аддонах сбор статистики тогда будет многократным, себя в цель люди будут выделять с задержками, что может очень не понравиться многим хилам.
  2. Еще раз повторю, что уже говорил. (Только не сочти за резкий тон, я по-доброму ) Даже если ты запустишь сначала инспекцию цели, а потом аватара, нет никаких гарантий, что сообщения придут в той же очередности. Даже если я выпилю эту часть полностью из либы, тот же LibreGS при перезапуске всех аддонов может загрузиться раньше и запустить инспект цели раньше твоего аддона. Далее твой аддон запускает инспект аватара и инспект цели по очереди. Ведущая LibGS получает запрос на инспект таргета от LibreGS, запрос на инспект аватара от NewTarget3DPvP, запрос на инспект таргета от NewTarget3DPvP. 1-ый и 3-ий запросы объединяются, выполняются и результат отсылается одним сообщением LIBGS_GEARSCORE_AVAILABLE всем аддонам. Результат на 2-ой запрос (на аватара) отправляется вдогонку. Если у тебя полная каша получается из-за этого, то скинь кусок кода в личку, вместе подумаем, как этого избежать. Я с удовольствием тебе помогу.
  3. Вообще идея автоматического инспектирования была такова, что аддонам, инспектирующим текущую цель (LibreGS, TPI), вообще не надо было вызывать GS.RequestInfo. С этой точки зрения этого куска как раз не хватало, чтобы цель инспектировалась при перезагрузке аддона. Я бы не писал такой код, который требует определенной очередности. Если я правильно понял, тебе это нужно для сравнения экипировки аватара и цели. Чтобы не иметь жесткой привязки к очередности инспектирования, я бы сделал так: local AvatarStats local TargetStats function ShowGearScore( params ) if params.unitId == avatar.GetId() then AvatarStats = params elseif params.unitId == avatar.GetTarget() then TargetStats = params end if TargetStats then -- Show target info end if TargetStats and AvatarStats then -- Calculate difference -- Show difference coefficients end end Кроме того, LIBGS_GEARSCORE_AVAILABLE может приходить в твой аддон даже если ты не запрашивал инспектирование (сообщения нынче глобальные), поэтому всегда есть шанс конкуренции с другими аддонами при жесткой привязке к очередности. Поэтому жесткую привязку - в топку (не, ну правда, нехорошо так делать ). Если ты беспокоишься, что аватар или цель могут быть проинспектированы дважды, то либа дублирующие запросы более-менее распознает и удаляет (если отправлен до прихода LIBGS_GEARSCORE_AVAILABLE). В любом случае, добавил параметр SkipInitialTargetInspection, можешь попробовать его.
  4. Вот это уже мой косяк. Поправил в LibGS-2014-11-24 Что нового в этой версии 2014-11-24Исправлено получение ступеней рун на клиенте 4.0 Исправлены ошибки, возникающие при отсутствии экипировки у инспектируемого игрока Поля fairyScoreDamage и fairyScoreHeal приведены в соответствие описанию (показывают процент, на который увеличивается урон/лечение) В таблицу результата добавлено поле inspected, показывающее, есть ли у аватара необходимое умение для инспектирования цели, и присутствуют ли поля gearscore* и equipment* в таблице. В функцию GS.EnableTargetInspection добавлен параметр SkipInitial. Подробности в описании. В функцию GS.Init добавлен параметр SkipInitialTargetInspection, аналогичный параметру SkipInitial функции GS.EnableTargetInspection.
  5. Сформулируй, пожалуйста, проблему поконкретнее что ожидается в конкретном случае, что получаешь в аддон?
  6. Поправил пару вещей под 6.0. Работает только после начальной загрузки, почему-то не работает после перезагрузки аддона из меню дополнений. Качайте: RealAgroM_r23.pak В итоге начал переписывать аддон полностью. Нужна актуальная информация по текущим агро-умениям всех классов. (умения, таланты, бафы, повышающие или понижающие агро). Кто заинтересован в актуализации Агрометра, прошу принять участие Чем больше будет заинтересованных, тем быстрее я его доделаю. RealAgroM_r23.pak
  7. Залил новую версию: 2014-11-21 Добавлен подсчет гирскора для версии клиента 4.0 Переделана формула раскраски гирскора (только 5.0 и 6.0): Раскраска гирскора отображает актуальность экипировки в зависимости от текущего уровня персонажа. В функцию GS.Init добавлен параметр Enable, аналогичный параметру функции GS.EnableTargetInspection. Добавлены поля equipmentLevel, equipmentQuality, equipmentStyle - содержат значения по старой формуле (средний цвет экипировки) Теперь инспектированием занимается только одна библиотека из всех присутствующих и загруженных Исправлены многочисленные сообщения LIBGS_GEARSCORE_AVAILABLE при инспектировании собственного аватара Убраны лишние циклы инспектирования одного и того же персонажа Меньше фризов при большой нагрузке (4 и более аддона на инспект цели) Работает всё достаточно быстро и надежно, и на 6.0, и на 5.0.2 евро, и на 4.0. Вроде всё протестировал, что надо было. Единственное, я не стал делать, чтобы LibGS прерывала текущую инспекцию. Решил руководствоваться принципом, что если пользователь хочет осмотреть кого-то визуально (через окно инспектирования), то не стоит ему в этом мешать. LibGS просто ждет, пока окно не закроют.
  8. При тестировании либы на 4.0 обнаружилась неприятная фигня: очередь сообщений с приоритетом для системных аддонов. 4 аддона на инспект таргета не успевают согласоваться между собой, и каждый вызывает инспектирование по 1-му разу. В итоге взятие в цель происходит со значительной задержкой. Но есть и хорошие новости: сегодня буду тестировать новую систему согласования между LibGS в разных аддонах. Частично уже было протестировано, оставалось доделать пару мелочей. Очень надеюсь, что многие проблемы после этого уйдут. Потерпите немножко с переходом Там нелинейная зависимость. Посчитав ГС отдельных шмоток (по формуле 5.0) выходит, что синь/фиол лвла Х эквиваленты зелени/сини лвла Х+2. С рыжиком же ближе к 1-к-1, но не точно (рыжик чуть хуже фиола на лвл больше). Пока сделал коэффициент 0.5 (скорость понижения качества на 1 пункт - 2лвла). В итоге на моём твинке 20-го лвла с зеленым шмотом 17го: ГС - белый (Goods). Тень (ги кв) не убивает. Вроде всё достаточно адекватно теперь.
  9. Должен. Аддон работает на 6.0, но есть одна загвоздка. Разработчики АО, видимо, поддались на нытьё идиотов игроков, не способных настроить аддон под свою руку, и переделали принцип работы команды атаки пета. В итоге теперь вместо того, чтобы переключиться на новую цель без прерывания подготовки умения (как было в 5.0), питомец продолжает атаку текущего моба и только после того, как выпустит в него заготовленное, переключается на новую цель. В целом не вижу необходимости обновления на самом деле.
  10. Мне, честно говоря, проще сразу сделать одну. Всё равно прогонять её через скрипт проверки совместимости. Почти. На 10 шмоток салат + 8 шмоток зелень будет выводить салат, но по-хорошему качество будет значительно ниже, чем у фул-салата. Просто вместо этого: Qs = Qs + equipmentQuality[quality.quality] нужно сделать следующее: Qs = Qs + equipmentQuality[quality.quality] - K*(unit.GetLevel(unitId)-info.level) Ну или в конце сделать так: result.gearscoreStyle = QualityStyle[ math.floor(result.gearscoreQuality - K*(unit.GetLevel(unitId)-result.gearscoreLevel) + 0.33) ] (только надо будет проверочку индекса замутить) Чем выше уровень персонажа по отношении к шмотке, тем сильнее будет обесцениваться её качество. Осталось только найти корректирующий коэффициент K, посмотрев, как быстро растут статы на шмотках по мере увеличения их лвла.
  11. Через Play*Effect? В будущем будет некоторая задержка перед стартом инспектирования, чтобы системный аддон успел отреагировать на смену таргета. Раскрашивает по среднему качеству шмота. Задумывалось, что, как пример, 9 шмоток рыж + 9 шмоток синь эквивалентно по качеству фиольной экипировке. При данном подходе преобладающий цвет экипировки будет тянуть среднее значение на себя, но совсем плохая шмотка или очень крутая шмотка призваны ухудшать или улучшать общую картину. Единственное - не учитывается соответствие уровню персонажа, поэтому салат 55-го на игроке 65-го отображается салатом. Я очень хочу поправить это (в перспективе), выведя формулу с учетом лвла персонажа, но алгоритм пока не придумал. Готов выслушать предложения. В целом я планировал одну либу под все клиенты, планировалось выгружать ненужные функции из памяти. Или лучше сделать несколько разных версий? Или как вариант: одну - общую для всех версий, плюс отдельные под определенные клиенты.
  12. Меня больше всего беспокоил вопрос конфликтов LibGS с твоим аддоном Было ощущение, что он почему-то возобновлял инспектирование по одному ему ведомым причинам. Результат: само-открывающееся окно осмотра экипировки.
  13. Я в общем-то тоже адаптирую библиотеку сейчас под 4.0.2. Могу сделать промежуточный релиз, как протестирую ее работу на пиратке. Спасибо, с этой целью и создавалась В данном случае сильно торопиться не стоит. Функции инспектирования в игровом клиенте - это крайне капризная вещь, которая грозит обернуться задержками выделения игроков в таргет. В данном случае нам лучше параллельно сделать тестовые версии своих аддонов с поддержкой новой библиотеки, протестировать их в комплексе, и уже потом всё релизить скопом.
  14. Я кстати тоже похоже ослеп Тоже не увидел ничего, что могло бы закрыть окошко. Что там с исходниками кстати? Автор сам доделает аддон или как?
  15. Кстати, библиотека будет работать эффективно только когда все аддоны используют её. Если будут аддоны, которые запускают инспект цели в дополнение к тем, что используют LibGS, то, естественно, на это будет уходить дополнительное время. Версия с назначением ведущего будет, думаю, уже скоро. К концу следующей неделе должна быть готова. Удалось придумать достаточно устойчивую концепцию назначения ведущей LibGS, устойчивую в том числе к внезапной выгрузке/загрузке аддонов с интегрированной LibGS. API меняться не будет, за исключением GS.Init: добавлю параметр, который будет передаваться в GS.EnableTargetInspection. nil - действие по умолчанию, которое и сейчас, и далее включает автоматическое инспектирование.
  16. Что-то многовато. Какие аддоны стоят? В режиме одного аддона какая задержка? Не стал я дожидаться декабря, пилю потихоньку версию с назначением ведущего. ну, это вообще-то диктуется правилами языка, но добавил в шапку.
  17. В целом, да, но это результат того, что LIBGS_GEARSCORE_AVAILABLE посылается позже вызова EndInspect.
  18. Последнюю версию тестировал только в режиме одного аддона, увы. А так у меня 18 тестовых аддонов с различными стратегиями. пардон, пропустил я правда похож на такого человека? ничего не напутал, так задумано. наоборот, вторая пара вызовов в случае с инспектированием самого себя является на данный момент багом. Потестирую, но скорей всего это приведет к тому, что будет моргать стандартным окошком инспектирования. уже в планах стоит. но займусь этим уже ближе к декабрю скорей всего. PS. Обновил либу. Просьба всем, кто использует - обновиться. Потестил на 9 аддонах, ошибок не обнаружил.
  19. Она возникает бессистемно или только на определенных виджетах? Как правило эта ошибка говорит о том, что у виджета нету слоя заднего фона. Надо проверить соответствующий *.xdb на предмет наличия тега: <BackLayer href="TransparentLayer.(WidgetLayerSimpleTexture).xdb#xpointer(/WidgetLayerSimpleTexture)" /> Если пустой, значит надо задать его. Пример файла прозрачного слоя TransparentLayer.(WidgetLayerSimpleTexture).xdb: <?xml version="1.0" encoding="UTF-8" ?> <WidgetLayerSimpleTexture> <Color>0x00000000</Color> <Grayed>false</Grayed> <BlendEffect>BLEND_EFFECT_ALPHABLND</BlendEffect> <flatPlacement>false</flatPlacement> <lazyLoad>false</lazyLoad> <textureItem href="" /> <Scaling>true</Scaling> </WidgetLayerSimpleTexture> SetBackgroundColor залёт его нужным цветов и он станет непрозрачным. Вероятность этого крайне низка. Аналогично. К тому же аддоны не реентерабельны, т.е. не может такого быть, чтобы две функции одного аддона выполнялись параллельно. Вытеснение (preemption) тоже отсутствует Посему всякие блокировки, семафоры, мутексы, критические секции и прочую синхронизацию - (в данном случае) в помойку.
  20. hal.dll

    LibGS

    Версия 2017-07-07

    17 211 раз скачали

    (Для разработчиков аддонов) LibGS (LibGearScore) - библиотека инспектирования персонажей игроков. Рекомендуется использовать в аддонах, которые показывают гирскор, руны, и прочие характеристики экипировки персонажей игроков. Библиотека берет на себя всё общение с API игрового клиента (avatar.StartInspect, avatar.EndInspect, EVENT_INSPECT_STARTED, EVENT_INSPECT_FINISHED), скрывая от аддона особенности их работы, самостоятельно решая возможные конфликты между аддонами, и выдает в аддон результат инспектирования в удобном виде. Прошу разработчиков принять участие в тестировании Если кто-то увидит или наткнется на какой-либо баг, огромная просьба писать сюда. Если есть предложения по работе аддона, фичам и содержанию таблицы, то тоже пишите сюда. Библиотека позаимствовала многие идеи из аддона TPI и немного из LibreGS, так что их авторам look_at_you_ и vitaliy75 огромное спасибо за вклад. По умолчанию библиотека автоматически считает гирскор текущей цели и присылает в аддон через эвент или callback-функцию. Во избежании самопроизвольно открывающегося окна инспектирования рекомендуется пользоваться данной библиотекой (в особенности это касается аддона NewTarget3DPvP, с которым наблюдаются кофликты). Поддерживает функцию unit.GetGearScore, добавленную в хотфиксе 6.0.00.36. На данный момент отсутствует подсчет гирскора для версий Аллодов 1.1-4.x. Если кто может, пожалуйста, поделитесь формулой или исходником. Как пользоваться: Опускаю подробности о добавлении скрипта в AddonDesc.(UIAddon).xdb... Существует несколько вариантов использования библиотеки: Если ваш аддон только для инспектировния текущей цели аватара, то необходимо выполнить следующие действия: I. Инициализировать библиотеку любым из следующих способов: Вызвать функцию GS.Init: if GS.Init then GS.Init() end Вызвать функцию GS.EnableTargetInspection: GS.EnableTargetInspection( true ) Платным аддонам рекомендуется это делать после прохождения проверки системы привязки к нику персонажа. II. Обеспечить прием данных любым из следующих способов: Подписаться на сообщение LIBGS_GEARSCORE_AVAILABLE common.RegisterEventHandler( ShowGearScore, "LIBGS_GEARSCORE_AVAILABLE" ) Установить функцию обратного вызова GS.Callback = ShowGearScore ShowGearScore - функция вашего аддона, которая будет отображать гирскор в нужное окно. Имя функции может быть любое. В этой функции необходимо проверять, что сообщение пришло для вашего юнита. ShowGearScore должна быть уже объявлена на момент попытки её использования. Например: function ShowGearScore( params ) if params.unitId == avatar.GetTarget() then if params.gearscore then MyWidget:SetClassVal("style", params.gearscoreStyle) MyWidget:SetVal("gs", tostring(params.gearscore)) MyWidget:Show(true) else MyWidget:SetClassVal("style", "tip_white") MyWidget:SetVal("gs", "N/A") MyWidget:Show(true) end end end Аддону следует позаботиться о том, чтобы скрывать интерфейс в случае переключения таргета на НПС или сброса таргета, т.к. LibGS не присылает в этих случаях никаких сообщений. function onTargetChaged(params) local unitId = avatar.GetTarget() if not unitId or not object.IsUnit( unitId ) or not unit.IsPlayer( unitId ) or unit.IsPet( unitId ) then MyWidget:Show(false) end end Если ваш аддон для инспектировния любых юнитов (без выделения юнита в таргет), то для получения гирскора вышеуказанным способом необходимо вызвать функцию GS.RequestInfo: GS.RequestInfo ( unitIdToInspect ) И в ShowGearScore, соответственно, сделать: if params.unitId == unitIdToInspect then ... В данном случае инициализировать библиотеку не обязательно, но желательно, несмотря на то, что она может инициализировать себя сама. На данный момент существует проблема особенность: если пользователь открыл встренное в клиент окно инспектирования, то инспектирование любого юнита не будет произведено, пока окно не будет закрыто. Стоит подождать следующих версий, в которых эта проблема будет решена. Если ваш аддон не предназначен для инспектировния текущей цели аватара, то рекомендуется отключить функцию автоматического инспектирования: GS.EnableTargetInspection( false ) Описание функций: GS.Init ( EnableTargetAutoInspection, SkipInitialTargetInspection ) Инициализирует библиотеку. Параметры функции аналогичны параметрам функции GS.EnableTargetInspection. GS.EnableTargetInspection ( Enable, SkipInitial ) Включает/отключает автоматическое инспектирование при смене цели аватара. Параметры: 1. Enable: boolean true/nil - Включить авто-испектирование false - Выключить авто-испектирование 2. SkipInitial: boolean Имеет смысл только при Enable=true/nil. По умолчанию, при перезагрузке аддона через меню дополнений LibGS автоматически проинспектирует текущую цель аватара. SkipInitial позволяет пропустить инспектирование, например, если библиотека инциализируется не с начала работы аддона. true - Пропустить инспектирование false/nil - Инспектировать текущую цель Следует помнить, что при перезагрузке всех аддонов, другие аддоны могут запрашивать инспектирование цели при инициализации, что приведет к приходу соообщения LIBGS_GEARSCORE_AVAILABLE раньше, чем может ожидаться. Функция аддона, получающая результат инспектирования (ShowGearScore) должна учитывать это. GS.RequestInfo ( unitId ) Запрашивает инспектирование юнита Параметры: unitId: ObjectId Id юнита, которого надо происпектировать. LIBGS_GEARSCORE_AVAILABLE ( params ) Глобальное сообщение с результатами инспектирования, посылаемое из ведущей LibGS после завершения инспектирования. Следует помнить, что если аддон подписывается на сообщение LIBGS_GEARSCORE_AVAILABLE, то сообщение может приходить даже если аддон не запрашивал инспектирование какого-либо юнита. Также следует помнить, что при перезагрузке всех аддонов, другие аддоны могут запрашивать инспектирование цели при инициализации, что приведет к приходу дополнительных сообщений LIBGS_GEARSCORE_AVAILABLE. Функция аддона, получающая результат инспектирования (ShowGearScore) должна учитывать это. GS.Callback ( params ) Функция аддона, которая будет вызвана из локального экземпляра LibGS при получении сообщения LIBGS_GEARSCORE_AVAILABLE. Аддон устанавливает это поле при необходимости, если не желает получать результат инспектирования через сообщение LIBGS_GEARSCORE_AVAILABLE. В качестве параметра в обработчик LIBGS_GEARSCORE_AVAILABLE (и в GS.Callback, если задана) передается таблица со следующими полями: unitId - ObjectId - Id юнита для которого подсчитан гирскор rank - number - ранг умения аватара Пристальный взгляд (0..6) inspected - boolean - можно ли происпектировать юнит частично или полностью (ранг достаточно высок) (false, true) reliable - boolean - полностью ли происпектирован юнит (ранг достаточно высок) (false, true) Поля gearscore* могут отсутствовать, если у аватара недостаточный ранг умения (inspected==false). gearscore - number - гирскор юнита gearscoreLevel - number - средний уровень экипировки юнита, кроме драконьего облика (1..66) gearscoreQuality - number - "актуальность" экипировки юнита - среднее качество, скорректированное с учетом разницы уровня игрока и экипировки, кроме драконьего облика (1..8 соответствует значениям между ITEM_QUALITY_JUNK..ITEM_QUALITY_RELIC) gearscoreStyle - string - рекомендуемый стиль для отображения значения гирскора ('Junk'..'Relic') Поля equipment* могут отсутствовать, если у аватара недостаточный ранг умения (inspected==false). equipmentLevel - number - средний уровень экипировки юнита, кроме драконьего облика (1..66) equipmentQuality - number - среднее качество экипировки юнита, кроме драконьего облика (1..8 соответствует значениям между ITEM_QUALITY_JUNK..ITEM_QUALITY_RELIC) equipmentStyle - string - рекомендуемый стиль для отображения среднего качества экипировки ('Junk'..'Relic') Поля runes* могут отсутствовать, если у аватара недостаточный ранг умения (inspected==false), или находимся на Pay-To-Play сервере. runes - таблица, индексированная по [DRESS_SLOT_*RUNE*], элемент - таблица с полями: runeScore - number - бонус к урону или лечению, даруемый данной руной в данный момент, в зависимости от того, куда она вставлена (0..?? runeQuality - number - ступень руны (0..13) runeStyle - string - рекомендуемый стиль для отображения ступени ('Junk', 'Common'..'Legendary') runesQuality - number - средняя ступень всех рун (0..13) runesQualityOffensive - number - средняя ступень всех рун в атакующих слотах (0..13) runesQualityDefensive - number - средняя ступень всех рун в защитных слотах (0..13) runesScoreOffensive - number - общий бонус всех рун в атакующих слотах (0..?? runesScoreDefensive - number - общий бонус всех рун в защитных слотах (0..?? runesStyle - string - рекомендуемый стиль для отображения runesQuality ('Junk', 'Common'..'Legendary') runesStyleOffensive - string - рекомендуемый стиль для отображения runesQualityOffensive ('Junk', 'Common'..'Legendary') runesStyleDefensive - string - рекомендуемый стиль для отображения runesQualityDefensive ('Junk', 'Common'..'Legendary') Некоторые поля fairy* могут отсутствовать в зависимости от версии игрового клиента. fairy - string - ступень покровителя для отображения ('-', 'I'..'V') fairyLevel - number - уровень покровителя (1..65) fairyQuality - number - ступень покровителя (0..5) fairyScore - number - [AO 3-4] бонус характиристики, даруемый покровителем (0..???) fairyScoreStat - number - [AO 3-4] тип характиристики (INNATE_STAT_*) fairyScorePower - number - [AO 5-6] бонус могущества (0..???) fairyScoreDamage - number - бонус к урону (0..250%) fairyScoreHeal - number - бонус к лечению (0..250%) fairyStyle - string - рекомендуемый стиль для отображения ступени покровителя ('Junk', 'Goods'..'Epic') Поля *Style можно напрямую передавать в функцию MyTextView:SetClassVal(). Пример аддона LibreGS, переделанного под использование LibGS. Можно также обратить внимание на onTargetChaged, скрывающий интерфейс аддона: -------------------------------------------------------------------------------- -- GLOBALS -------------------------------------------------------------------------------- local ouText=nil local vtHello=nil -------------------------------------------------------------------------------- -- EVENT HANDLERS -------------------------------------------------------------------------------- function onSize(params) local pco=widgetsSystem:GetPosConverterParams() local plc=mainForm:GetPlacementPlain() plc.alignY=WIDGET_ALIGN_LOW plc.highPosY=0 plc.posY=0 plc.sizeY=157 plc.alignX=WIDGET_ALIGN_LOW plc.posX=380 plc.sizeX=400 mainForm:SetPlacementPlain(plc) end function onTargetChaged(params) local tid=avatar.GetTarget() if not tid or not unit.IsPlayer(tid) then mainForm:Show(false) end end function ShowGearScore(params) if params.unitId == avatar.GetTarget() then ouText:SetVal("ttt",userMods.ToWString(tostring(math.floor(params.gearscore+0.5)))) mainForm:Show(true) end end -------------------------------------------------------------------------------- -- INITIALIZATION -------------------------------------------------------------------------------- function Init() if GS.Init then GS.Init() end onSize(nil) mainForm:SetPriority(7000) mainForm:SetTransparentInput(true) mainForm:Show(true) ouText=mainForm:GetChildChecked("ouText",false) vtHello=common.CreateValuedText() vtHello:SetFormat(userMods.ToWString([[<html><log fontsize="20"><r name="ttt"/></log></html>]])) ouText:SetValuedText(vtHello) ouText:Show(true) local plc=ouText:GetPlacementPlain() plc.posX=0 plc.posY=0 ouText:SetPlacementPlain(plc) ouText:SetBackgroundColor( { r = 0.1; g = 0.1; b = 0.05; a = 0.9 } ) common.RegisterEventHandler( onTargetChaged, "EVENT_AVATAR_TARGET_CHANGED") common.RegisterEventHandler( ShowGearScore, "LIBGS_GEARSCORE_AVAILABLE") common.RegisterEventHandler( onSize, "EVENT_POS_CONVERTER_CHANGED") end -------------------------------------------------------------------------------- Init() --------------------------------------------------------------------------------
    Бесплатный
  21. Быстрофикс бага с GS.Init, спасибо Slashuur за репорт. Версия 2014-11-13 в шапке. Заодно сделал все внутренние функции local. Теперь API либы минимален (только указанные в шапке функции). Потестил с LibreGS, работает вроде нормально.
  22. Text/Gold.(WidgetTextView).xdb должен содержать: <Name>Gold</Name>
  23. Никак не нахожу Нам об этой функции сообщили сами разработчики, за что им большое спасибо. Но доки они обновляют весьма неохотно Посему доки не всегда соответствуют версии клиента.
  24. Если есть желание, можешь присоединиться к проекту LibGS: https://alloder.pro/topic/1718-libgslua-biblioteka-inspektirovaniya-igrokov/
×
×
  • Создать...

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

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