Другое С/С++ Вопрос - Ответ

Smeruxa

Известный
1,297
681
как исправить, при закрытии имгуи окна мой персонаж начинает бить, ну как обычно нажимаешь ЛКМ, хотя не должен
 

kin4stat

mq-team
Всефорумный модератор
2,730
4,710
как исправить, при закрытии имгуи окна мой персонаж начинает бить, ну как обычно нажимаешь ЛКМ, хотя не должен
в WNDProc
C++:
if (state.bMenuOpened) {
    if (ImGui_ImplWin32_WndProcHandler(hWnd, msg, wParam, lParam))
    {
        return true;
    }
    ImGuiIO& io = ImGui::GetIO();
    if (io.WantCaptureMouse || io.WantCaptureKeyboard)
    {
        return true;
    }
}
 
  • Влюблен
Реакции: Smeruxa

SheriffKBR

Известный
5
0
Как можно реализовать ASI скрипт который спарсит ники игроков на сервере
 

Frederico3133

Новичок
1
0
Всем привет, делаю свой проект на samp mobile и заметел, что анимации которые я делаю - не видят другие игроки? если не сложно обьясните, в чем причина, где я ошибся?
 

loganhackerdff

Известный
868
517
Всем привет, делаю свой проект на samp mobile и заметел, что анимации которые я делаю - не видят другие игроки? если не сложно обьясните, в чем причина, где я ошибся?
В 135 строчке ошибка и ещё в 3 замени deque на vector
 
  • Ха-ха
Реакции: sc6ut и kin4stat

loganhackerdff

Известный
868
517
Кстати выше - не самое лучшее решение. Лучше хукать DrawIndexedPrimitive в пайплайне рендера педов(0x761142) и выставлять цвет пикселей через константы или пиксельный шейдер. Пример:
C:
sampler2D tex0 : register(s0);
extern float3 dy: register(c0);

float4 main(float2 tc : TEXCOORD0) : COLOR
{
    return tex2D(tex0, tc) * float4(dy[0], dy[1], dy[2], 1.0);
}
C++:
{
    HRSRC hsrc = FindResourceW(reinterpret_cast<HMODULE>(hmdl), MAKEINTRESOURCEW(IDR_HLSL2), L"HLSL");
    PVOID shader = LockResource(LoadResource(reinterpret_cast<HMODULE>(hmdl), hsrc));
    pDevice->CreatePixelShader(reinterpret_cast<DWORD*>(shader), &pPixelShader);
}
C++:
pDevice->SetPixelShader(pPixelShader);
// Rainbow lol
if (bTact) {
    HSVtoRGB(RGB[0], RGB[1], RGB[2], color[0], color[1], color[2]);
    color[0] += 2.0f;
    if (color[0] >= 360.0f) color[0] -= 360.0f;
    bTact = false;
}
pDevice->SetPixelShaderConstantF(0, RGB, 1);
fpHkDrawIndexedPrimitive(pDevice, Type, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
pDevice->SetPixelShader(nullptr);
return D3D_OK;
а может знаешь пайплайн рендера авто?
 

loganhackerdff

Известный
868
517
всем привет, я столкнулся с прикольной проблемой, она заключается в том, что ИНОГДА std::vector<someclass> при emplace_back у меня выбивает исключение this = nullptr
код класса
C++:
class RenderClass
{
public:
    bool m_bIsEnabled{ false }; //  визуалка 2019 показывает ошибку тут

    std::string m_sName{ "" };
private:   
    std::vector<ObjectRender> m_objectsRenders;
    std::vector<Text3dRender> m_text3dRenders;
    std::vector<PickupRender> m_pickupRenders;
public:     
    RenderClass();
    RenderClass(const char* szName);

    void ReadWrite(READ_WRITE_PARAMS);

    bool areAnyObjectRendersEnabled();
    bool areAnyickupRendersEnabled();
    bool areAnyText3DRendersEnabled();

    void renderPickups(RenderPickup_ObjectData* pRenderPickupData);
    void renderObjects(RenderPickup_ObjectData* pRenderObjectData);
    void render3DTexts(Render3DTextData* p3DTextData);

    void drawEditor(size_t spl);
    void drawMenu(size_t i);

};
Код с самим emplace_back()
C++:
void CustomRender::ReadWrite(READ_WRITE_PARAMS)
{
    using namespace std::chrono_literals;
    try
    {
        FIELD_IV4(customRenderData.vec4Color);
        FIELD(customRenderData.bDrawLine);

        FIELD(customRenderData.m_fFontScale);

        FIELD(m_bEnabled);

        if (bRead)
        {
            size_t i = 0;
            while (true)
            {
                if (data["class"][std::to_string(i).c_str()].is_null())
                    break;

                auto&& renderClass = m_classes.emplace_back(); // вот тут ошибка
                renderClass.ReadWrite(data["class"][std::to_string(i).c_str()], bRead);
                i++;
            }
        }
        else
        {
            for (size_t i = 0; i < m_classes.size(); i++)
                m_classes[i].ReadWrite(data["class"][std::to_string(i).c_str()], bRead);
        }
    }
    catch (...) { setDefaultSettings(); }

}
1630160673928.png

1630160720160.png
 

kin4stat

mq-team
Всефорумный модератор
2,730
4,710
всем привет, я столкнулся с прикольной проблемой, она заключается в том, что ИНОГДА std::vector<someclass> при emplace_back у меня выбивает исключение this = nullptr
код класса
C++:
class RenderClass
{
public:
    bool m_bIsEnabled{ false }; //  визуалка 2019 показывает ошибку тут

    std::string m_sName{ "" };
private: 
    std::vector<ObjectRender> m_objectsRenders;
    std::vector<Text3dRender> m_text3dRenders;
    std::vector<PickupRender> m_pickupRenders;
public:   
    RenderClass();
    RenderClass(const char* szName);

    void ReadWrite(READ_WRITE_PARAMS);

    bool areAnyObjectRendersEnabled();
    bool areAnyickupRendersEnabled();
    bool areAnyText3DRendersEnabled();

    void renderPickups(RenderPickup_ObjectData* pRenderPickupData);
    void renderObjects(RenderPickup_ObjectData* pRenderObjectData);
    void render3DTexts(Render3DTextData* p3DTextData);

    void drawEditor(size_t spl);
    void drawMenu(size_t i);

};
Код с самим emplace_back()
C++:
void CustomRender::ReadWrite(READ_WRITE_PARAMS)
{
    using namespace std::chrono_literals;
    try
    {
        FIELD_IV4(customRenderData.vec4Color);
        FIELD(customRenderData.bDrawLine);

        FIELD(customRenderData.m_fFontScale);

        FIELD(m_bEnabled);

        if (bRead)
        {
            size_t i = 0;
            while (true)
            {
                if (data["class"][std::to_string(i).c_str()].is_null())
                    break;

                auto&& renderClass = m_classes.emplace_back(); // вот тут ошибка
                renderClass.ReadWrite(data["class"][std::to_string(i).c_str()], bRead);
                i++;
            }
        }
        else
        {
            for (size_t i = 0; i < m_classes.size(); i++)
                m_classes[i].ReadWrite(data["class"][std::to_string(i).c_str()], bRead);
        }
    }
    catch (...) { setDefaultSettings(); }

}
Ну как минимум emplace_back возвращает lvalue reference, а у тебя auto&&, который rvalue reference
 

Dark_Knight

Me, me and me.
Друг
4,062
2,077
А зачем 2 &&? Один вроде нужен. Да и лучше обращаться к елементам контейнеров через at и попробуй еще в try catch взять код и посмотреть, что за ошибку выдает.
 

loganhackerdff

Известный
868
517
Ну как минимум emlace_back возвращает lvalue reference, а у тебя auto&&, который rvalue reference
А зачем 2 &&? Один вроде нужен. Да и лучше обращаться к елементам контейнеров через at и попробуй еще в try catch взять код и посмотреть, что за ошибку выдает.
всё равно выбивает, в консоль не выводиться сообщение о исключении, не доходит до него(я не забыл добавить)
 

loganhackerdff

Известный
868
517
так похоже что выбивает только при отладке в визуал студии

или просто намного чаще
 

loganhackerdff

Известный
868
517
cпс пацаны, замена && на & помогла, странно, у меня почти везде auto&& было написано, заменил, а с
RenderClass(RenderClass&) = default;
RenderClass(RenderClass&&) = default;
вообще не компилилось, даже по одной
А нет не помогла
 
Последнее редактирование: