Наконец сайт включился
xanser, вот какую инфу мне по этому помоду давал как-то
DK:
Поиск компонента авто по имени в CLEO:
05E7: 1@ = car 0@ struct
1@ += 0x4C
05E0: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 4
05E0: 1@ = read_memory 1@ size 4 virtual_protect 0
05F8: 4@ = var 2@ offset
05F7: 2@ = label @dummy_name offset
3@ = 0
05E1: call 0x645060 num_params 3 pop 3 4@ 0x5411E0 1@
if
3@ > 0
then
// Получили результат в переменную 3@
end
// -- name --
:dummy_name
hex
"mydummy" 00
end
Функция из опкода 04E1(этот опкод поворачивает компонент авто - открывает багажник):
void __thiscall _PopBoot(CAutomobile *this)
{
CAutomobile *car;
int status;
CMatrix m;
CVector vPrevPos;
float rotation[3];
car = this;
status = CDamageManager::GetComponnetStatus(&this->damageManager, 1); // COMPONENT_BOOT
switch ( status )
{
case 0: // STATE_OK
case 1: // STATE_OPENED
car->m_sCarDoor[1].m_fAngle = car->m_sCarDoor[1].m_fOpenAngle;
CMatrix::constructor_1(&m, &car->m_pCarNode[18]->frame.modelling, 0);
vPrevPos.x = m.rw.pos.x;
vPrevPos.y = m.rw.pos.y;
vPrevPos.z = m.rw.pos.z;
rotation[0] = g_vPopBootRotation.x;
rotation[1] = g_vPopBootRotation.y;
rotation[2] = g_vPopBootRotation.z;
rotation[car->m_sCarDoor[1].m_bAxis] = car->m_sCarDoor[1].m_fAngle;
CMatrix::SetRotation(&m, rotation[0], rotation[1], rotation[2]);
m.rw.pos.x = m.rw.pos.x + vPrevPos.x;
m.rw.pos.y = m.rw.pos.y + vPrevPos.y;
m.rw.pos.z = m.rw.pos.z + vPrevPos.z;
CMatrix::UpdateRW(&m);
result = CMatrix::destructor(&m);
break;
default:
return;
}
return;
}
Как это совместить, а именно: какой оффсет у
поворота компонента - хз. За 1.5 года, с того момента, как мне помог с инфой
DK - я так и не смог ничего по этому поводу сделать(мне нужно было найти способ управлять углом поворота багажника), а доставать DK своим нубством не хотел...
Так что если разберешься - прошу еще помочь узнать адрес угла поворота багажника.
UPD: Есть еще
0059D100
CAutomobile::SetComponentRotation (( int,float,float,float ))
Еще куча инфы
в этой теме, но она практически вся о SA
