27

» WarCraft 3 / Генератор декораций.

Это обобщенная система, какие проблемы могут возникнуть:
  • У твоих декораций должна быть одна вариация. Ибо мы не сможем узнать, какая там вариация стоит.
  • Декорации должны быть под одним углом (не должны вращаться), ибо получить угол поворота нам редактор тоже не дает (как минимум триггерно, мб в нативках такое что-то есть)
  • Тоже самое и про масштаб.
  • Могут возникнуть проблемы из-за путей, смещения декораций, о чем говорил rsfghd, нужно центрировать целевые точки, чтобы они были кратны 32, как и смещения.
27

» WarCraft 3 / Генератор декораций.

Вот тебе максимально простейшая система копирования декораций из одной области в другую (не идеальная). Главное чтобы ты понял принцип.
Прикрепил карту, можешь скачать и посмотреть.
Суть:
Устанавливаем область откуда копировать и куда копировать. На самом деле нам важны только:
Область откуда копируем, точка центра относительно от которой будем строить композицию, и целевую точку центра, куда поставить декорации.
Далее запускаю триггер копирования.
Триггер копирования просто выделяет весь декор из области и создает такой-же в точке с оффсетом (это смещение декорации от центра области).
По формулам можешь посмотреть и разберешься.
Потом можешь просто менять области и точки, и снова запускать триггер и все скопирует снова. В иницализации я несколько раз его запустил и заспавнил 3 стены так:
Загруженные файлы
27

» WarCraft 3 / Проигрывание разной музыки в разных локациях

ScorpioT1000, она работает слегка криво + по камере. А как я понял, автору нужно, чтобы музыка менялась по событию перемещения героя в области, и не важно куда будет смотреть камера.
Но тоже как еще вариант решения.
27

» Администрация XGM / Ифнормация о планировании

Можно допилить чтобы видели только модераторы.
Думаю так было бы правильнее, ну или если дата уже прошла, то чтобы писало "Ресурс был запланирован и опубликован 17.04.2024 23:00". Это хоть не сбивает столку даже если наводишься на подсказку.
27

» WarCraft 3 / Проигрывание разной музыки в разных локациях

Учитывая все плюсы и минусы разных подходов, думаю, лучшим путем будет запускать именно музыку (не звук) со случайным оффсетом (кроме первого попадания в локацию, тогда запуск с самого начала), отключая старую музыку с фейдом. Это максимально простой вариант, который не будет мешать пользователю отключать музыку, или каждый раз запускаться с самого начала.
Единственный минус - при переходе из локации в другую и обратно, музыка будет продолжаться не в том месте, как ожидалось (но опять же, если игрок туда-сюда переходит в течении 5 сек и только тогда это будет заметно).
Можно все-же использовать таймер для оффсета для улучшения пользовательского опыта, но который будет сбиваться при заходе в менюшки (профита чуть больше но запары в разы больше).
27

» WarCraft 3 / Проигрывание разной музыки в разных локациях

rsfghd, ну тогда боль печаль :D
С такой системой игроку придется заслушаться композицией насильно XD
27

» WarCraft 3 / Проигрывание разной музыки в разных локациях

EugeAl, но как решение такое может пойти, почему бы и нет, когда все равно все варианты костыли не идеальные.
27

» WarCraft 3 / Проигрывание разной музыки в разных локациях

EugeAl, не, просто будет продолжаться не с того места, где останавливалась конкретная композиция.
27

» WarCraft 3 / Точка за пределами камеры

ssbbssc, так-же nazarpunk уже тебе подсказал, что время, которое ты рандомишь в событии, зарандомится в начале игры и будет одинаковое в течении всей игры. Если хочешь чтобы время было каждый раз разное - запускай задержку через таймер.
Событие - таймер А истек.
Действие - в конце запустить таймер А со временем (случайное число от 0.9 до 4)
27

» WarCraft 3 / Точка за пределами камеры

ssbbssc, вот пол триггера в одной функции со 100% спавном в радиусе 1750 в случайной стороне.
Загруженные файлы
27

» WarCraft 3 / Точка за пределами камеры

Принятый ответ
ssbbssc, используй не офсет смещение, а полярное смещение, где указываешь радиус (расстояние) 1750 и рандомный угол. Иначе у тебя почти все мобы будут приходить с одной стороны. Да и в целом изначально делай спавн со смещением от точки героя по полярным координатам, и не придется перепроверять, а где та самая точка.
27

» WarCraft 3 / Проигрывание разной музыки в разных локациях

В целом этот функционал очень фоновый, и если система будет отставать из-за пауз в меню, думаю это не сильно повлияет на пользовательский опыт. Ну запуститься музыка не с 50 секунды а с 20 (30 сек в меню посидел). Сильно это на итоговый игровой опыт не повлияет. Главное каждый раз с нуля не будет запускаться - вот такое будет гораздо заметнее, чем продолжение не с той секунды.
27

» WarCraft 3 / Проигрывание разной музыки в разных локациях

EugeAl, c таким подходом не будет продолжать с того момента где остановился на той самой композиции.
27

» WarCraft 3 / Проигрывание разной музыки в разных локациях

rsfghd, тогда через системное время с периодиком на проверку разницы можно обойти эту проблему. Если делать немного грубую систему, не идеальную, но главное будет работать.
27

» WarCraft 3 / Проигрывание разной музыки в разных локациях

Технически это возможно, но придется запариться с системой.
Есть запуск музыки с указанной точки - но проблема в том, что нет проверки, на каком моменте мы стопаем музыку. Мб есть какие-то нативки в коде, но это уже надо копать.
Как вариант - запускать параллельно таймер, который будет отслеживать длительность звука, и который сам будет музыку перезапускать после окончания. И за счет этого таймера можно будет сохранять время остановки в переменную. А потом продолжать с точки, сохраненной прошлый раз в переменную.
27

» WarCraft 3 / Проверка наличия приказа

Принятый ответ
Crick12,
тогда периодик твой выбор с сохраннением юнита, пока способка работает. То есть отдаешь приказ, запускается триггер с периодиком. Отдаешь другой приказ - отменив целевой, а значит выключаем триггер с периодиком. Так-же после срабатывания способки в периодике, он сам себя выключает.
В таком случае периодик будет работать только тогда, когда есть нужный приказ. Для контроля в периодике еще можешь проверять приказ, если отменили каким-то образом - выключаешь периодик.
27

» WarCraft 3 / Проверка наличия приказа

Эээээх еще бы понять, что ты написал... Ты написал полу решение какой-то непонятной задачи без описания задачи. Если хочешь лучший ответ - опиши так, чтобы люди тебя смогли полностью понять, в чем у тебя проблема. В чем изначальная суть задачи, как ты сейчас реализовал (желательно со скрином тригегра/кода) и какая проблема у тебя возникла. Я на все 3 вопроса увидел только половину информации, либо плохо тебя понял.
Но из того что понял, ты в какой-то момент отдаешь приказ действия на цель, но действие произойдет через N секунд, когда юнит добежит, и еще ты можешь отдать такой-же приказ когда он войдет в область, где сделает это действие, и ты не хочешь, чтобы второй раз отдавался такой приказ при входе? Или ты хочешь отследить, когда он начнет делать то самое действие на цель?
Даже если не так понял, может несколько путей дадут тебе идею для решения:
  1. Добавить юнита в события или условия для триггера. Типа юнит был атакован и вставляем условие "ЭТОТ юнит" == "атакующий юнит". То есть будет проверка на конкретного юнита, чтобы отследить начало его действия (события триггера может быть любое, смотря что тебе надо отследить, юз способки, вход в регион и тд, главно привязка к конкретному юниту).
  2. Добавить юнита в группу или переменную, чтобы сохранить его. Далее через события нужного действия можешь проверять, является ли триггерный юнит из этой группы и дальше можешь его обрабатывать, и когда с ним закончишь, удалишь из группы или очистишь переменную.
  3. Схожее с прошлым решением, когда добавляешь юнита в группу и периодиком всех в группе проверяешь, что юниты действуют как тебе надо, либо перебиваешь приказ на нужный.

А и да... А разве при входе в область не проще проверить на нужный приказ, чем проверять периодично (к примеру раз в секунду) у какой-то группы юнитов приказы?

И ответ на вопрос "Можно?" будет:
Можно.
27

» WarCraft 3 / Шахматы варкрафт 3

Кстати эта карта открытая, можешь ее открыть и поковырять триггеры.
27

» WarCraft 3 / Как правильно использовать boolexpr?

EugeAl, O(n) в программировании обозначает сложность (или время) алгоритма, что в данном случае говорит о выполнении n операций для нахождения. К примеру плохим временм будет O(n*n) для таких поисков (это как цикл в цикле, только зачем так делать для поиска, это вопрос, но кто-то может сделать), или O(2*n). Идеал - это O(1), 1 операция для проверки без циклов.