Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Краши

  • Автор темы Автор темы Nepyx
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
26 Авг 2024
Сообщения
25
Реакции
0
в целом код рабочий, но спустя какое то время например при спавне после раунда крашит игра, а так же при смене разрешения - зависает картинка, хотя по звукам сама игра работает
C++:
Expand Collapse Copy
while (true)
{
    if (kiero::init(kiero::RenderType::D3D11) == kiero::Status::Success)
    {
        kiero::bind(13, (void**)&oResizeBuffers, hkResizeBuffers);
        kiero::bind(8, (void**)&oPresent, Present);
        break;
    }
}

HRESULT __stdcall Hooks::Present(IDXGISwapChain* pSwapChain, UINT uSyncInterval, UINT uFlags)
{
    if (!pSwapChain) return oPresent(pSwapChain, uSyncInterval, uFlags);

    GUI::OnPresent(pSwapChain, uSyncInterval, uFlags);
    //AimBot::OnUpdate();
    TriggerBot::OnUpdate();
    //Glow::OnUpdate();

    return oPresent(pSwapChain, uSyncInterval, uFlags);
}

HRESULT CS_FASTCALL Hooks::hkResizeBuffers(IDXGISwapChain* pSwapChain, std::uint32_t nBufferCount, std::uint32_t nWidth, std::uint32_t nHeight, DXGI_FORMAT newFormat, std::uint32_t nFlags) {
    if (GUI::mainRenderTargetView)
    {
        GUI::mainRenderTargetView->Release();
        GUI::mainRenderTargetView = nullptr;
    }

    ImGui_ImplDX11_InvalidateDeviceObjects();

    // вызываем оригинальный ResizeBuffers
    HRESULT hr = oResizeBuffers(pSwapChain, nBufferCount, nWidth, nHeight, newFormat, nFlags);
    if (FAILED(hr))
        return hr;

    ID3D11Texture2D* pBackBuffer = nullptr;
    if (SUCCEEDED(pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (void**)&pBackBuffer)))
    {
        if (GUI::pDevice)
            GUI::pDevice->CreateRenderTargetView(pBackBuffer, NULL, &GUI::mainRenderTargetView);
        pBackBuffer->Release();
    }

    // обновляем viewport
    D3D11_VIEWPORT vp = {};
    vp.Width = static_cast<FLOAT>(nWidth);
    vp.Height = static_cast<FLOAT>(nHeight);
    vp.MinDepth = 0.0f;
    vp.MaxDepth = 1.0f;
    vp.TopLeftX = 0;
    vp.TopLeftY = 0;

    if (GUI::pContext)
        GUI::pContext->RSSetViewports(1, &vp);

    if (GUI::mainRenderTargetView)
        ImGui_ImplDX11_CreateDeviceObjects();

    return hr;
}

void GUI::OnPresent(IDXGISwapChain* pSwapChain, UINT SyncInterval, UINT Flags)
{
    if (!GUI::inited)
    {
        if (SUCCEEDED(pSwapChain->GetDevice(__uuidof(ID3D11Device), (void**)&pDevice)))
        {
            pDevice->GetImmediateContext(&pContext);
            DXGI_SWAP_CHAIN_DESC sd;
            pSwapChain->GetDesc(&sd);
            window = sd.OutputWindow;
            ID3D11Texture2D* pBackBuffer;
            pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&pBackBuffer);
            pDevice->CreateRenderTargetView(pBackBuffer, NULL, &mainRenderTargetView);
            pBackBuffer->Release();
            oWndProc = (WNDPROC)SetWindowLongPtr(window, GWLP_WNDPROC, (LONG_PTR)OnWndProc);
            GUI::Init();
            GUI::inited = true;
            blur::setup(pDevice, pContext);
        }
        else
            return;
    }
    if (!mainRenderTargetView)
    {
        ID3D11Texture2D* pBackBuffer = nullptr;
        if (SUCCEEDED(pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (void**)&pBackBuffer)))
        {
            pDevice->CreateRenderTargetView(pBackBuffer, NULL, &mainRenderTargetView);
            pBackBuffer->Release();
        }
    }

    if (!pDevice || !pContext || !mainRenderTargetView)
        return;

    ImGui_ImplDX11_NewFrame();
    ImGui_ImplWin32_NewFrame();
    ImGui::NewFrame();

    GUI::DrawWatermark(pSwapChain);
    ESP::Draw();
    //GUI::DrawFPS();
    GUI::DrawSpectatorList();

    GUI::DrawMenu();

    ImGui::Render();

    pContext->OMSetRenderTargets(1, &mainRenderTargetView, NULL);
    ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData());
}
 
ну во первых.
Если после раунда крашит игра, значит проблема с системой сущностей тк он возможно пытается прочитать не рабочие указатели.
во вторых
если зависает картинка при смене разрешения, проблема уже в базе чита
 
Назад
Сверху Снизу