Закрыть Привет! Если вы читаете это - Вы еще не зарегистрированы. Это займет не больше минуты. Нажмите здесь, чтобы пройти регистрацию в несколько простых шагов, чтобы пользоваться всеми возможностями нашего форума. Обратите внимание, запрещены непристойные, матерные, бессмысленные (цифры, случайный набор букв) ники. Удачи!

Тема: Пропадают объекты, или грузятся только на маленьких дистанциях

Показано с 1 по 8 из 8

  1. #1
    Пользователь

    Аватар для Richie56

    Статус: Оффлайн
    Регистрация:01.05.2014
    Сообщений:507
    Репутация:164 [+/-] 

    Пропадают объекты, или грузятся только на маленьких дистанциях

    Введение:


    Ежедневно вижу, как люди сталкиваются с проблемами прорисовки объектов, по типу: «только на близком расстоянии загружаются», ребята, вы хоть бы разобрались как работает streamer прежде чем задавать такие вопросы.
    Я могу объяснить, но очень поверхностно. Streamer никак не убирает стандартный лимит в 1к объектов как все думают. Streamer создает объект игроку, когда тот находится в указанном в объекте радиусе, обычный CreateObject создает объект навсегда, он создастся игроку когда тот подключится к серверу, а удалится когда выйдет, но лимит создаваемых объектов игроку остается 1к. Если вовсе не использовать CreateObject, то streamer сможет использовать все 1к объектов для загрузки в зоне (то есть даже большие интерьеры будут полностью загружаться без пропадания текстур), в противном случаи лимит будет уменьшатся. К примеру, создадим 400 CreateObject, и streamer сможет создать всего лишь 600 объектов на зону.
    «Мудрые» советчики под каждым таким постом\темой пишут «ДАЛЬНОСТЬ ПРОРИСОВКИ МЕНЯЙ», они сами не понимают что советуют, почти во всех случаях 300.0 будет хватать с головой, в интерьерах вообще до 100.0 можно уменьшить, иногда допустим для больших зданий по типу мэрии, стоит поставить 600.0, это максимальная дистанция после которой сама GTA уже не загружает объекты. Часто видел когда ставят дальность прорисовки 999.0, это очень плохо, ведь объекты будут подружатся без надобности, подъедая и без того скудный лимит.
    Единственный вариант решения проблемы – это свести к минимуму использования CreateObject, а использовать только CreateDynamicObject/CreateDynamicObjectEx.



    Узнать сколько в вашем моде CreateObject можно с помощью кода:

    PHP код:
    new objcount CreateObject(191220.00.0, -50.00.00.00.0);
    DestroyObject(objcount);
    printf("CreateObject count: %i"objcount); 

    Увеличить кол.во доступных объектов стримеру можно с помощью кода:

    PHP код:
    Streamer_SetVisibleItems(STREAMER_TYPE_OBJECTтут кол.во объектов); 

    Для изменения дальности прорисовки, в функции создания объекта существует параметр streamdistance и drawdistance:

    PHP код:
    CreateDynamicObject(modelidFloat:xFloat:yFloat:zFloat:rxFloat:ryFloat:rzworldid = -1interiorid = -1playerid = -1Float:streamdistance STREAMER_OBJECT_SDFloat:drawdistance STREAMER_OBJECT_DDSTREAMER_TAG_AREA areaid STREAMER_TAG_AREA -1priority 0); 

    Макрос STREAMER_OBJECT_SD в stareamer присваивается к streamdistance по умолчанию, если его не сменить вручную.
    Чтобы не вписывать в каждый объект дистанцию можно поступить так:


    PHP код:
    #undef STREAMER_OBJECT_SD
    #define STREAMER_OBJECT_SD 100.0
    CreateDynamicObject(17141072.48230689.49786923.640810.000000.00000, -30.06000, -11);
    CreateDynamicObject(18081079.93201682.33508923.640080.000000.00000, -90.00000, -11);
    CreateDynamicObject(26111049.89563685.99487925.322570.000000.0000090.00000, -11);
    CreateDynamicObject(27741069.40747683.05902928.235780.000000.000000.00000, -11);
    CreateDynamicObject(28131076.57422689.73029923.712220.000000.000000.00000, -11);
    #undef STREAMER_OBJECT_SD
    #define STREAMER_OBJECT_SD 300.0 

    Написал простой include, который сам заменит все CreateObject, и другие функции для работы с глобальными объектами, на функции из streamer.
    Требования: streamer не ниже 2.8.1, и samp 0.3.7. Подключать сразу после streamer, пример:


    PHP код:
    #include <streamer>
    #include <fixobject> 

    Скачать:


    rghost
    yandex dist
    Последний раз редактировалось Richie56; 05.04.2018 в 21:42.
  2. 7 пользователей сказали cпасибо Richie56 за это полезное сообщение:

    #Kai- (07.02.2018), #MuerteGang (10.12.2017), - Kotik - (08.10.2017), -Enot (12.11.2017), El_Novik (25.11.2017), KatranLife (12.08.2017), Nexius_Tailer (30.05.2017)

  3. #2
    •Профик•

    Аватар для Nexius_Tailer

    Статус: Оффлайн
    Регистрация:19.05.2013
    Адрес:Гомель, Беларусь
    Сообщений:1,257
    Репутация:601 [+/-] 
    Может это и урок скорее, но расписано довольно хорошо, молодец)
    Добавь ещё советы тем, у кого на использование только стримерских объектов есть проблема с тем, что не успевают прогружаться полы (а именно решения вроде установки приоритета объектам полов в новых версиях стримера, использование Streamer_UpdateEx или ещё какие-то другие методы)
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker
  4. 1 пользователь сказал cпасибо Nexius_Tailer за это полезное сообщение:

    -Enot (12.11.2017)

  5. #3
    Assassin of Scripters

    Аватар для Long-

    Статус: Оффлайн
    Регистрация:14.12.2014
    Адрес:delete
    Сообщений:2,452
    Репутация:642 [+/-] 
    Может это и урок скорее, но расписано довольно хорошо, молодец)
    Добавь ещё советы тем, у кого на использование только стримерских объектов есть проблема с тем, что не успевают прогружаться полы (а именно решения вроде установки приоритета объектам полов в новых версиях стримера, использование Streamer_UpdateEx или ещё какие-то другие методы)
    Решения простое - фризить игрока.
  6. 1 пользователь сказал cпасибо Long- за это полезное сообщение:

    -Enot (12.11.2017)

  7. #4
    •Профик•

    Аватар для Nexius_Tailer

    Статус: Оффлайн
    Регистрация:19.05.2013
    Адрес:Гомель, Беларусь
    Сообщений:1,257
    Репутация:601 [+/-] 
    Решения простое - фризить игрока.
    Это влияет на геймплей не лучшим образом и по сути своей костыль

    ---------- Сообщение добавлено в 19:40 ---------- Предыдущее сообщение добавлено в 17:38 ----------

    P.s. Насчёт реализации инклуда в конце темы (сразу не заметил, что добавил). Не нужно выделять целых 50к ячеек только ради того, чтобы хранить ид модели стримерского объекта, достаточно просто узнавать её самим стримером:
    PHP код:
    stock fo_GetObjectModel(objectid) return Streamer_GetIntData(STREAMER_TYPE_OBJECTobjectidE_STREAMER_MODEL_ID); 
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker
  8. 1 пользователь сказал cпасибо Nexius_Tailer за это полезное сообщение:

    -Enot (12.11.2017)

  9. #5
    Assassin of Scripters

    Аватар для Long-

    Статус: Оффлайн
    Регистрация:14.12.2014
    Адрес:delete
    Сообщений:2,452
    Репутация:642 [+/-] 
    Это влияет на геймплей не лучшим образом и по сути своей костыль

    ---------- Сообщение добавлено в 19:40 ---------- Предыдущее сообщение добавлено в 17:38 ----------

    P.s. Насчёт реализации инклуда в конце темы (сразу не заметил, что добавил). Не нужно выделять целых 50к ячеек только ради того, чтобы хранить ид модели стримерского объекта, достаточно просто узнавать её самим стримером:
    PHP код:
    stock fo_GetObjectModel(objectid) return Streamer_GetIntData(STREAMER_TYPE_OBJECTobjectidE_STREAMER_MODEL_ID); 
    Использовать костыль там, где он необходим - нужно.
    Если ты сломаешь ногу(не дай бог), ты тоже будет использовать костыли, или же просто сидеть на диване.
  10. #6
    •Профик•

    Аватар для Nexius_Tailer

    Статус: Оффлайн
    Регистрация:19.05.2013
    Адрес:Гомель, Беларусь
    Сообщений:1,257
    Репутация:601 [+/-] 
    Использовать костыль там, где он необходим - нужно.
    Если ты сломаешь ногу(не дай бог), ты тоже будет использовать костыли, или же просто сидеть на диване.
    Да, а здесь он не нужен, потому что есть решения гораздо лучше и практичнее.
    Когда я сломаю ногу, это уже также будет необходимым и вынужденным решением (в отличие от этой ситуации), потому пример не очень корректен.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker
  11. 1 пользователь сказал cпасибо Nexius_Tailer за это полезное сообщение:

    Mewtwo (12.12.2017)

  12. #7
    •The Force shall free me•

    Аватар для - Kotik -

    Статус: Оффлайн
    Регистрация:01.12.2015
    Адрес:Pawno-Info.Ru
    Сообщений:1,247
    Репутация:456 [+/-] 
    Перемещено.
    Последний раз редактировалось -Enot; 08.12.2017 в 20:17.
    •Отзывы обо мне•

    Открыть спойлер

    [Скрыть]

    Peace is a lie, there is only passion.Through passion, I gain strength. Through strength, I gain power. Through power, I gain victory. Through victory, my chains are broken.The Force shall free me.
    You have done a nice job, my new Apprentice. Now, Lord Malyga, go and bring the world of the Empire.



    "Вконтакте" - https://vk.com/cosgrowdj
  13. #8
    Пользователь

    Аватар для James_Navaroper

    Статус: Оффлайн
    Регистрация:24.12.2015
    Сообщений:103
    Репутация:4 [+/-] 

    Открыть спойлер

    C:\Users\&#192;&#228;&#236;&#232;&#237;\Desktop\quite-rp.ru\&#204;&#206;&#196; &#192;&#208;&#215;&#200;&#193;&#192;&#203;&#220;&#210;\pawno\include\fixobject.inc(40) : error 010: invalid function or declaration
    C:\Users\&#192;&#228;&#236;&#232;&#237;\Desktop\quite-rp.ru\&#204;&#206;&#196; &#192;&#208;&#215;&#200;&#193;&#192;&#203;&#220;&#210;\pawno\include\fixobject.inc(48) : error 017: undefined symbol "SetDynamicObjectMaterialText"
    C:\Users\&#192;&#228;&#236;&#232;&#237;\Desktop\quite-rp.ru\&#204;&#206;&#196; &#192;&#208;&#215;&#200;&#193;&#192;&#203;&#220;&#210;\pawno\include\fixobject.inc(56) : error 010: invalid function or declaration
    C:\Users\&#192;&#228;&#236;&#232;&#237;\Desktop\quite-rp.ru\&#204;&#206;&#196; &#192;&#208;&#215;&#200;&#193;&#192;&#203;&#220;&#210;\pawno\include\fixobject.inc(162) : warning 235: public function lacks forward declaration (symbol "OnDynamicObjectMoved")
    C:\Users\&#192;&#228;&#236;&#232;&#237;\Desktop\quite-rp.ru\&#204;&#206;&#196; &#192;&#208;&#215;&#200;&#193;&#192;&#203;&#220;&#210;\pawno\include\fixobject.inc(198) : warning 235: public function lacks forward declaration (symbol "OnPlayerEditDynamicObject")
    C:\Users\&#192;&#228;&#236;&#232;&#237;\Desktop\quite-rp.ru\&#204;&#206;&#196; &#192;&#208;&#215;&#200;&#193;&#192;&#203;&#220;&#210;\pawno\include\fixobject.inc(234) : warning 235: public function lacks forward declaration (symbol "OnPlayerSelectDynamicObject")
    C:\Users\&#192;&#228;&#236;&#232;&#237;\Desktop\quite-rp.ru\&#204;&#206;&#196; &#192;&#208;&#215;&#200;&#193;&#192;&#203;&#220;&#210;\pawno\include\fixobject.inc(240) : error 004: function "fo_OnPlayerSelectDynamicObj" is not implemented
    C:\Users\&#192;&#228;&#236;&#232;&#237;\Desktop\quite-rp.ru\&#204;&#206;&#196; &#192;&#208;&#215;&#200;&#193;&#192;&#203;&#220;&#210;\pawno\include\fixobject.inc(265) : error 017: undefined symbol "Streamer_SetVisibleItems"
    C:\Users\&#192;&#228;&#236;&#232;&#237;\Desktop\quite-rp.ru\&#204;&#206;&#196; &#192;&#208;&#215;&#200;&#193;&#192;&#203;&#220;&#210;\pawno\include\fixobject.inc(265) : error 017: undefined symbol "STREAMER_TYPE_OBJECT"
    C:\Users\&#192;&#228;&#236;&#232;&#237;\Desktop\quite-rp.ru\&#204;&#206;&#196; &#192;&#208;&#215;&#200;&#193;&#192;&#203;&#220;&#210;\pawno\include\fixobject.inc(265) : error 029: invalid expression, assumed zero
    C:\Users\&#192;&#228;&#236;&#232;&#237;\Desktop\quite-rp.ru\&#204;&#206;&#196; &#192;&#208;&#215;&#200;&#193;&#192;&#203;&#220;&#210;\pawno\include\fixobject.inc(265) : fatal error 107: too many error messages on one line

    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    8 Errors.
    [Скрыть]

    Кто знает как исправить ?

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения