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

Статус
В этой теме нельзя размещать новые ответы.
Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2022
Сообщения
70
Реакции[?]
7
Поинты[?]
0
class:
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
пытаюсь получить значение дает кординтаы по середине карты и если героем подвигается у которого читаешь значение доту крашнет
помогите пеже
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
ну для начала - не забывай нуллптр чекать(if(entity) if(gamescenenode) и тд). убедись что оффсеты правильные, посмотри в реклассе что там все правильно и тд и тп.
 
Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2022
Сообщения
70
Реакции[?]
7
Поинты[?]
0
ну для начала - не забывай нуллптр чекать(if(entity) if(gamescenenode) и тд). убедись что оффсеты правильные, посмотри в реклассе что там все правильно и тд и тп.
оффсеты 100% потому что я из дамлю при инжекте 1651318204388.png
ну для начала - не забывай нуллптр чекать(if(entity) if(gamescenenode) и тд). убедись что оффсеты правильные, посмотри в реклассе что там все правильно и тд и тп.
двигаюсь значение не меняется
1651318589076.png
1651318663070.png это при итерации энтити там 100% валидная
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2022
Сообщения
70
Реакции[?]
7
Поинты[?]
0
оффсеты 100% потому что я из дамлю при инжекте Посмотреть вложение 201710

двигаюсь значение не меняется
Посмотреть вложение 201711
Посмотреть вложение 201712 это при итерации энтити там 100% валидная
крашить перестало потому что сделал проверку лучше чем была но вопрос такой же этот abs не равботает хотя оффсеты вроде праавильные
 
Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2022
Сообщения
70
Реакции[?]
7
Поинты[?]
0
ну для начала - не забывай нуллптр чекать(if(entity) if(gamescenenode) и тд). убедись что оффсеты правильные, посмотри в реклассе что там все правильно и тд и тп.
почему то выводит не позицию героя а позицию мида карты (также и в обычном паблике ) что это может быть
видео -
почему то выводит не позицию героя а позицию мида карты (также и в обычном паблике ) что это может быть
видео -
дополню ответ все ентити находятся почему то в одном месте
1651324310907.png
1651324327947.pngкод
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2022
Сообщения
70
Реакции[?]
7
Поинты[?]
0
пиздец

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

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

это же BaseEntity
1651325616379.png
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
пиздец

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

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

это же BaseEntity
Посмотреть вложение 201735
C++:
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++:
export
class CGameSceneNode : public SchematicClass
{
public:
    const auto& GetAbsOrigin() const
    {
        return SchemaMember<Vector3>("client.dll/CGameSceneNode/m_vecAbsOrigin");
    }
};
ты классы не путай. в ентити нет оффсета абсориджина, он есть в геймсценноде.
и юзай исключения чтобы такой хуйни не было. не нашло оффсет - сразу тебе в ебало кинуло огромную коробку с ошибкой, и ты пошел разбираться. явно лучше чем сидеть потом думать почему нихуя не работает?
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2022
Сообщения
70
Реакции[?]
7
Поинты[?]
0
C++:
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++:
export
class CGameSceneNode : public SchematicClass
{
public:
    const auto& GetAbsOrigin() const
    {
        return SchemaMember<Vector3>("client.dll/CGameSceneNode/m_vecAbsOrigin");
    }
};
ты классы не путай. в ентити нет оффсета абсориджина, он есть в геймсценноде.
и юзай исключения чтобы такой хуйни не было. не нашло оффсет - сразу тебе в ебало кинуло огромную коробку с ошибкой, и ты пошел разбираться. явно лучше чем сидеть потом думать почему нихуя не работает?
да ебать ну я уже в глаза ебусь сори
1651332274878.png
спасибаааа настывил бы реакций ну у меня их нету так что погоди
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу