Niestandardowy ekran ładowania dla FiveM: loadscreen, fxmanifest i shutdown
Utwórz niestandardowy ekran ładowania FiveM: loadscreen fxmanifest i pliki, loadscreen_manual_shutdown z ShutdownLoadingScreenNui, wskazówki rozmiaru muzyki i wideo, tylko jeden loadscreen.
Ekran ładowania to mała strona internetowa, którą gracze widzą, podczas gdy pliki serwera się pobierają. To zwykły zasób z manifestem i plikiem HTML. Ten poradnik obejmuje pliki, manifest, zamykanie ekranu samemu i trzymanie go lekkim.
Zasób
Utwórz folder z HTML i jego zasobami:
resources/[ui]/my_loadscreen/
fxmanifest.lua
index.html
css/style.css
js/app.js
img/background.jpg
audio/music.oggfxmanifest.lua
fx_version 'cerulean'
game 'gta5'
loadscreen 'index.html'
files {
'index.html',
'css/style.css',
'js/app.js',
'img/background.jpg',
'audio/music.ogg',
}Dwie rzeczy liczą się tutaj:
loadscreen 'index.html'mówi stronie FiveM pokazuje.- Każdy plik, który strona używa, włącznie z HTML'em, musi być w
files. Plik, który nie jest wymieniony, zwraca 404 i ekran jest pusty lub zepsuty w tej części. Wzorzec takie jak'img/*'jest dozwolony, aby wymienić cały folder.
Dodaj to do server.cfg:
ensure my_loadscreenMinimalny index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<h1>Welcome to my server</h1>
<div id="bar"><div id="fill"></div></div>
<audio id="music" src="audio/music.ogg" autoplay loop></audio>
<script src="js/app.js"></script>
</body>
</html>Użyj względnych ścieżek, jak powyżej. Strona działa w przeglądarce gry, więc możesz używać zwykłego HTML, CSS i JavaScript. Dla paska postępu, strona otrzymuje wiadomości, podczas gdy gra się ładuje:
window.addEventListener('message', (e) => {
if (e.data.eventName === 'loadProgress') {
document.getElementById('fill').style.width = (e.data.loadFraction * 100) + '%'
}
})Tylko jeden ekran ładowania
FiveM pokazuje pojedynczy ekran ładowania. Jeśli dwa zasoby deklarują loadscreen, tylko jeden jest używany, i który może się zmienić między startami. Więc:
- Usuń lub zatrzymaj każdy inny zasób ekranu ładowania z
server.cfg. - Gdy chcesz przetestować nowy, zakomentuj starą linię zamiast uruchamiać obydwa.
Zamykanie ekranu samemu
Domyślnie FiveM zamyka ekran ładowania, gdy sesja gry jest gotowa. Skrypt wielopostaciowy lub spawn często potrzebuje ekran otwierania dłużej, aby ukryć świat, aż postać jest wybrana. Do tego manifest wyłącza automatyczne zamknięcie:
loadscreen_manual_shutdown 'yes'Potem skrypt klienta musi go zamknąć:
-- client.lua
CreateThread(function()
-- wait until your own condition: player spawned, character chosen...
while not NetworkIsPlayerActive(PlayerId()) do
Wait(100)
end
ShutdownLoadingScreenNui()
end)ShutdownLoadingScreenNui zamyka stronę NUI twojego ekranu ładowania. Skrypt, który obsługuje spawn, takie jak skrypt wielopostaciowy, często wołuje go, lub rodzime za nim, dla ciebie. Sprawdzić ten skrypt najpierw, potem dodaj swoje własne wołanie tylko jeśli nic innego nie robi.
Ostrzeżenie: jeśli ustawisz
loadscreen_manual_shutdown 'yes'i nic nie wołuje shutdown, gracze zostają na ekranie ładowania na zawsze. Jeśli to się stanie, zobacz players stuck on the loading screen.
Muzyka i wideo: trzymaj je lekkie
Wszystko w files jest pobierane przez każdego gracza. Ciężki ekran ładowania czyni czekanie dłuższe, co jest przeciwieństwem celu.
- Muzyka: użyj
.ogglub.mp3, kilka minut na większość, i umiarkowani bitrate. Utwór 3 MB jest ok, utwór 60 MB nie. Dodaj przycisk wyciszenia i ustaw głośność nisko w kodzie, ponieważ głośny start irytuje graczy. - Wideo: krótkie i zapętlone, w
.webmlub.mp4, mała rozdzielczość i niska bitrate. Jeszcze lepiej, użyj dobrego obrazu tła, który jest znacznie mniejszy. - Obrazy: skompresuj je. Tło 200 do 400 KB wygląda tak samo jak tło 8 MB na większości ekranów.
- Czcionki i biblioteki: włóż je w zasób. Ładowanie ich z internetu przy przyłączeniu czyni stronę wolniejszą, i się to nie powiedzie, jeśli host jest wyłączony.
Ponieważ gracze pobierają te pliki dla każdej nowej wersji, nie zmieniaj ich często. Gdy gracz wciąż widzi starą stronę po aktualizacji, poproś go, aby wyczyścił cache FiveM.
Opcjonalne: kursor
Jeśli chcesz, aby gracz klikał na ekranie ładowania, dla zasad lub menu, dodaj poniżej do manifestu:
loadscreen_cursor 'yes'Częste problemy
- Pusty ekran, brak stylu. Plik brakuje w
files, lub ścieżka w HTML jest zła. - Pokazuje się domyślny ekran. Zasób nie jest uruchomiony, lub linia
loadscreenbrakuje. - Nigdy się nie zamyka. Ustawiłeś
loadscreen_manual_shutdown 'yes'i żaden skrypt nie wołujeShutdownLoadingScreenNui(). - Muzyka się nie odtwarza. Sprawdzić ścieżkę pliku i format. Przetestuj stronę w zwykłej przeglądarce najpierw.
Lista kontrolna
| Symptom | Naprawa |
|---|---|
| Domyślny ekran ładowania | ensure zasobu i dodaj loadscreen 'index.html' |
| Pusty lub brak stylów | Wymień każdy plik w files i użyj względnych ścieżek |
| Dwa ekrany w configu | Trzymaj tylko jeden zasób loadscreen |
| Zostaje na zawsze | Wołaj ShutdownLoadingScreenNui() ze skryptu klienta |
| Długie czekanie | Zmniejsz rozmiary muzyki, wideo i obrazów |
| Stara strona po aktualizacji | Wyczyść cache klienta |
Szybkie odpowiedzi
Czy mogę uruchamiać dwa zasoby ekranu ładowania?
Nie. FiveM używa jednego ekranu ładowania, więc trzymaj jeden zasób loadscreen i usuń pozostałe z server.cfg. Jeśli dwa są uruchomione, otrzymujesz jeden z nich i niekoniecznie ten, którego spodziewasz się.
Jak sam zamknąć ekran ładowania?
Dodaj loadscreen_manual_shutdown 'yes' do manifestu i wołaj ShutdownLoadingScreenNui() z skryptu klienta, gdy jesteś gotowy. Bez tego wołania, ekran ładowania zostaje.
Dlaczego mój ekran ładowania jest wolny?
Duże obrazy, wideo i pliki muzyczne. Trzymaj je małymi i skompresowanymi, ponieważ pliki są pobierane przez każdego gracza przy każdym pierwszym przyłączeniu i po każdej zmianie.
Skrypty bez tego problemu
Tebex TemplateMotyw premium dla twojego sklepu Tebex, bez kodu — edytowany w całości z panelu Tebex.Zobacz skrypt →
Mic PhoneSkładany telefon, który rozkłada się w tablet i działa też na prawdziwym telefonie gracza.Zobacz skrypt →
Quest CreatorWizualny edytor questów i dialogów z NPC, budowanych węzeł po węźle w grze.Zobacz skrypt →