Спелл, который будет временно удваивать любое постепенное движение юнита (обычную ходьбу, толчки чем-то типа форстаффа и т. п. будут двигать его вдвое дальше).
Будет таймер с малым периодом.
Будет запоминать X и Y юнита и возвращать их определенный период.
Будут такие переменные:
u5 - юнит, доставаться из хэндла
x2 - возвращенная СТАРАЯ координата юнита X из хэндла
y2 - возвращенная СТАРАЯ координата юнита Y из хэндла
local real x = GetUnitX(u5)
local real y = GetUnitY(u5)
local real x3
local real y3
УДВОЕНИЕ ПОСТЕПЕННОГО СДВИЖЕНИЯ
...
УДВОЕНИЕ ПОСТЕПЕННОГО СДВИЖЕНИЯ - закрыто.
Вместо ... нужен код, который бы подсчитывал дистанцию между старыми координатами юнита и новыми и, если она больше 0, но меньше 200, определял вдвое дальше от дистанции в направлении сдвига новые координаты x3 и y3 сдвигал юнита на вдвое дальше в том же направлении. x3 и y3 для этих новых координат и нужны, на них юнит и должен попасть.
Потом в любом случае текущие координаты X и Y юнита, было сдвижение или нет, будут записываться в хэндл обратно и возвращаться как x2 и y2, и все по новой до завершения действия спелла. Все остальное я там самостоятельно сделаю.
Прошу помочь с написанием кода вместо ..., все необходимые переменные приведены выше, т. к. трудности, с точками не так давно работаю.

Это как без корня?
dx = x - x2
dy = y - y2
d2 = dx * dx + dy * dy
if (d2 < 40000) {
    x3 = x + dx
    y3 = y + dy
}
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
30
код, который бы подсчитывал дистанцию между старыми координатами юнита и новыми
Немного поизображаю DioD'а:
Теорема_Пифагора.

открыть после прочтения
Вообще, теорема Пифагора очень полезная штука, можно в любой мерности находить расстояния.
    float M_Distance(float x1, float y1, float z1, float x2, float y2, float z2) {
        float deltaX = x1 - x2
        float deltaY = y1 - y2
        float deltaZ = z1 - z2
        return SquareRoot(Pow(deltaX, 2) + Pow(deltaY, 2) + Pow(deltaZ, 2))
    }
Ещё советую почитать: Теорема_синусов.
Этот комментарий удален
14
Если вы у мамы оптимизаторы можно обойтись без sqrt.
Ето как без корня?
30
Это как без корня?
dx = x - x2
dy = y - y2
d2 = dx * dx + dy * dy
if (d2 < 40000) {
    x3 = x + dx
    y3 = y + dy
}
Принятый ответ
14
Так ты ниже должен использовать значение корня, а не только в условии
29
В первом варианте кода d2 нигде не используется ниже.
30
а разве он не войдет в рекурсию?
Ни одного цикла или вызова функции, каким образом там рекурсия закрутится?
18
Clamp,
все по новой до завершения действия спелла.
т.е. по сути постоянная запись через таймерр в хендл
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.