GTA Vice City > Программирование
Vice City Plugin SDK
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>'
Навигация
Перейти к полной версии