Використання динамічних зон (streamer) - основи

В даному уроці піде розмова про використання динамічних зон за допомогою плагіна Streamer.
У чому ж плюси? А в тому, що куди більш зручно використовувати динамічні зони, ніж створювати таймер і перевіряти кожного гравця на певну позицію. А мінуси. Начебто їх немає.

У Streamer'е є кілька видів динамічних зон: коло. прямокутник. сфера і куб. Коло і прямокутник створюються тільки по двох осях: x і y. Отже, динамічна зона цих типів є величезним невидимим стовпом, спрямовуються вгору. Одним словом, висоти у таких зон немає. А ось сфера і куб мають висоту, що набагато зручніше.

Розберемо функції по їх створенню.

CreateDynamicCircle (Float: x, Float: y, Float: size, worldid, interiorid, playerid); - створення зони у вигляді кола. Для неї знадобляться тільки x і y координата, а також розмір радіуса у даній зони.
CreateDynamicRectangle (Float: minx, Float: miny, Float: maxx, Float: maxy, worldid, interiorid, playerid); - створення зони у вигляді прямокутника. Для даної зони Вам потрібно дізнатися координати протилежних кутів.
CreateDynamicSphere (Float: x, Float: y, Float: z, Float: size, worldid, interiorid, playerid); - створення зони у вигляді сфери. Для даної зони буде потрібно висота по осі Z і радіус сфери, яку Ви хочете створити.
CreateDynamicCube (Float: minx, Float: miny, Float: minz, Float: maxx, Float: maxy, Float: maxz, worldid, interiorid, playerid); - створення зони у вигляді куба (паралелепіпеда). Для цього вже буде потрібно мінімальна і максимальна висота по осі Z.

Кожна з цих функцій повертає ID динамічної зони, отже, їх можна приєднати до змінних.

public OnGameModeInit ()
zone51 = CreateDynamicCube (- 13.0555. 1702.1824. 15.0. 405.9110. 2071.6646. 850.0. 0. 0. - 1); // віртуальний світ - 0, інтер'єр - 0, для всіх гравців
return 1;

Для динамічних зон є два callback'a: OnPlayerEnterDynamicArea (playerid, areaid) і OnPlayerLeaveDynamicArea (playerid, areaid) - входження і покидання динамічної зони. Areaid - це ID динамічної зони. Як його визначити, написано вище.

Приклади простого використання:

public OnGameModeInit ()
zone51 = CreateDynamicCube (- 13.0555. 1702.1824. 15.0. 405.9110. 2071.6646. 850.0. 0. 0. - 1); // віртуальний світ - 0, інтер'єр - 0, для всіх гравців
return 1;
>

public OnPlayerEnterDynamicArea (playerid. areaid)
if (areaid == zone51) SendClientMessage (playerid, - 1. "Покиньте охряняемую зону. Інакше буде відкритий вогонь.");
return 1;
>

public OnPlayerLeaveDynamicArea (playerid. areaid)
if (areaid == zone51) SendClientMessage (playerid, - 1. "Дякуємо за розуміння.");
return 1;
>

  • DestroyDynamicArea (areaid); - знищення динамічної зони.
  • IsValidDynamicArea (areaid); - перевірка на існування динамічної зони з даними ID.
  • TogglePlayerDynamicArea (playerid, areaid, toggle); - приховування динамічної зони для гравця.
  • TogglePlayerAllDynamicAreas (playerid, toggle); - приховування всіх динамічних зон для гравця.
  • IsPlayerInDynamicArea (playerid, areaid); - перевірка на знаходження гравця в динамічної зоні з певним ID.
  • AttachDynamicAreaToPlayer (areaid, playerid); - прикріплення динамічної зони з певним ID до гравця.
  • AttachDynamicAreaToVehicle (areaid, vehicleid); - прикріплення динамічної зони з певним ID до машини.
  • DestroyAllDynamicAreas (); - знищення всіх динамічних зон.
  • CountDynamicAreas (); - підрахунок кількості динамічних зон.

Увага! До гравців і машинам можна прикріпити тільки зони з типом коло і сфера.

i love you mxIni Mysql

Використання динамічних зон (streamer) - основи