FiveM yönlendirme kovaları: SetPlayerRoutingBucket, örnekler ve ses
FiveM yönlendirme kovaları nasıl çalışır: SetPlayerRoutingBucket, SetEntityRoutingBucket, nüfus ve kilitlenme ayarları, kova 0, kullanım örnekleri ve ses ne olur.
Belirti: iki oyuncu grubu aynı yeri paylaşıyor ve onları ayırmak istiyor veya minigame'deki oyuncular başka insanların arabalarıyla ve yayalar dolu bir dünyayı görüyor.
Yönlendirme kovaları FiveM'in boyut veya örnek sürümüdür. Farklı kovaları içindeki varlıklar ve oyuncular birbirlerini görmez. Daireler, minigame ve karakter seçim ekranlarının arkasındaki araç ve sunucu tarafından yönetilirler. Bu makale her yerlileştirmeyi ve kaçınılması gereken hataları kapsar.
Yönlendirme kovası nedir
Kova bir sayıdır. Her oyuncu ve her varlık tam olarak bir kovaya aittir ve varsayılan 0. Farklı kovaları içindeki iki şey birbirlerine görünmez: oyuncular diğer kovanın oyuncularını, araçlarını veya sahnelerini görmez ve etkileşime girmez. Yine de aynı haritayı paylaşırlar; bu nedenle koordinatlar aynı kalır.
Bu yalnızca OneSync ile sunucuda çalışır; mevcut sunucular bunu kullanır. Emin değilseniz OneSync etkinleştirmesi bölümüne bakın.
Temel yerlileştirilmeler
Bunların tümü sunucuda çalışır:
-- put a player in a bucket, and read it back
SetPlayerRoutingBucket(source, 50)
local bucket = GetPlayerRoutingBucket(source)
-- put an entity (vehicle, ped, object) in a bucket
SetEntityRoutingBucket(vehicle, 50)
local entityBucket = GetEntityRoutingBucket(vehicle)
-- back to the default world
SetPlayerRoutingBucket(source, 0)SetPlayerRoutingBucket oyuncunun sunucu kimliğini ve kova numarasını alır. SetEntityRoutingBucket varlık tutamacını alır. Oyuncu taşındıktan sonra sunucuda oluşturduğunuz varlıklar 0 kovasında başlar; taşımazsanız, oluşturduktan hemen sonra kovayı ayarlayın:
local veh = CreateVehicle(`sultan`, 0.0, 0.0, 70.0, 0.0, true, true)
SetEntityRoutingBucket(veh, 50)Amaca dayanarak kova numaraları seçin. Yaygın bir alışkanlık aralıkları ayırmaktır; örneğin evler için bir aralık, minigame'ler için bir aralık, böylece iki özellik asla kazara bir numarayı yeniden kullanmaz.
Dikkat: bu yerlileştirilmeler yalnızca sunucu. İstemci komut dosyasından çağırmak yararlı bir şey yapmaz. Sunucuya bir olay gönderin ve sunucu istekleri kontrol ettikten sonra oyuncuyu taşıdığını sağlayın.
Nüfus ve kilitlenme
Her kovanın kendi kuralları olabilir:
-- no ambient pedestrians or traffic in bucket 50
SetRoutingBucketPopulationEnabled(50, false)
-- who may create entities in bucket 50
SetRoutingBucketEntityLockdownMode(50, 'strict')SetRoutingBucketPopulationEnabled(bucket, false)o kovada ortam NPC'lerini ve trafiği kapatır. Örnekler için faydalıdır; çünkü boş bir iç mekan veya minigame'de arabalar sürüp gitmesi gerekmez. Kova0normal nüfusunu tutar.SetRoutingBucketEntityLockdownMode(bucket, mode)varlık oluşturmayı kontrol eder. Modlar'strict','relaxed've'inactive've'inactive'normal davranışıdır;'strict'en sıkı. Birine güvenmeden önce yerlileştirmenin tam farkını kontrol edin.
Yeni kovanın kurallarını ayarlamak; ilk kez kullanıldığında yeterlidir. Sunucunun ömrü boyunca kalırlar.
Kullanım örnekleri
- Daireler ve evler: her mülk için bir kova, böylece özdeş iç mekanlar çakışmaz. Tam model konut ve örnekler içindedir.
- Minigame ve olaylar: katılımcıları özel bir kovaya koyun; nüfus kapalı, dışarıdaki hiçbir şey müdahale etmez.
- Karakter seçimi ve oluşturması: oyuncu bir karakter seçerken özel bir kovaya koyun; bu nedenle dünyada duran görülmez ve spawn olduğunda
0hareket ettirin. - Öğreticiler ve yönetici alanları: kalanın sunucusunu açıklamadan şeyleri açıklamak için sessiz kova.
- Test: oyunculardan uzakta komut dosyası deneyin.
Kovaları içinde ses
Farklı kovaları içindeki oyuncular oyunun bakış açısından birbirlerine yakın olmadığından, yakınlık sesi genellikle aynı ayrımı izler. pma-voice gibi ses kaynakları OneSync etrafında oluşturulur ve kova başına çalışır; bu nedenle bir evdeki oyuncular sokağı duymaz. Farklı kovaları içindeki insanların konuşmasını istiyorsanız, kovaları savaşmak yerine ses kaynağının kendi kanal veya çağrı özelliklerini kullanın. Oyuncuları taşıdıktan sonra ses sessizse, pma-voice çalışmıyor bölümüne bakın. Sadece birini değil, iki gerçek oyuncuyla test edin.
Yeniden kullanılabilir örnek yardımcısı
Kova mantığını bir yerde tutun; bu nedenle her çıkış yolu sıfırlanır:
local instances = {} -- [source] = bucket
function EnterInstance(src, bucket)
instances[src] = bucket
SetPlayerRoutingBucket(src, bucket)
end
function LeaveInstance(src)
instances[src] = nil
SetPlayerRoutingBucket(src, 0)
end
AddEventHandler('playerDropped', function()
instances[source] = nil
end)Çıkış üzerinde LeaveInstance çağırın, ölüm ve kaynağınız durduğunda:
AddEventHandler('onResourceStop', function(resource)
if resource ~= GetCurrentResourceName() then return end
for src in pairs(instances) do
SetPlayerRoutingBucket(src, 0)
end
end)O son yardımcı olmadan, komut dosyası yeniden başlatması oyuncuları boş bir kovada yalnız bırakır.
Yaygın sorunlar
- Oyuncu tek başına takılı:
0hiç taşınmadı. Her çıkış yolunda sıfırlayın ve kaynak durdurmasında. - Araç yolcu için kayboluyor: oyuncu ve araç farklı kovaları içinde sona erdi. Her ikisini de taşıyın.
- Oluşturulan varlıklar yanlış dünyada görünür: yeni sunucu tarafı varlıkları kova
0öğesinde başlar. - Farklı özellikler aynı numarayı yeniden kullanır ve oyuncular birbirlerinin örneğine iner: aralıkları ayırın.
- İstemci tarafından yerlileştirilmeleri çağırmak: sunucuya aitler.
Kontrol listesi
| Belirti | Çözüm |
|---|---|
| Oyuncular yanlış dünyayı görür | Her iki oyuncu için GetPlayerRoutingBucket kontrol edin |
| Yeniden başlatmadan sonra oyuncu yalnız | onResourceStop öğesinde kovaları sıfırlayın |
| Araç sürücünün arkadaşlarına görünmüyor | Aracın kovasını da ayarlayın |
| Örnek içinde trafik | SetRoutingBucketPopulationEnabled(bucket, false) |
| Kimseyi duyamıyorum | Aynı kova, ardından ses kaynağını kontrol edin |
| İstemci tarafında hiçbir şey olmaz | Yerlileştirilmeler sunucu tarafı |
Kısa yanıtlar
Varsayılan yönlendirme kovası nedir?
Kova 0. Her oyuncu ve varlık orada başlar; bir komut dosyası onu taşımaması sürece.
İstemci kendi yönlendirme kovasını değiştirebilir mi?
Hayır. Yerlileştirilmeler sunucu tarafı. İstemci sorar ve sunucu karar alıp oyuncuyu taşır.
Kovayı değiştirdiğimde araçlar oyuncuyla birlikte hareket eder mi?
Buna güvenmeyin. Aracı SetEntityRoutingBucket ile açıkça taşıyın ve kendi testlerinizde sonucu kontrol edin.

