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

loganhackerdff

Известный
868
519
нашёл функцию из sobeit, но что ей запихнуть в dwThis я не знаю(
C++:
bool CAutomobileSA::IsInAir ( void )
{
    DEBUG_TRACE("bool CAutomobileSA::IsInAir ( void )");
    DWORD dwThis = (DWORD) GetInterface();
    DWORD dwFunc =0x6A6140;
    bool bReturn;
    _asm
    {
        mov     ecx, dwThis
        call    dwFunc
        mov     bReturn, al
    }
    return bReturn;
}
@SR_team , ты же мастер по sobeit, подскажи пж что ей скормить
 

Const

Потрачен
28
54
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
нашёл функцию из sobeit, но что ей запихнуть в dwThis я не знаю(
C++:
bool CAutomobileSA::IsInAir ( void )
{
    DEBUG_TRACE("bool CAutomobileSA::IsInAir ( void )");
    DWORD dwThis = (DWORD) GetInterface();
    DWORD dwFunc =0x6A6140;
    bool bReturn;
    _asm
    {
        mov     ecx, dwThis
        call    dwFunc
        mov     bReturn, al
    }
    return bReturn;
}
@SR_team , ты же мастер по sobeit, подскажи пж что ей скормить
Указатель на интерфейс CAutomobile.
 
  • Нравится
Реакции: loganhackerdff

loganhackerdff

Известный
868
519
Указатель на интерфейс CAutomobile.
ну я это понимаю, но я не шарю где его взять
1596100588724.png
 

Const

Потрачен
28
54
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ну я это понимаю, но я не шарю где его взять
Посмотреть вложение 63834
C++:
CCallHook
    *pProcessControlHook; // https://gitlab.com/prime-hack/samp/plugins/templates/AsiBase/-/blob/master/llmo/ccallhook.h

void *pAutomobileInterface;

inline bool CAutomobile__IsInAir(void *pThis) {
    return reinterpret_cast<bool(__thiscall *)(void *)>(0x6A6140)(pThis);
}

void CAutomobile__ProcessControl()
{
    pAutomobileInterface = reinterpret_cast<void *>(pProcessControlHook->reg86(r86::ECX));
  
    bool fResult = CAutomobile__IsInAir(pAutomobileInterface);
}

// SF: mainloop->!initialized
pProcessControlHook = new CCallHook(reinterpret_cast<void *>(0x006B196D));
pProcessControlHook->enable(CAutomobile__ProcessControl);

// DLL_PROCESS_DETACH / ~YourClass()
delete pProcessControlHook;
 
Последнее редактирование:

loganhackerdff

Известный
868
519
CVehicle если знаешь как получить, то можешь просто его скастить до CAutomobile.
reinterept_cast`ом его прочитать как CAutomobile? .... в sfapi половины классов не определено, приходится самому их искать в других апи и вписывать, особенно это заметно в когда ты глубоко руки в говно засунул
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,808
reinterept_cast`ом его прочитать как CAutomobile? .... в sfapi половины классов не определено, приходится самому их искать в других апи и вписывать, особенно это заметно в когда ты глубоко руки в говно засунул
Тебе вместо this нужно передать указатель на CAutomobile, но так как он наследуется от других классов, ты можешь туда передать указатель на CVehicle, CEntity, CPhysical, CPlaceable.
а вообще, чисто теоретически,можно даже void туда передать
 
  • Нравится
Реакции: loganhackerdff

loganhackerdff

Известный
868
519
простите что гнал на SF, не разобрался, функция оказывается работает только на автомобилях, на мотоциклах нет
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,982
Тебе вместо this нужно передать указатель на CAutomobile, но так как он наследуется от других классов, ты можешь туда передать указатель на CVehicle, CEntity, CPhysical, CPlaceable.
а вообще, чисто теоретически,можно даже void туда передать
Конкретно в эту функцию нужно отправлять только указатель на CAutomobile.
 

Const

Потрачен
28
54
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Конкретно в эту функцию нужно отправлять только указатель на CAutomobile.
Чем отличается CVehicle от CAutomobile? Не интересовался данной темой. Наверное CAutomobile это основной класс, а CVehicle и прочие - наследники.
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,982
Наверное CAutomobile это основной класс, а CVehicle и прочие - наследники.
В CAutomobile на нулевом оффсете идет CVehicle. Заметь, что CBike, CHeli и т.д. это разные классы и находясь в разном транспорте надо вызывать правильные функции для каждого типа транспорта.
 

Const

Потрачен
28
54
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
В CAutomobile на нулевом оффсете идет CVehicle. Заметь, что CBike, CHeli и т.д. это разные классы и находясь в разном транспорте надо вызывать правильные функции для каждого типа транспорта.
Если CBike будет наследовать CAutomobile, 0x0-0xN (произвольно), будет схож с CAutomobile. А вот то, что выходит за 0xN, будет совместимо конкретно с CBike, а не с CAutomobile.