Отключить или уменьшить трафик и персонажей NPC в FiveM: density natives

Отключите или уменьшите NPC, трафик и припаркованные машины в FiveM с множителями плотности native, правило за кадр, маршрутизирующие вёдра, удаление полиции и стоимость каждой опции.

Типичные симптомы:

text
Streets full of NPCs and traffic, low fps in the city, or random police responses nobody asked for.

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

Единственное правило: каждый кадр

Множители плотности применяются к текущему кадру только. Вызовите их один раз при запуске и они ничего не делают мгновение спустя. Они должны работать в цикле без задержки:

lua
CreateThread(function()
    while true do
        SetVehicleDensityMultiplierThisFrame(0.0)
        SetPedDensityMultiplierThisFrame(0.0)
        SetRandomVehicleDensityMultiplierThisFrame(0.0)
        SetParkedVehicleDensityMultiplierThisFrame(0.0)
        SetScenarioPedDensityMultiplierThisFrame(0.0, 0.0)
        Wait(0)
    end
end)

Множитель между 0.0 (нет) и 1.0 (величина по умолчанию). Каждый native управляет другой частью:

Native Управляет
SetVehicleDensityMultiplierThisFrame Движущийся трафик
SetRandomVehicleDensityMultiplierThisFrame Случайные транспортные средства на дорогах
SetParkedVehicleDensityMultiplierThisFrame Припаркованные машины на улице
SetPedDensityMultiplierThisFrame Ходящие пешеходы
SetScenarioPedDensityMultiplierThisFrame Персонажи, занимающиеся деятельностью (интерьер, экстерьер)

SetScenarioPedDensityMultiplierThisFrame принимает два значения, одно для интерьера и одно для экстерьера.

Уменьшите вместо удаления

Город с никем в нём выглядит сломанным, и игроки это замечают. Используйте значение между 0 и 1, чтобы его разреживать:

lua
local traffic = 0.3
local peds = 0.4

CreateThread(function()
    while true do
        SetVehicleDensityMultiplierThisFrame(traffic)
        SetRandomVehicleDensityMultiplierThisFrame(traffic)
        SetParkedVehicleDensityMultiplierThisFrame(traffic)
        SetPedDensityMultiplierThisFrame(peds)
        SetScenarioPedDensityMultiplierThisFrame(peds, peds)
        Wait(0)
    end
end)

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

На стороне сервера: маршрутизирующие вёдра

Сервер может выключить население для целого маршрутизирующего вёдра, который полезен для экземпляра, как интерьер или событие, без клиентского цикла:

lua
-- server
SetRoutingBucketPopulationEnabled(bucketId, false)

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

Удалите полицию и отправку

Установка плотности на ноль не останавливает ответ полиции. Уровни розыска и отправка работают на своих собственных системах. Чтобы их удалить, отключите их один за одним:

lua
CreateThread(function()
    SetMaxWantedLevel(0)
    SetCreateRandomCops(false)
    SetCreateRandomCopsNotOnScenarios(false)
    SetCreateRandomCopsOnScenarios(false)

    for service = 1, 15 do
        EnableDispatchService(service, false)
    end
end)

CreateThread(function()
    while true do
        if GetPlayerWantedLevel(PlayerId()) > 0 then
            SetPlayerWantedLevel(PlayerId(), 0, false)
            SetPlayerWantedLevelNow(PlayerId(), false)
        end
        Wait(500)
    end
end)

EnableDispatchService принимает индекс услуги и логическое значение. Цикл над 1 на 15 охватывает полицию, вертолёт, пожарных, скорую помощь и другие услуги, которые игра определяет. Цикл уровня розыска ловит всё, что проскакивает.

Если вы держите полицию на своём сервере для ролевой игры, не отключайте услуги для игроков, которые в режиме ожидания. Обработайте этот случай в скрипте вашей работы.

Другие вещи, которые вы можете захотеть выключить

Население — это больше, чем персонажи и машины. Эти native удаляют несколько других источников, каждый принимает логическое значение:

lua
SetGarbageTrucks(false)
SetRandomBoats(false)
SetRandomTrains(false)

Вызовите их один раз при запуске, они не требуют цикла за кадр.

Компромиссы производительности

Что вы получаете. Каждый персонаж и транспортное средство моделируются, рисуются и синхронизируются. Сокращение их сокращает стоимость клиента и количество сущностей в сети. На слабых ПК это может быть большой разницей fps. Для других исправлений fps см. низкий FPS в FiveM.

Что вы платите. Цикл с Wait(0) работает каждый кадр, поэтому держите его крошечным и положите native в один единственный поток. Цикл пяти вызовов дешёвый, но десять разных скриптов, каждый со своим циклом, — нет. Проверьте, что ваш сервер не устанавливает плотность, и монитор ресурсов в resmon.

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

Геймплей. Много скриптов полагаются на персонажей или машины: продажа наркотиков, грабёж с заложниками, ограбление с трафиком. Протестируйте их с вашими параметрами плотности, так как работа, которая требует прохожего, будет не удаётся в пустом городе.

Распространённые ошибки

  • Вызов множителей один раз. Они сбрасываются каждый кадр, используйте цикл.
  • Долгое Wait в цикле. С Wait(1000) плотность применяется один кадр в секунду и NPC спавнят в промежутках. Это должно быть Wait(0).
  • Два скрипта с разными значения. Последний вызов кадра побеждает, поэтому вы получаете непостоянные результаты. Держите один источник.
  • Забыв припаркованные машины. Трафик на ноль и припаркованные машины по умолчанию всё ещё оставляет улицу полной машин.
  • Ожидание, что сервер удалит NPC, которыми он не владеет. Окружающее население на стороне клиента, кроме переключателя маршрутизирующего вёдра.

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

Проблема Решение
NPC возвращаются через мгновение Вызовите native множители плотности каждый кадр с Wait(0)
Трафик исчезает, припаркованные машины остаются Добавьте SetParkedVehicleDensityMultiplierThisFrame
Персонажи сидят в сценариях Добавьте SetScenarioPedDensityMultiplierThisFrame(interior, exterior)
Полиция всё ещё показывается Уровень розыска 0, EnableDispatchService выкл, случайные полицейские выкл
Нужно без NPC в экземпляре SetRoutingBucketPopulationEnabled на сервере
Город выглядит пусто Используйте значения типа 0.3 на 0.5 вместо 0.0
Высокое время resmon Один цикл только, нет дублирующихся скриптов

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

Почему NPC возвращаются после того, как я установил плотность на 0?

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

Улучшает ли отключение NPC производительность?

Да, меньше персонажей и автомобилей означает меньше работы для клиента и больше fps на слабых машинах. Это также делает город пустым, поэтому многие серверы уменьшают плотность вместо её удаления.

Как мне удалить ответ полиции?

Выключите услуги отправки с EnableDispatchService, установите уровень розыска на 0 и остановите случайных полицейских. Сделайте все три, так как каждый охватывает другую часть.

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

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

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

FiveMПотоковая передачаПроизводительностьПадение сквозь карту в FiveM: коллизии не загружаются, как исправитьИгроки падают сквозь карту при спавне или телепортации? Исправьте поздние коллизии: отсутствующие .ybn файлы, слишком много потоковой передачи, RequestCollisionAtCoord и HasCollisionLoadedAroundEntity.1 октября 2026 г. · 4 мин чтенияЧитать →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 мин чтенияЧитать →