Модификация блинка Анти-мага запрещающая ему прыгать на хг и через хг

lufigan

Новичок
5 Апр 2020
8
0
Мне необходимо переписать блинк анти мага, добавив в него проверку на то, через что он блинкается. В случае, если он блнкается на хай граун/лоу граундю или через реку или гору то он должен появится на последней точке перед перепадом высот. Я встречался с такой механикой в roshpit champion, это полностью переписанное рпг, я не смог найти в этих километрах кода необходимый кусок с абилкой анти мага. Помогите, пожалуйста. Буду рад любой помощи
 

kenko

Новичок
5 Апр 2020
7
2
Проект
крутой
Может не возвращает назад, а перемещает в минимальную точку от хг? Хотя наверное и так и так можно реализовать.
 

lufigan

Новичок
5 Апр 2020
8
0
Как получить информацию о том на какой высоте находится точка на карте, куда я хочу использовать блинк?
 

Дикий Пёс

Друзья CG
28 Июн 2017
302
67
Проект
Petri Reborn
любая точка это вектор, в таблице параметр высоты это z
point.z
 

lufigan

Новичок
5 Апр 2020
8
0
и если у меня имеется только x и y благодаря этим переменным можно создать вектор и по вектору узнать z?, Если нельзя, то как мне узнать координату z в точке x=100 y=200(условно)
 

lufigan

Новичок
5 Апр 2020
8
0
Я веще пытаюсь сделать блинк. Мне необходимо разделить линию блинка на 10 частей и проверить координату z в каждой точке, но у меня координата остается той, на которой я первый раз использовал блинк, как сделать что бы я получал координаты z через которые должен пролетать блинк??
Vector 00000000001D7618 [-74.813110 -25.242798 512.000000] Vector 00000000001D23B0 [-4980.999023 -1680.645996 128.000000]
Vector 00000000001C6A18 [-149.626221 -50.485596 512.000000] Vector 00000000001D7648 [-4980.999023 -1680.645996 128.000000]
Vector 00000000001BFB38 [-224.439331 -75.728394 512.000000] Vector 00000000001DA268 [-4980.999023 -1680.645996 128.000000]
Vector 00000000001E5F68 [-299.252441 -100.971191 512.000000] Vector 00000000001CB6D0 [-4980.999023 -1680.645996 128.000000]
Vector 00000000001D3868 [-374.065552 -126.213989 512.000000] Vector 00000000001D6C00 [-4980.999023 -1680.645996 128.000000]
Vector 00000000001DE490 [-448.878662 -151.456787 512.000000] Vector 00000000001E04E0 [-4980.999023 -1680.645996 128.000000]
Vector 00000000001D1C58 [-523.691772 -176.699585 512.000000] Vector 00000000001D1B68 [-4980.999023 -1680.645996 128.000000]
Vector 00000000001DC450 [-598.504883 -201.942383 512.000000] Vector 00000000001DC360 [-4980.999023 -1680.645996 128.000000]
Vector 00000000001C5680 [-673.317993 -227.185181 512.000000] Vector 00000000001C5590 [-4980.999023 -1680.645996 128.000000]
Vector 00000000001E5D10 [-748.131104 -252.427979 512.000000] Vector 00000000001E5C20 [-4980.999023 -1680.645996 128.000000]
Vector 00000000001CC460 [-822.944214 -277.670776 512.000000] Vector 00000000001CC370 [-4980.999023 -1680.645996 128.000000]
128 128

Я стою на 128, а мне пишет 512. Я пробовал пописать по разному, это последняя версия кода, которая у меня сейчас. Помогите, я хз что я делаю не так

Код:
function antimage_blink_lua:OnSpellStart()
    -- unit identifier
    local caster = self:GetCaster()
    local point = self:GetCursorPosition()
    local origin = caster:GetOrigin()
    -- load data
    local max_range = self:GetSpecialValueFor("blink_range")



    -- determine target position
    local direction = (point - origin)
    if direction:Length2D() > max_range then
        direction = direction:Normalized() * max_range
    end
    local result = origin
    local checkCount = direction:Length2D() / 10 --Разделил дальность блинка на 10 частей, что бы проверить кооридинаты каждой
   
   
    ------ Как сделать эту часть? -------
    for i=1, 11, 1 do
        local originGround = GetGroundPosition(caster:GetOrigin(),nil)
        local step = originGround:Normalized() * checkCount * i
        print(GetGroundPosition(Vector(step.x, step.y), caster),originGround)
    end
    --------------------------------------
   

    -- teleport
    --print(direction,distance)
    print(GetGroundHeight(origin, caster),GetGroundHeight(origin + direction, caster))
   
    if GetGroundHeight(origin, caster) == GetGroundHeight(origin + direction, caster) then
        FindClearSpaceForUnit( caster, origin + direction, true )
    end
    -- Play effects
    self:PlayEffects( origin, direction )
end
 

Вложения

Реклама: