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:
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:
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:
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:
-- 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:
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:
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 →