Падение сквозь карту в FiveM: коллизии не загружаются, как исправить

Игроки падают сквозь карту при спавне или телепортации? Исправьте поздние коллизии: отсутствующие .ybn файлы, слишком много потоковой передачи, RequestCollisionAtCoord и HasCollisionLoadedAroundEntity.

Симптом: вы спавните, телепортируетесь или входите в пользовательский интерьер и падаете сквозь пол, иногда в море или пустоту под картой, или вы падаете несколько секунд при подключении, прежде чем приземлиться. Причина одна: игра рисует мир перед тем, как загрузить коллизию, которая делает его твердым. Вот как исправить это в файлах и в ваших скриптах.

Почему это происходит

Данные коллизии (файлы .ybn) потоковые как модели. Игра загружает их вокруг игрока, и это занимает время. Когда скрипт перемещает игрока далеко за раз, или игрок спавнится на загруженном сервере, игрок может быть размещен до того, как пол существует. Гравитация побеждает и игрок падает.

Есть четыре обычные причины:

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

Причина 1: отсутствуют .ybn в пользовательской карте

Если вы падаете только внутри одного MLO или одной карты, сначала посмотрите на его ресурс:

text
my_mlo/
  fxmanifest.lua
  stream/
    my_mlo.ymap
    my_mlo.ytyp
    my_mlo.ybn      <- the collisions
  • Файлы .ybn должны находиться внутри stream. .ybn вне его никогда не отправляется игрокам.
  • Пак для нескольких частей здания может иметь несколько файлов .ybn. Убедитесь, что все они пришли при копировании папки.
  • Если пак вообще не имеет .ybn, автор не создавал коллизии, и нужен инструмент редактирования карты для их построения. Свяжитесь с автором или выберите другую карту.
  • Проверьте, запущен ли ресурс и имеет ли манифест this_is_a_map 'yes'. Смотрите how to install an MLO для полной раскладки.

Причина 2: слишком много потоковой передачи

Каждый игрок загружает и загружает потоковые файлы ваших ресурсов. Очень большие текстуры, слишком много дополнительных автомобилей, одежды, педов и карт используют бюджет потоковой передачи, и коллизии затем загружаются поздно, потому что они выстраиваются в очередь позади тяжелых файлов.

Знаки — медленное присоединение, текстуры, которые появляются поздно, и предупреждения в консоли. Сожмите и удалите то, что вам не нужно: oversized assets and texture loss показывает как. Более легкий сервер загружает коллизии быстрее для всех.

Совет: после удаления ассетов очистите свой собственный кеш клиента и протестируйте снова, так как старый кеш может скрыть результат. Смотрите clear the FiveM cache.

Причина 3: скрипт, который не ждет

Это самая частая причина телепортации, возрождения и селекторов спавна. Исправление состоит в том, чтобы заморозить игрока, запросить коллизию, подождать, пока она загрузится, и только потом позволить игроку уйти.

lua
local function teleportSafe(coords)
    local ped = PlayerPedId()

    FreezeEntityPosition(ped, true)
    SetEntityCoordsNoOffset(ped, coords.x, coords.y, coords.z, false, false, false)

    RequestCollisionAtCoord(coords.x, coords.y, coords.z)

    local timeout = GetGameTimer() + 5000
    while not HasCollisionLoadedAroundEntity(ped) and GetGameTimer() < timeout do
        RequestCollisionAtCoord(coords.x, coords.y, coords.z)
        Wait(0)
    end

    FreezeEntityPosition(ped, false)
end

Что делает каждая часть:

  • FreezeEntityPosition держит игрока неподвижно, поэтому гравитация не может действовать, пока вы ждете.
  • RequestCollisionAtCoord говорит игре начать загружать коллизию в этих координатах. Вызывайте его каждый кадр, пока ждете.
  • HasCollisionLoadedAroundEntity возвращает true, когда коллизия вокруг педа есть.
  • Таймаут останавливает бесконечный цикл, если область никогда не загружается, например когда карта вообще не имеет коллизии.

Используйте тот же паттерн, когда игрок спавнится после выбора персонажа, и для транспортных средств: заморозьте транспортное средство с помощью FreezeEntityPosition(vehicle, true) и подождите на HasCollisionLoadedAroundEntity(vehicle).

Причина 4: слишком ранний спавн при подключении

При подключении первый спавн может произойти до того, как область будет готова. Спавн и скрипты мультииграка, которые не ждут, обычная причина. Если игрок невидим и заморожен в течение первых секунд, а затем падает, проверьте ваш скрипт спавна на паттерн выше. Для присоединения, которое зависает на экране загрузки, смотрите players stuck on the loading screen.

Если проблема возникает только для игроков с медленными соединениями, файлы все еще загружаются, когда игрок размещен. Сохранение потоковых файлов маленькими — лучшая помощь, и экран загрузки или затемнения, которые держат игрока до истинности приведенной выше проверки, избегают большую часть видимых падений.

Контрольный список отладки на одном месте

  1. Это происходит со всеми или только с некоторыми игроками? Все указывает на файлы карты, некоторые игроки на кеш или скорость.
  2. Это происходит только в одном месте? Тогда это ресурс карты без коллизии там.
  3. Остановите этот ресурс карты и попробуйте снова. Если вы больше не падаете, карта не имеет коллизии. Если место базовой игры также заставляет вас падать, проблема — это загрузка, а не карта.
  4. Это происходит только сразу после телепортации? Скрипту нужен цикл ожидания выше.

Когда две карты перекрываются

Коллизия также может отсутствовать, когда одна карта удаляет объекты базовой игры, а другая карта не помещает свою коллизию на их место. Смотрите map conflicts.

Контрольный список

Симптом Исправление
Падение внутри одной пользовательской карты Добавьте файлы .ybn в ее папку stream
Падение после телепортации Заморозьте, RequestCollisionAtCoord, ждите HasCollisionLoadedAroundEntity
Падение при подключении Сделайте скрипт спавна ждать коллизию перед разморозкой
Все загружается медленно Уменьшите размер и количество потоковых ассетов
Только некоторые игроки падают Очистите их кеш и проверьте их соединение
Бесконечный цикл ожидания Добавьте таймаут, чтобы цикл закончился, даже если область никогда не загружается

Короткие ответы

Почему я падаю сквозь карту при телепортации?

Игра еще не загрузила коллизию вокруг новой позиции, поэтому нет пола для стояния. Запросите коллизию в пункте назначения и подождите, пока она загрузится, прежде чем разморозить игрока.

Какой нативный способ ждет загрузки коллизий?

HasCollisionLoadedAroundEntity(entity) возвращает true, когда коллизия вокруг этого объекта загружена. Сначала вызовите RequestCollisionAtCoord(x, y, z), чтобы игра начала ее загружать.

Почему это происходит только на пользовательской карте?

На карте нет файлов коллизии .ybn, или они находятся в неправильной папке, или они отсутствуют в потоке. Видимая модель есть, но ничего твердого нет.

Скрипты без этой проблемы

Advanced BoostingУгон машин на заказ через планшет: контракты от класса D до S+, команды и живая очередь.Смотреть скрипт →Quest CreatorВизуальный редактор квестов и диалогов с NPC — узел за узлом прямо в игре.Смотреть скрипт →CCTV Security CamerasУстанавливаемые камеры, планшет с мультиэкраном в реальном времени и распечатанные фото-улики.Смотреть скрипт →

Читайте также

FiveMПотоковая передачаПроизводительностьУвеличенные активы МОГУТ и БУДУТ приводить к проблемам потоковой передачи: исправлениеИсправьте предупреждение FiveM 'Oversized assets can and WILL lead to streaming issues', потерю текстур и город, который не загружается: лимит 16 МБ и как сжать активы.1 октября 2026 г. · 4 мин чтенияЧитать →FiveMStreamingРуководстваКак добавить дополнительных персонажей (addon peds) на FiveM: файлы stream, peds.meta, имя для спавнаДобавьте дополнительных персонажей на FiveM сервер: файлы stream (ydd, yft, ytd, ymt), peds.meta с PED_METADATA_FILE, спавнинг по имени модели и установка персонажа как модели игрока.1 октября 2026 г. · 3 мин чтенияЧитать →FiveMLuaПроизводительностьОтключить или уменьшить трафик и персонажей NPC в FiveM: density nativesОтключите или уменьшите NPC, трафик и припаркованные машины в FiveM с множителями плотности native, правило за кадр, маршрутизирующие вёдра, удаление полиции и стоимость каждой опции.1 октября 2026 г. · 3 мин чтенияЧитать →