30

» Эксперименты в Пустоте / Ломаем Warcraft3 1.31 полностью: Кастомный компилятор Lua

prog, мне работа в редакторе и ненужна, мне нужно просто пилить код в IDE с пересохранением в карту и запуск этой карты по Ctrl+F9 прямо из IDE.
30

» Эксперименты в Пустоте / Ломаем Warcraft3 1.31 полностью: Кастомный компилятор Lua

Если раскусить формат war3map.wtg и war3map.wct то остаётся только вставить код в war3map.lua. Если бы не косяк со слэшами в режиме папки, то карту можно было смело заливать на git и очень комфортно работать.
30

» Эксперименты в Пустоте / Ломаем Warcraft3 1.31 полностью: Кастомный компилятор Lua

Мне бы в идеале хватило синхронизации редактора триггеров
И структуры папок в IDE
Чтоб карту можно было открыть в простом редакторе.
Загруженные файлы
30

» WarCraft 3 / Способности и алгоритмы на заказ

Неужели так сложно сделать ему то что он просит? )
Так почему сами не сделаете? Был бы lua, может бы взялся, а на гуи нехочется зря время тратить.
30

» WarCraft 3 / Не все даммики группы кастуют скилл

Сейчас буду дебажить все шаги
Перепишите на jass/lua. Заодно уберёте кучу мусорного исполнения.
30

» WarCraft 3 / Не все даммики группы кастуют скилл

Зачем каждый раз новых даммиков создавать? Посмотрите наработку, когда тестил проблем с тёмной стаей не заметил.
30

» WarCraft 3 / Орн из Лига Легенд

Может потому что ты его не вызываешь вруную, а по дефолту он в варе то ли отключен то ли реагирует на очень высокие значения потребления памяти?
А нечего его вручную вызывать, он ещё и таймеры убивает
local InitGlobalsOrigin = InitGlobals
function InitGlobals()
	InitGlobalsOrigin()
	TimerStart(CreateTimer(), 1, true, function()
		collectgarbage() -- После вызова этот таймер больше никогда не сработает
		print('garbage')
	end)
end
30

» WarCraft 3 / Орн из Лига Легенд

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

» WarCraft 3 / Орн из Лига Легенд

Злоупотребление анонимными функциями, которые несомненно удобны, но это дорогое удовольствие
Решил проверить, насколько оно дорогое
local InitGlobals_hook = InitGlobals
function InitGlobals()
	InitGlobals_hook()
	local group  = CreateGroup()
	local id     = FourCC('hfoo')
	local player = Player(PLAYER_NEUTRAL_PASSIVE)
	local count  = 5000
	
	local start  = os.clock()
	for i = 1, count do
		GroupAddUnit(group, CreateUnit(player, id, 0, 0, 0))
	end
	print('create ' .. count .. ' unit', os.clock() - start)
	print('-------------------------------')
	
	-- named
	local function hp()
		BlzSetUnitMaxHP(GetEnumUnit(), 1000)
	end
	start = os.clock()
	ForGroup(group, hp)
	print('named', os.clock() - start)
	
	-- anon
	start = os.clock()
	ForGroup(group, function()
		BlzSetUnitMaxHP(GetEnumUnit(), 5000)
	end)
	print('anon', os.clock() - start)
end
Загруженные файлы
30

» WarCraft 3 / Knights & Rogues COMPLETE EDITION

Dazz Lighter, незачто, поле последнего фикса ещё раз пройду)
Подметил для себя несколько вещей
Я тоже
  • Охотник за головами враждебен к яку и запорол мне квэст
  • Сделайте стак зелий хотябы, неудобно же
  • Меня атаковала охрана в кинематике квэста о караване
30

» WarCraft 3 / Орн из Лига Легенд

Код не очень - создание объектов в верхнем потоке выполнения, до инициализации и полной загрузки карты.
Что не так с кодом до инициализации карты? Триггеры нормально создаются, а для прочего можно хукнуть InitGlobals.
30

» WarCraft 3 / Knights & Rogues COMPLETE EDITION

липкая паутина сделана не через сообщения для разнообразия
Разнообразие должно быть удобным.
но именно на этот случай был добавлен раб, которого можно купить буквально за копейки
У меня был хилер куплен.
Сбор хмельных ягод классический квест на сбор кустов
То что он классический, не значит что он хороший. И в классических квэстах на сбор, кустов спавнят насного больше чем необходимо, что это игрока не парило.
Крест воскрешения в принципе почти не нужен в мид гейме, хотя зависит от героя конечно.
Так нужен или ненужен? Меня раз медведь застанил удачно и снёс всё хп.
Не стакается потому что их три вида и если хочется увеличить их количество, то старый просто продается, по задумке.
А может сделать один вид и стакать? Или вообще добавить алтарь воскрешения.
Это точно случилось во время кинематика, а не вовремя разговора с мельником перед его отплытием?
Во время разговора.
На счет взрыва моста, это же шутка.
Ну так нужно же шутить до конца. Если я уже херачу терористические акты, то почему после делюги добычи я немогу прикончить долбанного мельника и получить весь навар?
Я даже не думал о том, что кому-то придёт в голову натравить охотника за головами на разбойника.
Вы недооцениваете опыт тестирования некоторых игроков)
Головы при смерти Морока с него упали?
Никакого лута не выпало.
30

» WarCraft 3 / Knights & Rogues COMPLETE EDITION

Гринд в начале очень скучный и колодец лечит медленно. Можно сделать, чтоб этот козлёл героя лечил. Было бы логично и антуражно.
  • И было бы круто, если б при получении уровня восполнялось hp/mp как в диабло.
  • Собирание липкой паутины нельзя было через сделать сообщениями? Бесит выкладывать вещи из инвентаря.
  • Сбор хмельных ягод это тихий ужас, можно было хоть травницу добавить, чтоб купить и не парится
  • Воскрешение вообще ужасно, инвентарь и так маленький, а вы ещё заставляете носить крест воскрешения, который к тому же не стакается. Если так уж хочется перманентной смерти, то можно было через иконку незанятого рабочего сделать освободив слот
  • Почему нельзя путешестовать вместе с яком?)
  • Во время кинематики делайте героя неуязвимым, а то всякие упыри его убить хотятrent($car.bid)}$
  • Квэст со взрывом моста тупой. Я тут добрячка отыгрываю, а мне предлагают взорвать невиновных людей. Я бы за такие предложения привязал бы его к стулу и достал нужные сведения
  • Натравил охотника за головами на Двуглавого Морока, в итоге он его прибил и квэст не продолжился.
Загруженные файлы
30

» WarCraft 3 / вопрос по триггерам LUA

Да, если гражданин не знает английского.
В стране запретили гугл и так сложно найти на русском?
Это не документация, это туториал.
Какая разница, если нужно всего одну строку прочитать?
Загруженные файлы
30

» WarCraft 3 / Орн из Лига Легенд

Хотелось бы увидеть вариант спеллпака на джассе для патча 1.26
Человек старался, изучал новый удобный язык, а вы хотите ввергнуь его в пучину кривого jass и долбанных хэштаблиц?
30

» WarCraft 3 / Фиксированные иконки заклинаний в спелбуке

Заклинания в книге заклинаний распределяются в том порядке, в котором они находятся в редакторе объектов.
Они распределяются в том порядке, в котором были добавлены в игру если в спэллбуке не стоит галка "в случайном порядке".
30

» WarCraft 3 / wc3 1.31 и lua

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

» WarCraft 3 / wc3 1.31 и lua

это мнение, а не ответ на вопрос, и многим было бы полезно узнать его
Можно подумать логически и заглянуть в common.j.
---@class agent:handle -- all reference counted objects
---@class boolexpr:agent

---@class conditionfunc:boolexpr
---@class filterfunc:boolexpr

---@param func code
---@return filterfunc
function Filter(func) end

---@param func code
---@return conditionfunc
function Condition(func) end
Как видно Filter и Condition создают и возвращают boolexpr и вродибы раньше Condition кэшировалось, а как реализовали в lua хз, но поидее должен прийти сборщик мусора и всё подчистить.
30

» WarCraft 3 / wc3 1.31 и lua

Принятый ответ
Чтоб не мучиться, обойдитесь вообще без фильтров:
GROUP = CreateGroup() -- Глобальная группа, чтоб не создавать каждый раз.

-- в самом триггере
GroupEnumUnitsInRange(GROUP, x, y, range, nil)
local target ---@type unit
while true do
	target = FirstOfGroup(GROUP)
	if target == nil then break end -- выходим из цикла при пустой группе
	
	if UnitAlive(target) then -- условия для перебора
		KillUnit(target) -- действия для перебора
	end
	
	GroupRemoveUnit(GROUP, target)
end
30

» WarCraft 3 / Knights & Rogues COMPLETE EDITION

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

» WarCraft 3 / Knights & Rogues COMPLETE EDITION

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

Если убивать начальника охраны, то квэст невыполнится.