Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Вопрос HkListLeavesInBox crash

Пользователь
Пользователь
Статус
Оффлайн
Регистрация
20 Июл 2017
Сообщения
205
Реакции
116
Здравствуйте, я пытаюсь добавить модель Disable occulusion в csgosimple, но после добавления и ввода карты происходит сбой

код:
Код:
Expand Collapse Copy
int __fastcall hooks::hkListLeavesInBox::hook(const vec3_t& mins, const vec3_t& maxs, unsigned short* list, int listMax) {
    
    typedef int(__thiscall* ListLeavesInBox)(void*, const vec3_t&, const vec3_t&, unsigned short*, int);
    // occulusion getting updated on player movement/angle change,
    // in RecomputeRenderableLeaves ( https://github.com/pmrowla/hl2sdk-csgo/blob/master/game/client/clientleafsystem.cpp#L674 );
    // check for return in CClientLeafSystem::InsertIntoTree
    if (!variables.pl_mdl.chams.disableModelOcclusion|| *(uint32_t*)_ReturnAddress() != 0x14244489)
        return list_boxs(mins, maxs, list, listMax);

    // get current renderable info from stack ( https://github.com/pmrowla/hl2sdk-csgo/blob/master/game/client/clientleafsystem.cpp#L1470 )
    auto info = *(RenderableInfo**)((uintptr_t)_AddressOfReturnAddress() + 0x14);
    if (!info || !info->renderable)
        return list_boxs(mins, maxs, list, listMax);

    // check if disabling occulusion for players ( https://github.com/pmrowla/hl2sdk-csgo/blob/master/game/client/clientleafsystem.cpp#L1491 )
    auto base_entity = info->renderable->get_iclient_unknown()->GetBaseEntity();
    
    if (!base_entity || !base_entity->is_player())
        return list_boxs(mins, maxs, list, listMax);

    // extend world space bounds to maximum ( https://github.com/pmrowla/hl2sdk-csgo/blob/master/game/client/clientleafsystem.cpp#L707 )
    static const vec3_t map_min = vec3_t(MIN_COORD_FLOAT, MIN_COORD_FLOAT, MIN_COORD_FLOAT);
    static const vec3_t map_max = vec3_t(MAX_COORD_FLOAT, MAX_COORD_FLOAT, MAX_COORD_FLOAT);
    auto count = list_boxs(map_min, map_max, list, listMax);

    return count;
    
}

Линия аварии:
Код:
Expand Collapse Copy
  if (!base_entity || !base_entity->is_player())

Мой is_player:
Код:
Expand Collapse Copy
    bool is_player() {
        using original_fn = bool(__thiscall*)(entity_t*);
        return (*(original_fn**)this)[157](this);
    }
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Здравствуйте, я пытаюсь добавить модель Disable occulusion в csgosimple, но после добавления и ввода карты происходит сбой

код:
Код:
Expand Collapse Copy
int __fastcall hooks::hkListLeavesInBox::hook(const vec3_t& mins, const vec3_t& maxs, unsigned short* list, int listMax) {
    
    typedef int(__thiscall* ListLeavesInBox)(void*, const vec3_t&, const vec3_t&, unsigned short*, int);
    // occulusion getting updated on player movement/angle change,
    // in RecomputeRenderableLeaves ( https://github.com/pmrowla/hl2sdk-csgo/blob/master/game/client/clientleafsystem.cpp#L674 );
    // check for return in CClientLeafSystem::InsertIntoTree
    if (!variables.pl_mdl.chams.disableModelOcclusion|| *(uint32_t*)_ReturnAddress() != 0x14244489)
        return list_boxs(mins, maxs, list, listMax);

    // get current renderable info from stack ( https://github.com/pmrowla/hl2sdk-csgo/blob/master/game/client/clientleafsystem.cpp#L1470 )
    auto info = *(RenderableInfo**)((uintptr_t)_AddressOfReturnAddress() + 0x14);
    if (!info || !info->renderable)
        return list_boxs(mins, maxs, list, listMax);

    // check if disabling occulusion for players ( https://github.com/pmrowla/hl2sdk-csgo/blob/master/game/client/clientleafsystem.cpp#L1491 )
    auto base_entity = info->renderable->get_iclient_unknown()->GetBaseEntity();
    
    if (!base_entity || !base_entity->is_player())
        return list_boxs(mins, maxs, list, listMax);

    // extend world space bounds to maximum ( https://github.com/pmrowla/hl2sdk-csgo/blob/master/game/client/clientleafsystem.cpp#L707 )
    static const vec3_t map_min = vec3_t(MIN_COORD_FLOAT, MIN_COORD_FLOAT, MIN_COORD_FLOAT);
    static const vec3_t map_max = vec3_t(MAX_COORD_FLOAT, MAX_COORD_FLOAT, MAX_COORD_FLOAT);
    auto count = list_boxs(map_min, map_max, list, listMax);

    return count;
    
}

Линия аварии:
Код:
Expand Collapse Copy
  if (!base_entity || !base_entity->is_player())

Мой is_player:
Код:
Expand Collapse Copy
    bool is_player() {
        using original_fn = bool(__thiscall*)(entity_t*);
        return (*(original_fn**)this)[157](this);
    }
1. В ретарне оригинала добавь this, перед другими параметрами, в прототип функции у тебя декларация _thiscall
2. Чекни класс где ентити получаешь, мб иссуе
3. У тебя не фулл код скип оклюжена
 
//edit


теперь после захода на карту не вылетает, лечит при приближении игрок получает вылет этим хуком
deb1.png
 
Последнее редактирование:
Назад
Сверху Снизу