[Include] W_Streamers
#1

White_116 Static Object Streamer v5.0


Здравствуйте !
Решил выложить свой стример объектов.
Вы скажите очередной бесполезный стример, которых итак туева туча. А вот и нет. Главное то что, этот стример не вычисляет расстояние от игрока к объекту. Алгоритм его ЗОНЫ, по мне лучше квадраты
Соответственно он не теряет время на всякие подсчёты и сортировку, что делает его быстрым.


Плюсы:
Quote:

1. Космическая скорость обработки.
2. Не теряет скорость при увеличение количество объектов. Можно и миллион.
3. Обработка происходит если игрок сместится в другой квадрат или находясь в транспорте до его поворота.

Минусы:
Quote:

1. Нельзя добавлять и удалять объекты вовремя работы стримера.
2. Нельзя прикреплять объекты!
3. Нельзя слишком далеко (более 100 - 300 метров) двигать и перемещать объекты (нужно производить анализ).

Функции:
PHP Code:
native CreateStaticObject(modelidFloat:xFloat:yFloat:zFloat:rxFloat:ryFloat:rzFloat:dist=400.0);                      //Создание статического объекта
native StartStaticObjectsStreamer(krugtime);                                                                                      //Запуск стримера
native StopStaticObjectsStreamer();                                                                                                 //Остановка стримера
native OS_SetPlayerPos(playerid,Float:x,Float:y);                                                                                   //Принудительное обновление чанков при смене позиции игрока
native OS_PlayerConnect(playerid);                                                                                                  //Подключение игрока
native OS_ChunksUpdate(playeridOldChunkNewChunk);                                                                               //Принудительное обновление чанков
native OS_DestroyAllChunk(playerid);                                                                                                //Удаление всех чанков для игрока
native MoveStaticObject(objectidFloat:xFloat:yFloat:zFloat:sFloat:rx = -1000.0Float:ry = -1000.0Float:rz = -1000.0);    //Движение объекта
native SetStaticObjectRot(objectidFloat:rxFloat:ryFloat:rz);                                                                   //Смена ротации объекта
native SetStaticObjectPos(objectidFloat:xFloat:yFloat:z);                                                                     //Смена позиции объекта 
Стример нужно очень точно настраивать и для тех кто не понимает принцип действия вот готовые профили на дальность ~400 метров.

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)        //Количество чанков 
2. Для тех, у кого всё расставлено умеренно (рекомендую)
PHP Code:
#define MAX_DlINA_DLYA_OBRABOTKI            (3000)      //Граница
#define MAX_RAZMER_CHUNKA                   (100)        //Длина чанка
#define MAX_KOLV0_CHUNKOV_NA_STORONU        (60)        //Количество чанков на одну сторону границы                 
#define MAX_CHUNKS                        (3601)        //Количество чанков 
3. Для тех, у кого всё разбросанно мелкими кучками
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=-30003000x+=20)
    for(new 
y=-30003000y+=20)
    
CreateStaticObject(4338xy45.00.00.00.0700.0);
    
StartStaticObjectsStreamer(7100);// 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
Reply
#2

Да, еще один но много стримеров никогда не бывает. Понравилась переменная KolvoObjects и функция Analiz(), чувствуется калорит

ЗЫ покидаете sa-mp? Просто так или ради чего-то другого?
Reply
#3

Quote:

Понравилась переменная KolvoObjects и функция Analiz(), чувствуется калорит

что первое в голову придё то и пишу
а насчёт ухода - или или.
Reply
#4

Всё-таки зарелизил =)
Reply
#5

3 двиг попозже релизну, как ошибку убью.
Reply
#6

Quote:
Originally Posted by HappyScripter
View Post
Да, еще один но много стримеров никогда не бывает. Понравилась переменная KolvoObjects и функция Analiz(), чувствуется калорит

ЗЫ покидаете sa-mp? Просто так или ради чего-то другого?
хм.. кажеца я знаю, кто вы....


Аффтор! Соблюдай грамматику)

Quote:

Его нельзя назвать диманическим, так как при добовление и удалении объекта нужно производить анализ.

что в твоем понятии "динамичность" ?
Reply
#7

Quote:

Аффтор! Соблюдай грамматику)

туго с ней.
Quote:

что в твоем понятии "динамичность" ?

уменьшение, увеличение, изменение. В данном случае во время работы.
Reply
#8

Quote:
Originally Posted by White_116
View Post
3 двиг попозже релизну, как ошибку убью.
3 двиг релизнул, ошибку не решил (вырезал из кода). Смотрим и обсуждаем господа.
Reply
#9

Романыч )) пришел всем пинков раздать, узнаю

Кстати, кто-то еще пользуется скриптовыми стримерами?
Reply
#10

Quote:

ЗЫ покидаете sa-mp? Просто так или ради чего-то другого?

Как видно не покинул...

Выложил 4 версию. Качаем, тестируем.
Reply
#11

Стример понравился. Буду им пользоваться
Reply
#12

Новая версия уважаемые форумчане.
В 5.0 новый движок. Думаю уже что-то быстрее не реально придумать. Проведена значительная оптимизация анализатора. В общем, смотрим не стесняемся.
Reply
#13

Интересно. А че не с Инкогнитовским тестил?
Reply
#14

Quote:
Originally Posted by OKStyle
View Post
Интересно. А че не с Инкогнитовским тестил?
Я С++ не понимаю а скриптово не реально. Пытался исходники смотреть, запутался весь.
Чисто теоретически мой быстрее должен быть, так как только создание и удаление. Нет сортировки.
Reply
#15

Как я уже и говорил в теме W_Points, что принцип известен ещё с лохматых годов по стримеру, который работал именно таким образом. Стример от инкогнито, должен работать по схожему принципу (вот тут конечно не уверен, исходник не смотрел).
Reply
#16

Quote:
Originally Posted by AirKite
View Post
Стример от инкогнито, должен работать по схожему принципу (вот тут конечно не уверен, исходник не смотрел).
Да их похоже никто не смотрел, никто внятного ответа дать не может.
"Просмотрел" исходник там в обработчике присутствует проверка на дистанцию, дальность видимости объекта.
Во всяком случае если там комбинированный режим (точно не могу сказать) мой всеровно побыстрее будет, так как он у меня мягко говоря - простой как табуретка.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)