04.09.2011, 15:27
(
Last edited by White_116; 17/04/2013 at 05:41 PM.
)
White_116 Static Object Streamer v5.0
Здравствуйте !
Решил выложить свой стример объектов.Вы скажите очередной бесполезный стример, которых итак туева туча. А вот и нет. Главное то что, этот стример не вычисляет расстояние от игрока к объекту. Алгоритм его ЗОНЫ, по мне лучше квадраты

Соответственно он не теряет время на всякие подсчёты и сортировку, что делает его быстрым.
Плюсы:
Quote:
1. Космическая скорость обработки. 2. Не теряет скорость при увеличение количество объектов. Можно и миллион. 3. Обработка происходит если игрок сместится в другой квадрат или находясь в транспорте до его поворота. |
Quote:
1. Нельзя добавлять и удалять объекты вовремя работы стримера. 2. Нельзя прикреплять объекты! 3. Нельзя слишком далеко (более 100 - 300 метров) двигать и перемещать объекты (нужно производить анализ). |
Функции:
PHP Code:
native CreateStaticObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, Float:dist=400.0); //Создание статического объекта
native StartStaticObjectsStreamer(krug, time); //Запуск стримера
native StopStaticObjectsStreamer(); //Остановка стримера
native OS_SetPlayerPos(playerid,Float:x,Float:y); //Принудительное обновление чанков при смене позиции игрока
native OS_PlayerConnect(playerid); //Подключение игрока
native OS_ChunksUpdate(playerid, OldChunk, NewChunk); //Принудительное обновление чанков
native OS_DestroyAllChunk(playerid); //Удаление всех чанков для игрока
native MoveStaticObject(objectid, Float:x, Float:y, Float:z, Float:s, Float:rx = -1000.0, Float:ry = -1000.0, Float:rz = -1000.0); //Движение объекта
native SetStaticObjectRot(objectid, Float:rx, Float:ry, Float:rz); //Смена ротации объекта
native SetStaticObjectPos(objectid, Float:x, Float:y, Float:z); //Смена позиции объекта
1. Для тех, у кого прям очень много объектов на 100 метров, любое количество кучек.
PHP Code:
#define MAX_DlINA_DLYA_OBRABOTKI (3000) //Граница
#define MAX_RAZMER_CHUNKA (60) //Длина чанка
#define MAX_KOLV0_CHUNKOV_NA_STORONU (100) //Количество чанков на одну сторону границы
#define MAX_CHUNKS (10001) //Количество чанков
PHP Code:
#define MAX_DlINA_DLYA_OBRABOTKI (3000) //Граница
#define MAX_RAZMER_CHUNKA (100) //Длина чанка
#define MAX_KOLV0_CHUNKOV_NA_STORONU (60) //Количество чанков на одну сторону границы
#define MAX_CHUNKS (3601) //Количество чанков
PHP Code:
#define MAX_DlINA_DLYA_OBRABOTKI (3000) //Граница
#define MAX_RAZMER_CHUNKA (200) //Длина чанка
#define MAX_KOLV0_CHUNKOV_NA_STORONU (30) //Количество чанков на одну сторону границы
#define MAX_CHUNKS (901) //Количество чанков
[ame="http://www.youtube.com/watch?v=-7rjkBBaEfM"]http://www.youtube.com/watch?v=-7rjkBBaEfM[/ame]
Стресс тест - Пример.
PHP Code:
#include <a_samp>
#define MAX_OBJECTS_KOLVO (300*300)
#define MAX_OBJECTS_STREAM (990)
#define MAX_OBJECTS_IN_CHUNK (50)
#define DeBug 1
#include <W_OS>
public OnFilterScriptInit()
{
for(new x=-3000; x < 3000; x+=20)
for(new y=-3000; y < 3000; y+=20)
CreateStaticObject(4338, x, y, 45.0, 0.0, 0.0, 0.0, 700.0);
StartStaticObjectsStreamer(7, 100);// 1 секунда, 200-2 секунды
return 1;
}
public OnFilterScriptExit()
{
StopStaticObjectsStreamer();
return 1;
}
public OnPlayerConnect(playerid)
{
OS_PlayerConnect(playerid);
return 1;
}
PHP Code:
//....
OS_SetPlayerPos(playerid,x,y);//обновим объекты
SetPlayerPos(playerid,x,y,z);//телепортнём игрока.
//....
Установка.
-Закинуть W_OS.inc в папку include котороя расположена pawno/include/.
-Подключить инклуд в начале мода и ФС после строки #include <a_samp>
Внимание!
-Для того чтобы включить возможность перемещать и поворачивать объекты нужно сделать следующие:
PHP Code:
#include <a_samp>
#define DinObj 1 //включает движение объектов.
#include <W_OS>
//...
-Большой размер AMX файла.
Просмотреть W_OS.inc 5.0: PASTEBIN
Скачать W_OS.inc 5.0: SolidFiles
Скачать WS 4.0: SolidFiles
Скачать WS 2.1: SolidFiles
Скачать WS 2.2 + WS 3.0: SolidFiles