Как назначить всем юнитам в области нового владельца?

fabio_longo

Продвинутый
13 Июн 2021
153
19
steamcommunity.com
Проект
Chen's Training, Creep Stacking Training
После смены героя во время игры все крипы перестают принадлежать игроку. Он как бы может ими управлять, но через Tab их выбрать нельзя. Попробовал получить список всех крипов через FindUnitsInRadius() и назначить им владельца через SetOwner(), но на этом моменте дота просто зависает и приходится её перезагружать. Где я допустил ошибку?
Lua:
function createchen ( eventSourceIndex, args )
     if chenchoose == 0 then
         chenhero = PlayerResource:ReplaceHeroWith(0, "npc_dota_hero_chen", 0, 0)
            playerID = chenhero:GetPlayerID()
            local hero1 = PlayerResource:GetSelectedHeroEntity(playerID)
            creeps = FindUnitsInRadius(DOTA_TEAM_GOODGUYS,
                              Vector(0, 0, 0),
                              nil,
                              FIND_UNITS_EVERYWHERE,
                              DOTA_UNIT_TARGET_TEAM_FRIENDLY,
                              DOTA_UNIT_TARGET_ALL,
                              DOTA_UNIT_TARGET_FLAG_NONE,
                              FIND_ANY_ORDER,
                              false)
            for _, creeps in pairs(creeps) do
            creeps:SetOwner(hero1)
            end
     end
end
Забавно, но когда я использую старый playerID, ничего не зависает, но игрок всё равно не становится владельцем. Проблема возникает только с актуальным playerID.
 
Последнее редактирование:

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,149
196
www.dotabuff.com
Проект
Roshan defense
1) for _, creeps in pairs(creeps) do у тебя название переменной совпадает с насванием таблицы в обоих случаях creeps , поэтому и происходит зависание тк появляется бесконечный цикл
2) для управления также добавить еще одну функцию рекомендую SetControllableByPlayer
 
Реклама: