Документация по Incognito Streamer

Описание: Основы скриптинга
Модератор: SJplayer

Дим M
Автор темы, Администратор
Администратор
Аватара
Дим M
Автор темы, Администратор
Администратор
Сообщения: 1608
Зарегистрирован: 5 апреля 2013
С нами: 10 лет 11 месяцев

#1 Дим » 17 апреля 2013, 11:40

Документация по Incognito Streamer
Автор: 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). Первая и последняя точки соединяются сами. По стандартному принципу полигонов действует следующее правило:
Скриншот
Изображение

Где зеленая зона - место действия зоны.

Пример создания полигона:

Код: Выделить всё

CreateDynamicPolygon(Float:{3500.0,-3500.0,...,367.0,-3500.0},minZ,maxZ,число_точек_умноженное_на_два,worldid,interior,-1);  


- Расширенные функции -

Расширенные функции представляют собой функции с Ex на конце. Отличие их заключается в том, что данные записываются не единично, а в массив. К примеру, обычной функцией мы можем указать только один виртуальный мир и один интерьер. Но в расширенной с помощью массива можно указать несколько виртуальных миров и интерьеров.

Пример:

Код: Выделить всё

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-х операций.
С помощью манипуляции это выполняется одной операцией:

Код: Выделить всё

Streamer_SetIntData(STREAMER_TYPE_OBJECTID_объектаE_STREAMER_MODEL_IDID_новой_модели);  


Для параметров, созданных в функциях с постфиксом Ex, так и без него, а также для точек динамических зон типа полигон, используются функции Streamer_GetArrayData и Streamer_SetArrayData. К примеру, создан динамический чекпоинт для игроков с определенным ID. Но в какой-то момент нужно сделать отображение его для всех. Таким образом, следует изменить данные E_STREAMER_PLAYER_ID на -1 (то есть, для всех).

Код: Выделить всё

Streamer_SetArrayData(STREAMER_TYPE_CPID_чекпоинтаE_STREAMER_PLAYER_ID, {-1});  


Более простой способ - дописать или удалить данные. Это действует на все динамические объекты, как без постфикса Ex, так и с ним.

Код: Выделить всё

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'и:

Код: Выделить всё

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


Смысл их использования зависит от того, что именно Вам нужно.
[center]i love you [s]mxIni[/s] Mysql[/center]


Вернуться в «Основы скриптинга»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 3 гостя