Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Как получить abs origin

  • Автор темы Автор темы yi6dev
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2022
Сообщения
70
Реакции
7
class:
Expand Collapse Copy
class Entity {
public:
    Entity(ui entity) : entity(entity) {}
    
    int GetMaxHealth() {
        return *(int*)(*(ui*)entity + m_iMaxHealth);
    }
    int GetHealth() {
        return *(int*)(*(ui*)entity + m_iHealth);
    }
    int GetMaxMana()
    {
        return *(float*)(*(ui*)entity + m_flMaxMana);
    }
    int GetMana()
    {
        return *(float*)(*(ui*)entity + m_flMana);
    }
    int GetOwner(){
        return *(int*)(*(ui*)entity + m_hOwnerEntity) & 0x7FFF;
    }
    int GetTeam(){
        return *(unsigned short*)(*(ui*)entity + m_iTeamNum);
    }
    bool IsValid() {
        return entity != 0;
    }
    bool IsIllusion(){
        return *(ui*)(*(ui*)entity + m_hReplicatingOtherHeroModel) != 0xFFFFFFFF;
    }
    bool IsLocal() {
        return this->GetOwner() == xxd::LocalPlayerIndex;
    }
    bool IsAlly() {
        Entity LocalEntity{xxd::LocalPlayerEntity};

        int LocalTeam = LocalEntity.GetTeam();
        int EntityTeam = this->GetTeam();

        return LocalTeam == EntityTeam;
    }
    bool IsEnemy() {
        return !this->IsAlly();
    }
    cc GetName() {
        if (*(cc*)(*(ui*)(*(ui*)entity + 0x10) + 0x18)) {
            return *(cc*)(*(ui*)(*(ui*)entity + 0x10) + 0x18);
        }
        else if (*(cc*)(*(ui*)(*(ui*)entity + 0x10) + 0x20)) {
            return *(cc*)(*(ui*)(*(ui*)entity + 0x10) + 0x20);
        }
        else {
            return "Unknown";
        }
    }
    cc GetBaseClass()
    {
        if (***(cc***)(*(ui*)(*(ui*)entity + 0x10) + 0x8))
        {
            return ***(cc***)(*(ui*)(*(ui*)entity + 0x10) + 0x8);

        }
        else
        {
            return "Unknown";
        }
    }
    Vector GetPosition()
    {
        ui gamescenenode = *(ui*)(*(ui*)entity + m_pGameSceneNode);
        return *(Vector*)(gamescenenode + m_vecAbsOrigin);
    }
    Vector2 GetScreenPosition() {
        Vector abs = this->GetPosition();
        int x, y;

        bool bResult = W2S(abs, &x, &y, nullptr);

        Vector2 out;
        if (bResult) {
            out.x = x;
            out.y = y;
        }
        else {
            out.x = -1;
            out.y = -1;
        }

        return out;
    }
    bool IsHero()
    {
        if (!strcmp("C_DOTA_BaseNPC_Hero", this->GetBaseClass()))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
private:
    ui entity;
};

Все работает кроме GetPosition
пытаюсь получить значение дает кординтаы по середине карты и если героем подвигается у которого читаешь значение доту крашнет
помогите пеже
 
ну для начала - не забывай нуллптр чекать(if(entity) if(gamescenenode) и тд). убедись что оффсеты правильные, посмотри в реклассе что там все правильно и тд и тп.
 
ну для начала - не забывай нуллптр чекать(if(entity) if(gamescenenode) и тд). убедись что оффсеты правильные, посмотри в реклассе что там все правильно и тд и тп.
оффсеты 100% потому что я из дамлю при инжекте
1651318204388.png

ну для начала - не забывай нуллптр чекать(if(entity) if(gamescenenode) и тд). убедись что оффсеты правильные, посмотри в реклассе что там все правильно и тд и тп.
двигаюсь значение не меняется
1651318589076.png

1651318663070.png
это при итерации энтити там 100% валидная
 
Последнее редактирование:
оффсеты 100% потому что я из дамлю при инжекте Посмотреть вложение 201710

двигаюсь значение не меняется
Посмотреть вложение 201711
Посмотреть вложение 201712 это при итерации энтити там 100% валидная
крашить перестало потому что сделал проверку лучше чем была но вопрос такой же этот abs не равботает хотя оффсеты вроде праавильные
 
ну для начала - не забывай нуллптр чекать(if(entity) if(gamescenenode) и тд). убедись что оффсеты правильные, посмотри в реклассе что там все правильно и тд и тп.
почему то выводит не позицию героя а позицию мида карты (также и в обычном паблике ) что это может быть
видео -
почему то выводит не позицию героя а позицию мида карты (также и в обычном паблике ) что это может быть
видео -
дополню ответ все ентити находятся почему то в одном месте
1651324310907.png

1651324327947.png
код
 
Последнее редактирование:
пиздец

1651325495786.png

оффсеты инвалид блять а как я через шему их пизжу че за хуня может я конечно даун

оффсет на имя хп ману рабочие хотя я их таким же способом получаю

это же BaseEntity
1651325616379.png
 
пиздец

Посмотреть вложение 201733
оффсеты инвалид блять а как я через шему их пизжу че за хуня может я конечно даун

оффсет на имя хп ману рабочие хотя я их таким же способом получаю

это же BaseEntity
Посмотреть вложение 201735
C++:
Expand Collapse Copy
const auto& GetGameSceneNode() const
    {
        const auto* result = SchemaMember<const CGameSceneNode*>("client.dll/C_BaseEntity/m_pGameSceneNode");
        if (!result)
            throw std::runtime_error{ std::format("m_pGameSceneNode is nullptr for entity {}!", static_cast<const void*>(this))};
        return *result;
    }
C++:
Expand Collapse Copy
export
class CGameSceneNode : public SchematicClass
{
public:
    const auto& GetAbsOrigin() const
    {
        return SchemaMember<Vector3>("client.dll/CGameSceneNode/m_vecAbsOrigin");
    }
};
ты классы не путай. в ентити нет оффсета абсориджина, он есть в геймсценноде.
и юзай исключения чтобы такой хуйни не было. не нашло оффсет - сразу тебе в ебало кинуло огромную коробку с ошибкой, и ты пошел разбираться. явно лучше чем сидеть потом думать почему нихуя не работает?
 
Последнее редактирование:
C++:
Expand Collapse Copy
const auto& GetGameSceneNode() const
    {
        const auto* result = SchemaMember<const CGameSceneNode*>("client.dll/C_BaseEntity/m_pGameSceneNode");
        if (!result)
            throw std::runtime_error{ std::format("m_pGameSceneNode is nullptr for entity {}!", static_cast<const void*>(this))};
        return *result;
    }
C++:
Expand Collapse Copy
export
class CGameSceneNode : public SchematicClass
{
public:
    const auto& GetAbsOrigin() const
    {
        return SchemaMember<Vector3>("client.dll/CGameSceneNode/m_vecAbsOrigin");
    }
};
ты классы не путай. в ентити нет оффсета абсориджина, он есть в геймсценноде.
и юзай исключения чтобы такой хуйни не было. не нашло оффсет - сразу тебе в ебало кинуло огромную коробку с ошибкой, и ты пошел разбираться. явно лучше чем сидеть потом думать почему нихуя не работает?
да ебать ну я уже в глаза ебусь сори
1651332274878.png

спасибаааа настывил бы реакций ну у меня их нету так что погоди
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу