Спавн крипов, и их пути.

logica

Пользователь
27 Июн 2021
56
7
Проект
DotaRoyale
Хочу сделать для своей кастомки пути крипов, как в классическом моде. Кому не трудно объясните тонкости и если есть возможность поделитесь скриптами.
 
Последнее редактирование:

logica

Пользователь
27 Июн 2021
56
7
Проект
DotaRoyale
Сделал пути юнитам но столкнулся с проблемой, одни ходят нормально, а другие в слоу мо.
Как исправить данный баг ?
 

stranger568

Активный
7 Сен 2015
113
28
bmemov.ru
Проект
Birzha Memov
Сделал пути юнитам но столкнулся с проблемой, одни ходят нормально, а другие в слоу мо.
Как исправить данный баг ?
Я выше отписал библиотеку которая лучше работает
Подключаешь ее в addon_game_mode через require
и после крипам указываешь Крип:SetInitialWaypoint("Начальная точка пути")
 
  • Нравится
Реакции: logica

logica

Пользователь
27 Июн 2021
56
7
Проект
DotaRoyale
Я выше отписал библиотеку которая лучше работает
Подключаешь ее в addon_game_mode через require
и после крипам указываешь Крип:SetInitialWaypoint("Начальная точка пути")
Спасибо, щас опробую отпишу результат.
 

logica

Пользователь
27 Июн 2021
56
7
Проект
DotaRoyale
Скрипт работает, но крипы начали застревать друг в друге и перестали атаковать.
Но дойдя до последнего waypint'a начинают атаковать.
 

stranger568

Активный
7 Сен 2015
113
28
bmemov.ru
Проект
Birzha Memov
добавь modifier_phased чтоб не застревали
чтоб атаковали замени в скрипте MoveToPosition на MoveToPositionAggressive
 
  • Нравится
Реакции: logica

logica

Пользователь
27 Июн 2021
56
7
Проект
DotaRoyale
Поменял как вы сказали, но чет не пошло)
function MoveToNextCornerThink(unit, corner_name)
if unit:IsNull() or not unit:IsAlive() then return nil end

if unit.current_corner == nil then
unit.current_corner = Entities:FindByName(nil, corner_name)
if unit.current_corner == nil then
print("path corner with name of '"..corner_name.."' not exist!")
return
end
end

local current_corner = unit.current_corner
local next_corner = current_corner.next_corner or nil
local point_corner = unit.current_corner:GetAbsOrigin()
local point_unit = unit:GetAbsOrigin()
local vector_dist = (point_corner - point_unit):Length2D()

if vector_dist < 25 then
if next_corner then
unit.current_corner = next_corner
else
print("next corner for '"..current_corner:GetName().."' not exist!")
return
end
else
unit:MoveToPositionAggressive(point_corner)
end


return 0.1
end
 

stranger568

Активный
7 Сен 2015
113
28
bmemov.ru
Проект
Birzha Memov
Поменял как вы сказали, но чет не пошло)
function MoveToNextCornerThink(unit, corner_name)
if unit:IsNull() or not unit:IsAlive() then return nil end

if unit.current_corner == nil then
unit.current_corner = Entities:FindByName(nil, corner_name)
if unit.current_corner == nil then
print("path corner with name of '"..corner_name.."' not exist!")
return
end
end

local current_corner = unit.current_corner
local next_corner = current_corner.next_corner or nil
local point_corner = unit.current_corner:GetAbsOrigin()
local point_unit = unit:GetAbsOrigin()
local vector_dist = (point_corner - point_unit):Length2D()

if vector_dist < 25 then
if next_corner then
unit.current_corner = next_corner
else
print("next corner for '"..current_corner:GetName().."' not exist!")
return
end
else
unit:MoveToPositionAggressive(point_corner)
end


return 0.1
end
А что именно случилось?
 
  • Нравится
Реакции: logica

logica

Пользователь
27 Июн 2021
56
7
Проект
DotaRoyale
Крипы также бегают и игнорят друг друга. а с modifier_phased вообще не разобрался как его использовать )))
 

stranger568

Активный
7 Сен 2015
113
28
bmemov.ru
Проект
Birzha Memov
Крипы также бегают и игнорят друг друга. а с modifier_phased вообще не разобрался как его использовать )))
dummy:AddNewModifier(dummy, nil, "modifier_phased", {})

Попробуй сделать меньше таймер и может сделать так


if unit:GetAggroTarget == nil then
if vector_dist < 25 then
if next_corner then
unit.current_corner = next_corner
else
print("next corner for '"..current_corner:GetName().."' not exist!")
return
end
else
unit:MoveToPositionAggressive(point_corner)
end
end
 
  • Нравится
Реакции: LuciFerka и logica

logica

Пользователь
27 Июн 2021
56
7
Проект
DotaRoyale
Вставил ваш код, крипы вообще перестали ходить.
 

logica

Пользователь
27 Июн 2021
56
7
Проект
DotaRoyale
А нет все работает, я просто абоба забыл что отключал сам скрипт путей.
Но я так и не понял куда деть dummy:AddNewModifier(dummy, nil, "modifier_phased", {})
Прости что отнимаю твое время свой глупостью, Но не мог бы подсказать куда вставить этот код.
Спасибку оформил.
 

stranger568

Активный
7 Сен 2015
113
28
bmemov.ru
Проект
Birzha Memov
А нет все работает, я просто абоба забыл что отключал сам скрипт путей.
Но я так и не понял куда деть dummy:AddNewModifier(dummy, nil, "modifier_phased", {})
Прости что отнимаю твое время свой глупостью, Но не мог бы подсказать куда вставить этот код.
Спасибку оформил.
Ну когда юнит создается добавь ЮНИТ:AddNewModifier(ЮНИТ, nil, "modifier_phased", {}), если нужно чтоб он не всегда проходил через юнитов то в {} добавь duration = время
 
  • Влюблен
Реакции: logica
Реклама: