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

loganhackerdff

Известный
868
518
Указатель на интерфейс 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
518
CVehicle если знаешь как получить, то можешь просто его скастить до CAutomobile.
reinterept_cast`ом его прочитать как CAutomobile? .... в sfapi половины классов не определено, приходится самому их искать в других апи и вписывать, особенно это заметно в когда ты глубоко руки в говно засунул
 

kin4stat

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

loganhackerdff

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

DarkP1xel

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

Const

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

DarkP1xel

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

Const

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

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,964
Если CBike будет наследовать CAutomobile, 0x0-0xN (произвольно), будет схож с CAutomobile. А вот то, что выходит за 0xN, будет совместимо конкретно с CBike, а не с CAutomobile.
Так то да, но вот например CHeli наследует весь CAutomobile в то время как CBike только лишь от CVehicle.
 

Const

Потрачен
28
54
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

manukhov

Известный
125
128
Добрый вечер, вот что из этого всего реально отвечает за смену навыков владения оружием?

1. CPed +0x72C = [byte] Навык владения оружием (0-4)

2. 0xC8AAB8 - Начало блока, куда считывается информация об оружии с меткой J (оружие ближнего боя) и $ (остальное оружие). В этом блоке 0x50 элементов по 0x70 байт в каждом. Индекс элемента высчитывается по формуле: <номер оружия> + <смещение>. Смещение определяется навыком оружия skilllevel: STD - 0, POOR - 25, PRO - 36, особое (характеристики пистолета копов) - 47. Все имена взяты из заголовка оригинального weapon.dat.

3.
  • +0x30 = [dword] Владение оружием
    • 0 - POOR //Наихудшее
    • 1 - STD //Среднее
    • 2 - PRO //Наилучшее
    • 3 - особое
  • +0x34 = [dword] statrequired. Уровень статистики, необходимый для получения текущего навыка владения оружи