А как это сделать? :D Какой offset? Не подскажешь?попробуй сначала получить CPhysical и читать его.
Указатель в инте в шарпе хранится? ЛОЛ. Ты хоть поставил бы проверку, что поинтер существует.
Вообще скорость хранится там в CVector и по значения X, Y, Z надо считать скорость уже.Просто.. Я ещё только начинаю во все это лезть. Можно ли как-то вообще вытащить по-другому скорость машины?
Вообще скорость хранится там в CVector и по значения X, Y, Z надо считать скорость уже.
Читать надо именно по указателю. Берёшь значение, которое хранится в 0xBA18FC, и к нему прибавляешь 0x48.Хм.. Интересно. Просто недавно наткнулся на пост (размещённый тут же). Цитата -
"
Че сложного в спидхаке?
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'у Не?
struct stVehicle
{
unsigned char _bPad[0x44];
float fSpeed[3]; // AKA CVector
};
/// -------------
stVehicle *pSelfVehicle = (*((stVehicle **)0xBA18FC))
Читать надо именно по указателю. Берёшь значение, которое хранится в 0xBA18FC, и к нему прибавляешь 0x48.
И вообще, проще обращатся к полям через сишные структуры
C:struct stVehicle { unsigned char _bPad[0x44]; float fSpeed[3]; // AKA CVector }; /// ------------- stVehicle *pSelfVehicle = (*((stVehicle **)0xBA18FC))
ну эт, как его... чтоб получить какой то фидбэк, надо показать как ты делаешьЯ спиздил отсюда (BlastHackNet/mod_s0beit_sa(https://github.com/BlastHackNet/mod_s0beit_sa/blob/master/src)) структуры чтобы получить IP сервера, но при попытке его отобразить (g_SAMP->szIP) игра тупо зависает. Шо делать?
это вектор в 3д пространстве к твоей будущей позиции, а не совсем просто скорость как ты думаешьВроде сделал все по феншую, но значения такие:
Если ехать вперёд - то значение может увеличиваться, если развернуться - значение будет уходить в -, если влево - 0.00 с чем-то, если вправо - то -0.00 с чем-то. В чем может быть подвох?
Покажи как инициализацию проводишь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 игру фризит.