Автор: SDraw
Итак, как уже всем известно, плагин позволяет создавать бесконечное число объектов/иконок/3d текстов/пикапов. Большая часть людей используют лишь малую часть того, что может данный плагин. перейдем к главному...
Вводные понятия:
- Динамические объекты - это объекты, пикапы, иконки, 3D тексты, зоны, чекпоинты в целом.
- Динамические зоны - не физическая (в игре) зона. Представляет собой только точки в пространстве.
- Стандартные - это функции плагина без постфикса Ex.
- Типы -
- STREAMER_TYPE_OBJECT - объект
- STREAMER_TYPE_PICKUP - пикап
- STREAMER_TYPE_CP - чекпоинт
- STREAMER_TYPE_RACE_CP - гоночный чекпоинт
- STREAMER_TYPE_MAP_ICON - радарная иконка
- STREAMER_TYPE_3D_TEXT_LABEL - 3D текст
- STREAMER_TYPE_AREA - динамическая зона
- Типы динамических зон -
- STREAMER_AREA_TYPE_CIRCLE - круг
- STREAMER_AREA_TYPE_RECTANGLE - прямоугольник
- STREAMER_AREA_TYPE_SPHERE - сфера
- STREAMER_AREA_TYPE_CUBE - куб
- STREAMER_AREA_TYPE_POLYGON - полигон
- Типы объектов -
- STREAMER_OBJECT_TYPE_GLOBAL - глобальный (общий)
- STREAMER_OBJECT_TYPE_PLAYER - для определенного игрока
- STREAMER_OBJECT_TYPE_DYNAMIC - динамический
- Параметры для манипуляции -
- E_STREAMER_ATTACHED_OBJECT - прикрепленный объект. информации нет. Стандартный тип: Integer.
- E_STREAMER_ATTACHED_PLAYER - прикрепленный игрок. Используется для 3D текстов, прикрепленных к игроку. Стандартный тип: Integer.
- E_STREAMER_ATTACHED_VEHICLE - транспорт. используется для взятия/указания id транспорта, к которому прикреплен объект/3D текст/динамическая зона. Стандартный тип: Integer.
- E_STREAMER_ATTACH_OFFSET_(X/Y/Z) - оффсет. используется для указания/взятия данных по оси. возможна манипуляция прикрепленного объекта к транспорту. Стандартный тип: Float.
- E_STREAMER_ATTACH_R_(X/Y/Z) - поворот по оси. схож с e_streamer_attach_offset_(x/y/z). Стандартный тип: Float.
- E_STREAMER_ATTACH_(X/Y/Z) - нет информации. возможно, тоже самое, что и e_streamer_attach_offset_(x/y/z). Стандартный тип: Float.
- E_STREAMER_COLOR - цвет. возможно использование с иконкой (при условии, что тип иконки равен 0) и 3d текстом. Стандартный тип: Integer.
- E_STREAMER_DRAW_DISTANCE - дистанция прорисовки 3D текста. Стандартный тип: Float.
- E_STREAMER_EXTRA_ID - дополнительный ID. Информации нет. Стандартный тип: Integer.
- E_STREAMER_INTERIOR_ID - ID интерьера. Доступно для всех типов. Стандартный тип: Integer.
- E_STREAMER_(MAX/MIN)_(X/Y/Z) - данные минимальных/максимальных значений. Используется для динамических зон типов прямоугольник (X,Y) и куб (X,Y,Z). Стандартный тип: Float.
- E_STREAMER_MODEL_ID - ID модели. Возможно использование для объектов и пикапов. Стандартный тип: Integer.
- E_STREAMER_MOVE_R_(X/Y/Z) - значение поворота по оси. Используется для объектов. Стандартный тип: Float.
- E_STREAMER_MOVE_SPEED - скорость передвижения. Используется для объектов. Стандартный тип: Float.
- E_STREAMER_MOVE_(X/Y/Z) - конечные точки передвижения. Используется для объектов. Стандартный тип: Float.
- E_STREAMER_NEXT_(X/Y/Z) - координаты следующих точек. Используется для гоночных чекпоинтов. Стандартный тип: Float.
- E_STREAMER_PLAYER_ID - ID игрока, которому виден любой динамический объект. Используется для всех типов. Стандартный тип: Integer.
- E_STREAMER_R_(X/Y/Z) - координаты поворота по оси. Возможно использование для объектов. Стандартный тип: Float.
- E_STREAMER_SIZE - размер. Используется для чекпоинтов, гоночных чекпоинтов и динамических зон типа круг и сфера как радиус. Стандартный тип: Float.
- E_STREAMER_STREAM_DISTANCE - дистанция, на котором видно динамических объект. Стандартный тип: Float.
- E_STREAMER_STYLE - Указание стиля для иконки (схожи с типами объектов). Стандартный тип: Integer.
- E_STREAMER_TEST_LOS - отображение 3D текста через модели. Стандартный тип: Integer.
- E_STREAMER_TYPE - тип. Используется для иконок, пикапов и динамических зон. Стандартный тип: Integer.
- E_STREAMER_WORLD_ID - виртуальный мир. Доступно для всех типов. Стандартный тип: Integer.
- E_STREAMER_(X/Y/Z) - координаты. Возможно использование для объектов, иконок, пикапов, 3D текстов и динамических зон типа круг и сфера. Стандартный тип: Float.
- Функции настройки -
- Streamer_TickRate(rate) - время обновления для плагина в миллисекундах. По стандарту - 50 мсек.
- Streamer_MaxItems(type, items) - максимальное число динамических объектов. По стандарту - не ограниченно.
- Streamer_VisibleItems(type, items) - число динамических объектов, которые возможно видеть. Значения являются стандартными значениями SA-MP'а.
- Streamer_CellDistance(Float:distance) - Нет информации.
- Streamer_CellSize(Float:size) - Нет информации.
- Функции настройки -
- Streamer_ProcessActiveItems() - Нет информации.
- Streamer_ToggleIdleUpdate(playerid, toggle) - функция включения/отключения обновления динамических объектов для игрока. (true/false, следовательно). При этом динамические объекты, которые видел игрок, будут видны, но не пропадут.
- Streamer_ToggleItemUpdate(playerid, type, toggle) - функция включения/отключения обновления динамических объектов определенного типа для игрока.
- Streamer_Update(playerid) - обновление игрока относительно плагина. Используется, если нужно показать в тот же момент созданные динамические объекты, т.к. при создании они появляются не сразу.
- Streamer_UpdateEx(playerid, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1) - равносильно Streamer_Update(playerid), но уже с дополнительными параметрами.
- Функции манипуляции -
- Data - параметр для манипуляции, type - тип.
- Streamer_(Get/Set)FloatData(type, {Text3D,_}:id, data, &Float:result) - запись/указание данных с плавающей точкой.
- Streamer_(Get/Set)IntData(type, {Text3D,_}:id, data,(value)) - запись/указание данных с целым значением.
- Streamer_(Get/Set)ArrayData(type, {Text3D,_}:id, data, dest[], maxlength = sizeof dest) - запись/указания значения массива. Данные функции возможно использовать для динамических зон типа полигон и динамических объектов, созданных через функции с Ex на конце.
- Streamer_IsInArrayData(type, {Text3D,_}:id, data, value) - проверка на то, что данное значение есть в массиве.
- Streamer_(Append/Remove)ArrayData(type, {Text3D,_}:id, data, value) - добавление/удаление из массива информации нужного значения. Это можно использовать, к примеру, для временного визуального удаления динамического объекта относительно игрока.
- Streamer_GetUpperBound(type) - Нет информации.
- Функции динамических объектов -
- Streamer_GetDistanceToItem(Float:x, Float:y, Float:z, type, {Text3D,_}:id, &Float:distance) - взятие расстояния от точки до динамического объекта.
- Streamer_IsItemVisible(playerid, type, {Text3D,_}:id) - проверка на то, что динамический объект виден игроку.
Примечание: динамические зоны видны только при нахождении игрока в них. - Streamer_DestroyAllVisibleItems(playerid, type) - уничтожение динамических объектов определенного типа для игрока.
Примечание: динамические объекты восстанавливаются через 50 мсек (или через указанное значение функцией Streamer_TickRate). - Streamer_CountVisibleItems(playerid, type) - подсчет видимых игроку динамических объектов определенного типа.
- Функции динамических зон -
- Основная тема (кликабельно).
- CreateDynamicPolygon(Float:points[], Float:minz = -FLOAT_INFINITY, Float:maxz = FLOAT_INFINITY, maxpoints = sizeof points, worldid = -1, interiorid = -1, playerid = -1) - создание динамической зоны в виде полигона.
- Информация о полигонах -
В данном плагине полигон - это в своем роде призма с многоугольником в основании.
- Скриншот
Стороны "основания" указываются массивом, где записаны координаты каждой точки (x1,y1,x2,y2,...,xn,yn). Первая и последняя точки соединяются сами. По стандартному принципу полигонов действует следующее правило:
- Скриншот
Где зеленая зона - место действия зоны.
Пример создания полигона:
Code: Select all
CreateDynamicPolygon(Float:{3500.0,-3500.0,...,367.0,-3500.0},minZ,maxZ,число_точек_умноженное_на_два,worldid,interior,-1);
- Расширенные функции -
Расширенные функции представляют собой функции с Ex на конце. Отличие их заключается в том, что данные записываются не единично, а в массив. К примеру, обычной функцией мы можем указать только один виртуальный мир и один интерьер. Но в расширенной с помощью массива можно указать несколько виртуальных миров и интерьеров.
Пример:
Code: Select all
CreateDynamicCP(-1959.4308,305.3159,35.4688,1.5,1,0,-1,20.0);// Виртуальный мир 1, интерьер 0.
CreateDynamicCPEx(380.7783,-190.5340,1000.6328,2.0,25.0,{35,45,75},{17,13,5},{-1}); //Виртуальные миры с ID 35,45,75 и интерьеры 17,13,5.
Примечание: Порядок расположения указываемых данных отличается от стандартных.
- Информация о манипуляции данных -
С помощью манипуляции данных можно упростить выполнение операций над динамическими объектами. К примеру, у нас есть объект, которому нужно сменить модель. Обычным способом нужно удалить данный объект и создать новый на его позиции, что занимает от 2-х до 4-х операций.
С помощью манипуляции это выполняется одной операцией:
Code: Select all
Streamer_SetIntData(STREAMER_TYPE_OBJECT, ID_объекта, E_STREAMER_MODEL_ID, ID_новой_модели);
Для параметров, созданных в функциях с постфиксом Ex, так и без него, а также для точек динамических зон типа полигон, используются функции Streamer_GetArrayData и Streamer_SetArrayData. К примеру, создан динамический чекпоинт для игроков с определенным ID. Но в какой-то момент нужно сделать отображение его для всех. Таким образом, следует изменить данные E_STREAMER_PLAYER_ID на -1 (то есть, для всех).
Code: Select all
Streamer_SetArrayData(STREAMER_TYPE_CP, ID_чекпоинта, E_STREAMER_PLAYER_ID, {-1});
Более простой способ - дописать или удалить данные. Это действует на все динамические объекты, как без постфикса Ex, так и с ним.
Code: Select all
Streamer_AppendArrayData(STREAMER_TYPE_OBJECT,object_id,E_STREAMER_PLAYER_ID,-1); //дописывание значения
Streamer_RemoveArrayData(STREAMER_TYPE_OBJECT,object_id,E_STREAMER_PLAYER_ID,-1); //удаление значения
Но этот способ может занять несколько строк.
- Вызов стандартных callback'ов -
Streamer имеет функцию вызова стандартных callback'ов. Большинство из них нельзя вызвать стандартным путем.
- Streamer_CallbackHook(callback, {Float,_}:...) - функция вызова.
Существующие callback'и:
Code: Select all
STREAMER_OPC - OnPlayerConnect
STREAMER_OPDC - OnPlayerDisconnect
STREAMER_OPEO - OnPlayerEditObject
STREAMER_OPSO - OnPlayerSelectObject
STREAMER_OPPP - OnPlayerPickUpPickup
STREAMER_OPEC - OnPlayerEnterCP
STREAMER_OPLC - OnPlayerLeaveCP
STREAMER_OPERC - OnPlayerEnterRaceCP
STREAMER_OPLRC - OnPlayerLeaveRaceCP
Смысл их использования зависит от того, что именно Вам нужно.