FiveM'de NPC trafiğini ve peds'leri devre dışı bırakın veya azaltın: yoğunluk yerleşikleri

FiveM'de NPC'ler, trafik ve park edilmiş otolar kapatın veya azaltın: yoğunluk çarpan yerleşikleri, kare başına kural, yönlendirme kovaları, polis'i kaldırma ve her seçeneğin maliyeti.

Tipik semptomlar:

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

GTA'daki nüfus, istemcide çağırdığınız bir dizi yerleşik tarafından kontrol edilir. Ana tuzak, çoğunun her kareyi sıfırlamasıdır. Bu makale yerleşikleri, gerektirdikleri döngüyü, sunucu tarafı seçeneği ve boş şehrin takas ve taş'ını gösterir.

Tek kural: her kare

Yoğunluk çarpanları yalnızca geçerli kareye uygulanır. Başlangıçta bir kez çağırın ve bir an sonra hiçbir şey yapmaz. Gecikme olmayan bir döngüde çalışmalıdır:

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)

Çarpan, 0.0 (hiçbiri) ile 1.0 (varsayılan miktar) arasında. Her yerleşik farklı bir bölümü kontrol eder:

Yerleşik Kontroller
SetVehicleDensityMultiplierThisFrame Hareket trafik
SetRandomVehicleDensityMultiplierThisFrame Yollarda rastgele araçlar
SetParkedVehicleDensityMultiplierThisFrame Sokağa park edilmiş otolar
SetPedDensityMultiplierThisFrame Yürüyen yayalar
SetScenarioPedDensityMultiplierThisFrame Aktiviteler yapan peds (iç mekan, dış mekan)

SetScenarioPedDensityMultiplierThisFrame iki değer alır, biri iç mekan için biri dış mekan için.

Kaldırmak yerine azaltın

Kimse olmayan şehir bozuk görünür ve oyuncular fark ederler. Sırası inceltmek için 0 ile 1 arasında bir değer kullanın:

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)

İlk 0.3 ile 0.5 deneyin, sonra sunucunuza ayarla. Değerleri kodu dokunmadan değiştirebileceğiniz bir config dosyasına koyun.

Sunucu tarafı: yönlendirme kovaları

Sunucu, bir bütün yönlendirme kovası için nüfusu kapatabilir, bu, istemci döngüsü olmadan iç mekan veya olay gibi bir örnek için faydalıdır:

lua
-- server
SetRoutingBucketPopulationEnabled(bucketId, false)

Bununla, bu kovadaki oyuncular için hiçbir ortam NPC'si veya trafik oluşturulmaz. 0 varsayılan dünyada kovalı. Ana dünyada tutun ve özel örnekler için devre dışı bırakın. Oyuncuları birine koymak nasıl yönlendirme kovaları bölümüne bakın.

Polis ve dispatc'i kaldırın

Yoğunluğu sıfıra ayarlamak polis tepkisini durdurmaz. İstenilen seviyeler ve dispatch kendi sistemlerinde çalışırlar. Bunları kaldırmak için, onları tek tek kapatın:

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 hizmet endeksi ve boolean alır. 1 ile 15 üzerindeki döngü polis, helikopter, itfaiye, ambulans ve oyunun tanımladığı diğer hizmetleri kapsar. İstenilen seviye döngüsü kaçan bir şey yakalamaktadır.

Polis'i sunucunuzda roleplay için açık tutarsanız, görevli oyuncuların hizmetlerini devre dışı bırakmayın. Bu durumu iş betiğinde işleyin.

Kapalı olmak isteyebileceğiniz diğer şeyler

Nüfus pedler ve aralardan daha fazla. Bu yerleşikleri diğer bazı kaynakları kaldırır, her biri boolean alır:

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

Bunları başlangıçta bir kez çağırın, kare başına döngüye ihtiyaç duymaz.

Performans takas ve taş

Ne kazanırsınız. Her ped ve araç simüle edilir, çizilir ve senkronize edilir. Onları kesmek istemcinin maliyetini keser ve ağdaki varlıkların sayısını keser. Zayıf bilgisayarlarda bu büyük fps farkı olabilir. Diğer fps düzeltmeleri için, FiveM'de düşük fps bölümüne bakın.

Ne ödersiniz. Wait(0) ile döngü her kareyi çalıştırır, bu nedenle küçük tutun ve yerleşikleri tek bir iş parçacığına koyun. Beş çağrılı döngü ucuz, ama kendi döngüleri ile on farklı betik değil. Sunucunuzun zaten yoğunluğu ayarlayıp ayarlamadığını kontrol edin ve resmon içinde kaynak izleme.

Atmosfer. NPC'siz dünya cansızdır. Trafiği azaltmak ve bazı peds tutmak daha iyi bir orta yol ve park edilmiş otolar ucuz tutmaktır çünkü hareket etmezler.

Oyun. Birçok betik peds veya araçlara dayanır: uyuşturucu satışı, rehine ile soygun, trafik ile heist. Yoğunluk ayarlarınızla onları test edin, çünkü geçişçi gerektiren bir iş boş şehirde başarısız olur.

Yaygın hatalar

  • Çarpanları bir kez çağırmak. Her kareyi sıfırlarlar, döngü kullanın.
  • Döngüde uzun Wait. Wait(1000) ile yoğunluk saniyede bir kareyi uygular ve NPC'ler boşluklarda oluşturulur. Wait(0) olmalıdır.
  • İki betik farklı değerler ile. Çerçevenin son çağrısı kazanır, bu nedenle tutarsız sonuçlar alırsınız. Bir kaynak tutun.
  • Parked otolar unutmak. Sıfıra trafik ve varsayılan parked otolar hala sokak dolu arabalar bırakmaktadır.
  • Sunucunun sahip olmadığı NPC'leri kaldıracağını beklemek. Ortam nüfusu istemci tarafıdır, yönlendirme kova anahtarı dışında.

Kontrol Listesi

Semptom Çözüm
NPC'ler bir an sonra döner Wait(0) ile her kareyi yoğunluk yerleşikleri çağırın
Trafik kayıp, parked otolar kalır SetParkedVehicleDensityMultiplierThisFrame ekleyin
Peds senaryolarda otur SetScenarioPedDensityMultiplierThisFrame(interior, exterior) ekleyin
Polis hala gösterilir İstenilen seviye 0, EnableDispatchService kapalı, rastgele polis kapalı
Örnek içinde NPC yok lazım Sunucu üzerinde SetRoutingBucketPopulationEnabled
Şehir boş hissettirir 0.0 yerine 0.3 ile 0.5 gibi değerler kullanın
Yüksek resmon zaman Sadece bir döngü, yinelenen betik yok

Kısa yanıtlar

Yoğunluğu 0 olarak ayarladıktan sonra NPC'ler neden geri geliyor?

Yoğunluk yerleşikleri yalnızca bir kare için sürer. Bunları bir kez çağırırsanız, oyun bir sonraki karede varsayılana geri döner, bu nedenle her kareyi çalıştıran bir döngüde çağrılmalıdır.

NPC'leri devre dışı bırakmak performansı iyileştirir mi?

Evet, daha az ped ve araç daha az iş anlamına gelir ve zayıf makinelerde daha fazla fps. Ayrıca şehri boş hissettirir, bu nedenle birçok sunucu yoğunluğu kaldırmak yerine azaltır.

Polis tepkisini nasıl kaldırırım?

EnableDispatchService ile dispatch hizmetlerini kapatın, istenen seviyeyi 0 olarak ayarlayın ve rastgele polis'i durdurun. Üçünü de yapın, çünkü her biri farklı bir bölümü kapsar.

Bu sorunu yaşatmayan scriptler

Advanced BoostingTabletten araç boosting: D’den S+ sınıfına kontratlar, ekipler ve canlı sıra.Scripti gör →Quest CreatorGörevler ve NPC diyalogları için oyun içinde düğüm düğüm kurulan görsel editör.Scripti gör →CCTV Security CamerasYerleştirilebilir kameralar, canlı çoklu görüntü tableti ve basılı delil fotoğrafları.Scripti gör →

Okumaya devam edin