GTA Builder Форум

GTA Vice City => Программирование => Тема начата: graveman от Июнь 09, 2014, 07:58:27 am

Название: Структуры и классы игры
Отправлено: graveman от Июнь 09, 2014, 07:58:27 am
Кто-нибудь знает, зачем в CMapNode 10 указателей на CPtrNode? Может они как-то взаимосвязаны с 10-ю пулами объектов, порожденных от производных классов CEntity?

Функция с адресом 004C9F40 вызывается для отрисовки педов, тачек, домов и динамических объектов. Поэтому, если забить ее нулевой функцией можно получить город-невидимку с дорогами. От тачек останутся фары. От всех останутся тени. Дороги, некоторые удаленные здания и эффекты света и ореола останутся.
Название: Re: Структуры и классы игры
Отправлено: Sektor от Июнь 10, 2014, 05:25:49 pm
Это тоже самое, что если бы мы сделали пустую функцию.
Название: Re: Структуры и классы игры
Отправлено: graveman от Июнь 11, 2014, 12:31:02 pm
Это тоже самое, что если бы мы сделали пустую функцию.
Ну да, я джампил на пустую функцию в первой инструкции.

Кто-нибудь знает о назначении флагов CEntity?
Название: Re: Структуры и классы игры
Отправлено: DK от Июнь 11, 2014, 08:49:28 pm
Цитировать
Функция с адресом 004C9F40
Я же скидывал обновленную базу...
0x4C9F40     ; CRenderer::RenderEverythingBarRoads(void)
Название: Re: Структуры и классы игры
Отправлено: graveman от Июнь 16, 2014, 07:00:39 am
Цитировать
Функция с адресом 004C9F40
Я же скидывал обновленную базу...
0x4C9F40     ; CRenderer::RenderEverythingBarRoads(void)
Это название мне известно. Может у кого старые базы.
Название: Re: Структуры и классы игры
Отправлено: DK от Июнь 20, 2016, 08:00:01 pm
Кстати, оригинальное название класса CMapNode - CSector.
Дело в том, что вся карта разделены на секторы, и отдельно в каждом секторе есть списки обьектов, расположенных в этом секторе.
Всего таких секторов - 80 * 80 (6400).
В кажом секторе - 10 списков (по 2 для разных типов обьектов).
Код: C++
  1. class CPtrNode {
  2. public:
  3.     void     *m_ptr; // usually a ptr to CEntity
  4.     CPtrNode *m_pNext;
  5.     CPtrNode *m_pPrev;
  6. };
  7.  
  8. class CPtrList {
  9. public:
  10.     CPtrNode *m_pLast;
  11. };
  12.  
  13. class CSector {
  14. public:
  15.     CPtrList m_buildingList;
  16.     CPtrList m_buildingOverlapList;
  17.     CPtrList m_objectList;
  18.     CPtrList m_objectOverlapList;
  19.     CPtrList m_vehicleList;
  20.     CPtrList m_vehicleOverlapList;
  21.     CPtrList m_pedList;
  22.     CPtrList m_pedOverlapList;
  23.     CPtrList m_dummyList;
  24.     CPtrList m_dummyOverlapList;
  25. };