Рейтинг - 5.0 (5)

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

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

static CRegisteredCorona *aCoronas;

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

Имя переменной Тип Описание
SunScreenX float Позиция солнца X(экранные координаты)
SunScreenY float Позиция солнца Y(экранные координаты)
SunBlockedByClouds bool "Закрыто" ли солнце облаками
bChangeBrightnessImmediately bool Включить резкое изменение яркости корон (при выключенном режиме они будут "затухать" или "появляться")
NumCoronas unsigned int Кол-во созданных корон в кадре (другими словами, кол-во используемых элементов в массиве aCoronas)
LightsMult float Интенсивность корон
MoonSize unsigned int Размер луны (используется для изменения размера луны при стрельбе в неё из снайперской винтовки)

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

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

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 unsigned int id короны. Для каждой созданной короны в кадре он должен быть уникальным.
attachTo CEntity * игровой субьект, к которому "прицепляется" корона. Если такой субьект указан, координаты (параметр posn) указываются в системе координат этого субьекта (локальный оффсет). Если субьекта нет - используйте NULL.
red unsigned char составляющая цвета R (0-255).
green unsigned char составляющая цвета G (0-255).
blue unsigned char составляющая цвета B (0-255).
alpha unsigned char составляющая цвета A (0-255).
posn CVector const & позиция короны.
radius float размер короны.
farClip float дальность прорисовки короны (дальняя граница отсечения при отрисовке короны).
texture / coronaType RwTexture * / unsigned char текстура или тип короны.
flare unsigned char тип бликов короны (1 или 2, 0 - бликов нет).
enableReflection bool включить отражение короны на мокром асфальте.
checkObstacles bool выполнить проверку на наличие преград между камерой и короной перед отрисовкой (если преграды есть, корона не отрисуется).
_param_not_used int неиспользуемый параметр.
angle float угол короны (также не используется).
longDistance bool корону видно только издалека.
nearClip float ближняя граница отсечения при отрисовке короны.
fadeState unsigned char статус затенения (0 или 255).
onlyFromBelow bool корону видно только тогда, когда камера находится ниже короны.
reflectionDelay bool делать задержку при отрисовке отражения короны.

Обновление уже созданной короны (в функцию передается параметр - 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").


Теги: plugin sdk, корона, короны
Вход на сайт

Поиск
Категории раздела
Мини-чат
Пожалуйста, все вопросы по скриптингу задавать на форуме!
Наш опрос
А вы проходили GTA San Andreas на 100% без читов и скриптов?
Всего ответов: 6
Активность на сайте
Пожертвования
Кошельки WebMoney:
U859420971000
R407741810602
Z331072372430
E314272616890
Друзья сайта
Полезные ресурсы
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Сегодня нас посетили:
Рекомендую
Реклама