GTA Builder Форум

GTA Vice City => Идеи => Тема начата: xanser от Декабря 12, 2013, 12:52:55 pm

Название: Тяжелая техника (число колес)
Отправлено: xanser от Декабря 12, 2013, 12:52:55 pm
Максимальное число колес - шесть. Умельцы при моделировании придумали обзывать колесами сразу весь мост, увеличив число колес до 12, хотя при пробивании одной стороны видимо спускает весь мост.
А как быть с машинками по 7-8 колес с каждой стороны, наверняка каждому хотелось бы заиметь в игру Тополь-М.

(http://s6.postimg.org/ball4madd/209121_1_1351686182.jpg) (http://s6.postimg.org/ju4z2dipt/autowp_ru_prochie_liebherr_ltm_11200_9_1_1.jpg)
Название: Re: Тяжелая техника (число колес)
Отправлено: xanser от Апреля 21, 2014, 12:54:37 pm
Вот один из вариантов: сделать машину под машиной, синхронизировать плагином координаты, повреждение и т.д. Осталось узнать углы колес внешней машины и копировать их во внутреннюю, создавая видимость вращения.

(http://s6.postimg.org/ckqj1x8qp/Untitled_1.jpg)
Название: Re: Тяжелая техника (число колес)
Отправлено: DK от Апреля 21, 2014, 02:56:08 pm
xanser, можно просто дублировать колёса и сместить по нужной оси. Так вроде сделаны колёса в поездах в СА.
Название: Re: Тяжелая техника (число колес)
Отправлено: xanser от Апреля 21, 2014, 03:11:53 pm
Пробовал, по-моему повторяющиеся имена перестают крутиться
Название: Re: Тяжелая техника (число колес)
Отправлено: DK от Апреля 21, 2014, 03:18:05 pm
Можно найти эти обьекты в иерархии и в цикле ставить вращение, как у основных колёс.
Название: Re: Тяжелая техника (число колес)
Отправлено: Sektor от Апреля 21, 2014, 03:23:20 pm
Цитировать
Можно найти эти обьекты в иерархии и в цикле ставить вращение, как у основных колёс.

Т.е ему, нужно вращать в том направление куда движется авто. Значит нужно получить направление и скорость, и исходя скорости, вращать в нужную сторону. Но это уже надо ему за CEntity у объекта хвататься далее, что-бы начать вращение?
Название: Re: Тяжелая техника (число колес)
Отправлено: DK от Апреля 21, 2014, 03:52:16 pm
Не нужно. Просто скопировать параметры вращения.
Название: Re: Тяжелая техника (число колес)
Отправлено: xanser от Апреля 21, 2014, 05:38:53 pm
Звучит конечно здорово. Но хорошо бы какой-то рабочий пример, как добраться до компонентов, зная например указатель на машину?
Название: Re: Тяжелая техника (число колес)
Отправлено: Shagg_E от Апреля 22, 2014, 04:25:42 pm
Наконец сайт включился

xanser, вот какую инфу мне по этому помоду давал как-то DK:

Поиск компонента авто по имени в CLEO:
Код: Javascript
  1. 05E7: 1@ = car 0@ struct
  2. 1@ += 0x4C
  3. 05E0: 1@ = read_memory 1@ size 4 virtual_protect 0
  4. 1@ += 4
  5. 05E0: 1@ = read_memory 1@ size 4 virtual_protect 0
  6. 05F8: 4@ = var 2@ offset
  7. 05F7: 2@ = label @dummy_name offset
  8. 3@ = 0
  9. 05E1: call 0x645060 num_params 3 pop 3 4@ 0x5411E0 1@
  10. if
  11.     3@ > 0
  12. then
  13.     // Получили результат в переменную 3@
  14. end
  15.  
  16. // -- name --
  17. :dummy_name
  18. hex
  19.     "mydummy" 00
  20. end

Функция из опкода 04E1(этот опкод поворачивает компонент авто - открывает багажник):
Код: C++
  1. void __thiscall _PopBoot(CAutomobile *this)
  2. {
  3.   CAutomobile *car;
  4.   int status;
  5.   CMatrix m;
  6.   CVector vPrevPos;
  7.   float rotation[3];
  8.  
  9.   car = this;
  10.   status = CDamageManager::GetComponnetStatus(&this->damageManager, 1); // COMPONENT_BOOT
  11.   switch ( status )
  12.   {
  13.     case 0: // STATE_OK
  14.     case 1: // STATE_OPENED
  15.       car->m_sCarDoor[1].m_fAngle = car->m_sCarDoor[1].m_fOpenAngle;
  16.       CMatrix::constructor_1(&m, &car->m_pCarNode[18]->frame.modelling, 0);
  17.       vPrevPos.x = m.rw.pos.x;
  18.       vPrevPos.y = m.rw.pos.y;
  19.       vPrevPos.z = m.rw.pos.z;
  20.       rotation[0] = g_vPopBootRotation.x;
  21.       rotation[1] = g_vPopBootRotation.y;
  22.       rotation[2] = g_vPopBootRotation.z;
  23.       rotation[car->m_sCarDoor[1].m_bAxis] = car->m_sCarDoor[1].m_fAngle;
  24.       CMatrix::SetRotation(&m, rotation[0], rotation[1], rotation[2]);
  25.       m.rw.pos.x = m.rw.pos.x + vPrevPos.x;
  26.       m.rw.pos.y = m.rw.pos.y + vPrevPos.y;
  27.       m.rw.pos.z = m.rw.pos.z + vPrevPos.z;
  28.       CMatrix::UpdateRW(&m);
  29.       result = CMatrix::destructor(&m);
  30.       break;
  31.     default:
  32.       return;
  33.   }
  34.   return;
  35. }

Как это совместить, а именно: какой оффсет у поворота компонента - хз. За 1.5 года, с того момента, как мне помог с инфой DK - я так и не смог ничего по этому поводу сделать(мне нужно было найти способ управлять углом поворота багажника), а доставать DK своим нубством не хотел...

Так что если разберешься - прошу еще помочь узнать адрес угла поворота багажника.


UPD: Есть еще 0059D100
CAutomobile::SetComponentRotation (( int,float,float,float ))

Еще куча инфы в этой теме (http://sannybuilder.com/forums/viewtopic.php?id=304&p=7), но она практически вся о SA   :( ??? :'(
Название: Re: Тяжелая техника (число колес)
Отправлено: xanser от Апреля 24, 2014, 10:36:57 am
Интересный материал, попробую разобраться
Название: Re: Тяжелая техника (число колес)
Отправлено: DK от Апреля 26, 2014, 01:13:15 pm
В базе по вайсу, функция PreProcessHierarchy (поиск по имени в окне функций - Alt+T). Там создаются атомики колес и добавляются в иерархию авто.
(http://img842.imageshack.us/img842/6305/y41c.png)