Автор Тема: Vice City Plugin SDK  (Прочитано 17187 раз)

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Vice City Plugin SDK
« : Июнь 24, 2016, 06:15:49 pm »
Это тема для новостей о plugin-sdk для Vice City.
https://github.com/DK22Pac/plugin-sdk

24.06.2016 Первая версия SDK. Пока что реализовано очень мало.
« Последнее редактирование: Июнь 24, 2016, 06:23:59 pm от DK »
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

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

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Vice City Plugin SDK
« Ответ #1 : Ноябрь 05, 2016, 10:18:31 pm »
05.11.2016 В Vice City Plugin-SDK наконец-то можно работать с пулами транспорта, педов, обьектов.
Спасибо kenking'у за работу над версией Vice City.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

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

Оффлайн kenking

  • Новичок
  • **
  • Сообщений: 237
  • Репутация: +16/-0
    • Просмотр профиля
Re: Vice City Plugin SDK
« Ответ #2 : Ноябрь 06, 2016, 09:33:29 am »
Спасибо kenking'у за работу над версией Vice City.
Благодаря твоим объяснениям, мало-помалу начинаю разбираться.  :) Вот я разбором структур пока не получается.  :(

Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 521
  • Репутация: +34/-0
    • Просмотр профиля
Re: Vice City Plugin SDK
« Ответ #3 : Ноябрь 06, 2016, 06:30:55 pm »
Цитировать
Вот я разбором структур пока не получается.
Разбор структур в каком плане, свои с нуля создавать или где-то в функциях, объявлять обращение к полям?

Оффлайн kenking

  • Новичок
  • **
  • Сообщений: 237
  • Репутация: +16/-0
    • Просмотр профиля
Re: Vice City Plugin SDK
« Ответ #4 : Ноябрь 07, 2016, 08:16:09 am »
Разбор структур в каком плане, свои с нуля создавать или где-то в функциях, объявлять обращение к полям?
В уже имеющихся структурах, некоторые поля "не названы правильно". А некоторых структур нет вообще в базе. Так, что получается оба варианта.


Оффлайн GeniusZ

  • Призрак
  • Сообщений: 29
  • Репутация: +0/-0
    • Просмотр профиля
Re: Vice City Plugin SDK
« Ответ #5 : Ноябрь 27, 2016, 08:58:33 am »
Я не могу скомпилировать проект: компоновщик не находит  .lib файлы. В SDK их тоже нет.

Оффлайн kenking

  • Новичок
  • **
  • Сообщений: 237
  • Репутация: +16/-0
    • Просмотр профиля
Re: Vice City Plugin SDK
« Ответ #6 : Ноябрь 27, 2016, 09:21:09 am »
Надо сначала собрать сам плагин plugin_vc, потом найдёшь его в \plugin-sdk\output\lib\plugin_vc\Release\plugin_vc.lib

Оффлайн GeniusZ

  • Призрак
  • Сообщений: 29
  • Репутация: +0/-0
    • Просмотр профиля
Re: Vice City Plugin SDK
« Ответ #7 : Ноябрь 27, 2016, 10:08:56 am »
Надо сначала собрать сам плагин plugin_vc, потом найдёшь его в \plugin-sdk\output\lib\plugin_vc\Release\plugin_vc.lib
Ясно, спасибо

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Vice City Plugin SDK
« Ответ #8 : Ноябрь 29, 2016, 10:22:58 pm »
Добавлен пример PedPainting.



Код: C++
  1. #include "plugin_vc.h"
  2. #include "list"
  3. #include "game_vc\common.h"
  4. #include "game_vc\CWorld.h"
  5.  
  6. using namespace plugin;
  7.  
  8. class PedPainting {
  9. public:
  10.     PedPainting() {
  11.         static std::list<std::pair<unsigned int *, unsigned int>> resetEntries;
  12.         static CPed *pVictim = nullptr;
  13.         static RwTexture *savedPlayerTex = nullptr;
  14.  
  15.         Events::pedRenderEvent.before += [](CPed *ped) {
  16.             if (ped == pVictim && ped->m_pRwClump && ped->m_pRwClump->object.type == rpCLUMP) {
  17.                 savedPlayerTex = nullptr;
  18.                 if (ped == FindPlayerPed()) {
  19.                     savedPlayerTex = CWorld::Players[0].m_pSkinTexture;
  20.                     CWorld::Players[0].m_pSkinTexture = nullptr;
  21.                 }
  22.                 RpClumpForAllAtomics(ped->m_pRwClump, [](RpAtomic *atomic, void *data) {
  23.                     if (atomic->geometry) {
  24.                         atomic->geometry->flags |= rpGEOMETRYMODULATEMATERIALCOLOR;
  25.                         RpGeometryForAllMaterials(atomic->geometry, [](RpMaterial *material, void *data) {
  26.                             resetEntries.push_back(std::make_pair(reinterpret_cast<unsigned int *>(&material->color), *reinterpret_cast<unsigned int *>(&material->color)));
  27.                             material->color = { 255, 0, 0, 255 };
  28.                             resetEntries.push_back(std::make_pair(reinterpret_cast<unsigned int *>(&material->texture), *reinterpret_cast<unsigned int *>(&material->texture)));
  29.                             material->texture = 0;
  30.                             return material;
  31.                         }, 0);
  32.                     }
  33.                     return atomic;
  34.                 }, 0);
  35.                 DeActivateDirectional();
  36.                 SetFullAmbient();
  37.             }
  38.         };
  39.  
  40.         Events::pedRenderEvent.after += [](CPed *ped) {
  41.             for (auto &p : resetEntries)
  42.                 *p.first = p.second;
  43.             resetEntries.clear();
  44.             if (savedPlayerTex)
  45.                 CWorld::Players[0].m_pSkinTexture = savedPlayerTex;
  46.         };
  47.  
  48.         Events::gameProcessEvent += [] {
  49.             pVictim = FindPlayerPed();
  50.         };
  51.     }
  52. } pedPainting;

Различие с версией  SA в том из-за того, что в VC для игрока используется текстура скина. Она устанавливается всем материалам модели игрока перед непосредственным рендером атомика:



Нужно принудительно убрать эту текстуру, и вернуть после рендера.

Код: C++
  1. Рендер игрока (CPed::Render → CEntity::Render)
  2. ----------------------------------------------
  3.  
  4. Вызов функций pedRenderEvent.before
  5.              ↓
  6. Вызов RpClumpRender
  7.     ⤷ Вызов CVisibilityPlugins::RenderPlayerCB для всех атомиков в клампе
  8.         ⤷ Присваивание всем материалам в геометрии атомика текстуры скина игрока
  9.         ⤷ Выполнение цепочки скин-пайплайна, настройка освещения и рендеринг
  10.              ↓
  11. Вызов функций pedRenderEvent.after
« Последнее редактирование: Ноябрь 29, 2016, 10:45:43 pm от DK »
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

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

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Vice City Plugin SDK
« Ответ #9 : Март 12, 2017, 01:19:36 pm »
Добавлена утилита plugin-sdk-project-wizard для генерации шаблонов проектов для Visual Studio.

https://github.com/DK22Pac/plugin-sdk/wiki/%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%BE%D0%B2-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%BE%D0%B2-%D0%B4%D0%BB%D1%8F-Visual-Studio

Генерируются шаблоны:
-.ASI/.CLEO плагины
-С/без совместимости с LimitAdjuster'ом (на будущее)
-С/без использования DirectX (для Vice City есть выбор D3D8/D3D8to9)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

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

Оффлайн ilufir

  • Прохожий
  • *
  • Сообщений: 73
  • Репутация: +2/-0
  • Я пытался
    • Просмотр профиля
Re: Vice City Plugin SDK
« Ответ #10 : Март 12, 2017, 06:56:34 pm »
Столкнулся с проблемой при добавлении Plugin SDK. При попытке создания проекта получаю "Исключение из HRESULT 0x80041FE2". Как это починить?

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Vice City Plugin SDK
« Ответ #11 : Март 22, 2017, 07:14:04 pm »
Что значит "при добавлении"?
Создаешь проект из сгенерированных шаблонов?
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

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

Оффлайн ilufir

  • Прохожий
  • *
  • Сообщений: 73
  • Репутация: +2/-0
  • Я пытался
    • Просмотр профиля
Re: Vice City Plugin SDK
« Ответ #12 : Март 22, 2017, 07:59:11 pm »
Что значит "при добавлении"?
Создаешь проект из сгенерированных шаблонов?
Да

Оффлайн DK

  • Новичок
  • **
  • Сообщений: 234
  • Репутация: +328/-0
    • dk22pac
    • Просмотр профиля
Re: Vice City Plugin SDK
« Ответ #13 : Март 25, 2017, 05:33:00 pm »
VS 2015? Установлена ли поддержка WinXP?
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

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

Оффлайн ilufir

  • Прохожий
  • *
  • Сообщений: 73
  • Репутация: +2/-0
  • Я пытался
    • Просмотр профиля
Re: Vice City Plugin SDK
« Ответ #14 : Март 25, 2017, 06:24:11 pm »
VS 2015? Установлена ли поддержка WinXP?

2015. Поддержка XP не установлена