Вопрос Морф

Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
326
Реакции[?]
24
Поинты[?]
12K
Проблема с иллюзиями и морфом, ведь морф когда копирует героя то она как бы становится иллюзией, и мой итератор считает его иллюзией и перекрашивает его в цвет иллюзии,соовтественно. Как это пофиксить? Я пробовал юзать значения типа IsMorph m_bCachedReplicatedMorphlingIllusion
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
попробуй
JavaScript:
Game.IsIllusion = function(entity){
    var PlayersEnt = []
    var PlayersIDs = Game.GetAllPlayerIDs()
    for(i in PlayersIDs)
        PlayersEnt.push( Players.GetPlayerHeroEntityIndex( PlayersIDs[i] ) )
    if (PlayersEnt.indexOf(entity)==-1)
        return true
    else
        return false
}
 
Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
326
Реакции[?]
24
Поинты[?]
12K
Не совсем понял,что делает indexOf функция

Вот я взял сущности и сравнил их индексы CEntityInstance



У иллюзии (хз что за поле ну скажем подиндекс) подиндекс = -1
У настоящего героя тоже -1
У морфа после ульты айдишник(индекс фантмоки)



Я вот так пробовал сделать
C++:
bool IsIllusion()
    {
        if (*(int*)((ui)this + m_hReplicatingOtherHeroModel) != 0xFFFFFFFF)
        { 
            signed int value = *(signed int*)((ui)(this->C_EntityIdentity) + 0x14);
            if (*(signed int*)((ui)(this->C_EntityIdentity) + 0x14) == -1)
            {
                return true;
            }
            return false;
        }
        return false;
    }
Но как только морф меняет форму то как всегда он стает иллюзией
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
Не совсем понял,что делает indexOf функция

Вот я взял сущности и сравнил их индексы CEntityInstance



У иллюзии (хз что за поле ну скажем подиндекс) подиндекс = -1
У настоящего героя тоже -1
У морфа после ульты айдишник(индекс фантмоки)



Я вот так пробовал сделать
C++:
bool IsIllusion()
    {
        if (*(int*)((ui)this + m_hReplicatingOtherHeroModel) != 0xFFFFFFFF)
        {
            signed int value = *(signed int*)((ui)(this->C_EntityIdentity) + 0x14);
            if (*(signed int*)((ui)(this->C_EntityIdentity) + 0x14) == -1)
            {
                return true;
            }
            return false;
        }
        return false;
    }
Но как только морф меняет форму то как всегда он стает иллюзией
индексоф в джаваскрипте это индекс элемента в массиве. -1 это значит нет такого элемента.
indexof(x) == -1
эквивалентно
!contains(x)
сам код просто проверят находится ли индекс entity(это индекс сущности а не сама сущность. в панорамаскрипте везде во все апи сущности чисто по индексу передаются) среди индексов героев на которых играют игроки(считай чтото типо m_hAssignedHero). в общем этот код проверяет, не является ли сущность одним из героев игроков. если сущность - герой игрока который ему назначен(m_hAssignedHero наверно), значит очевидно что это настоящий герой. в противном случае это иллюзия
грубо говоря кароче
for each player in players:
{
if(entity == player->m_hAssignedHero) return NOT_ILLUSION
}
return ILLUSION
 
Сверху Снизу