Уроки моддинга
GTA Script GeneratorЗадать вопрос
  • О сайте
    • Проекту помогали
  • GTA SA, VC, III (PC, Classic)
    • Раздел 01. Основы
      • Общие сведения об уроках и минимальный набор программ
      • Установка Sanny Builder. Базовые настройки
      • Синтаксис, комментарии, опкоды, команды. Ключевые слова
      • Типы данных. Литералы. Константы
      • Типы проектов
      • Переменные. Операторы
      • 00012. Редактирование main.scm. Переменные (Часть 3)
      • 000175. Трюк с локальными массивами
      • 00073. Переменные, как члены класса. Коментарии в поиске опкодов. Макросы
      • 00017. Условия в Sanny Builder (Часть 1)
      • 00018. Условия в Sanny Builder (Часть 2)
      • 00019. Условия в Sanny Builder (Часть 3)
      • 000181. Условия в Sanny Builder (Часть 4)
      • 00045. Циклы (Часть 1 - while)
      • 00047. Циклы ( Часть 2 - for )
      • 00049. Циклы ( Часть 3 - repeat ). Вложенные циклы
      • 00087. Таблицы переходов
      • 00059. Подключение текстовых файлов, scm-функции
      • 000155. Использование SCM-функций (опкод 0AB1)
      • 000162. Используем scm-функции в качестве проверок
      • Координаты. Угол. Получение координат и угла Z
      • 000154. Вся правда о wait 0
    • Раздел 02. CLEO
      • Текст
        • 000158. Динамическая GXT-таблица или виртуальные GXT-записи
        • 00033. Работа с текстом
      • Игрок
        • 00021. Одежда СЖ
      • Транспорт
        • 00026. Создание транспорта
        • 000115. Работа с грузовиками и прицепами
        • 000172. Эктра-части автомобилей
        • 00042. Всё о поездах
        • 00080. Тюнинг транспорта, работа с компонентами тюнинга
        • 00029. Транспорт и команды, свойственны ему
        • 00046. Плавающие и лётные средства передвижения
        • 00082. Работа с частями автомобиля
      • Актёры
        • 000152. Заставляем актёра говорить. Аудио-таблицы
        • 000177. Трюк со специальными актёрами
        • 00020. Типы пешеходов, номера банд и отношение между ними
        • 00024. Модель. Создание актёра
        • 00028. Актёры и команды, свойственны им. Команды для игрока
        • 00056. Специальные актёры
        • 00060. События актёров
        • 00084. Модели поведения актёров
      • Объекты
        • 00030. Объекты и команды, свойственны им
        • 00025. Создание объекта
        • 000142. Метание объектов
      • 00027. Пикапы
      • 00031. Маркеры и сферы
      • 000122. Типы чекпоинтов, маркеров. Детальный обзор
      • 00055. Cleo. Основные понятия, отличия от main'а, простые примеры
      • 00061. Cleo-миссии
      • 00064. Работа со стартерами ( Cleo - Часть 1 )
      • 00065. Работа со стартерами ( Cleo - Часть 2 )
      • 00083. Запуск другого потока с Cleo-скрипта
      • 00079. Немного о глобальных CLEO-переменных
      • 00066. Работа со стартерами ( Дополнительные условия )
      • 000137. Группы в GTA San Andreas
      • 00098. Последовательность в анимации
      • 000120. Пути пешеходов и анимационные пути
      • 000178. RRR-файлы в GTA SA. Как их делать и использовать-
      • 000180. Длинные последовательности в анимации
      • 00022. Типы зон. Аудио-зоны
      • 00023. Работа с клавишами. Делаем сохранение
      • 00037. Анимация. Основные команды и примеры их использования
      • 00041. Работа с интерьерами
      • 00036. Катсцены и всё, что необходимо для примитивного видеоролика
      • 000174. Снова статистика игрока
      • 00040. Как создать свой чит-
      • 00090. Работа с гаражами
      • 000176. Выделение памяти
      • 00076. Статистика игрока
      • 00094. Пропуск видеороликов
      • 00072. Работа со светом. Прожектор
      • 00092. Работа с файлами ( форматированное чтение )
      • 00093. Работа с файлами ( Дозапись )
      • 00071. Визуальные эффекты в GTA San Andreas
      • 00069. Взрывы и всё, что связано с огнём.
      • 00086. Движения объектов и эффектов
      • 00068. Использование RC
      • 00067. Использование турелей
      • 00057. Работа с INI-файлами ( запись и считывание )
      • 00044. Работа с панелями ( таблицами )
      • 00043. Работа с аудио
      • 00038. Рисование на экране (Часть 1 - Текст)
      • 00039. Рисование на экране (Часть 2 - Текстуры)
    • Раздел 03. MAIN.SCM
      • 0009. Редактирование main.scm. Потоки и опкоды (Часть 1)
      • 00014. Редактирование main.scm. Потоки и опкоды (Часть 2)
      • 00013. Редактирование main.scm. Потоки и опкоды (Часть 3)
      • 00062. Работа со стартерами ( MAIN.SCM - Часть 1 )
      • 00063. Работа со стартерами ( MAIN.SCM - Часть 2 )
      • 00054. Внешние скрипты в main.scm
      • 00050. Статус-тексты
      • 00053. Таймеры
      • 00035. Делаем простую миссию
    • Раздел 04. Разное
      • 00088. Интересные опкоды (Часть 1)
      • 00089. Интересные опкоды (Часть 2)
      • Интересное в скриптинге
      • 000167. Интересное в скриптинге. Часть 2
      • 00081. Защита скриптов, снятие слабой защиты
      • 000157. Защита скриптов,снятие её + Подробнее об $NOSOURCE
      • 000121. Варианты использования main.scm
      • 000179. Избавляемся от "ёлочек"
      • 000171. Контроль за перемещениями мыши
      • 000182. Колода карт в GTA San Andreas
      • Работа с магазинами
      • 00091. Создания собственных классов и кейвордов
      • 00085. Работа с битами переменных
      • 00051. Работа с HEX. HEX-буфер
      • 00097. Написания DLL библиотек и использование их с скриптах
    • Раздел 05. Игровая память
      • 00058. Работа с игровой памятью (Часть 1- статические адреса)
      • 00074. Динамические адреса памяти. ( Часть 1 - структура актёра )
      • 00075. Динамические адреса памяти. ( Часть 2 - структура автомобиля )
      • 00077. Динамические адреса памяти. ( Часть 3 - структура объекта )
      • 00096. Игровая память. Динамические адреса (структура weapon.dat)
    • Раздел 06. Алгоритмы и примеры
      • 000153. Пример полноценной миссии "Ограбление"
      • 00095. Как сделать нервометр-
      • 00052. Пример полноценной миссии "Взрывчатка"
      • 000114. Делаем спидометр!
      • 000161. Очень длинные миссии в main.scm
      • 000112. Делаем графическое меню
      • 000113. Делаем гоночную миссию ( SARMC v0.9 )
      • 000133. Делаем диалоги в миссиях
      • 00032. Делаем простой скрипт (приходим к точке и убиваем нужную цель)
    • Раздел 07. Plugin SDK (SA)
      • Простейший плагин
      • Работа с массивами объектов
      • Рисуем
      • Короны
      • Класс шрифта (CFont)
    • Раздел 08. Руководство по программам
      • Руководство по использованию программы GTA-SA Crazy IMG Editor
      • Руководство по использованию программы Ped Editor
      • Руководство по использованию программы Rus2gxtCoder
      • Руководство по использованию программы FXT Editor
      • Руководство по использованию программы GTA Animation Manager
      • Руководство по использованию программы TXD Workshop
      • Руководство по использованию программы GTA GXT Editor
      • Руководство по использованию Map Editor
      • Руководство по использованию программы MapCleaner
  • GTA 4 (PC)
    • Раздел 01. ScriptHookDotNet
      • Всё, что необходимо перед началом скриптинга GTA 4
      • Создание проекта и его открытие
      • Наш первый скрипт. Необходимые условия его написания
      • 000102. Метки и прыжки
      • 00034. Что такое Blip- Основные комадны
      • 000107. Обзор класса GAME
      • 000108. Обзор класса PLAYER(Часть 1)
      • 000109. Обзор класса PLAYER(Часть 2)
      • 000110. Обзор класса PLAYER(Часть 3)
      • 000111. Vector - Что это такое и с чем его едят
      • 000116. Обзор класса World
      • 000117. Обзор класса Model
      • 000118. Обзор класса Vehicles
      • 000119. Обзор класса Ped
      • 000126. Pickup в GTA 4
      • 000127. Обзор класса Group
      • 000141. Списки в c#. Запуск нескольких скритов в GTA 4
  • Программирование
    • C#
      • 000103. Типы данных в C#. Базовые операции над ними.
      • 000104. Блочные конструкции. Условия
      • 000105. Блочные конструкции. Циклы
      • 000106. Массивы и структуры
      • 000123. Блочные конструкции. Перечисления
      • 000124. Блочные конструкции. Оператор управдения swith
      • 000125. Блочные конструкции. Цикл foreach
      • 000128. Как делать функции c#- Часть 1
      • 000129. Как делать функции c#- Часть 2
      • 000130. Альтернативные условия
      • 000131. Как делать функции c#- Часть 3
      • 000132. ООП в c# Часть 1
      • 000135. ООП в c# Часть 2 - Полиморфизм
      • 000136. Как делать функции c#- Часть 4
      • 000138. Детальнее о static
      • 000139. Блочные конструкции. Исключения
      • 000140. Делегаты и события в c#
      • 000143. Знакомство с формами
      • 000144. Панель элементов
      • 000149. Кнопки, Текст-боксы и метки
      • 000151. Запуск другой формы из основной, ListBox, MenuStrip
      • 000160. Сериализация и десериализация XML в c#
      • 000163. Консоль. Основные команды
      • 000165. Цикл foreach для своих классов
      • 000168. Перегрузка операторов в c#
      • 000169. Анонимные и динамические типы в c#
      • 000170. Анонимные функции и лямбда-выражения в c#
      • 000173. C# введение в Linq
      • 00048. Детальнее о ref, out и checked
      • 000150. Подключаем dll-библиотеку, работа с файлами
    • C++
      • Выбор среды компилирования, типы данных, первая программа
      • Математика, адреса данных
  • Полезные ссылки
    • Уроки от Vital (видео)
    • База опкодов (SBL)
    • Сайт Sanny Builder
    • Сайт CLEO
  • На удаление
    • Раздел 99. Старые уроки
      • 00010. Управление Sanny Builder и её особенности
      • 0000. Всё, что необходимо перед началом скриптинга
      • 000156. Вступление в скриптинг GTA 3
Powered by GitBook
On this page

Was this helpful?

  1. GTA SA, VC, III (PC, Classic)
  2. Раздел 07. Plugin SDK (SA)

Короны

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

PreviousРисуемNextКласс шрифта (CFont)

Last updated 8 months ago

Was this helpful?

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

static CRegisteredCorona *aCoronas;

С этим массивом можно работать так же, как мы это делали ранее в модуле . Рассмотрим другие переменные класса "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").

Автор: DK22Pac

CBulletTraces