Вопрос Сущности способок или что

Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
324
Реакции[?]
24
Поинты[?]
12K
Короче, я умею получать позицию 'thinker'a типа Торрент Кункки или санстрайк инвокера, но вот как работать с ультой СФ, Апарата?
 
Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
324
Реакции[?]
24
Поинты[?]
12K
IsInAbilityPhase чекни(C_DOTABaseAbility::m_bInAbilityPhase)
Пожалуйста, авторизуйтесь для просмотра ссылки.
Я ещё не проверял но имею такую теорию.

Представим ситуацию, Вражеский СФ стоит под Т1 (на топе) с лотаром. Урса(Я) на рошпите мочу рошана.СФ зашел в инвиз и заходит в рошпит и начинает ультовать requiem. Мой чит в цикле получает сфа(сущность) и его способки, одна из которой является ульта(requiem) и вызов IsInAbilityPhase возвращает true.
Дальше логично, нужно получить позицию сфа и нарисовать партиклю(исходя из моего первоначаального поста). Но я думаю, что оно хреново сработает ибо последний раз когда я видел сфа он был на т1. Соотвественно оно нарисует партиклю на т1, правильно?У способок же нету своих позиции.
 
Начинающий
Статус
Оффлайн
Регистрация
26 Сен 2022
Сообщения
24
Реакции[?]
2
Поинты[?]
2K
Короче, я умею получать позицию 'thinker'a типа Торрент Кункки или санстрайк инвокера, но вот как работать с ультой СФ, Апарата?
позицию ульты сфа(где кастуется) можно найти по партиклям
1704544747479.png
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
324
Реакции[?]
24
Поинты[?]
12K
позицию ульты сфа(где кастуется) можно найти по партиклям
Посмотреть вложение 267868
если не секрет, то как там правильно итерировать надо партикли?


Просто я знаю как получать партиклю по хендлу но не совсем, не нашел ещё решения как найти по названию :

C++:
void* GetParticleList()
    {
        return *reinterpret_cast<void**>((uintptr_t)this + 0x88); /// maybe outdated
    }
    int GetParticlesCount()
    {
        return *reinterpret_cast<int*>((uintptr_t)this + 0x80); /// maybe outdated
    }
    int GetCurrentHandle()
    {
        return *reinterpret_cast<int*>((uintptr_t)this + 0xB8); /// maybe outdated
    }

    CParticleInstance* GetParticleByHandle(int Handle)
    {
        auto list = GetParticleList();
        auto count = GetParticlesCount();
        for (int i = 0; i < count; i++)
        {
            CParticleInstance* ParticleInstance = *reinterpret_cast<CParticleInstance**>((uintptr_t)list + i * 8);
            if (!ParticleInstance || !ParticleInstance->CNewParticleEffect)
            {
                continue;
            }
            if (ParticleInstance->Handle == Handle)
            {
                return ParticleInstance;
            }
        }
        return nullptr;
    }
позицию ульты сфа(где кастуется) можно найти по партиклям
Посмотреть вложение 267868
решил консолькой dumpparticlelist и смотрел че как и видно что как токо юзается ульта то из более интересных появляется hero_nevermore/nevermore_wings.впцф
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
26 Сен 2022
Сообщения
24
Реакции[?]
2
Поинты[?]
2K
если не секрет, то как там правильно итерировать надо партикли?


Просто я знаю как получать партиклю по хендлу но не совсем, не нашел ещё решения как найти по названию :

C++:
void* GetParticleList()
    {
        return *reinterpret_cast<void**>((uintptr_t)this + 0x88); /// maybe outdated
    }
    int GetParticlesCount()
    {
        return *reinterpret_cast<int*>((uintptr_t)this + 0x80); /// maybe outdated
    }
    int GetCurrentHandle()
    {
        return *reinterpret_cast<int*>((uintptr_t)this + 0xB8); /// maybe outdated
    }

    CParticleInstance* GetParticleByHandle(int Handle)
    {
        auto list = GetParticleList();
        auto count = GetParticlesCount();
        for (int i = 0; i < count; i++)
        {
            CParticleInstance* ParticleInstance = *reinterpret_cast<CParticleInstance**>((uintptr_t)list + i * 8);
            if (!ParticleInstance || !ParticleInstance->CNewParticleEffect)
            {
                continue;
            }
            if (ParticleInstance->Handle == Handle)
            {
                return ParticleInstance;
            }
        }
        return nullptr;
    }
решил консолькой dumpparticlelist и смотрел че как и видно что как токо юзается ульта то из более интересных появляется hero_nevermore/nevermore_wings.впцф
ищу партикли с помощью netchannel->postreceivednetmessage (messageid == 145), там ловлю партикль месседж == 0(GAME_PARTICLE_MANAGER_EVENT_CREATE) и записываю их в массив, а сортировать по партикль неймам можно с помощью resourcesystem->getresourcename(particleindex) (vfunc 32)
 
Последнее редактирование:
Сверху Снизу