# EntitySystem

Класс для работы со всеми Entity в игре.

# GetLocalHero

Получает объект локального героя Hero.

Возвращаемые значения:

let exampleScript = {};

exampleScript.OnUpdate = () => {
    
    // Проверяем находится ли клиент в игре, так как в ином случае будет возвращен пустой массив.
    if(!GameRules.IsActiveGame()) {
        return;
    }
    
    // Получаем объект локального героя и записываем его в переменную
    let me = EntitySystem.GetLocalHero();
    
    // Проверяем есть ли что-то в переменной me, так как в режиме просмотра IsActiveGame возвращает true,
    // а GetLocalHero не возвращает ничего.
    if(!me) {
        return;
    }
    
    // Выводим значение HP локального героя.
    console.log(me.GetHealth());
};

RegisterScript(exampleScript);

# GetLocalPlayer

Получает объект локального игрока Player.

Возвращаемые значения:

let exampleScript = {};

exampleScript.OnUpdate = () => {
    
    // Проверяем находится ли клиент в игре, так как в ином случае будет возвращен null.
    if(!GameRules.IsActiveGame()) {
        return;
    }
    
    // Получаем объект локального игрока и записываем его в переменную
    let me = EntitySystem.GetLocalPlayer();
    
    // Выводим золото локального игрока
    console.log(me.GetTotalGold());
};

RegisterScript(exampleScript);

# GetPlayersList

Получает массив из всех игроков на карте Player.

Возвращаемые значения:

let exampleScript = {};

exampleScript.OnScriptLoad = () => {
    
    // Проверяем находится ли клиент в игре, так как в ином случае будет возвращен null.
    if(!GameRules.IsActiveGame()) {
        return;
    }
    
    // Получаем массив игроков
    let players = EntitySystem.GetPlayersList();
    
    for(let player of players) {
        // Выводим ник каждого игрока на карте
        console.log(player.GetName());
    }
};

RegisterScript(exampleScript);

# GetHeroesList

Получает массив из всех героев на карте Hero.

ПРЕДУПРЕЖДЕНИЕ

В этом массив будут находиться также любые копии и иллюзии героев (ульта Monkey King, иллюзии Naga Siren и прочие сущности). Если вам нужны только оригинальные герои, не забудьте добавить проверки с помощью функций IsMeepoClone и IsIllusion

ВНИМАНИЕ

Если герой ни разу не был замечен за игру, то его не будет в этом массиве

Возвращаемые значения:

let exampleScript = {};

exampleScript.OnScriptLoad = () => {
    
    // Проверяем находится ли клиент в игре, так как в ином случае будет возвращен null.
    if(!GameRules.IsActiveGame()) {
        return;
    }
    
    // Получаем массив игроков
    let heroes = EntitySystem.GetHeroesList();
    
    for(let hero of heroes) {
        // Выводим имя каждого героя на карте
        console.log(hero.GetUnitName());
    }
};

RegisterScript(exampleScript);

# GetNPCsList

Получает массив из всех NPC на карте.

ПОДСКАЗКА

В этом массиве хранятся абсолютно все NPC на карте: мины Techies, ловушки Templar Assassin, герои, крипы и прочее. Если вы хотите получить только массив героев, рекомендуем пользоваться функцией GetHeroesList

ВНИМАНИЕ

Если сущность находится в невидимости или в тумане войны, то в большинстве случаев её не будет в этом массиве

Возвращаемые значения:

let exampleScript = {};

exampleScript.OnScriptLoad = () => {
    
    // Проверяем находится ли клиент в игре, так как в ином случае будет возвращен null.
    if(!GameRules.IsActiveGame()) {
        return;
    }
    
    // Получаем массив игроков
    let NPCs = EntitySystem.GetNPCsList();
    
    for(let npc of NPCs) {
        // Выводим имя каждого NPC на карте
        console.log(npc.GetUnitName());
    }
};

RegisterScript(exampleScript);

# GetCouriersList

Получает массив из всех NPC на карте.

Возвращаемые значения:

# GetRunesList

Получает массив из всех Rune на карте.

ПОДСКАЗКА

Здесь находятся все видимые руны

Возвращаемые значения:

let exampleScript = {};

exampleScript.OnScriptLoad = () => {
    
    // Проверяем находится ли клиент в игре, так как в ином случае будет возвращен null.
    if(!GameRules.IsActiveGame()) {
        return;
    }
    
    // Получаем массив из видимых рун
    let runes = EntitySystem.GetRunesList();
    
    for(let rune of runes) {
        if(rune.GetRuneType() === Enum.RuneType.DOTA_RUNE_BOUNTY) {
            console.log('Баунти руна находится в зоне видимости, координаты: ', rune.GetAbsOrigin());
        }
    }
};

RegisterScript(exampleScript);

# GetEntitiesList

Получает массив из всех Entity на карте.

ПОДСКАЗКА

В этом массиве находится всевозможные Entity на карте Dota 2.

Возвращаемые значения:

let exampleScript = {};

exampleScript.OnScriptLoad = () => {
    
    // Проверяем находится ли клиент в игре, так как в ином случае будет возвращен null.
    if(!GameRules.IsActiveGame()) {
        return;
    }
    
    let entities = EntitySystem.GetEntitiesList();
    
    for(let entity of entities) {
        console.log(entity.GetClassName());
    }
};

RegisterScript(exampleScript);

# GetTargetProjectileList

Получает массив из всех TargetProjectile на карте.

Возвращаемые значения:

# GetTargetProjectileList

Получает массив из всех LinearProjectile на карте.

// TODO: сделать возвращаемые значения и пример

# GetPhysicalItemsList

Получает массив из всех PhysicalItem на карте.

Возвращаемые значения:

let exampleScript = {};

exampleScript.OnScriptLoad = () => {
    
    // Проверяем находится ли клиент в игре, так как в ином случае будет возвращен null.
    if(!GameRules.IsActiveGame()) {
        return;
    }
    
    let physicalItems = EntitySystem.GetPhysicalItemsList();
    
    for(let physicalItem of physicalItems) {
        // Выводит имя всех предметов, которые лежат "на полу"
        console.log(physicalItem.GetItem().GetName());
    }
};

RegisterScript(exampleScript);