Короны

Работа с коронами в plugin-sdk.

Работа с коронами в plugin-sdk.

Основной модуль в Plugin SDK для работы с коронами — CCoronas и класс с таким же именем. Этот класс позволяет создавать и контроллировать короны. Сама корона описана классом CRegisteredCorona. Класс "CCoronas" содержит указатель на массив этих корон (файл "CCoronas.h").

static CRegisteredCorona *aCoronas;

С этим массивом можно работать так же, как мы это делали ранее в модуле "CBulletTraces". Рассмотрим другие переменные класса "CCoronas":

В списке функций стоит рассмотреть следующие функции:

Создание короны с указанием текстуры:

static void RegisterCorona(unsigned int id, CEntity *attachTo, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, CVector const &posn, float radius, float farClip, RwTexture *texture, unsigned char flare, bool enableReflection, bool checkObstacles, int _param_not_used, float angle, bool longDistance, float nearClip, unsigned char fadeState, float fadeSpeed, bool onlyFromBelow, bool reflectionDelay)

Создание короны с указанием типа короны:

static void RegisterCorona(unsigned int id, CEntity *attachTo, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha, CVector const &posn, float radius, float farClip, unsigned char coronaType, unsigned char flare, bool enableReflection, bool checkObstacles, int _param_not_used, float angle, bool longDistance, float nearClip, unsigned char fadeState, float fadeSpeed, bool onlyFromBelow, bool reflectionDelay)

Типы корон описаны в перечислении eCoronaType (файл "CRegisteredCorona.h"):

enum eCoronaType { 
    CORONATYPE_SHINYSTAR, 
    CORONATYPE_HEADLIGHT, 
    CORONATYPE_MOON, 
    CORONATYPE_REFLECTION, 
    CORONATYPE_HEADLIGHTLINE, 
    CORONATYPE_RING_B = 9 
};

Рассмотрим параметры этих функций:

Обновление уже созданной короны (в функцию передается параметр - id созданной короны).

static void UpdateCoronaCoors(unsigned int id, CVector const& posn, float farClip, float angle)

Полный код плагина:

#include "plugin.h"
#include "CCoronas.h"
#include "common.h"
#include "CMessages.h"

using namespace plugin;

class TestPlugin {
public:
    TestPlugin() {
        Events::gameProcessEvent += [] {
            CPed *playa = FindPlayerPed();
            if (playa) {
                CCoronas::RegisterCorona(5001, playa, 255, 0, 0, 255, CVector(-1.0f, -1.0f, 0.0f), 0.3f, 100.0f, CORONATYPE_SHINYSTAR, 0, 0, 0, 0, 0, 0, 0.5, 0, 15.0f, 0, 0);
                CCoronas::RegisterCorona(5002, playa, 255, 0, 0, 255, CVector(-1.0f, 1.0f, 0.0f), 0.3f, 100.0f, CORONATYPE_SHINYSTAR, 0, 0, 0, 0, 0, 0, 0.5, 0, 15.0f, 0, 0);
                CCoronas::RegisterCorona(5003, playa, 255, 0, 0, 255, CVector(1.0f, 1.0f, 0.0f), 0.3f, 100.0f, CORONATYPE_SHINYSTAR, 0, 0, 0, 0, 0, 0, 0.5, 0, 15.0f, 0, 0);
                CCoronas::RegisterCorona(5004, playa, 255, 0, 0, 255, CVector(1.0f, -1.0f, 0.0f), 0.3f, 100.0f, CORONATYPE_SHINYSTAR, 0, 0, 0, 0, 0, 0, 0.5, 0, 15.0f, 0, 0);
                CMessages::AddMessageJumpQ("Coronas are drawed!", 100, 0, 0);
            }
        };
    }
} test;

Для получения объекта игрока мы использовали функцию FindPlayerPed (файл "common.h").

Автор: DK22Pac

Last updated