FiveM'de harita aracılığıyla düşmek: çarpışmalar yüklenmez, nasıl düzeltilir
Oyuncular spawn veya teleport üzerine harita aracılığıyla düşüyor? Geç çarpışmaları düzeltin: eksik .ybn dosyaları, çok fazla akış, RequestCollisionAtCoord ve HasCollisionLoadedAroundEntity.
Belirti: spawn, teleport veya özel bir iç mekâna yürürsünüz ve zeminden düşersiniz, bazen denize veya harita altındaki boşluğa, veya connect'te birkaç saniye düşersiniz sonra inersiniz. Nedeni bir şeydir: oyun çarpışma yüklemeden önce dünyayı çizer ve bunu katı yapar. Bunu dosyalar ve betiklerde nasıl düzeltileceği aşağıdadır.
Neden olur
Çarpışma verileri (.ybn dosyaları) modeller gibi aktarılır. Oyun bunu oyuncu çevresine yükler ve zaman alır. Bir betik oyuncuyu bir kerede çok uzağa taşıdığında veya oyuncu meşgul bir sunucuda spawn olduğunda, oyuncu zeminin var olmasından önce yerleştirilebilir. Yerçekimi kazanır ve oyuncu düşer.
Dört olağan sebep vardır:
- Özel bir harita çarpışması olmadan, veya yayınlanmaz.
- Sunucu çok fazla yayınlar, bu nedenle her yük yavaş olur.
- Bir betik çarpışmayı beklemeden teleport eder.
- Bağlantı yavaş, bu nedenle kaynak dosyaları katılan bir oyuncu için geç gelir.
Neden 1: özel harita eksik .ybn
Sadece bir MLO veya bir harita içinde düşerseniz, ilk olarak kaynağına bakın:
my_mlo/
fxmanifest.lua
stream/
my_mlo.ymap
my_mlo.ytyp
my_mlo.ybn <- the collisions.ybndosyalarıstreamiçinde olmalıdır. Bunun dışında.ybnoyunculara hiçbir zaman gönderilmez.- Bir binanın birkaç parçası için bir paket birkaç
.ybndosyasına sahip olabilir. Klasörü kopyaladığınızda bunların tümünün geldiğinden emin olun. - Paketin hiç
.ybnyoksa, yazar çarpışmaları yapmadı ve bir harita düzenleme aracı bunları oluşturmak için gereklidir. Yazara başvurun veya başka bir harita seçin. - Kaynak başlatıldığını ve manifest
this_is_a_map 'yes'içerdiğini kontrol edin. Tam düzen için MLO nasıl yüklenir bölümüne bakın.
Neden 2: çok fazla aktarım
Her oyuncu kaynaklarınızın aktarılan dosyalarını indirir ve yükler. Çok büyük dokular, çok fazla eklenti araba, kıyafetler, pedlar ve haritalar aktarım bütçesini kullanır ve çarpışmalar ağır dosyaların arkasında sırada kaldığında geç yüklenir.
İşaretler yavaş bir katılıştır, dokular geç görünür ve konsolda uyarılar verilir. İhtiyacınız olmayan şeyi küçültün ve kaldırın: büyük varlıklar ve doku kaybı nasıl yapılacağını gösterir. Daha hafif sunucu herkes için çarpışmaları daha hızlı yükler.
İpucu: varlıkları kaldırdıktan sonra kendi istemci önbelleğinizi temizleyin ve tekrar test edin, eski bir önbellek kazancı gizleyebileceği için. Bkz. FiveM önbelleğini temizle.
Neden 3: beklemeyecek bir betik
Bu teleportlar, respawnlar ve spawn seçicilerinde en yaygın nedendir. Düzeltme oyuncuyu dondur, çarpışmayı iste, yüklenene kadar bekle ve ancak o zaman oyuncuya izin ver.
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)
endHer kısmın yaptığı şey:
FreezeEntityPositionoyuncuyu hareketsiz tutar, böylece beklementarındayken yerçekimi etki etmez.RequestCollisionAtCoordoyuna o koordinatlarda çarpışmayı yüklemeye başlamasını söyler. Beklementarındayken her karede çağırın.HasCollisionLoadedAroundEntityped çevresindeki çarpışma olduğunda true döndürür.- Zaman aşımı, alan hiçbir zaman yüklenmezse, örneğin haritanın hiç çarpışması yoksa, sonsuz bir döngüyü durduruyor.
Bir oyuncu karakter seçiminden sonra spawn olduğunda ve araçlar için aynı deseni kullanın: FreezeEntityPosition(vehicle, true) ile aracı dondurun ve HasCollisionLoadedAroundEntity(vehicle) üzerinde bekleyin.
Neden 4: connect'te çok erken spawn olmak
Connect'te, ilk spawn alan hazırlanmadan önce olabilir. Spawn ve çok karakterli betikler beklemeyenler genellikle sebeptir. Oyuncu ilk saniyeler boyunca görünmez ve donmuş ise ve sonra düşerse, spawn betiğinizi yukarıdaki desen için kontrol edin. Yükleme ekranında asılan bir katılım için bkz. oyuncular yükleme ekranında takılı.
Sorun yalnızca yavaş bağlantılar olan oyuncular için gerçekleşirse, oyuncu yerleştirilirken dosyalar hala indirilir. Aktarılan dosyaları küçük tutmak en iyi yardım olur ve oyuncuyu yukarıdaki kontrol doğru olana kadar tutacak bir yükleme veya solma ekranı çoğu görünen düşmeleri engeller.
Bir yer için hata ayıklama kontrol listesi
- Bu herkese mi olur, yoksa sadece bazı oyunculara mı? Herkes harita dosyalarını, bazı oyuncuları önbelleğe veya hıza işaret eder.
- Sadece bir yerde olur? Sonra çarpışmaya sahip olmayan bir harita kaynağıdır.
- O harita kaynağını durdurun ve tekrar deneyin. Artık düşmüyorsanız, harita çarpışması eksiktir. Bir temel oyun yeri de sizi düşürürse, sorun harita değil, yüktür.
- Sadece teleportdan sonra mı olur? Betik yukarıdaki bekleme döngüsüne ihtiyaç duyar.
İki harita çakıştığında
Bir harita temel oyun nesnelerini kaldırdığında ve diğer harita yerlerine kendi çarpışmasını koymadığında bir çarpışma da eksik olabilir. Bkz. harita çatışmaları.
Kontrol Listesi
| Belirtisi | Düzeltme |
|---|---|
| Bir özel harita içinde düşmek | .ybn dosyalarını stream klasörüne ekleyin |
| Teleportdan sonra düşmek | Dondurun, RequestCollisionAtCoord, HasCollisionLoadedAroundEntity için bekleyin |
| Connect'te düşmek | Spawn betiğini dondurmayı kaldırmadan önce çarpışma için beklemesini sağlayın |
| Her şey yavaş yüklenir | Aktarılan varlık boyutunu ve sayını azaltın |
| Sadece bazı oyuncular düşüyor | Önbelleklerini temizleyin ve bağlantılarını kontrol edin |
| Sonsuz bekleme döngüsü | Alan hiçbir zaman yüklenmese bile döngü sona erecek şekilde zaman aşımı ekleyin |
Kısa yanıtlar
Teleport ettiğimde harita aracılığıyla neden düşüyorum?
Oyun henüz yeni konum çevresinde çarpışmayı yüklemedi, bu nedenle duracak bir zemin yok. Hedefte çarpışmayı isteyin ve oyuncuyu dondurmayı kaldırmadan önce yüklenene kadar bekleyin.
Çarpışmaları yüklemek için hangi native bekler?
HasCollisionLoadedAroundEntity(entity) bu varlık çevresindeki çarpışma yüklü olduğunda true döndürür. Oyunun yüklemeye başlaması için önce RequestCollisionAtCoord(x, y, z) çağırın.
Neden yalnızca özel bir harita üzerinde olur?
Harita .ybn çarpışma dosyaları olmadan, veya bunlar yanlış klasörde, veya akıştan eksiktir. Görünür model var ama hiçbir şey katı değil.
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 →