GTA Vice City > Программирование

Vice City Plugin SDK

<< < (10/10)

DK:
Добавлена инструкция по установке Code::Blocks.
https://github.com/DK22Pac/plugin-sdk/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D1%81%D1%80%D0%B5%D0%B4%D1%8B-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D0%BA%D0%B8#codeblocks

kenking:
Сегодня обновился. Удалил полностью старый sdk, клонировал заново, удалил старые шаблоны, "почистил" студию от старых шаблонов. Сгенерировал проект. Собрал плагины.
Теперь VALIDATE_SIZE не работает?
В новых коммитах зачем-то удалены выравнивания структур. Например, для GTA3 возьмём класс CBulletInfo. Было:

--- Код: C++ ---#pragma pack(push, 4)class CBulletInfo {public:    eWeaponType  m_nWeaponType;    CEntity     *m_pCreator;    unsigned int m_nDestroyTime;    bool         m_bExists;    CVector      m_vecPosition;    CVector      m_vecVelocity;    short        m_nDamage;};#pragma pack(pop)VALIDATE_SIZE(CBulletInfo, 0x2C);
Стало:

--- Код: C++ ---class CBulletInfo {public:    eWeaponType  m_nWeaponType;    CEntity     *m_pCreator;    unsigned int m_nDestroyTime;    bool         m_bExists;    CVector      m_vecPosition;    CVector      m_vecVelocity;    short        m_nDamage;};VALIDATE_SIZE(CBulletInfo, 0x2C);
И при этом нет ошибки в размере класса!  :o Это как понимать?

DK:
Потому что выравнивание структур по умолчанию - 4 байта.
Можно проверить вот так:

--- Код: C++ ---template<typename T1, typename T2, typename T3, typename T4, int S>struct message;struct Size;struct of;struct is;#define PRINT_SIZE(x) message<Size, of, x, is, sizeof(x)> _##x struct A {    unsigned char field_0;}; struct B {    unsigned short field_0;}; struct C {    unsigned int field_0;    unsigned char field_4;}; PRINT_SIZE(A);PRINT_SIZE(B);PRINT_SIZE(C);

--- Код: C++ ---error C2079: '_A' uses undefined struct 'message<Size,of,A,is,1>'error C2079: '_B' uses undefined struct 'message<Size,of,B,is,2>'error C2079: '_C' uses undefined struct 'message<Size,of,C,is,8>'

Навигация

[0] Главная страница сообщений

[*] Предыдущая страница

Перейти к полной версии