30

» WarCraft 3 / Dead By Nightlight

И мне важно, что бы каркас был крепок.
Обожаю безымянные триггеры и говорящие пути в импорте
30

» WarCraft 3 / Можно ли получить список способностей определённого предмета?131

Set\get field починили?
Починили, но к некоторым полям не добраться. Например к стоимости предмета или пути к иконкам.
30

» WarCraft 3 / Как нанести урон триггерно?

Я имею ввиду на 1.26
К сожалению, на 1.26 тоже нужно редактор открывать
Загруженные файлы
30

» WarCraft 3 / Как нанести урон триггерно?

Принятый ответ
Для начала можно просто открыть редактор
Загруженные файлы
30

» WarCraft 3 / Дроп с респавнящегося крипа

Недавно писал систему лута для боссов с настройкой по равкоду юнитов
//! nocjass
//! zinc
library BossLootSystemSetting requires BossLootSystem {
    function onInit(){
        BossLoot
            .create('Hpal')
            .addItem('ratc', 100, "Когти +12", gg_snd_ArthasPissed1)
            .addItem('rat6', 75, null, null)
            .addItem('rat9', 50, null, null)
        ;
    }
}
//! endzinc
//! endnocjass
addItem('равкод', шанс, текстаг, звук)
Загруженные файлы
30

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

достаточно получить GetRandomSeed при старте карты
Насколько я помню, есть только функция SetRandomSeed().
Зачем стандартную функцию переписывать, когда вместо неё можно просто число своё поставить?
Может человек карту хакнуть хочет чтоб на рандоме тащить?
после внедрения библиотеки в процесс игры
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, можно не запариваться с утечками и тыкать в менюшечки))