28

» WarCraft 3 / Дорога к оптимизации: захотел заменить "Замену" юнита (Reforged)

Второй вопрос: почему постоянно, когда опять же что-то утекает, вдруг происходит взрывной рост до 52+- тысяч.
показывай счётчик

а в коде, приложенном к посту, утекает необнуление newUnit
28

» «Hyperion» / Закрыто

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

Komkozavr, я думал мб прога какая-нибудь есть, потому что местами казалось будто это нейронка говорит

вообще в реалиях твоей мапы надо ещё немного абилку поправить, я вроде заметил, что на здания тоже можно кастовать абилку, а если целей нет, то абилка вероятно в кд уйдёт, а надо сбивать каст

кампания не особо сильно заинтересовала, так мб предложил бы свою помощь, хотя не сказал бы, что я шарю в редакторе больше тебя
28

» WarCraft 3 / Суммирующиеся ауры

DazzleFirst, то что я описал выше - это использование одной и той же ауры-пустышки разными юнитами, просто будем к примеру повышать уровень абилки предмета кольца защиты или что там у тебя бафается
28

» WarCraft 3 / Положение вставки

Mechanicus, ну как бы брух, это не та скорость поворота, которую мы обсуждаем, мы за анимацию говорим)

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

то для мгновенного поворота просто бы меняли этот параметр, а не исхищрялись со всякими костылями или мемхаком

насчёт положения вставки, если судить логически исходя из ответов бота, могу предположить, что если положение (х, у) иконок у юнитов одинаковое, то на первом месте будет выставлен тот, у кого приоритет выше/ниже, а другой будет смещён
28

» WarCraft 3 / Суммирующиеся ауры

А разные ауры не суммируются разве?

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

чуть позже скину пример, если это необходимо
28

» WarCraft 3 / Положение вставки

чем ответы бота не подходят?
написано же, что это связанно с иконкой, и это протестировали

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

» WarCraft 3 / Галерея скриншотов ландшафта

SNART, очень красиво, обожаю подобную тему, но на дорожках не хватает какой-нибудь мелочи
28

» WarCraft 3 / Едем по оптимизации: есть ли утечки у таблицы (мультибоарда)?

local multiboarditem mbitem = MultiboardGetItem( udg_Table, 1, GetPlayerId( GetOwningPlayer( GetTriggerUnit( ) ) ) + 2 )
call MultiboardSetItemValue( mbitem, udg_Text )
call MultiboardReleaseItem( mbitem )
set mbitem = null
можешь создать такой кастомскрипт, только тебе нужна переменная Text, куда занесёшь собственно нужный текст
28

» WarCraft 3 / Едем по оптимизации: есть ли утечки у таблицы (мультибоарда)?

да, это утекает, а чтобы избавиться от всех утечек проще перейти на джасс уже, чем под каждую бж функцию подстраиваться

function MultiboardSetItemValueBJ takes multiboard mb, integer col, integer row, string val returns nothing
    local integer curRow = 0
    local integer curCol = 0
    local integer numRows = MultiboardGetRowCount(mb)
    local integer numCols = MultiboardGetColumnCount(mb)
    local multiboarditem mbitem = null

    // Loop over rows, using 1-based index
    loop
        set curRow = curRow + 1
        exitwhen curRow > numRows

        // Apply setting to the requested row, or all rows (if row is 0)
        if (row == 0 or row == curRow) then
            // Loop over columns, using 1-based index
            set curCol = 0
            loop
                set curCol = curCol + 1
                exitwhen curCol > numCols

                // Apply setting to the requested column, or all columns (if col is 0)
                if (col == 0 or col == curCol) then
                    set mbitem = MultiboardGetItem(mb, curRow - 1, curCol - 1)
                    call MultiboardSetItemValue(mbitem, val)
                    call MultiboardReleaseItem(mbitem)
                endif
            endloop
        endif
    endloop
endfunction
всё что утекает из этой функции это всего-лишь необнулённая переменная mbitem
и чтобы избавиться от утечки достаточно прописать в конце set mbitem = null


вот тут тоже есть про мультиборд
Оптимизация


статья бтв 2006 года, но инфы несёт не меньше на ряду с комментами
Загруженные файлы
28

» WarCraft 3 / Ruins

SNART, я миллион статей по ланду смотрел, лол)
назови любую ссылку и я с 90% это уже видел

просто кому-то нравится ландить, а меня тошнит от этого процесса, в буквальном смысле, температура даже апается, но смотреть на красивый ланд прям кайф
28

» WarCraft 3 / Баги на карте и не работающая способность

Какие данные снёс?
вроде требования, реген и мб ещё что-то, но реген я вернул, а вот требования нет, не запоминал их

а, точно. Накосячил с спеллом. Но, он ж работал, когда я поставил вторую Нааву для проверки работы, а когда удалил — перестал работать
работать оно в принципе не могло если у лассо в требованиях только по воздушным можно было
28

» WarCraft 3 / Ruins

Планировал писать статью по ландшафту в 2021 году, но подумал что уже неактуально.
а мне бы пригодилось
28

» WarCraft 3 / Баги на карте и не работающая способность

Далее, мне сделали способность в заказах, я перенес на карту и она работала при проверке. Когда я удалил героя проверки, то способность перестала работать, хотя там не указывается юнит. В чем причина — непонятно
Причина в твоих руках, которые решили поломать спелл)
Скрин с моего спелла

И отредаченный тобой

Ну и небольшой совет, если ты продолжишь лепить карту в таком духе, то рано или поздно действия с открытием вкладки переменных юнитов у тебя начнут дико виснуть, а большое кол-во блокираторов заставят карту компилиться пол часа

Но если это приближённый к идеальному размеру, тогда пофиг

абилку поправил, помимо этого ещё разрешенные цели не были указаны верно


С драгуном хз, я сбросил пару данных и всё заработало

вот карта

возможно вылет был из-за требований
28

» WarCraft 3 / Что может вызвать утечки в этой системе инкома?

VinerX, вообще можно непосредственно одному игроку было показывать
call DisplayTextToPlayer( GetEnumPlayer( ), 0, 0, udg_Text )
такая штука покажет текст в переменной Text выбранному игроку
28

» WarCraft 3 / Что может вызвать утечки в этой системе инкома?

VinerX, создаёшь глобальную переменную форса (группа игроков), закидываешь туда игроков через булекспр + кастомскрипт и очищаешь группу игроков

прямо как с группой, ничего сложного
28

» WarCraft 3 / Что может вызвать утечки в этой системе инкома?

VinerX, вроде player утекает, если не ошибаюсь, и нужно было обнулять и его

rsfghd, это предположение, возможно я всё же неправ.
проверил, похоже кешируются, так что всё хорошо с булекспром


call DisplayTextToForce( GetPlayersMatching(Condition(function Trig_013_Func001001001)), "TRIGSTR_1255" )
->
тут всё ок
function DisplayTextToForce takes force toForce, string message returns nothing
    if (IsPlayerInForce(GetLocalPlayer(), toForce)) then
        // Use only local code (no net traffic) within this block to avoid desyncs.
        call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, message)
    endif
endfunction
а вот тут привет утечки, форс не удаляется и не обнуляется
function GetPlayersMatching takes boolexpr filter returns force
    local force f = CreateForce()
    call ForceEnumPlayers(f, filter)
    call DestroyBoolExpr(filter)
    return f
endfunction

поможет только проделывание тех же действий, что и для группы, только через
call ForceEnumPlayers(f, filter)
и с переменной типа force
Загруженные файлы
28

» WarCraft 3 / Что может вызвать утечки в этой системе инкома?

PT153, в группу юниты берутся через GroupEnum, а не гуишное чё-то там, поэтому достаточно просто очистить, если удалить, то и набрать в группу нельзя будет

На последнем скрине утечек нет.
там и смотреть не на что