Aws, провел аналогию и скинул видео для Ельнура, чтобы он понял что это быстрый каст, а не 5 секунду колдование...
Потому что отдельную гифку с суммоном для одного Ельнура я щас не хочу делать... Aws:
Aws, я не делаю аналог клинкса, как можно в дефолтном призыве пушек видеть клинкса?
Это дота головного мозга...
У меня нет цели чтобы кто-то что-то увидел, а если увидит, то что хочет, то какая разница?
Proshel_Doty, Да, так что мы не зря ресурсов наклепали, это на голову выше по качеству от предыдущего конкурса, и + открытая разработка, ведь некоторые советы и критика могут направить ещё не до конца сформированные концепты в нужное русло
(и вот мы уже работаем как комьюнити, а не как фулл соло авторы)
Proshel_Doty, не всё работает, конечно по сравнению с текущей дотой2, она очень отстала, но на ровней с 1 дотой и до патча 7.00, она была лучше в техническом плане
Proshel_Doty, Для него не существует других игр кроме моба... хотя вот это механика такого суммона соответствует Хону, в Доте2 пангольер примерно также работает, только стрелку убрал ибо её почему то перекашивает пока при близкой дистанции
таймкод 174 (2:54), тут конкретно механика установки суммона, которую я хочу повторить, не отпуская курсора можно крутить положение
Кстати при условии что это было 3 года назад, активности было меньше... не вижу темы обсуждения где люди спросили бы - А на чем героя то делать?
И надо было конкурс переименовать в "Конкурс героев ДЛЯ Доты2"... Может такая тема с обсужденим и была, но без неё как то вырвано из контекста, и , получается буд-то участники ничего не поняли, им сказали делайте на доте, а они взяли и сделали на варике (злодеи), и да работ нигде нет, приходиться довольствоваться лишь видосом =(
Больше кода дай, и надо уйти от точек и сделать на координатах, я вообще не помню что такое полярка на точках
И тогда можно будет заюзать, то что я скидывал
мой код не работает скоре всего.. ибо тут чего-то не хватает, кароче надо в call BlzSetSpecialEffectHeight( Leffect, GetLocationZ(Ltargetpoint) +100) передать высоту смещённой точки Ltargetpoint
где nz нужная высота, можно сделать GetTerrainZ(nx, ny)
В рефордже вообще новая функция для высоты есть но я старьём пользуюсь, лень проверять чёт, но скорее всего тоже самое там
Рекомендую использовать библиотеку Math
---
--- Generated by EmmyLua(https://github.com/EmmyLua)
--- Created by Bergi.
--- DateTime: 10.01.2020 23:44
---
---@param x real
---@param y real
---@return boolean
function InMapXY(x, y)
return x > GetRectMinX(bj_mapInitialPlayableArea) and x < GetRectMaxX(bj_mapInitialPlayableArea) and y > GetRectMinY(bj_mapInitialPlayableArea) and y < GetRectMaxY(bj_mapInitialPlayableArea)
end
---@param x real
---@param distance real
---@param angle real radian
---@return real
function GetPolarOffsetX(x, distance, angle)
return x + distance * math.cos(angle)
end
---@param y real
---@param distance real
---@param angle real radian
---@return real
function GetPolarOffsetY(y, distance, angle)
return y + distance * math.sin(angle)
end
---@param x real
---@param distance real
---@param angle real degrees
---@return real
function MoveX(x, distance, angle)
return x + distance * math.cos(angle * bj_DEGTORAD)
end
---@param y real
---@param distance real
---@param angle real degrees
---@return real
function MoveY(y, distance, angle)
return y + distance * math.sin(angle * bj_DEGTORAD)
end
local GetTerrainZ_location = Location(0, 0)
---@param x real
---@param y real
---@return real
function GetTerrainZ(x, y)
MoveLocation(GetTerrainZ_location, x, y)
return GetLocationZ(GetTerrainZ_location)
end
---@param target unit
---@return real
function GetUnitZ(target)
MoveLocation(GetTerrainZ_location, GetUnitX(target), GetUnitY(target))
return GetLocationZ(GetTerrainZ_location) + GetUnitFlyHeight(target)
end
---@param target unit
---@param z real
function SetUnitZ(target, z)
UnitAddAbility(target, FourCC('Aave'))
UnitRemoveAbility(target, FourCC('Aave'))
MoveLocation(GetTerrainZ_location, GetUnitX(target), GetUnitY(target))
SetUnitFlyHeight(target, z - GetLocationZ(GetTerrainZ_location), 0)
end
---@param h real максимальная высота в прыжке на середине расстояния (x = d / 2)
---@param d real общее расстояние до цели
---@param x real расстояние от исходной цели до точки, где следует взять высоту по параболе
---@return real
function ParabolaZ (h, d, x)
return (4 * h / d) * (d - x) * (x / d)
end
---@param zs real начальная высота высота одного края дуги
---@param ze real конечная высота высота другого края дуги
---@param h real максимальная высота на середине расстояния (x = d / 2)
---@param d real общее расстояние до цели
---@param x real расстояние от исходной цели до точки
---@return real
function GetParabolaZ(zs, ze, h, d, x)
return (2 * (zs + ze - 2 * h) * (x / d - 1) + (ze - zs)) * (x / d) + zs
end
---@param xa real
---@param ya real
---@param xb real
---@param yb real
---@return real
function DistanceBetweenXY(xa, ya, xb, yb)
local dx = xb - xa
local dy = yb - ya
return math.sqrt(dx * dx + dy * dy)
end
---@param xa real
---@param ya real
---@param za real
---@param xb real
---@param yb real
---@param zb real
---@return real
function DistanceBetweenXYZ(xa, ya, za, xb, yb, zb)
local dx = xb - xa
local dy = yb - ya
local dz = zb - za
return math.sqrt(dx * dx + dy * dy + dz * dz)
end
---@param xa real
---@param ya real
---@param xb real
---@param yb real
---@return real radian
function AngleBetweenXY(xa, ya, xb, yb)
return math.atan(yb - ya, xb - xa)
end
---@param a real radian
---@param b real radian
---@return real radian
function AngleDifference(a, b)
local c---@type real
local d---@type real
if a > b then
c = a - b
d = b - a + 2 * math.pi
else
c = b - a
d = a - b + 2 * math.pi
end
return c > d and d or c
end
--@author https://xgm.guru/p/wc3/warden-math
---@param a real degrees
---@param b real degrees
---@return real degrees
function AngleDifferenceDeg(a, b)
a, b = math.abs(a, 360), math.abs(b, 360)
local x---@type real
if (a > b) then
a, b = b, a
end
x = b - 360
if (b - a > a - x) then
b = x
end
return math.abs(a - b)
end
-- Находит длину перпендикуляра от отрезка, заданного xa, ya, xb, yb к точке, заданной xc, yc
--@author https://xgm.guru/p/wc3/perpendicular
---@param xa real
---@param ya real
---@param xb real
---@param yb real
---@param xc real
---@param yc real
---@return real
function Perpendicular (xa, ya, xb, yb, xc, yc)
return math.sqrt((xa - xc) * (xa - xc) + (ya - yc) * (ya - yc)) * math.sin(math.atan(yc - ya, xc - xa) - math.atan(yb - ya, xb - xa))
end
--@Hate https://xgm.guru/p/wc3/241479
---@param source unit
---@param x real
---@param y real
function SetUnitPositionSmooth(source, x, y)
local last_x = GetUnitX(source)
local last_y = GetUnitY(source)
local bx
local by
--print("Смус выполнена")
SetUnitPosition(source, x, y)
if (RAbsBJ(GetUnitX(source) - x) > 0.5) or (RAbsBJ(GetUnitY(source) - y) > 0.5) then
SetUnitPosition(source, x, last_y)
bx = RAbsBJ(GetUnitX(source) - x) <= 0.5
SetUnitPosition(source, last_x, y)
by = RAbsBJ(GetUnitY(source) - y) <= 0.5
---
local dx=math.abs(x-last_x)
if dx>=100 then
print("Телепорт бак в функции Smooth"..dx )
end
---
if bx then
SetUnitPosition(source, x, last_y)
elseif by then
SetUnitPosition(source, last_x, y)
else
SetUnitPosition(source, last_x, last_y)
end
end
end
--Bergi
function GetUnitXY(unit)
return GetUnitX(unit),GetUnitY(unit)
end
function MoveXY(x,y, distance, angle)
return x + distance * math.cos(angle * bj_DEGTORAD),y + distance * math.sin(angle * bj_DEGTORAD)
end
function UnitCollisionOFF(unit)
UnitAddAbility(unit,FourCC('A000'))
IssueImmediateOrder(unit,"windwalk")
end
function AngleBetweenUnits(caster,target)
local yb,ya,xb,xa=GetUnitY(target),GetUnitY(caster),GetUnitX(target),GetUnitX(caster)
return Atan2BJ(yb - ya, xb - xa)
end
function math.clamp (inb, low, high) --
return math.min( math.max(inb, low ), high )
end
function math.lerp(a, b, t)
return a + (b - a) * t
end
function repeatN(t, m)
return math.clamp(t - math.floor(t / m) * m, 0, m)
end
function lerpTheta(a, b, t)
local dt = repeatN(b - a, 360)
if dt>180 then dt=dt-360 end
return math.lerp(a, a + dt, t)
end
function AngleBetweenXYZ(x1, y1,z1, x2, y2,z2)
local a=x1*x2+y1*y2+z1*z2
local b=math.sqrt(x1*x1+y1*y1+z1*z1)
local c=math.sqrt(x2*x2+y2*y2+z2*z2)
-- print("a"..a)
-- print("b"..b)
-- print("c"..c)
return math.acos(a/(b*c))
end
а сорь у тебя jass ну разницы нет, загугли на сайте миллион вариаций GetPointZ GetTerrainZ, суть там одна, двигаем локацию глобальную и читаем у неё GetLocationZ
и в call BlzSetSpecialEffectPitch( Leffect, 45.00 ) нельзя передать угол, от требует радианы, поэтому нужен конверт, я же писал пример там math.rad
Я знаю только как эффектам менять, и вроде триггерно только для них и работает...
Field 90% не работают, не трогай их, я дам знать когда они заработают =)
Смотрим картинку
» WarCraft 3 / Не заменяются текстуры склонов
» WarCraft 3 / [Конкурс героев] Адмирал П
Потому что отдельную гифку с суммоном для одного Ельнура я щас не хочу делать...
Aws:
» WarCraft 3 / [Конкурс героев] Адмирал П
Это дота головного мозга...
У меня нет цели чтобы кто-то что-то увидел, а если увидит, то что хочет, то какая разница?
» WarCraft 3 / [Конкурс героев] Адмирал П
» XGM Конкурсы / Конкурс героев
(и вот мы уже работаем как комьюнити, а не как фулл соло авторы)
» XGM Конкурсы / Конкурс героев
» WarCraft 3 / [Конкурс героев] Адмирал П
» WarCraft 3 / Перевод карты с более новой версии Warcraft на более старую
Ред. Берги
» WarCraft 3 / [Конкурс героев] Адмирал П
» WarCraft 3 / Call of The Swarm: Remake Edition
» XGM Конкурсы / Конкурс героев
И надо было конкурс переименовать в "Конкурс героев ДЛЯ Доты2"... Может такая тема с обсужденим и была, но без неё как то вырвано из контекста, и , получается буд-то участники ничего не поняли, им сказали делайте на доте, а они взяли и сделали на варике (злодеи), и да работ нигде нет, приходиться довольствоваться лишь видосом =(
Ред. Берги
» WarCraft 3 / Special Effect Height + рельеф (часть вторая)
И тогда можно будет заюзать, то что я скидывал
call BlzSetSpecialEffectHeight( Leffect, GetLocationZ(Ltargetpoint) +100) передать высоту смещённой точки Ltargetpoint
» WarCraft 3 / [Конкурс героев] Адмирал П
» XGM Конкурсы / Конкурс героев
» WarCraft 3 / [Конкурс героев] Адмирал П
» WarCraft 3 / Call of The Swarm: Remake Edition
» WarCraft 3 / Call of The Swarm: Remake Edition
» Лучший блог / Идея мини-игры
» WarCraft 3 / Нужна модель? - Вам сюда!
» WarCraft 3 / Special Effect Height + рельеф
Ред. Берги
» WarCraft 3 / Special Effect Height + рельеф
GetTerrainZ(nx, ny)
В рефордже вообще новая функция для высоты есть но я старьём пользуюсь, лень проверять чёт, но скорее всего тоже самое там
Рекомендую использовать библиотеку Math
есть в мой вариант чутка дополненный
» WarCraft 3 / Pitch, roll
Ред. Берги
» WarCraft 3 / Pitch, roll
И они даже круче работают в этом
Ред. Берги
» WarCraft 3 / Pitch, roll
Field 90% не работают, не трогай их, я дам знать когда они заработают =)
Смотрим картинку