27

» WarCraft 3 / Геометрия: Интерактивная статья

nazarpunk, что расстояние между углами не прокатила?
Гитхаб имеет поддержку для мобилы? Просто на мобиле ужасно трудно визуализировать эти чуда
27

» WarCraft 3 / Антиспелл

Но на логику вроде все верно.
Лучше наносить урон от имени кастера, а не даймика. кастер получает опыт, и пр

Потому что внутри лупа.
что то не помню такого. Это обнова?
27

» WarCraft 3 / Антиспелл

local unit x = CreateUnit(GetOwningPlayer(caster), 'h00Z', GetUnitX(u), GetUnitY(u), 1.00)
Почему эта строчка не вначале кода. В jass все локалки инициируются в верху функц. Как у вас прокатило?

И здесь
local unit x2 = CreateUnit(GetOwningPlayer(caster), 'h00Z', GetUnitX(u), GetUnitY(u), 1.00)
Это же не луа
27

» WarCraft 3 / Антиспелл

Так без примера сложно сказать.. можно только тыкнуть. Ну, возможна, надо делать задержку.. таймером после каста замедления даймиком.
Но возможна задержка нужно
  1. некоторые ивенты срабатывают не сразу. Например, событие получение урона. Оно предвищает, что урон сейчас должен прийти, а не то что "он пришел", его нет пока. Или событие - дроп итема => дропающий предмет еще в инвентаре. И много похожих ивентов,так далее. Сделано спецом, чтобы удобно было манипулировать данными. Пример, как узнать из какого слота выпал итем, что за юнит и пр. В рефордже урон можно было изменять, и определять итд.
  2. бафф после каста возможна не сразу исчезает/появляется. Нужна задержка и здесь. Это игровой момент.
  3. многие другие вещи. Например, мне надо было дропнуть все итемы с инвентаря или продать все итемы. Это можно сделвть мгновенно, но правда, нужна была задержка 0.00 сек после каждого приказа
На все при все нужно задержка 0.00 сек. Посмотри сам. Если не помогает, попробуй задержку увеличить. Тут зависит от кастера, заклинания или приказа. Видишь, вот дроп юнит не может мгновенно сделать, так и продать тоже. Теперь, разбираемся с заклинаниями. Тут у каждого заклинания есть особенности, они могут не сразу кастовать. И ещк у юнитов есть задержки анимации, т.е. он должен начать махать
Зачем юнитам задают задержки анимациям
Как настроить дамми каст
27

» WarCraft 3 / Проверка нет ли врагов в аренах

У представь, что у каждого игрока своя арена. И тут надо проверить закончилась ли волна.
При создании криппа на арене игрока записываем его в группу. При смерти проверяем из какой группы. Удаляем (не оьязательно удалять, сами удаляться при разложении. но для счетчика важно).
Предлагаю разные способы проверки, что на арене не осталось крипов:
  1. проверка группы крипов. Проверять сколько осталось в группе живых
  2. можно завести счетчик. Переменную. Создаем циклом в начале 20 шт. А при смерти высчитыватт. Если в счетчика осталось ноль, значит, что крипов не осталось
Недостаток системы - Трупы, суммонеры. Их не обязательно удалять, тк труппы могкт быть использованы крипами. Воскрешены, или съедены. Т.е. число может измениться. Еще могут и маги призвать. Надо как то на этой арене отслеживать призывы.
  1. это отслеживать вход/выход на арену + счетчик из 2 способа. Можно ректами/регионами как то пробовать. Когда труп исчезает из арены, значит, что умер
Упорядочни базу.
Они работают, но они какие то большие и я уверен что есть более простой способ сделать эти триггры
Можно цикле в цикле сделвть, и триггеров будет меньше. Для начала упорядочни базу. Для квждого игрока сделать бд, например для каждого игрока свой рект.

Здесь есть система как отследитт удаления
. Но не думаю, что вам это нужно запариваться. Достатояно чекнуть, что юнит покинул рект
27

» WarCraft 3 / blp res checker

Вау, поисон уже научился программы писать.. а я не умею

Берги, а разве модельки варкрафта в качестве текстур blp не юзают?
27

» WarCraft 3 / Не пустая клетка.

Вроде, триггером ловят на разрушение декорации, а далее либо создают нв месте разрушенной декорации юнита, либо на место декорации перемещают юнита.
27

» WarCraft 3 / Геометрия: Интерактивная статья

Но там такой задачи с симметричной точкой нет. НО там есть другие примеры, где в качечтве вводных данных были коэ-ты ax + bx + c=0 . Или пример нельзя использовать обратные тригонометрические функц. Потом я гуглил, и находил вкусные формулы. Значит, что это полезно, и где то применяются. Плюс, можно доказывать чисто коэ-тами условия коллинеарности, перпендикулярности и др чисто коэ-тами.

Но здесь есть задача с симметричной точкой.. но нет возможности проверить, и примеров тоже нет.

Да и как ты писал выше - нужно решать прикладную задачу. Какую именно задачу ты решал с помошью ax + bx + c = 0?
Ни какую. Я слишком туп для этого
27

» WarCraft 3 / Геометрия: Интерактивная статья

Была у меня тема создать симметричную точку относительно прямой.
У прямой есть угол AB. Нужно сначала найти кратчайшее расстояние от точки до прямой, в нашем случае это B. Потом просто повернуть точку на 𝜋 относительно B.
Ну, я понимаю как это сделать.. однако, это бывает на функцию с коордами много вычислении приходит. Плюс, исходные данные задачи были другие у меня
  • прямая e выражена коэ-тами a,b,c
  • точка px,py
Найти симметричную x,y от px,py
Ясно что относительно точки p строится перпендикуляр от прямой e. И потом поворот. Ну, у нас коэ-ты. Я короче, не знал как проверить правильно ли вышло. Я где-то надыбил формулы перехода a,b,c => точку, углы, и проверял вроде работает. А правильно, это уже неизвестна. Не всегда можно проверить. Формально сделал несколько проверок, и работает. На деле, я попробовал тест сделвть относительно горизонтальной e (коэ-ты некоторые обнулил),
Пусть в общем уравнении прямой один из коэффициентов A или B – нулевой, а C ≠ 0, т.е. уравнение прямой имеет вид
Ax+C = 0 или By+C = 0.
Эти уравнения можно записать в виде
x = a и y = b .
Таким образом, прямая в уравнении которой отсутствует одна из координат, параллельна оси отсутствующей координаты
Почему я брал горизонтальные или вертикальные прямые? Легче проверять симметричные точки. Когда прямая под углом, сложно проверить
Ну и вывод: и все пошло по одному месту.. там и деление на ноль, и кучу неточностей. Формулы нуждаются в переделках. Проверки пришллсь добавить. Все получилось. А и в координатах знаки перевернуты.. мне показалось, что что то не так и забросил

исходный код
Без всяких правок, какой есть
  1. относительно прямой e ищем перпендикуляр pe, тут коэф-ты a,b местами меняем, не трогая c
  2. ищем точку пересечения x0,y0 прямых e и pe (не допустить деления на ноль). Она и будет точкой перпендикуляра
  3. потом симметричная (тут я даже не понял, что я делаю. Кажется понял, помните когда ищем середину отрезка x0=(x1+x2)/2, y0=(y1+y2)/2. Только теперь, надо найти x1,y1 или x2,y2
--вектор нормали (перпендикулярный)
function NormalVectorLine(a,b,c)
	return a,b
end

function PerpendicularLine(x1,y1,a,b,c)

	--снимаем вектор нормали из ax+by+c=0
	local x2,y2=NormalVectorLine(a,b,c)
	
	--уравнение составим по точке x1,y1 и направляющему вектору x2,y2
	
	--уравнение перпендикулярной линии ax1+by1+c1=0 
	local a1,b1,c1 = (y2-y1),(x1-x2),a*(y2-y1)+b*(x2-x1)
	
    --проверка, что линия перпендикулярна
	local p = a1*(x2-x1) + b1*(y2-y1)
	if p==0 then 
	    print("перпедикулярны "..p)
	else
	    print("не перпедикулярны "..p)
	end
	
	return a1,b1,c1
end
function LinesIntersect(a1,b1,c1, a2,b2,c2)
	local x = (b1 * c2 - b2 * c1) / (a1 * b2 - a2 * b1);
	local y = (a2 * c1 - a1 * c2) / (a1 * b2 - a2 * b1);
	return x,y
end
function PointOnLine(x,y,x1,y1,x2,y2)
	return(x - x1) * (y2 - y1) - (y - y1) * (x2 - x1)==0
end
function SymmetricalPointAboutLine(x,y,a,b,c)
	--Находим прямую line 2, которая перпендикулярна текущей прямой line 1.
	local a1,b1,c1=PerpendicularLine(x,y,a,b,c)
	--точка пересечения прямых
	local x0,y0=LinesIntersect(a1,b1,c1, a,b,c)
	--теперь находим симметричную точку, как известно x0,y0 - середина точки
	local px,py=2*x0-x,2*y0-y
	
	if PointOnLine(px,py,x0,y0,x,y) then
		print('симметричная точка px,py принадлежит прямой line 2')
	else
		print('симметричная точка px,py не принадлежит прямой line 2')
	end
	--проверяем одинаковы ли отрезки
	if ((x-x0)^2+(y-y0)^2)^0.5 == ((px-x0)^2+(py-y0)^2)^0.5 then
		print('длины отрезков одинаковы, координаты px,py верны')
	else
		print('длины отрезков не равны, координаты px,py не верны')
	end
	return px,py
end
print(SymmetricalPointAboutLine(-1,1,3,4,-12))
27

» WarCraft 3 / Геометрия: Интерактивная статья

nazarpunk, вот еще один пример. Относительные повороты
Это полезно. Как поворачивать несколько снарядов относительно чего то. Или строить чего. Была у меня тема создать симметричную точку относительно прямой. В данных есть коорды точки, и уравнение прямой ax+by²+c=0. И там не уверен, что правильно решил в вычислительноц геометрии. Я попробовал, дебажить, она неверно работает.
27

» WarCraft 3 / Геометрия: Интерактивная статья

Редкая штука в варкрафте. Но для начала бы неплохо интерполяцию Безье показать. Да и другие функции плавности
Красивая визуализация кривой-безье
Потом Hate фаербол пускал по безье. rsfgd сделал пример. Сам в этом не разбираюсь, но формулы есть, тут все просто
Можно найти еще какое то применение движению? Но я видел, что некоторые не так применяют по скилам. Двигаются по кривым, словно там что-то еще меняется. Может меняются крайние точки? дико они сложны в применении. Контроль сложный. Время нужно.
Просто пулять снаряды из точки A в точку B проще через полярки с параболой.
Парабола не только дуга по z. Многие здесь привыкли ее использовать так. в действительности это так, 3-я поверхность
Ну это вообще на самое сладкое. Возможно. Им применение найти сложно именно в варкрафте.
Пытался я координаты мировые в экранные конвертировать. Там матрицы были. Ужас. 11, 21 это запомнилось)) плоскости и пр. Формулы были готовые. Но я не смог

примеры безье
линейная интерполяция = 1+1 - прямой отрезок
x = (1-t)*P0x + t*P1x
y = (1-t)*P0y + t*P1y
0 << t << 1
квадратичная интерполяция = 1+2+1 - кривая Безье по 3 точкам
x=(1-t)^2*P0x + 2*t*(1-t)*P1x + t^2*P2x
y=(1-t)^2*P0y + 2*t*(1-t)*P1y + t^2*P2y
0 << t << 1
кубическая интерполяция = 1+3+3+1 - кривая Безье по 4 точкам
x=(1-t)^3*P0x + 3*t*(1-t)^2*P1x + 3*t^2*(1-t)*P2x + t^3*P3x
y=(1-t)^3*P0y + 3*t*(1-t)^2*P1y + 3*t^2*(1-t)*P2y + t^3*P3y
0 << t << 1
t - время в процентах от 0 до 1.00
Думаю, что безье можно наделать в кучу точек. Но должен быть какой то шаблон точек? Или как?
Я вот пример квадратичную безье использую, то дуга получается не такой широкой. Нужно ли крайний угол еще в 2 раза отодвинуть или наделать больше точек. Так мне кажется, что чем больше точек, тем точнее кривая
27

» WarCraft 3 / XGM Autohost Bot. Голосование. Октябрь 2023

Я не в одну не поиграл, но проголосовал, "за" всем. Слава императору Тыще, королю Берги, его герцогу Поисону)
27

» WarCraft 3 / Геометрия: Интерактивная статья

Заказ на работу
nazarpunk, различных движении. Если нуб совсем тупой.
Прямое движение 2d
Прямое мгновеное движение 2d (время таймера снижено, частота периода увеличено)
Прямое ускоренное движение 2d (пример ускорения)
Прямое замедленное движение 2d (пример замедления)
Движение к цели 2d
Движение по кругу 2d
Движение по спирали 2d
Движение по кругу с угловым ускорением 2d
Можно было кнопочки добавить, чтобы изменять время таймера, скорость, ускорение, угол, угловая скорость, угловое ускорение. Пауза. Устанлвка снарядов: Кол-снарядов
Прямое движение 3d с учетом ландшафта
  • настройка dummy. Если брать его за снаряд. Когда он летит, он может не всегда принимает высоту нужную. Особенно над водой, под водой. это проще заменить эффектом
  • учет столкновении с препятствием, об стену и пр.
  • в 3d появляется 2 угол, это наклон над поверхностью. Можно какие-нибудь вводящие функции
Движение с Безье
Постепенно переходить к сложному, там от полярок к векторам, кватерионам.
Тут много еще чего добавить. Это еще не все. Было бы интересно засмотреться. Любо смотрелось
Мне вообще не понятны, когда юзеры говорят используй "векторы". Если они то же самое ичпользуют, только таймером изменяем. Пример офериста. Я понял как там. Вы имеет в виду систему векторов? Создается вектор, т.е. по простому это функц с вводными данными типа координат точки x,y,z. Это вектор? Мне кажется нет. Или dx,dy,dz проще? А где же позиция юнита? Это мы к нему вектор приделываем для удобства. Ну как пример статьи офериста подошел. Тут уже меняется способ работы, привычные полярки уходят. Просто неудобно зачем менять. Нету примеров, где вам удобно это юзать. Наверно нужно сравнение полярок и системы векторов. Типа это эффективно, меньше вычислении, меньше кода. Да ребят?
Еще мне не понятны матрицы. Таблицы эти. Это в кватерионах и проеб полный
И пр штучки дабы понять пользователю. Был хороший сборник всех примеров. И юзер понял бы какой снаряд ему нужен.😅 я шучу, это надо много времени 😕
27

» WarCraft 3 / Геометрия: Интерактивная статья

Чтоб можно было наглядно посмотреть, что она делает, освежить память и использовать.
Для этого и надо сделать несколько примеров с гифками.😉
27

» WarCraft 3 / Геометрия: Интерактивная статья

Ну, если этим знаниям есть применение. То будет хорошо освоены знвния, и труды. А если нет, то и подавно, забудешь.
Я когда сам пилил функции для различных задач, я сам учил математику. Надо задачу дать. Пример, я не знал, что ax+bx+c=0 можно описать прямую. Я столько лет в школе ее изучал, не пойми для чего. Решал уравнения )). А она вот как применяется. Коэффициенты еще помогают без тригонометрических функц проверять на параллельность, пересеченность и пр. Удобно же.
Те, кто готовые формулы юзает, не будет все это изучать. Он просто скопирует, и все.
27

» WarCraft 3 / Геометрия: Интерактивная статья

Здесь задача объяснить что происходит. К примеру в том же угле между точками я нигде не видел, почему в Atan2 передают разницу координат. А оказывется, что одна точка в 0,0 смещается.
Ну, обычному пользователю негде знания применить на практике, кроме как варкрафт. Я бы не стал изучать векторы в 4 классе, и умнее своих ровестников. Лишь, потому что заучил одну функцию наизусть. Вы говорите про свой опыт, но это так странно слышать
По-моему, тут векторы => учим векторам, и очевидно почему Atan2, а не Atan, где делить на 0 нельзя было и др условности.

>> Что не так с UjAPI?
Ну реклама. мне не оч нрав, что здесь сложнее сборку с lua настроить. Я бросил 🥲
27

» WarCraft 3 / Геометрия: Интерактивная статья


Отлично поясняет что такое косинус, синус, котангенс, тангенс и др

В гитхабе интересно, что можно тоже анимировать это действо. Только это плохо получается. Это видимо для пк-шников?

Ссылаемся на это чудо ?
27

» WarCraft 3 / ToolTip (всплывающая подсказка)

    local tooltip = BlzGetOriginFrame(ORIGIN_FRAME_UBERTOOLTIP, 0)
    BlzFrameClearAllPoints(tooltip)
    BlzFrameSetScale(tooltip, 0.001)
    BlzFrameSetAbsPoint(tooltip, FRAMEPOINT_BOTTOMRIGHT, 0.0, 0.0)
27

» WarCraft 3 / Геометрия: Интерактивная статья

Ну, почему нет тематической статьи с гифками и скринами, и кодом, плюс карта.
Двигать по прямой (нахождение угла между точками (два способа через координаты и через atan2))
Понятно, что есть пример каста фаербола. Позиция кастера x1,y1 и позиция цели x2,y2. Но, тут просто движеник по прямой. Нужны таймер, хэш-таблица
  1. можно пример на гуи и jass
  2. пример движение в 3d с учетом ландшафта, и предлов карты. Была где то статья с хайва, там хорошо объясняли как настроить dummy. Сейчас можно это спецэффектом заменить. Это уже никому не нужно? Ладно, дам ссылку на пак наработок и пример с препятствием
  3. пример с ускорением или замедлением. Можно ввести такой параметр. Пример, у вас движется снаряд, и постепенно скорость падает, и падает. Пока совсем не остановится. Тут нужно переменную ускорение завести. Пример хоть пример не очень, но подойдет
  4. волна, стена. Нужно при смещении снаряда на новую позицию выделять всех юнитов в группу, и чекать. И наносить ущерб. Так при движении столба огня наносится ущерб (как пример). Тема формула перпендикуляра от прямой
Несколько примеров есть в статьях
Движение к цели (каждый раз находить угол)
Продолжение предыдущего задания. Ну, всегда ли нужна наводка на цель (я про нахождение угла)? Что если кастер кастанул в точку или в статичную цель?
  1. каст в точку. Обычно, тут таймером периодически считаем скока осталось до цели, и потом попадение.. и взрыв. Каждый раз считаем расстояние до цели, или процент оставшего пути
  2. следование снаряда за целью. Тема, где в качестве движущихся целей берется двигающий юнит. Периодически нужно находить угол.. и прямая изменяет угол. Что это дает? Снаряд медленно поворачивается, появляется некое следование за целью. Однако, тут нужно учесть это скорость снаряда.. всегда ли необходима эта наводка? Просто юниты бывают оч медленно двигаются, что снаряд успевает долететь до цели. Бумеранг бумеранг долетает до точки, и потом с наводкой возвращается к кастеру
  3. выделение снарядом. Может быть снаряд двигается, и задевает ближайщие цели. Типа пик юнитов вокруг снаряда.
Движение по кругу
  1. Ну, тут понятно, что изменяем в формулах про полярные координаты угол, а длину оставить статичной. Можно таймером показать вращение снаряда вокруг цели
  2. движение по спирали. Тут тоже самое, но изменяется еще и длина. Хотя, я видел другие примеры с интерполяцией
  3. пример с угловым ускорением. У меня где-то есть карта пример
Движение по параболе (для прыжков)
Есть пример у меня примеры
Полет феникса по параболе
Прыжки уже было оч много примеров с прыжками. Но особо позабавили прыжки на уступки, и или перепрыгивания на возвышенное плато
вращение по дуге??
движение по безье
щит: отталкивание и непроходимость
Обращаю внимание на интересный аспект: отталкивание (по сути это тоже самое прямое движение, только отдаляем) и непроходимая область
отталкивание
Тоже самое отталкивание цели, только вот цель еще при отдалении задевает других, и также отталкивает
xgm.guru/p/wc3/128038
стрельба
Тут имеется в виду что можно создавать собственную систему стрельбы из снарядов. Зачем это нужно? Ну, может вы захотите сделать так, чтоб снаряды врезались об щиты или промахивались?
Наработка
Объяснение по тут вам нужно посмотреть, что такое "буфер области движения". Все написано. Это поможет разработать похожую систему, а мб вы измените
рикошеты
Сужение зоны как pubg
искусственный рельеф
Есть интересный пример виртуального рельефа . Очень часто люди просят примеры наработок ходьбы под мостом и пр. Возможно, можно переделать это так, но это оч огромная работа. Жаль, что без примера. Но самим можно это создать
поиск участков строительства, переборы участков, многоугольники
Устройство карты, и код выбора Эта было только мое начало. Поэтому строго не судить. На хайве где-то откопал код, который тикает каждую точку. Я только тогда начал понимать, что всю работу выполнять надо переборами циклами итд. Раньше казалось, что циклы обязательно приведут к лагам и вылетам, но со временем научился. Автор с хайва там с шагом 16, 32 тикает каждую точку
Наводка порчи и тут завершенное Порча один из похожих проектов. Тогда это было оч классной идеей. Это один из моих начинании.
Многоугольники тут в самой статье приложены формулы, и даже с пояснениями изложены. Сама карта является продолжением моего чуда. У меня созрел такой план: у каждого фермера должен быть участок, и он его может покупками расширять или отдавать
Как в цивилизации.. почти.. без многоугольника тут бы не обошлось. Была даже шпаргалка я уже запутывался, а система плохо пахала. Честно, я начал уставать от формул
Захват и контроль земли эта система продолжение предыдущей. Vlod уже с нуля переделал, мне было сложно понять код. Работает она с некоторыми ошибками.. Vlod обещал исправить, но так и забили
Генератор ландшафта
Как создать конусные заклинания
Надеюсь, что это. Не помню.
27

» WarCraft 3 / Soviet Strike

ShadowNinja, ваша рецензия мне понрав. Единственное, что не нрав, что советует все делать на only английском. Поэтому лайк вам не поставил. Хотя ты прав, аудитория слишком мала, сказал бы дохлая.

Вообще, я думал это очередной среднечок. Ну, а увидел описание, и скриншоты.. сам бы сыграл бы. Но у меня варкрафта уже нет
27

» XGM Конкурсы / Большой Турнир Ландшафтеров 2023

Можно было разделить карту на клеточки, и потом каждый кодом рисует ланд