Краш геймини

Участник
Статус
Оффлайн
Регистрация
15 Дек 2018
Сообщения
1,081
Реакции[?]
213
Поинты[?]
0
Крч пытаюсь устранить краши после смены карты уже два часа ебучих.
Где-то увидел, что проблема в киллфиде и дме.
Киллфид я вырезал (ту часть в FireGameEvent round_start и player_death)
После пытался дебажжить, чтобы найти ошибку в дме, но либо я туплю либо ошибки просто не выдает

Знает кто в чем там проблема?
 
Пользователь
Статус
Оффлайн
Регистрация
30 Июн 2017
Сообщения
332
Реакции[?]
53
Поинты[?]
0
Крч пытаюсь устранить краши после смены карты уже два часа ебучих.
Где-то увидел, что проблема в киллфиде и дме.
Киллфид я вырезал (ту часть в FireGameEvent round_start и player_death)
После пытался дебажжить, чтобы найти ошибку в дме, но либо я туплю либо ошибки просто не выдает

Знает кто в чем там проблема?
ну скринов с дебага не будет да
 
Участник
Статус
Оффлайн
Регистрация
15 Дек 2018
Сообщения
1,081
Реакции[?]
213
Поинты[?]
0
Олдфаг
Статус
Оффлайн
Регистрация
6 Мар 2019
Сообщения
2,939
Реакции[?]
1,005
Поинты[?]
0
так мне 1 ошибку ебаную фиксануть надо пох
1. киллфид - хуй его знает, я его не пофиксил, просто закомментил
2. Engine Prediction - смотри тут
Пожалуйста, авторизуйтесь для просмотра ссылки.

3. Grenade Prediction - тоже ни пойнтера ничего нет, поэтому просто закомментил
3. DME Hook - либо комменть его, либо юзай этот
C++:
void __fastcall Hooks::DrawModelExecute(void* ecx, void* edx, IMatRenderContext* context, const DrawModelState_t& state, const ModelRenderInfo_t& info, matrix3x4_t* matrix)
{
    static auto oDrawModelExecute = g_Hooks.pModelHook->GetOriginal<DrawModelExecute_t>(vtable_indexes::dme);

    if (!Globals::LocalPlayer)
    {
        oDrawModelExecute(ecx, context, state, info, matrix);
        g_pModelRender->ForcedMaterialOverride(NULL);
        return;
    }

    C_BaseEntity* pPlayerEntity = g_pEntityList->GetClientEntity(info.index);
    if (!pPlayerEntity)
    {
        oDrawModelExecute(ecx, context, state, info, matrix);
        g_pModelRender->ForcedMaterialOverride(NULL);
        return;
    }

    //ебучий ноль
    if (pPlayerEntity != nullptr)
    {
        ClientClass* EntityClass = pPlayerEntity->GetClientClass();
        if (!pPlayerEntity || !EntityClass)
        {
            oDrawModelExecute(ecx, context, state, info, matrix);
            g_pModelRender->ForcedMaterialOverride(NULL);
            return;
        }

        //Ебашим здесь, потому что все проверки выше прошли
        static IMaterial* mat_overlay;
        static bool once{ false };
        if (!once)
        {
            std::ofstream("csgo/materials/glowOverlay.vmt") << R"#("VertexLitGeneric" {
            "$additive" "1"
            "$envmap" "models/effects/cube_white"
            "$envmaptint" "[0 0.1 0.2]"
            "$envmapfresnel" "1"
            "$envmapfresnelminmaxexp" "[0 1 2]"
            "$alpha" "0.8"
            "$ignorez" "1"
        })#";

            mat_overlay = g_pMaterialSys->FindMaterial("glowOverlay", nullptr);
            once = true;
        }

        //не юзать флаг IGNOREZ иначе пизда - будет крашить (поэтому заюзал его в создании материала)
        if (mat_overlay != nullptr)
        {
            //Модель игрока
            if (EntityClass->ClassID == (int)EClassIds::CCSPlayer)
            {

                //Враги
                if (Globals::LocalPlayer->GetTeam() != pPlayerEntity->GetTeam())
                {
                    g_pModelRender->ForcedMaterialOverride(mat_overlay);
                    oDrawModelExecute(ecx, context, state, info, matrix);
                }

                //Игрок
                if (pPlayerEntity == Globals::LocalPlayer)
                {
                    g_pModelRender->ForcedMaterialOverride(mat_overlay);
                    oDrawModelExecute(ecx, context, state, info, matrix);
                }

            }
            //оружие в руках
            if (EntityClass->ClassID == (int)EClassIds::CPredictedViewModel)
            {
                g_pModelRender->ForcedMaterialOverride(mat_overlay);
                oDrawModelExecute(ecx, context, state, info, matrix);
            }

            //трупы игроков, хуй знает почему не всегда работает
            if (pPlayerEntity && EntityClass->ClassID == (int)EClassIds::CCSRagdoll)
            {
                g_pModelRender->ForcedMaterialOverride(mat_overlay);
            }
        }
    }
    oDrawModelExecute(ecx, context, state, info, matrix);
    g_pModelRender->ForcedMaterialOverride(NULL);
}

4. FrameStage - кривой, меняй на
C++:
void __stdcall Hooks::FrameStageNotify(ClientFrameStage_t curStage)
{
    static auto oFrameStage = g_Hooks.pClientHook->GetOriginal<FrameStageNotify_t>(vtable_indexes::frameStage);
    switch (curStage)
    {
        case FRAME_UNDEFINED:
            break;

        case FRAME_START:
            break;

        case FRAME_NET_UPDATE_START:
            break;

        case FRAME_NET_UPDATE_POSTDATAUPDATE_START:

            if (Globals::LocalPlayer && Globals::LocalPlayer->IsAlive()) {
                backtracking->Update(g_pGlobalVars->tickcount);
            }

            break;

        case FRAME_NET_UPDATE_POSTDATAUPDATE_END:

            g_Resolver.FrameStage(curStage);
            break;

        case FRAME_NET_UPDATE_END:
            break;

        case FRAME_RENDER_START:

            g_Misc.Thirdperson_FSN(curStage);
            g_Misc.NightMode();
            g_Misc.AsusProps();
            break;

        case FRAME_RENDER_END:
            break;
        }

    oFrameStage(curStage);
}
5. Крашит при смене мапы само меню сюрфейс - менять на имгуй так как оно ещё фпс садит в игре даже если не запущено.
А проще бери вархук там всё уже пофикшено
 
Участник
Статус
Оффлайн
Регистрация
15 Дек 2018
Сообщения
1,081
Реакции[?]
213
Поинты[?]
0
1. киллфид - хуй его знает, я его не пофиксил, просто закомментил
2. Engine Prediction - смотри тут
Пожалуйста, авторизуйтесь для просмотра ссылки.

3. Grenade Prediction - тоже ни пойнтера ничего нет, поэтому просто закомментил
3. DME Hook - либо комменть его, либо юзай этот
C++:
void __fastcall Hooks::DrawModelExecute(void* ecx, void* edx, IMatRenderContext* context, const DrawModelState_t& state, const ModelRenderInfo_t& info, matrix3x4_t* matrix)
{
    static auto oDrawModelExecute = g_Hooks.pModelHook->GetOriginal<DrawModelExecute_t>(vtable_indexes::dme);

    if (!Globals::LocalPlayer)
    {
        oDrawModelExecute(ecx, context, state, info, matrix);
        g_pModelRender->ForcedMaterialOverride(NULL);
        return;
    }

    C_BaseEntity* pPlayerEntity = g_pEntityList->GetClientEntity(info.index);
    if (!pPlayerEntity)
    {
        oDrawModelExecute(ecx, context, state, info, matrix);
        g_pModelRender->ForcedMaterialOverride(NULL);
        return;
    }

    //ебучий ноль
    if (pPlayerEntity != nullptr)
    {
        ClientClass* EntityClass = pPlayerEntity->GetClientClass();
        if (!pPlayerEntity || !EntityClass)
        {
            oDrawModelExecute(ecx, context, state, info, matrix);
            g_pModelRender->ForcedMaterialOverride(NULL);
            return;
        }

        //Ебашим здесь, потому что все проверки выше прошли
        static IMaterial* mat_overlay;
        static bool once{ false };
        if (!once)
        {
            std::ofstream("csgo/materials/glowOverlay.vmt") << R"#("VertexLitGeneric" {
            "$additive" "1"
            "$envmap" "models/effects/cube_white"
            "$envmaptint" "[0 0.1 0.2]"
            "$envmapfresnel" "1"
            "$envmapfresnelminmaxexp" "[0 1 2]"
            "$alpha" "0.8"
            "$ignorez" "1"
        })#";

            mat_overlay = g_pMaterialSys->FindMaterial("glowOverlay", nullptr);
            once = true;
        }

        //не юзать флаг IGNOREZ иначе пизда - будет крашить (поэтому заюзал его в создании материала)
        if (mat_overlay != nullptr)
        {
            //Модель игрока
            if (EntityClass->ClassID == (int)EClassIds::CCSPlayer)
            {

                //Враги
                if (Globals::LocalPlayer->GetTeam() != pPlayerEntity->GetTeam())
                {
                    g_pModelRender->ForcedMaterialOverride(mat_overlay);
                    oDrawModelExecute(ecx, context, state, info, matrix);
                }

                //Игрок
                if (pPlayerEntity == Globals::LocalPlayer)
                {
                    g_pModelRender->ForcedMaterialOverride(mat_overlay);
                    oDrawModelExecute(ecx, context, state, info, matrix);
                }

            }
            //оружие в руках
            if (EntityClass->ClassID == (int)EClassIds::CPredictedViewModel)
            {
                g_pModelRender->ForcedMaterialOverride(mat_overlay);
                oDrawModelExecute(ecx, context, state, info, matrix);
            }

            //трупы игроков, хуй знает почему не всегда работает
            if (pPlayerEntity && EntityClass->ClassID == (int)EClassIds::CCSRagdoll)
            {
                g_pModelRender->ForcedMaterialOverride(mat_overlay);
            }
        }
    }
    oDrawModelExecute(ecx, context, state, info, matrix);
    g_pModelRender->ForcedMaterialOverride(NULL);
}

4. FrameStage - кривой, меняй на
C++:
void __stdcall Hooks::FrameStageNotify(ClientFrameStage_t curStage)
{
    static auto oFrameStage = g_Hooks.pClientHook->GetOriginal<FrameStageNotify_t>(vtable_indexes::frameStage);
    switch (curStage)
    {
        case FRAME_UNDEFINED:
            break;

        case FRAME_START:
            break;

        case FRAME_NET_UPDATE_START:
            break;

        case FRAME_NET_UPDATE_POSTDATAUPDATE_START:

            if (Globals::LocalPlayer && Globals::LocalPlayer->IsAlive()) {
                backtracking->Update(g_pGlobalVars->tickcount);
            }

            break;

        case FRAME_NET_UPDATE_POSTDATAUPDATE_END:

            g_Resolver.FrameStage(curStage);
            break;

        case FRAME_NET_UPDATE_END:
            break;

        case FRAME_RENDER_START:

            g_Misc.Thirdperson_FSN(curStage);
            g_Misc.NightMode();
            g_Misc.AsusProps();
            break;

        case FRAME_RENDER_END:
            break;
        }

    oFrameStage(curStage);
}
5. Крашит при смене мапы само меню сюрфейс - менять на имгуй так как оно ещё фпс садит в игре даже если не запущено.
А проще бери вархук там всё уже пофикшено
Спасибо огромное, но бля, на имхуи не охота переходить, есть варианты пофиксить с сюрфейсом краши?
Ещё на дискорд невалид ссылка, исправь, если не трудно.
 
Сверху Снизу