Хэх, не всё так просто оказалось, но эти кнопки можно просто засунуть за монитор))
do
local InitGlobalsOrigin = InitGlobals
function InitGlobals()
InitGlobalsOrigin()
BlzHideOriginFrames(true)
BlzFrameSetAllPoints(BlzGetOriginFrame(ORIGIN_FRAME_WORLD_FRAME, 0), BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0))
for i = 0, 11 do
local btn = BlzGetOriginFrame(ORIGIN_FRAME_COMMAND_BUTTON, i)
BlzFrameClearAllPoints(btn)
BlzFrameSetAbsPoint(btn, FRAMEPOINT_TOP, 0, 0)
end
end
end
Что-то более похожее на реальные условия в карте - много переборов маленьких групп. Заодно и доля занимаемая самим перебором в сравнении с вызовом нативок возрастет.
Если в кратце, то функция является объектом, на создание которого и выделяется память. Так же все переменные из области видимости попадают в замыкание, на которое тоже нужна память.
Формулировка не совсем верная, ведь именованная локальная функция тоже получит замыкание на свою область видимости - замыкания никак не связаны с анонимностью и именованностью.
Дополнил
Обычно в функцию перебора юнитов нужно передать дополнительные аргументы, например кастера способности. Анонимная функция получит его в замыкании из своей области видимости:
local caster = 'caster'
ForGroup(whichGroup, function()
print(caster) --> переменная доступна и будет выведено "caster"
end)
Именованные функции используют для того, что вызывать их из разного места кода, и потому часто случается такая ситуация
ForGroupFunc = function() -- функция глобальна для использования из разных участков кода
print(caster) --> здесь переменная не видна ибо в области видимости функции её нет и будет выведено "nil"
end
local caster = 'caster' -- чтоб передать эту переменную в функцию, нужно её сделать глобальной
ForGroup(whichGroup, ForGroupFunc)
Что за тупое именование функций NzrRound(n)? Назвали бы math.round и не мучались.
Писать EmmyDoc к аргументам и возвращаемым значениям признак хорошего тона, можете посмотреть как сделано здесь.
Когда уже выпустят кампанию, где есть пропуск одной реплики? Моя средняя скорость чтения ~250 слов/минута и меня бесит ждать, когда текст я прочитал. Теряется нить повествования и прочие умные слова.
» WarCraft 3 / [lua] Дамми каст
» WarCraft 3 / Спелл на замедление и ускорение.
Ред. nazarpunk
» WarCraft 3 / Иконки атаки и движения
» WarCraft 3 / Иконки атаки и движения
» WarCraft 3 / Продолжение разработки карты
10.1 Размещение нескольких вопросов в одном ресурсе.
» WarCraft 3 / Dead By Nightlight
» WarCraft 3 / Можно ли получить список способностей определённого предмета?131
Ред. nazarpunk
» WarCraft 3 / Как нанести урон триггерно?
» WarCraft 3 / Как нанести урон триггерно?
» WarCraft 3 / Дроп с респавнящегося крипа
Ред. nazarpunk
» WarCraft 3 / Перехват рандома в варкрафте
» WarCraft 3 / Перехват рандома в варкрафте
Ред. nazarpunk
» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов
» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов
» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов
» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов
» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов
» WarCraft 3 / Утекает ли плавающий текст?
Ред. nazarpunk
» Гильдия «Черамор» / Библиотека Lua-Warcraft3
Писать EmmyDoc к аргументам и возвращаемым значениям признак хорошего тона, можете посмотреть как сделано здесь.
Ред. nazarpunk
» Warcraft III: Fall of Dalaran / Warcraft III: Fall of Dalaran
» Warcraft III: Fall of Dalaran / Warcraft III: Fall of Dalaran
» WarCraft 3 / Нет описания способности
» WarCraft 3 / Прямоугольная область поражения
» WarCraft 3 / Lua в текущих реалиях
» WarCraft 3 / [lua] Предотвращаем создание утечек GUI