quq_CCCP, нет не то
это просто подсчёт игроков даст
есть синглплеер а есть мультиплеер
в мультиплеере можно играть 1
но если мы играем в синглплеере нужно написать что мы играем сингл
а если в мультиплеере то даже если мы 1 то нужно писать что это мультиплеер
вопрос в том как узнать как запустили карту(из сингла или из мультиплеера) если и там и там 1 игрок
единственный правильный ответ дал BaHeK
molot39, поле нескольких таких сообщений оперативка будет забита и игра вылетет с фаталом
обращение ко всем нубам
не пишите всякий бред
лучше статьи почитайте
вообщем подведу итоги
игрок ввёл сообщение
заносим в переменную группу юнитов выбранных триггерным игроком
проходим по всей группе удаляя picked unit
удаляем группу
_DREIG_, VetsaN, карта это архив так что изменение веса вполне возможно _DREIG_, нефиг юзать рабочий стол для хранения файлов
в старые добрые времена за такое сворачивали шею и закапывали на заднем дворе _DREIG_, в статьях есть более просто способ без деления на части
darkowlom, перебор областей позволяет сразу отбросить те области где пересечений точно нету (вектор не пересекает верхнюю и нижнюю границы ланда в области) и может дать область в которой точно есть пересечение (вектор пересекает и верхнюю и нижнюю границы)
фига се я написал даже самому страшно читать darkowlom, насколько я понял ты хочешь сделать нечто наподобие точки каста спела
нажал на кнопку и на том месте где она была чтото произошло(врыв например)
тут стоит задать максимальную и минимальную высоту ландшафта в виде констант
так тебе нужно будет проверять лишь ту часть которая лежит в этом промежутке
так же стоит смотреть третью координату вектора (z)
параллелен ли вектор плоскости XY (т.е. z==0)
или направлен вверх (т.е. z>0)
или направлен вниз (z<0)
и рассматривать их как разные случаи
так же стоит узнать максимально возможную длину вектора
это все поможет сократить количество итераций darkowlom, твой способ с пересечением может привести к багам в случае если z вектора близко к 0
т.е. вектор пересекает ландшафт несколько раз
например сначала он пересекает гору а за ней равнину
если на карте нету шпилей или резких ям (т.е. небольших областей с сильным искривлением ландшафта) то всю карту можно разбить на области по высотам
например в области a высота варьируется от 0 до 20 (равнина)
а в области b от 150 до 210 (возвышенность)
так можно будет сначала определить какие области вектор пересекает а потом внутри областей проводить переборы
есть правда ещё 1 способ без перебора но он баганый и медленный
берём какого нибудь игрока и помещаем глаз его камеры в точку твоей кнопки а в качестве вектора камеры устанавливаем твой вектор
потом с помощью функций GetCameraTargetPositionX/Y/Z() узнаём точку касания
синхронизируем их между игроками и т.д.
но тут тратится куча времени на синхрон и установку камеры
имхо первый вариант лучше
darkowlom, раз ты курил дгуи могу предположить что вектор равен вектору камеры
тогда всё намного проще ибо у нас есть точка отсчёта (цель камеры)
я прав?
дальность действия это расстояние каста?
если да то отлавливаем приказ на каст и сверяем расстояние
если расстояние между целью и кастером больше чем расстояние которое должно быть то отдаём юниту приказ двигаться к цели каста
после чего таймером постоянно проверяем расстояние до цели если оно стало подходящим то применяем спелл
при получении приказа нужно удалять таймер
при большом количестве таких юнитов(больше 2) нужно делать на 1 таймере с использованием стека
и удалять не таймер а объект из стека
если абилок и вариантов ренджа дофига то лучше юзать мой метод дабы не пилить 100500 объектов в ро
если немного то лучше метод quq_CCCP
Вот это мне и надо было узнать, теперь вопрос об оптимизации перебора, скорее всего буду использовать разбиение вектора на участки и проверку в сторону уменьшения, если на участке есть пересечение. Это позволит сразу отсеять половину карты и оставшийся участок делить на две части пока не получится минимальный отрезок на котором есть пересечение и его перебирать более детально. Тем более это поможет избежать лишних переборов если пересечения не существует вообще
бред
берёшь каждый конкретный случай и юзаешь подходящее решение
нафиг обобщать то что обобщить невозможно
» WarCraft 3 / Локальная игра
это просто подсчёт игроков даст
есть синглплеер а есть мультиплеер
в мультиплеере можно играть 1
но если мы играем в синглплеере нужно написать что мы играем сингл
а если в мультиплеере то даже если мы 1 то нужно писать что это мультиплеер
вопрос в том как узнать как запустили карту(из сингла или из мультиплеера) если и там и там 1 игрок
единственный правильный ответ дал BaHeK
» WarCraft 3 / Создание глобального таймера, к которому привязывается всё
это про то как вешать всякую фигню на общий таймер
хэш тут нафиг не нужен т.к. таймер 1
» Elven Union / Elven Union
» WarCraft 3 / //!textmacro
или дело в чём то другом
» WarCraft 3 / Как обновить PJass
что ты собираешься с ним делать?
особенно если учесть что ты не можешь обновить прогу
» WarCraft 3 / Проблема с переносом спеллпака
Ред. nvc123
» WarCraft 3 / как удалить юнита
обращение ко всем нубам
не пишите всякий бред
лучше статьи почитайте
вообщем подведу итоги
игрок ввёл сообщение
заносим в переменную группу юнитов выбранных триггерным игроком
проходим по всей группе удаляя picked unit
удаляем группу
Ред. nvc123
» WarCraft 3 / Проблемы с LoadingScreen.mdx HELP
» WarCraft 3 / Проблемы с LoadingScreen.mdx HELP
_DREIG_, нефиг юзать рабочий стол для хранения файлов
в старые добрые времена за такое сворачивали шею и закапывали на заднем дворе
_DREIG_, в статьях есть более просто способ без деления на части
https://www.xgm.guru/p/wc3/loadingscreen
» WarCraft 3 / Как заблокировать героя на время каста?
» WarCraft 3 / Поиск пересечения вектора с ландшафтом
» WarCraft 3 / Как триггерно увеличить масштаб юнита?
» WarCraft 3 / Поиск пересечения вектора с ландшафтом
смысл делить на 2 если мы и так весь промежуток проверяем
» WarCraft 3 / Поиск пересечения вектора с ландшафтом
имхо лучше делить на области и перебирать их по удалению от камеры
» WarCraft 3 / [JASS] Динамическое изменение параметров
Ред. nvc123
» WarCraft 3 / Поиск пересечения вектора с ландшафтом
даже самому страшно читать
darkowlom, насколько я понял ты хочешь сделать нечто наподобие точки каста спела
нажал на кнопку и на том месте где она была чтото произошло(врыв например)
тут стоит задать максимальную и минимальную высоту ландшафта в виде констант
так тебе нужно будет проверять лишь ту часть которая лежит в этом промежутке
так же стоит смотреть третью координату вектора (z)
параллелен ли вектор плоскости XY (т.е. z==0)
или направлен вверх (т.е. z>0)
или направлен вниз (z<0)
и рассматривать их как разные случаи
так же стоит узнать максимально возможную длину вектора
это все поможет сократить количество итераций
darkowlom, твой способ с пересечением может привести к багам в случае если z вектора близко к 0
т.е. вектор пересекает ландшафт несколько раз
например сначала он пересекает гору а за ней равнину
если на карте нету шпилей или резких ям (т.е. небольших областей с сильным искривлением ландшафта) то всю карту можно разбить на области по высотам
например в области a высота варьируется от 0 до 20 (равнина)
а в области b от 150 до 210 (возвышенность)
так можно будет сначала определить какие области вектор пересекает а потом внутри областей проводить переборы
есть правда ещё 1 способ без перебора но он баганый и медленный
берём какого нибудь игрока и помещаем глаз его камеры в точку твоей кнопки а в качестве вектора камеры устанавливаем твой вектор
потом с помощью функций GetCameraTargetPositionX/Y/Z() узнаём точку касания
синхронизируем их между игроками и т.д.
но тут тратится куча времени на синхрон и установку камеры
имхо первый вариант лучше
» WarCraft 3 / Патч 1.27a
» WarCraft 3 / Поиск пересечения вектора с ландшафтом
тогда всё намного проще ибо у нас есть точка отсчёта (цель камеры)
я прав?
» WarCraft 3 / [JASS] Динамическое изменение параметров
если да то отлавливаем приказ на каст и сверяем расстояние
если расстояние между целью и кастером больше чем расстояние которое должно быть то отдаём юниту приказ двигаться к цели каста
после чего таймером постоянно проверяем расстояние до цели если оно стало подходящим то применяем спелл
при получении приказа нужно удалять таймер
при большом количестве таких юнитов(больше 2) нужно делать на 1 таймере с использованием стека
и удалять не таймер а объект из стека
если абилок и вариантов ренджа дофига то лучше юзать мой метод дабы не пилить 100500 объектов в ро
если немного то лучше метод quq_CCCP
Ред. nvc123
» WarCraft 3 / Поиск пересечения вектора с ландшафтом
берёшь каждый конкретный случай и юзаешь подходящее решение
нафиг обобщать то что обобщить невозможно
» WarCraft 3 / Dmg
» WarCraft 3 / Jass New Gen Pack - Rebuild 1.4
советую переустановить их или отказаться от их использования
» WarCraft 3 / Поиск пересечения вектора с ландшафтом
тут нужно рассматривать каждый конкретный случай и адаптироваться под него