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

  • Официальное уведомление администрации CustomGames.RU
    В связи с масштабным техническим сбоем в инфраструктуре прежнего хостинг-провайдера (Beget), работа форума CustomGames.RU была оперативно перенесена на новую серверную площадку и развёрнута из резервной копии базы данных.

    • Безопасность данных: учётные записи и данные пользователей находятся в полной безопасности. Все пароли и защищаемые параметры хранятся исключительно в криптографически зашифрованном (хэшированном) виде — никаких критических инцидентов для аккаунтов пользователей не произошло.
    • Временные технические ограничения: на этапе синхронизации файлового хранилища часть статических материалов (пользовательские аватары и архивные вложения) временно недоступна. По мере получения доступа к файловым архивам все материалы будут восстановлены в полном объёме.

fabio_longo

Продвинутый
13 Июн 2021
182
28
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.
 
Последнее редактирование:
1) for _, creeps in pairs(creeps) do у тебя название переменной совпадает с насванием таблицы в обоих случаях creeps , поэтому и происходит зависание тк появляется бесконечный цикл
2) для управления также добавить еще одну функцию рекомендую SetControllableByPlayer
 
Реклама: