Автор Тема: Тяжелая техника (число колес)  (Прочитано 6835 раз)

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Тяжелая техника (число колес)
« : Декабрь 12, 2013, 12:52:55 pm »
Максимальное число колес - шесть. Умельцы при моделировании придумали обзывать колесами сразу весь мост, увеличив число колес до 12, хотя при пробивании одной стороны видимо спускает весь мост.
А как быть с машинками по 7-8 колес с каждой стороны, наверняка каждому хотелось бы заиметь в игру Тополь-М.


Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Тяжелая техника (число колес)
« Ответ #1 : Апрель 21, 2014, 12:54:37 pm »
Вот один из вариантов: сделать машину под машиной, синхронизировать плагином координаты, повреждение и т.д. Осталось узнать углы колес внешней машины и копировать их во внутреннюю, создавая видимость вращения.


Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Тяжелая техника (число колес)
« Ответ #2 : Апрель 21, 2014, 02:56:08 pm »
xanser, можно просто дублировать колёса и сместить по нужной оси. Так вроде сделаны колёса в поездах в СА.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Тяжелая техника (число колес)
« Ответ #3 : Апрель 21, 2014, 03:11:53 pm »
Пробовал, по-моему повторяющиеся имена перестают крутиться

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Тяжелая техника (число колес)
« Ответ #4 : Апрель 21, 2014, 03:18:05 pm »
Можно найти эти обьекты в иерархии и в цикле ставить вращение, как у основных колёс.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 521
  • Репутация: +34/-0
    • Просмотр профиля
Re: Тяжелая техника (число колес)
« Ответ #5 : Апрель 21, 2014, 03:23:20 pm »
Цитировать
Можно найти эти обьекты в иерархии и в цикле ставить вращение, как у основных колёс.

Т.е ему, нужно вращать в том направление куда движется авто. Значит нужно получить направление и скорость, и исходя скорости, вращать в нужную сторону. Но это уже надо ему за CEntity у объекта хвататься далее, что-бы начать вращение?

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Тяжелая техника (число колес)
« Ответ #6 : Апрель 21, 2014, 03:52:16 pm »
Не нужно. Просто скопировать параметры вращения.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Тяжелая техника (число колес)
« Ответ #7 : Апрель 21, 2014, 05:38:53 pm »
Звучит конечно здорово. Но хорошо бы какой-то рабочий пример, как добраться до компонентов, зная например указатель на машину?

Оффлайн Shagg_E

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 705
  • Репутация: +24/-4
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: Тяжелая техника (число колес)
« Ответ #8 : Апрель 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 ))

Еще куча инфы в этой теме, но она практически вся о SA   :( ??? :'(
« Последнее редактирование: Апрель 22, 2014, 04:47:38 pm от Shaggy »

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: Тяжелая техника (число колес)
« Ответ #9 : Апрель 24, 2014, 10:36:57 am »
Интересный материал, попробую разобраться

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Тяжелая техника (число колес)
« Ответ #10 : Апрель 26, 2014, 01:13:15 pm »
В базе по вайсу, функция PreProcessHierarchy (поиск по имени в окне функций - Alt+T). Там создаются атомики колес и добавляются в иерархию авто.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv