[REL] xStreamer v4.3

26 декабря 2013 | Рубрика: Статьи

Стример объектов отображает игроку примерно 150 объектов. Независимо от дистанции обзора. Он так же поддерживает двигающиеся объекты. Есть сервера по 4 000 000 объектов и это факт.

Конвертер формата обьектов:

По умолчанию, xStreamer использует CreateObject чтобы создать эти обьекты. Тем ни менее, если вы используете DONT_REPLACE_NATIVES, тогда вам потребуется конвертировать в CreateStreamedObject. Вы можете сделать это из некоторых популярных форматов тут http://maps.serverhex.com/.

Используем макрос области:

Эти макросы используют для оптимизации потока (стримера). Они изменяют область вокруг игроков в котором xStreamer найдёт объекты. По умолчанию, они выглядят так:

#define MIN_AREA -4000.0 // map is -3000, но допускает карты выходящие за границы моря
#define MAX_AREA 4000.0
#define AREA_SIZE 100.0 // Это означает что только объекты в пределах 300.0 порядка 300.0 квадратов вокруг игрока, задействованы.

MIN_AREA, MAX_AREA

Эти функции определяют пределы проверки стримеров. Карта GTA простирается от -3000 до 3000 в обеих осях. Стример использует по 1000 единиц в каждом направлении по умолчанию. Если ваша карта выходит за грани этих пределов, то вам нужно расширить их.

AREA_SIZE

Это определяет размер каждой проверенной области. Стример проверяет квадрат в котором находится игрок и каждый квадрат вокруг игрока, который касается этого стороной или углом.

Список нововведений:

  • Исправлен баг с возвращением ID объектов.
  • Добавлен StopStreamedObject
  • CreateObject теперь переадресован в CreateStreamedObject, схожий с другими функциями, только если вы их добавили #define DONT_REPLACE_NATIVES до того как добавили инклуд xStreamer.inc
  • Добавлен DestroyObjectsCreatedByMe, который уничтожает объекты созданные в процессе работы gamemode/filterscript. Вам следует использовать это в OnFilterScript/GameModeExit если не хотите чтобы ваши объекты остались когда скрипт будет выгружен! Эта функция приведёт к краху сервера на 45,000 объектах. Не используйте её, если у вас их больше.
  • В объекты добавлены виртуальные миры и интерьеры
  • Добавлен OnStreamedObjectMoved

Если вы используете различные дистрибутивы Linux, вы должны скомпилировать этот плагин на вашем дитрибутиве.
Windows .DLL должен работать на всех версиях Windows.

Обратите внимание, что это может иметь непредсказуемые результаты при использовании нескольких скриптов одновременно. Я в будущем устраню это.

Статистика:

Этот плагин был протестирован с 4,004,001 объектов. При конфигурации: двухъядерный 2.3GHz CPU (мой домашний комп) был занят 1% с 1 игроком онлайн.
4,004,001 объектов также потребовало 320MB оперативной памяти.

Так что в скриптах вы не достигнете лимита по количеству объектов (у меня не было ни разу).

Как это работает:

Показываются те объекты которые на экране! Стример просто показывает ближайшие 150 объектов (может не показывать самый ближний если все объекты сильно удалённые от зоны видимости).

Функции:

native CreateStreamedObject(modelid,Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz); // Создает объект
native DestroyStreamedObject(objectid); // Уничтожает объект
native MoveStreamedObject(objectid,Float:x,Float:y,Float:z,Float:speed); // Передвигает объект

Скрытые функции:

Есть много функций внедряемых в ваш мод, откройте xStreamer.inc чтобы их изучить.

Гейммоды:

Используйте для теста lvdm.pwn в папке gamemodes/ чтобы увидеть 4,000,000 объектов в гейммоде.

Кульминация:

Текст составлен и приготовлен by Tripoll & AXE специально для samp-rus.com всё самое лучшее только тут, всегда на понятном нам и любимом, русском языке.

Скачать плагин