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

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

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

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

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

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

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

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

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

Подробнее

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

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

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

hal.dll

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

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

  • Посещение

Сообщения, опубликованные hal.dll

  1. вряд ли отрицательная, выше два условия и получается из них , что heat >= 95(скорее всего больше 100).

     

    Сильно сомневаюсь, что этот код даст значение большее, чем 100:

    local heat = EN.value/EN.limit * 100

    Вот только зачем два одинаковых "wtSetPlace( wtEngine, { alignX = 1, sizeX = EngineSize * heat / 100} )"

     

    question.png

     

    post-4123-0-62719300-1413798444_thumb.pn

  2. Да где вы увидели хамство и оскорбления? Срываю злость? Вы вообще о чем?

    А

    если вы сами не знаете причины,

    которые заставляют разработчиков

    менять совместимости,

    Отчего же не знаю. Знаю отлично: разработчики АО добавляют новый функционал, необходимый для ихних системных аддонов, плюс приводят в порядок существующий. Но искать в этом закономерность не вижу смысла. Зачем это надо? Предугадать дальнейшие изменения? Вероятность не велика на самом деле

    а раз нету никакой

    уверенности что аддон завтра не

    сломается, то какой смысл вообще ими

    заниматься?

    Предлагаете закрыть проект, удалить все аддоны и разбежаться?

    А уверенности в том, что вы проживете достойную и счастливую жизнь без различных мелких неприятностей, у вас достаточто? Может нам всем тогда, следуя этой логике, накрыться простыней и ползти на кладбище?

    Я просто не могу понять, что вы предлагаете?

  3. sephirostoy, Saiiid is asking whether it is possible to save state of main window (shown/hidden) when clicking on button "D", and restore on loading?

     

    Also, can you please add an option to allow damage calculation for the members staying far?

    I mean to ignore "Combatant:IsClose()" value here:

    function TUMeter:UpdateData(fightId, combatantID, mode, params, spellInfo)
        local Fight = self.FightsList[fightId]
        local member = {}
        member.id = combatantID
        local Combatant = Fight:GetCombatant(member)
    
        if Combatant and Combatant:IsClose() then -- don't record data from combatant too far
            Combatant.Data[mode].Amount = Combatant.Data[mode].Amount + params.amount
    
    • Плюсую 1
  4. но не ясно зачем было добавлять к ревизии если это просто фикс под версию клиента, а по факту он тот же r12.6

    Среди программистов любое изменение исходного кода является обязательным поводом к увеличению номера версии.

    По сути версия - уникальный идентификатор состояния исходного кода.

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

  5. Вероятно, в этой ошибке кроется причина:

    Error: addon ShipControl:
    Error: addon ShipControl:   
    Error: addon ShipControl:   func: SetPlacementPlain, method, line: -1, defined: C, line: -1, [C]
    Error: addon ShipControl:     func: wtSetPlace, global, line: 407, defined: Lua, line: 402, [string "Mods/Addons/AddonsTools/Scripts/ScriptLIB.lua"]
    Error: addon ShipControl:       func: set_HP, field, line: 183, defined: Lua, line: 142, [string "Mods/Addons/ShipControl/Scripts/ShortMap.lua"]
    Error: addon ShipControl:         func: add_Ship, global, line: 576, defined: Lua, line: 507, [string "Mods/Addons/ShipControl/Scripts/ShortMap.lua"]
    Error: addon ShipControl:           func: ?, ?, line: 751, defined: Lua, line: 747, [string "Mods/Addons/ShipControl/Scripts/ShortMap.lua"]
    

    Отсутствие текста ошибки доставляет, да... Привет, разработкам АО...

    Глянул, что там:

            if heat < 50 then
                wtSetPlace( wtEngine, { alignX = 1, sizeX = EngineSize * heat / 100} )
            elseif heat < 95 then
                wtSetPlace( wtEngine, { alignX = 1, sizeX = EngineSize * heat / 100} )
            else
                wtSetPlace( wtEngine, { alignX = 0, sizeX = ( heat - 100 )/100 * EngineSize * 2} )
            end

    Как бы "heat - 100" - это отрицательная величина, и судя по всему АПИ ругается именно на это. А что автор кода хотел этим сказать, боюсь, даже он уже не знает... В старых исходниках с ui9 формула такая же...

  6. RepInfo2.1:

    Error: addon RepInfo 2: Error while running the chunk
    Error: addon RepInfo 2:   [string "Mods/Addons/RepInfo/scripts/ScriptRepInfo.lua"] attempt to index local 'reputationInfo' (a nil value)
    Error: addon RepInfo 2:   func: __index, metamethod, line: -1, defined: C, line: -1, [C]
    Error: addon RepInfo 2:     func: ?, ?, line: 25, defined: Lua, line: 15, [string "Mods/Addons/RepInfo/scripts/ScriptRepInfo.lua"]
    

    Я как-то даже не понял, что я сделал, чтобы это получить. Загрузился в твинка 7 лвл, и стал покупать мирру у рядом стоящей тётки, а потом возмолился :)

  7. Представь игру, которую обновляют раз в день...покайфу будет в нее играть?

    Представь программиста, которому приходится исправлять, тестить и релизить свою программу раз в день из-за изменений среды, в которой работает эта программа... покайфу ему будет такое?

     

     

     

    Вообще кто-нибудь находил закономерность что ломается в аддонах\клиенте игры каждом обновлении\фиксе и т.д.?

    Всё довольно просто: ломается совместимость.

     

     

     

    только про смену версии lua не говорите, это банально...

    Интересно, что еще прикажешь нам говорить или не говорить, о великий гуру программирования и программных интерфейсов?

    Все свои претензии по поводу самопроизвольно ломающихся аддонов направляй, пожалуйста, по нужному адресу: разработчикам программного интерфейса игрового клиента Аллоды Онлайн.

    Заодно сообщи им, что во всем нормальном IT-шном мире нарушение совместимости (когда какую-либо функцию переименовывают во что-то другое без возможности ее использовать некоторое время под старым именем) считается дурным тоном и признаком безграмотности программиста(ов).

     

    Кстати, а чем не устраивает смена версии lua в качестве причины?

    Все изменения фиксируются в документах, если нам не веришь, можешь сам скачать несколько разных версий API клиента с нашего сайта и проверить их на совместимость. Там же можно и про смену версии lua почитать немного. Ну и в конце концов можешь сам попробовать что-либо написать и запустить это под разными версиями lua. А мы посмотрим, что у тебя выйдет...

    • Плюсую 1
  8. вопрос по начислению премий за реанимацию аддонов под 5.0.2 в процессе решения

    Надо сказать, это неожиданно :)

    Наш админ за нас горой :114:

     

     

    PS: Но с 5.0.2 было несколько проще на самом деле по причине наличия исходников самих аддонов айкрейтора, плюс большинство фиксов уже было сделано с обновой 5.0.1. Самая жесть была при переносе на 5.0.1.

  9. Кроме этого, и что более важно, вводятся премии за реанимацию аддонов. Размер премии составляет от 500 до 1500 кристаллов, зависит от оценки сложности фикса и важности аддона. В особо тяжелых случаях или при срочности исправления аддона - назначаются награды от 1000 до 5000 кристаллов.

     

    Что-то нынче мало аддонов на реанимацию.

    Интересно, это как-то связано с вводом премий или просто совпадение? :think:  :)

     

     

    Ээх, введи они премии на полгода раньше, когда мне пришлось долго и муторно возиться с исправлением скомпилированных аддонов розочки, у меня был бы уже пятизначный счет в игре :very_happy:  :9:

  10. В моем понимании "вырезание Debug'а" - это не столько вопрос производительности, сколько вопрос чистки кода от нежелательных вещей. В этом контексте смириться с разницей во временах выполнения пустой функции и проверки переменной вполне себе можно. А если заморачиваться, то тогда уж надо вплотную смотреть на препроцессор.

    Хорошие отладочные сообщения и пользователю будут приятны :)

    Но в целом понимаю твою позицию.

    Препроцессор - понятие достаточно абстрактное, чтобы не зацикливаться на lua модуле интегрированном в систему/компилятор/прочее. Подойдет любая внешняя программа, если ее можно вклинить между IDE и LuaJIT. Кстати, LuaJIT сам по себе содержит какие-то внешние модули (bc.lua, bcsave.lua...). Может там есть что-то похожее на препроцессинг?

  11. Соответственно, если НЕ добавлять, то ничо оверрайдиться не будет. Таким образом можно заранее определить несколько функций как пустые, а потом в debug.lua их переопределить и написать какое-нибудь тело.

    Буду выглядеть глупо в контексте моего же комментария, что не надо гоняться за мифической оптимизацией в 10 наносекунд, но скажу, что вызов пустой функции с кучей инфы для печати отнимает несколько больше времени, чем проверка глобальной переменной и переход в другой кусок кода. Что в принципе очевидно.

    Вот, когда-то тестировал:

    Global("Config", {})
    ...
        -- Test LogDebug
        local TestDebug1 = function(x, y, z)
            if Config.DebugVerbose then LogInfo(x, y, z) end
        end
        local TestDebug2 = Config.DebugVerbose and function(x, y, z) LogInfo(x, y, z) end or function(x, y, z) end
    
        local time1 = common.GetMsFromDateTime(common.GetLocalDateTime())
        while a < 1000000 do
            a = a + 1;
            -- case 1:
            --if Config.DebugVerbose then LogInfo(1, 2, 3) end -- 53 ms
            -- case 2:
            --TestDebug1(1, 2, 3) -- 154 ms
            -- case 3:
            --TestDebug2(1, 2, 3) -- 95 ms
            b = b + 1;
        end
        local time2 = common.GetMsFromDateTime(common.GetLocalDateTime())
    ...
  12. Тоже сорт оф костыль.

    В общем случае - да. У меня токен как правило - вызов функции печати отладочной информации. Так что выглядит совершенно безобидно.

     

    Кстати, для любителей батников, в винде есть консольная прога findstr, работает по принципу линуксовского grep (если это кому-то о чем-то говорит...).

    http://habrahabr.ru/post/71568/

    http://admin-gu.ru/windows/windows-grep

    Собственно, вызов findstr /V DEBUG_TOKEN MyScript.lua на выходе выдает почищенный от ненужных строк код.

    Это можно прописать в IDE в команде компиляции в пайп перед передачей в luajit, либо в команде препроцессора, если таковая имеется.

  13. С очередной обновой выпилили очередную функцию (о чём, кстати, забыли помянуть в ChangeList), а она была в отладочном куске кода, который я забыл закоментить в своей время, и всё, аддон не работает.

     

    Тут тебя препроцессор вряд ли бы спас.

    ___

     

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

    При этом все строки касающиеся дебага имеют определенный токен (ключ), который в обычном коде не используется. Делаю так для того, чтобы можно было удалить все строки, содержащие этот токен.

    По идее в Notepad++ должна быть где-то зарыта эта вполне себе стандартная функция. Или может плагин есть какой.

     

    Можно, конечно, завести какой-нибудь local DEBUG и загонять весь отладочный код в if DEBUG then, но это лишние инструкции, в том числе и в циклах и лишний объем памяти под скрипт, не хорошо в общем.

    Лично я часто именно так и делаю.

    Можно поинтересоваться, о каких циклах идет речь? Какая сложность (O(n))? Какого порядка само n?

    Если это в обработчике дамага, или бафов, или других часто приходящих сообщений, то, конечно, if DEBUG then нельзя использовать.

    Если же это что-то вроде 2-3 отладочных сообщения при клике на кнопку раз в полгода, то проверка условия перед их печатью - вообще ничто по сравнению с остальными действиями.

    В общем всё познается в сравнении, и сильно заморачиваться над тем, что особо оптимизации и не требует - вообще дурной тон.

    Когда алгоритм вместо 1 секунды начал выполняться 0.1 секунду - это оптимизация.

    Когда алгоритм вместо 1 секунды начал выполняться 0.9998 секунд - это маразм и впустую потраченное на правку скрипта время.

  14. последняя версия(2.3)

     

    Прикольно :)

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

    Если норм, то залью в хранилище.

    Обновил аддон в хранилище, но потестить его так и не получилось :)

  15. Аддон более не актуален в связи с переделанным рейдовым интерфейсом.

    Спасибо всем, кто пользовался этим аддоном.

    Надеюсь, вы получили огромное удовольствие от его использования :)

  16. А можно сделать пожертвование со своего счета на сайте? А то как всегда поспешил,закинул деньги на счет,сейчас нет финансов на кошельках

    На данный момент нет, но в некотором будущем появится :)

  17. В данном случае аддон не словил коронку, похоже, потому что сообщение EVENT_UNITS_CHANGED (с которым коронка и прилетела) опередило EVENT_AVATAR_CLIENT_ZONE_CHANGED.

     

    На диких землях детект корон отключен (не совсем, но это уже детали), и аддон, грубо говоря, еще не успел сменить текущую карту, чтобы этот детект включить.

     

    Спасибо за репорт. Весьма интересные баги.

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

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

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