10

» WarCraft 3 / Как сделать триггерный поджог?

nazarpunk, Имеет 10 кастеров ауры (в кучке)
  1. сначала переберутся 10 кастеров, под ними создадутся точки
  2. собственно кастеров, как обладателей ауры можно сразу отправить на край света
  3. останутся точки, вокруг них и будут все эти GroupEnumUnitsInRange() делаться
  4. у точек никого не осталось, сработают 10 GroupEnumUnitsInRange() и не найдут юнитов вокруг себя (они же на краю света)
  5. на всех тех кто на краю света собственно вешается то что должно вешаться там
  6. их тепает назад (в тот же момент когда они и отправились на край света)
  7. ответ 10
Возможно, я где-то ошибся, но пока что я не понял где
Загруженные файлы
10

» WarCraft 3 / Как сделать триггерный поджог?

nazarpunk, фиг знает короче, у меня даже сосание не прерывается, авось между этими телепортациями и можно проверки делать, надо будет мне потом получше всё проверить
Загруженные файлы
10

» WarCraft 3 / Как сделать триггерный поджог?

nazarpunk, Да я уже велосипеды знаю, уже делал, вот оцени ещё идею, я вот утром думал юнита удалять и создавать, а щас чёт подумал, а что если их всех просто тепнуть, ну типо, создать точки на их местах, 100 юнитов = 100 точек, собственно после каждой проверки вокруг точки тепать (проверенных) их нафиг в жопу мира, а потом назад, я сейчас проверял, тепал иллидана 50 раз в секунду, он как бегал, атаковал, юзал скиллы (протестил 1 скилл ток), у него ничего не прерывалось, мож и не прервётся ничё
Это тоже если набросок вот щас за 15 минут, поэтому он ну такое себе, вообще я думаю что если у меня ничё с аурами не получится, если даже у тебя не получается, у меня они просто будут в очередь становиться и будут срабатывать не одновременно, чтоб не лагало (ну а чо делать, хоть какая-то оптимизация)
SaveReal(FastHash, 0, 0, GetUnitX(gg_unit_OH07_0022))
SaveReal(FastHash, 0, 1, GetUnitY(gg_unit_OH07_0022))
SetUnitX(gg_unit_OH07_0022, 1000)
SetUnitY(gg_unit_OH07_0022, 1000)
SetUnitX(gg_unit_OH07_0022, LoadReal(FastHash, 0, 0))
SetUnitY(gg_unit_OH07_0022, LoadReal(FastHash, 0, 1))
10

» WarCraft 3 / Как сделать триггерный поджог?

nazarpunk, я имел ввиду не совсем приближенную, вот такую вот как на картинке
Её и какие-нибудь пересекающиеся/не пересекающиеся с ней ауры можно было бы разбить на неналегающие друг на друга регионы и потом каждого юнита с каждого региона пикнуть (получится 2 раза для владельцев аур и 1 раз для тех кто просто под аурой)
Но тут другая проблема правда возникает, как раз все эти регионы, я понятия не имею насколько максимально их можно оптимизировать и выгодно ли их делать вообще, это просто идея, пока что
Однако когда я доберусь до аур у себя в карте, я сделаю что-нибудь подобное и протесчу, может чо и выйдет годное
Загруженные файлы
10

» WarCraft 3 / Как сделать триггерный поджог?

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

» WarCraft 3 / Как сделать триггерный поджог?

nazarpunk, Я вот щас подумал, вот стоит у меня 1000 юнитов с аурами в кучке, сначало, просчитается 999+1 юнит, а потом ещё 999*(999+1), то есть всего 1.000.000, а что если некому будет просчитываться
Можно создать 1000 точек (по точке под каждым юнитом), потом 1 раз взять группу GroupEnumUnitsInRange, в ней окажутся все эти 1000 юнитов, сохранить их и удалить, и тогда все остальные GroupEnumUnitsInRange вокруг оставшихся точек, не просчитают ни одного юнита, а потом всех этих сохранённых юнитов вернуть со всеми их приказами и прочей фигнёй
P.S. Я незнаю насколько сильно будет нагружать удаление и создание юнитов, вообще главная задача сделать так чтобы GroupEnumUnitsInRange не проверял юнита, а для этого нужно чтобы либо 1. Юнит перестал быть юнитом 2. Юнита не было
Ну вот короче мой вариант, скорее всего фегня, есть идея с созданием тектуры карты, но я не знаю как в варкрафте делать текстуры на ходу
10

» WarCraft 3 / Как сделать триггерный поджог?

nazarpunk, Опиши задачу пожалуйста поподробней, ни разу не слышал о ней, что нужно сделать, чтобы например при 20 юнитах с аурами и например ещё 30 без ауры, стоящими рядом/или не совсем рядом (рандомно), каждый юнит просчитывался только 1 раз? А не каждый раз от каждой ауры, я правильно понял?
10

» WarCraft 3 / Даммик не кастует способность

kg_toly, да, проверял, если кд поставить, то срабатывает, ну всмысле он итак срабатывает
10

» WarCraft 3 / Даммик не кастует способность

IzobretatelBoom, Ага, я уже на его карте заметил, но при EVENT_PLAYER_UNIT_SPELL_CHANNEL он кстати также срабатывает
10

» WarCraft 3 / Даммик не кастует способность

kg_toly, Всмысле не кастуется, она кастуется, просто это не заметно, так как ней перезарядки нет
10

» WarCraft 3 / Даммик не кастует способность

kg_toly, Что конкретно в способности не работает? Баффы не даются? Юнит не двигается или просто не катуется
10

» WarCraft 3 / Даммик не кастует способность

kg_toly, Я не понял что в конечном итоге должна делать способность, но если у тебя даммик не двигается, то поставь ему скорость передвижения 1
10

» WarCraft 3 / Даммик не кастует способность

Карту в студию, а вообще скорее всего не тот ивент, третья способность явно "Канал", для неё нужно другое событие, а именно EVENT_PLAYER_UNIT_SPELL_CHANNEL
Загруженные файлы
10

» WarCraft 3 / Как сделать триггерный поджог?

IzobretatelBoom, я на своей карте через дамми-кастера проверяю, нанесён урон магией или нет, если урон от дамми-кастера, значит магией, если нет, значит тычка от юнита
Второй способ это через UjAPI, там вроде есть способы отловить то что нужно
P.S. Мега-хорош, лайк
10

» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)

Svintus, допустим есть число 28437, в цикле она получает первую цифру из числа 28437, то есть цифру "2", после чего конвертирует её в строку и складывает строки, потом берёт следующую цифру "8", опять конвертирует, складывает, получается уже "28", ну и делает это до тех пор, пока не получится строка "28437", а затем возвращает её
Она так же работает и с отрицательными числами
10

» WarCraft 3 / Как сделать триггерный поджог?

Принятый ответ
Как сказали выше "Запускаешь таймер и на его хэндл сохраняешь юнита." Внутри таймера собственно урон и наносишь
А чтобы горение обновлялось, сохраняешь сам таймер на хендл горящего юнита и при попадании скилла удаляешь таймер (старый) и запускаешь новый, тем самым огонь обновится
10

» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)

Svintus, Я сейчас посмотрел на этом сайте твоём, под функцией I2C2 есть функция I2S2, вот она то тебе скорее всего и нужна
10

» WarCraft 3 / Вывод сообщения на экран о количестве юнитов (I2S не работает в ИИ)

Svintus, плохая альтернатива, эта функция может выводить только числа от 0 до 9, если твоих рабочих будет например 14, она выведет return ""
10

» WarCraft 3 / Есть ли возможность развернуть юнита вокруг своей оси?

Принятый ответ
Да, но только в редакторе объектов, максимальной угол крена и максимальный угол поворота нужно установить в отрицательные значения, функции
SetWidgetYaw()
SetWidgetPitch()
SetWidgetRoll()
SetUnitYaw()
SetUnitPitch()
SetUnitRoll() из UjAPI - НЕ РАБОТАЮТ, проверял сейчас
И функции из мемхака не работали (проверял давно)
Загруженные файлы
10

» WarCraft 3 / В какие моменты имя функции конвертируется в число?

Принятый ответ
В любые моменты где другая функция, пытается принять имя функции как число