краш игры

yoonost

Известный
Автор темы
61
3
В чем проблема? Во время прорисовки радара крашит игру, пробовал сделать многое но результат один. В коде сейчас стандартный код gta_sa.exe но даже при этом происходит краш

1719817726125.png

1719817971038.png
 
Решение
Все ок
Да
Размер карты изменить
1. Надеюсь проверял по асм коду.
2. Что отлалчик показал?

С таким кодом в одиночной игре всё работает. Соглашение cdecl, функция ничего не возвращает.
1719872521511.png




rebuild_TransformRadarPointToScreenSpace:
void CRadar::TransformRadarPointToScreenSpace(CVector2D& screenPt, const CVector2D& radarPt)
{
    if (FrontEndMenuManager.m_bDrawingMap)
    {
        screenPt.x = FrontEndMenuManager.m_fMapZoom * radarPt.x + FrontEndMenuManager.m_vMapOrigin.x;
        screenPt.y = FrontEndMenuManager.m_fMapZoom * radarPt.y + FrontEndMenuManager.m_vMapOrigin.y;
    }

    else
    {
                screenPt.x = 0.5 * (94.0 * ((double)RsGlobal.maximumWidth * 0.0015625))
            + (double)RsGlobal.maximumWidth * 0.0015625 *...

fuflexxxx

Участник
21
7
В чем проблема? Во время прорисовки радара крашит игру, пробовал сделать многое но результат один. В коде сейчас стандартный код gta_sa.exe но даже при этом происходит краш

1719817726125.png

1719817971038.png
1. Перепроверь соглашение о вызове.
2. Пробовал ли отладчик подключать?
3. А что ты сделать то хочешь?
 

fuflexxxx

Участник
21
7
Все ок
Да
Размер карты изменить
1. Надеюсь проверял по асм коду.
2. Что отлалчик показал?

С таким кодом в одиночной игре всё работает. Соглашение cdecl, функция ничего не возвращает.
1719872521511.png




rebuild_TransformRadarPointToScreenSpace:
void CRadar::TransformRadarPointToScreenSpace(CVector2D& screenPt, const CVector2D& radarPt)
{
    if (FrontEndMenuManager.m_bDrawingMap)
    {
        screenPt.x = FrontEndMenuManager.m_fMapZoom * radarPt.x + FrontEndMenuManager.m_vMapOrigin.x;
        screenPt.y = FrontEndMenuManager.m_fMapZoom * radarPt.y + FrontEndMenuManager.m_vMapOrigin.y;
    }

    else
    {
                screenPt.x = 0.5 * (94.0 * ((double)RsGlobal.maximumWidth * 0.0015625))
            + (double)RsGlobal.maximumWidth * 0.0015625 * 40.0
            + 94.0 * ((double)RsGlobal.maximumWidth * 0.0015625) * radarPt.x * 0.5;
        screenPt.y = (double)RsGlobal.maximumHeight
            - 0.002232143 * (double)RsGlobal.maximumHeight * 104.0
            + 76.0 * (0.002232143 * (double)RsGlobal.maximumHeight) * 0.5
            - 76.0 * (0.002232143 * (double)RsGlobal.maximumHeight) * radarPt.y * 0.5;
    }
}

Код ниже написан лучше, но это, если в твоём сдк есть такие inline функции.
rebuild_TransformRadarPointToScreenSpace:
void CRadar::TransformRadarPointToScreenSpace(CVector2D& screenPt, const CVector2D& radarPt)
{
    //patch::Call<0x583480, CVector2D&, const CVector2D&>(screenPt, radarPt);

    if (FrontEndMenuManager.m_bDrawingMap)
    {
        screenPt.x = FrontEndMenuManager.m_fMapZoom * radarPt.x + FrontEndMenuManager.m_vMapOrigin.x;
        screenPt.y = FrontEndMenuManager.m_fMapZoom * radarPt.y + FrontEndMenuManager.m_vMapOrigin.y;
    }

    else
    {
        screenPt.x = SCREEN_STRETCH_X(94.0f) / 2.0f + SCREEN_STRETCH_X(40.0f) + SCREEN_STRETCH_X(94.0f * radarPt.x) / 2.0f;
        screenPt.y = SCREEN_STRETCH_FROM_BOTTOM(104.0f) + SCREEN_STRETCH_Y(76.0f) / 2.0f - SCREEN_STRETCH_Y(76.0f * radarPt.y) / 2.0f;
    }
}

Если крашить всё-равно будет, то покажи место, куда хук ставишь и как хук ставишь.
 
Последнее редактирование: