PDA

Просмотр полной версии : [Вопрос] А как вы боритесь с провалом автомобилей?



KakbeYura
08.06.2014, 15:31
В добавленных картах, не на стандартной карте, автомобили из-за того, что объекты не успевают прогружаться, проваливаются. Как вы боритесь с этим?

DeimoS
08.06.2014, 15:33
Создавайте карту через стандартный стример (CreateObect) и проблем не будет.
Или же только ту часть объектов, на которых спавняться авто/игроки

KakbeYura
08.06.2014, 15:46
Создавайте карту через стандартный стример (CreateObect) и проблем не будет.
Или же только ту часть объектов, на которых спавняться авто/игроки

Лимит.
И если заюзать даже несколько объектов CreateObject это будет "плохо влиять" на стример.

DeimoS
08.06.2014, 16:04
Иначе никак. Стример работает по принципу создания тех объектов, что находятся в зоне стрима игрока и удаления тех объектов, что находятся вне стрима игрока. А авто хранятся в памяти сервера. Поэому если объектов/авто/транспорта много, нагрузка на интернет игрока большая и пакеты с созданием объектов приходят позже, чем пакеты с транспортом и прочим. Потому и проваливается.
Можно попробовать спавнить транспорт выше, но и тогда велика вероятность падения авто сквозь текстуры


И если заюзать даже несколько объектов CreateObject это будет "плохо влиять" на стример.
Кто вам подобное сказал?

- - - Добавлено - - -

Хотя... Сейчас полез в ему стримера на форуме sa-mp.com, в надежде найти доказательства ваших слов (так и не нашёл) и вот что заметил...
Попробуйте использовать функцию

native Streamer_UpdateEx(playerid, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1);
То бишь, вставьте её в самое начало команды (перед телепортом) и установите там те координаты, куда будете телепортировать игрока. Авось поможет (сам не использовал никогда)

KakbeYura
09.06.2014, 15:42
Хотя... Сейчас полез в ему стримера на форуме sa-mp.com, в надежде найти доказательства ваших слов (так и не нашёл) и вот что заметил...
Попробуйте использовать функцию

native Streamer_UpdateEx(playerid, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1);
То бишь, вставьте её в самое начало команды (перед телепортом) и установите там те координаты, куда будете телепортировать игрока. Авось поможет (сам не использовал никогда)

Я когда юзал одновременно их, то стример сужал радиус прорисовки объектов настолько, что даже не успевал с них съехать.
Моё предположение, что стримеру остаётся мало объектов для работы, тоесть было 500, стало 100, например.

wAx
09.06.2014, 19:38
А я как по себе помню создавал авто, указывая z координату чуть выше чем пол. Но это только лишь для ровной поверхности spawn.

^_^
09.06.2014, 19:39
Если вы про телепортацию с машиной в нестандартных интерьеров (созданы вами) то:

Daniel_Cortez уже выложил хороший инклюд (правда он нуждается в доработку для большого количество объектов): КЛАЦ (http://pro-pawn.ru/showthread.php?6278-dc_spp
%28%D1%82%D0%B5%D0%BB%D0%B5%D0%BF%D0%BE%D1%80%D1%82%D0%B0%D1%86%D0%B8%D1%8F-%D0%B2-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%8C%D0%B5%D1%80%D1%8B-%D1%81-0%29).
Там и поддержка авто, и интерьеров и т.п.
Если вы про провал автомобилей при входе в их зону прорисовки то:

Для объектов что служат в качестве пола (или земли) - увеличьте значение параметра

CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 200.0, Float:drawdistance = 0.0);.

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

DeimoS
10.06.2014, 00:06
Я когда юзал одновременно их, то стример сужал радиус прорисовки объектов настолько, что даже не успевал с них съехать.
Моё предположение, что стримеру остаётся мало объектов для работы, тоесть было 500, стало 100, например.

Ну естественно каждый новый объект, подгружаемый в память игроку, даёт минус к лимитам стримера. Ибо нарушается сама идея. Но десяток объектов особой погоды не сделает, если вы не собираетесь вставлять по 500 объектов около игрока за раз.

Прочитав пост Смайла, пришла в голову немного странная идея. Узнаём радиус прорисовки транспорта и делаем прорисовку объектов чуть дальше, чем прорисовывается транспорт. Ну и потом телепортируем игрока сначала за радиус прорисовки авто, но в радиус прорисовки объектов, а потом на нужное место спавна. Авось поможет, хоть и велика вероятность того, что телепорт в 2 точки будет слишком заметен