30

» WarCraft 3 / Перехват рандома в варкрафте

Перепишите функцию и не мучайтесь
function GetRandomInt()
	return udg_MyRandomNumber
end 
30

» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов

Дополнение: а что по поводу перебора юнитов вообще без группы, допустим если юниты будет в массиве или в таблице?
то уже работа с массивами, а не с группой.
Назар снял его с публикации =(
Всего-то статью переделывал. Теперь можно дальше рассуждать о её бесполезности))
30

» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов

Также стоит проводить тесты параллельно, ПОСЛЕ старта игры, а не во время инициализации.
А какая собственно разница?
30

» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов

Что-то более похожее на реальные условия в карте - много переборов маленьких групп. Заодно и доля занимаемая самим перебором в сравнении с вызовом нативок возрастет.
Будет время дополню тесты.
Нет никакой разницы каким вы способом будете перебираться своих 20 юнитов
Кому нет, тот и не будет читать, а мне вот есть разница, поэтому и начал тестировать.
30

» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов

Однократный перебор двух тысяч юнитов не самый показательный тест, имхо.
Какой тест будет показательным?
Плюс не стоит забывать про трюк с заносом нативок в локалки
Нужно всё от тестировать, даже итератор, который я правда ещё не написал(
30

» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов

Можно подробности?
Если в кратце, то функция является объектом, на создание которого и выделяется память. Так же все переменные из области видимости попадают в замыкание, на которое тоже нужна память.
Формулировка не совсем верная, ведь именованная локальная функция тоже получит замыкание на свою область видимости - замыкания никак не связаны с анонимностью и именованностью.
Дополнил
Обычно в функцию перебора юнитов нужно передать дополнительные аргументы, например кастера способности. Анонимная функция получит его в замыкании из своей области видимости:
local caster = 'caster'
ForGroup(whichGroup, function()
	print(caster) --> переменная доступна и будет выведено "caster"
end)
Именованные функции используют для того, что вызывать их из разного места кода, и потому часто случается такая ситуация
ForGroupFunc = function() -- функция глобальна для использования из разных участков кода
	print(caster) --> здесь переменная не видна ибо в области видимости функции  её нет и будет выведено "nil"
end
		
local caster = 'caster' -- чтоб передать эту переменную в функцию, нужно её сделать глобальной
ForGroup(whichGroup, ForGroupFunc)
30

» WarCraft 3 / Утекает ли плавающий текст?

ScopteRectuS:
Его можно создать ~100 раз на одного игрока, дальше они перестанут создаваться. Поэтому их лучше удалять. call DestroyTextTag( имя_переменной).
Он и сам удалится, если указать время жизни:
call SetTextTagLifespan(tt, 10)
call SetTextTagPermanent(tt, false)
set tt = null
30

» Гильдия «Черамор» / Библиотека Lua-Warcraft3

Что за тупое именование функций NzrRound(n)? Назвали бы math.round и не мучались.
Писать EmmyDoc к аргументам и возвращаемым значениям признак хорошего тона, можете посмотреть как сделано здесь.
30

» Warcraft III: Fall of Dalaran / Warcraft III: Fall of Dalaran

Где ошибки(у тебя самого их куча была))
Нехорошо ad hominem использовать.
Лор WoW'а будет затронут НИКАК, все будет проходит по собственному сюжету!
Мягкий знак где потеряли?
И т.д (сами узнаете в кампаний(если она выйдет)
Может всётаки в кампаниИ?
Если у вас вопросы по проекту или хотите помочь проекту.
Я не повторяюсь повторяюсь?
В многих людей это не так, многие даже не успевают прочитать, авторы стараются сделать так, чтобы всем было нормально.
Ну так пропуск одной реплики и решает ту проблему:
  • кто быстро читает, тот пропустит
  • кто медленно читает, то новая реплика не стартанёт, пока игрок не нажмёт кнопку
30

» Warcraft III: Fall of Dalaran / Warcraft III: Fall of Dalaran

Доп. Кампания на одну главу?
Ну там же в общей готовности 20% указано и готова одна глава, путём нехитрой математики, можно посчитать, что количество глав пять)
Некоторые слова с ошибкой в ресурсе.
Так в особенностях не указано: без ошибок, значит всё норм)
Пропуск роликов это круто.
Когда уже выпустят кампанию, где есть пропуск одной реплики? Моя средняя скорость чтения ~250 слов/минута и меня бесит ждать, когда текст я прочитал. Теряется нить повествования и прочие умные слова.
Ну если кампании ещё нет, то автор уже долго делает, а если долго делает значит, что получится прикольно).
Эти два фактора никак не коррелируют(
30

» WarCraft 3 / Lua в текущих реалиях

Совсем уж тупые ошибки IDE подсвечивает, а если вы не можете сразу писать рабочий код, то заворачивайте его в pcall.
30

» WarCraft 3 / [lua] Предотвращаем создание утечек GUI

Работы здесь еще целая гора, конечно, до момента когда любой гуи код не будет ломаться при добавлении этой либы
В идеале конечно, насобирать базовых приёмов гуишников и тестить на них, но опыта промышленного тыкания менюшек у меня нет((
30

» WarCraft 3 / [lua] Предотвращаем создание утечек GUI

Как закончишь с локациями, сделай убивание тупых BJ
Обязательно, одну уже переписал и заинлайнил функции, чтоб лишний раз не вызывать)
function CreateNUnitsAtLocFacingLocBJ(count, unitId, whichPlayer, loc, lookAt)
	GroupClear(lastCreatedGroup)
	local face = math.deg(math.atan(lookAt[2] - loc[2], lookAt[1] - loc[1]))
	for i = 1, count do
		lastCreatedUnit = CreateUnit(whichPlayer, unitId, loc[1], loc[2], face)
		GroupAddUnit(lastCreatedGroup, lastCreatedUnit)
	end
	return lastCreatedGroup
end
30

» WarCraft 3 / Нестандартные Модели.

Я уверен, что вы найдете решение проблемы.
Решение то прям на странице модели:
Чтобы использовать другую текстуру, переименуйте ее в BearSkinBrown.blp
У вас какой путь к текстуре в редакторе?
Загруженные файлы
30

» WarCraft 3 / [lua] Предотвращаем создание утечек GUI

Ты просто переписал код на JASS2 на Lua, функции же идентичны по что.
Копипастил всё подряд, потом уберу лишний вызов функции. PT153:
Нужно переделать AngleBetweenPoints()
Переделал уже
---@param locA table
---@param locB table
---@return real
function AngleBetweenPoints(locA, locB)
	return math.deg(math.atan(locB[2] - locA[2], locB[1] - locA[1]))
end
Я бы не стал пока так писать, потому что это лишь в теории. А для таких утверждений нужна практика.
Добавил волшебное слово "возможно"))
То предложение странно звучит, JASS2 тоже ЯП, так-то. Но у JASS2 нет функциональщины (как и у многих других ЯП), а в Lua есть.
Исправил.
30

» WarCraft 3 / [lua] Предотвращаем создание утечек GUI

Может, благодаря тому, что в lua есть функциональное программирование?
Может и по этому))
Всё же ты часть нативок превращаешь в код, что выполняется на виртуальной машине.
Но и часть BJ будет переписана, надеюсь в итоге будет плюс.
Create Units Facing Point
А в чём тут разница?
Разница с чем?
Неверное название статьи. Не удаляем, а предотвращаем их создание.
Исправил.
Передачу nil потерял, не?
Если не передавать аргумент, то функция примет nil, незачем лишний раз писать.
30

» WarCraft 3 / [lua] Предотвращаем создание утечек GUI

Автоматически удалям утечки Gui?
Ну да. Переопеделив функции так, что все объекты доступны сборщику мусора lua, можно не запариваться с утечками и тыкать в менюшечки))
30

» WarCraft 3 / ZinC: Кровавый взрыв

как мне туда подставить, не понимаю джасс
Я же функцию вывел, для удобства
// Проверка целей
    function checkTarget(unit caster, unit target) -> boolean {
        return (
			IsUnitEnemy(target, GetOwningPlayer(caster)) // <---------------------------- Цель враг
			&&
            !IsUnitType(target, UNIT_TYPE_UNDEAD) // Не нежить
            &&
            !IsUnitType(target, UNIT_TYPE_STRUCTURE) // Не здание
            &&
            !IsUnitType(target, UNIT_TYPE_MECHANICAL) // Не механический
            &&
            !IsUnitType(target, UNIT_TYPE_MAGIC_IMMUNE) // Восприимчив к магии
        );
    }

функцию то вывел, а вот в коде она не использовалась. Исправил ресурс.
30

» WarCraft 3 / Размножение

Про версию, я бы предложил просто принять за данное, что речь идет о последней актуальной версии, если автором темы не указано иного.
Я даю ответы исходя из этого, но есть же ещё вариант jass/lua
30

» WarCraft 3 / Набор предметов для проэкта "Последняя Надежда"

Меня эти переменые мозок ломают.
Что в переменных такого сложного, чтоб они мозг ломали?