После респавна юнит прекращает идти по waypiont

boss of this gym

Пользователь
18 Янв 2021
53
5
Я уже спрашивал про вейпоинты и понял как в хамере отсылать юнита на вейпоинт, но после смерти и последующего респауна юнит больше не идет по нему. Все таки я думаю, что отсылка юнита может быть осуществлена не только через хаммер, но и через скрипты, но никаких гайдов на эту тему я не нашел. Может кто с этим помочь?
 

boss of this gym

Пользователь
18 Янв 2021
53
5
так в том гайде который ты скидывал и есть скрипт
Тут сложность в том, что я только переделываю кастомку, а не пишу с нуля, поэтому мало того, что нужно понять логику написания, а я ни разу не программист, так еще и логику писавшего. Сейчас вписал те функции из гайдов, юнит респавнится, а не как раньше, когда я просто спавнил его в хаммере через npc_dota_base, идет по вейпоинту, но вот повторно не респавнится, после смерти. По всей видимости в том гайде завязка респавна была на таймере и у меня выдавало ошибки, потому что стоял другой таймер. Я убрал все функции связанные с таймером, по-моему мнению, и думал, что юнит будет просто спавнится через ability, в которой прописан респаун, но этого не происходит. Можно ли реализовать респавн не через таймер, а через абилку?
 

xDes

Продвинутый
8 Ноя 2018
232
34
Проект
Boss Survival Adventure
пока читал укачало) ничего не понял, что тебе надо чтобы юнит топал к точке всегда?
function Spawn(entityKeyValues)
thisEntity:SetContextThink("AIThink", AIThink, 0)
end

function AIThink()
local main_base = Entities:FindByName(nil, "npc_main_base")
if main_base ~= nil then
if thisEntity:IsAlive() then
if not thisEntity:IsChanneling() and thisEntity:GetCurrentActiveAbility() == nil and not thisEntity:IsCommandRestricted() then
if not thisEntity:IsDisarmed() then
local attackOrder = {
UnitIndex = thisEntity:entindex(),
OrderType = DOTA_UNIT_ORDER_ATTACK_MOVE,
Position = main_base:GetAbsOrigin()
}
ExecuteOrderFromTable(attackOrder)
else
local attackOrder = {
UnitIndex = thisEntity:entindex(),
OrderType = DOTA_UNIT_ORDER_ATTACK_MOVE,
Position = thisEntity:GetAbsOrigin()
}
ExecuteOrderFromTable(attackOrder)
end
end
end
end
return 1
end
 

boss of this gym

Пользователь
18 Янв 2021
53
5
пока читал укачало) ничего не понял, что тебе надо чтобы юнит топал к точке всегда?
function Spawn(entityKeyValues)
thisEntity:SetContextThink("AIThink", AIThink, 0)
end

function AIThink()
local main_base = Entities:FindByName(nil, "npc_main_base")
if main_base ~= nil then
if thisEntity:IsAlive() then
if not thisEntity:IsChanneling() and thisEntity:GetCurrentActiveAbility() == nil and not thisEntity:IsCommandRestricted() then
if not thisEntity:IsDisarmed() then
local attackOrder = {
UnitIndex = thisEntity:entindex(),
OrderType = DOTA_UNIT_ORDER_ATTACK_MOVE,
Position = main_base:GetAbsOrigin()
}
ExecuteOrderFromTable(attackOrder)
else
local attackOrder = {
UnitIndex = thisEntity:entindex(),
OrderType = DOTA_UNIT_ORDER_ATTACK_MOVE,
Position = thisEntity:GetAbsOrigin()
}
ExecuteOrderFromTable(attackOrder)
end
end
end
end
return 1
end
Спасибо, это помогло и теперь я узнал чуть больше. Правда, я уже успел реализовать другую, гораздо более простую идею)
 
Реклама: