Другое SAMPFUNCS | API C++

san0

Известный
Друг
411
267
C++:
if(GAME->IsAtMenu()) ...//<Выйти с меню>

Нужна функция выхода с основного меню(АФК), если я на паузе. Хелп)
Красиво все там оформи
C++:
class CMenuManagerSAInterface
{
public:
    BYTE bPadding[92];
    bool bIsActive;
    BYTE bPadding2[256];
    BYTE bCurrentScreen;
    BYTE bLastScreen;
};

GAME->GetMenuManager()->GetInterface()->bIsActive = false;
((void(__cdecl *)(void))0x561B00)();
 

Vandal™

Известный
55
4
Красиво все там оформи
C++:
class CMenuManagerSAInterface
{
public:
    BYTE bPadding[92];
    bool bIsActive;
    BYTE bPadding2[256];
    BYTE bCurrentScreen;
    BYTE bLastScreen;
};

GAME->GetMenuManager()->GetInterface()->bIsActive = false;
((void(__cdecl *)(void))0x561B00)();
Благодарочка, все получилось)
Одна проблема. Скрипт компилируется и нормально работает, но выбивает синтаксическую ошибку. Возможно пофиксить?
Bx6kX7yuQiOPlDMWlOA3MA.png

P.S Screenshot(https://prnt.sc/i4m4pm)
 

san0

Известный
Друг
411
267
  • Нравится
Реакции: Vandal™

Vandal™

Известный
55
4
Перенеси объявление класса в
\game_api\game\CMenuManager.h
C++:
((void(__cdecl *)()) 0x561AF0)();
GAME->GetMenuManager()->GetInterface()->bIsActive = true;
По идее должен уходить в АФК, но сама менюшка не появляется, а иногда тупо зависает :(
Что не так? От места не зависит.
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
по сути должно хватить и

C++:
void CTimer::StartUserPause()
{
    ((void (__cdecl *)()) 0x561AF0)();
}

void CTimer::EndUserPause()
{
    ((void (__cdecl *)()) 0x561B00)();
}

хз почему у тебя не работает
 

san0

Известный
Друг
411
267
Как правильнее?
Написал бы сразу, что и включать и выключать)
C++:
class CMenuManagerSAInterface
{
public:
    BYTE bFirstPadding[50];
    bool bDontDraw;
    bool bActivateNextFrame;
    BYTE bSecondPadding[40];
    bool bIsActive;
    BYTE bThirdPadding[256];
    BYTE bCurrentScreen;
    BYTE bLastScreen;
    void SetMenuState(bool state)
    {
        state ?
            this->bActivateNextFrame = true
            :
            this->bDontDraw = true
        ;
    }
};
//
GAME->GetMenuManager()->GetInterface()->SetMenuState(false / true);
 
  • Нравится
Реакции: Vandal™

Vandal™

Известный
55
4
Как сделать чек строки в диалоге?
C++:
SF->getSAMP()->getDialog()->GetInputText() // Если введенная строка в диалог нужна
SF->getSAMP()->getDialog()->pText; // На текст в самой табличке
Потом сканируй через регулярку то, что нужно.
 
  • Нравится
Реакции: mrdiimax

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Подскажите пожалуйста как проверить активен ли "Marker Race" и как получить его координаты ?
 

vasiliy130198

Новичок
27
0
Добрый вечер) Интересует вопрос, как изменить скорость транспорту, в котором сидишь? Своеобразный аналог ограничителя скорости.
C++:
        incarspeed[0] = SF->getSAMP()->getPlayers()->pLocalPlayer->inCarData.fMoveSpeed[0];
        incarspeed[1] = SF->getSAMP()->getPlayers()->pLocalPlayer->inCarData.fMoveSpeed[1];
        incarspeed[2] = SF->getSAMP()->getPlayers()->pLocalPlayer->inCarData.fMoveSpeed[2];
        float now_speed = sqrtf(incarspeed[0] * incarspeed[0] + incarspeed[1] * incarspeed[1] + incarspeed[2] * incarspeed[2]) * 100;

Далее нужно сравнить now_speed и int speed (тут число, изменяемое через команду).
Вопрос, как установить новую скорость транспорту, если в 'speed' только одно число, а тут:
C++:
params->bitStream->SerializeVector(false, vehspeed[0], vehspeed[1], vehspeed[2]);
три других параметра?
 

CarLCas

Известный
161
118
Добрый вечер) Интересует вопрос, как изменить скорость транспорту, в котором сидишь? Своеобразный аналог ограничителя скорости.
C++:
        incarspeed[0] = SF->getSAMP()->getPlayers()->pLocalPlayer->inCarData.fMoveSpeed[0];
        incarspeed[1] = SF->getSAMP()->getPlayers()->pLocalPlayer->inCarData.fMoveSpeed[1];
        incarspeed[2] = SF->getSAMP()->getPlayers()->pLocalPlayer->inCarData.fMoveSpeed[2];
        float now_speed = sqrtf(incarspeed[0] * incarspeed[0] + incarspeed[1] * incarspeed[1] + incarspeed[2] * incarspeed[2]) * 100;

Далее нужно сравнить now_speed и int speed (тут число, изменяемое через команду).
Вопрос, как установить новую скорость транспорту, если в 'speed' только одно число, а тут:
C++:
params->bitStream->SerializeVector(false, vehspeed[0], vehspeed[1], vehspeed[2]);
три других параметра?
Вычисли коэффициент требуемой скорости от текущей, потом вектор умножай на него.