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

memir

🇷🇺
Всефорумный модератор
333
597
Хм.. Интересно. Просто недавно наткнулся на пост (размещённый тут же). Цитата -

"
Че сложного в спидхаке?
0xBA18FC // Vehicle CPED Pointer
0x44 // Vehicle Speed X
0x48 // Vehicle Speed Y

Читаешь значение из Vehicle CPED Pointer.
И это значение плюс Vehicle Speed X/Y - будет скорость т/c.
Плюсуешь к ним сколько-то или умножаешь.
И все это в цикле.
"

Вот и думаю, что типа " 0xBA18FC+0x44 " - должно выдавать скорость или что-то типа того по X'у. Тож самое, но с 0x48 - по Y'у Не?
Читать надо именно по указателю. Берёшь значение, которое хранится в 0xBA18FC, и к нему прибавляешь 0x48.
И вообще, проще обращатся к полям через сишные структуры
C:
struct stVehicle
{
    unsigned char _bPad[0x44];
    float fSpeed[3]; // AKA CVector
};
/// -------------
stVehicle *pSelfVehicle = (*((stVehicle **)0xBA18FC))
 

Some_Clever_Name

Новичок
13
0
Читать надо именно по указателю. Берёшь значение, которое хранится в 0xBA18FC, и к нему прибавляешь 0x48.
И вообще, проще обращатся к полям через сишные структуры
C:
struct stVehicle
{
    unsigned char _bPad[0x44];
    float fSpeed[3]; // AKA CVector
};
/// -------------
stVehicle *pSelfVehicle = (*((stVehicle **)0xBA18FC))

Вроде сделал все по феншую, но значения такие:

Если ехать вперёд - то значение может увеличиваться, если развернуться - значение будет уходить в -, если влево - 0.00 с чем-то, если вправо - то -0.00 с чем-то. В чем может быть подвох?
 

ALF

Известный
Проверенный
320
537
Я спиздил отсюда (BlastHackNet/mod_s0beit_sa(https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src)) структуры чтобы получить IP сервера, но при попытке его отобразить (g_SAMP->szIP) игра тупо зависает. Шо делать?
ну эт, как его... чтоб получить какой то фидбэк, надо показать как ты делаешь
 

ЯedЯuM

Malware Maker
244
304
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вроде сделал все по феншую, но значения такие:

Если ехать вперёд - то значение может увеличиваться, если развернуться - значение будет уходить в -, если влево - 0.00 с чем-то, если вправо - то -0.00 с чем-то. В чем может быть подвох?
это вектор в 3д пространстве к твоей будущей позиции, а не совсем просто скорость как ты думаешь
 

holmes0

Известный
29
8
ну эт, как его... чтоб получить какой то фидбэк, надо показать как ты делаешь
C++:
#define SAMP_INFO_OFFSET    0x21A0F8

struct stSAMP
{
    void                    *pUnk0;
    struct stServerInfo            *pServerInfo;
    uint8_t                    byteSpace[24];
    char                    szIP[257];
    char                    szHostname[259];
    bool                    bNametagStatus; // changes by /nametagstatus
    uint32_t                ulPort;
    uint32_t                ulMapIcons[100];
    int                        iLanMode;
    int                        iGameState;
    uint32_t                ulConnectTick;
    struct stServerPresets    *pSettings;
    void                    *pRakClientInterface;
    struct stSAMPPools        *pPools;
};

stSAMP *g_SAMP = nullptr;

struct stServerInfo {
    uint32_t             uiIP;
    uint16_t             usPort;
};

template<typename T>
T GetSAMPPtrInfo(uint32_t offset)
{
    if (g_dwSAMP_Addr == NULL)
        return NULL;
    return *(T *)(g_dwSAMP_Addr + offset);
}

struct stSAMP *stGetSampInfo(void)
{
    return GetSAMPPtrInfo<stSAMP *>(SAMP_INFO_OFFSET);
}

extern struct stSAMP   *g_SAMP;

При попытке вывести куда нибудь g_SAMP->szIP, g_SAMP->szHostname, g_SAMP->ulPort игру фризит.
 
Последнее редактирование:

CleanLegend

Известный
Всефорумный модератор
476
929
C++:
#define SAMP_INFO_OFFSET    0x21A0F8

struct stSAMP
{
    void                    *pUnk0;
    struct stServerInfo            *pServerInfo;
    uint8_t                    byteSpace[24];
    char                    szIP[257];
    char                    szHostname[259];
    bool                    bNametagStatus; // changes by /nametagstatus
    uint32_t                ulPort;
    uint32_t                ulMapIcons[100];
    int                        iLanMode;
    int                        iGameState;
    uint32_t                ulConnectTick;
    struct stServerPresets    *pSettings;
    void                    *pRakClientInterface;
    struct stSAMPPools        *pPools;
};

stSAMP *g_SAMP = nullptr;

struct stServerInfo {
    uint32_t             uiIP;
    uint16_t             usPort;
};

template<typename T>
T GetSAMPPtrInfo(uint32_t offset)
{
    if (g_dwSAMP_Addr == NULL)
        return NULL;
    return *(T *)(g_dwSAMP_Addr + offset);
}

struct stSAMP *stGetSampInfo(void)
{
    return GetSAMPPtrInfo<stSAMP *>(SAMP_INFO_OFFSET);
}

extern struct stSAMP   *g_SAMP;

При попытке вывести куда нибудь g_SAMP->szIP, g_SAMP->szHostname, g_SAMP->ulPort игру фризит.
Покажи как инициализацию проводишь
 

Ranto

Участник
45
1
Как запустить .exe файл через консоль что-ли?
Скрытое содержимое доступно для зарегистрированных пользователей!