
Özel FiveM Yükleme Ekranı Nasıl Oluşturulur
Tamam, oyuncularınız için benzersiz ve ilgi çekici bir giriş noktası oluşturmaya başlayalım.
Bir tane inşa edeceğiz Özel FiveM Yükleme Ekranı temelden yukarıya.
İçindekiler
Yükleme Ekranı Kaynağı Nedir?
Özel bir yükleme ekranı genellikle bir oyuncunun sizin FiveM sunucunuzla ilk etkileşimidir.
Sunucunuzun markasını oluşturmak, önemli bilgileri iletmek ve en başından itibaren sürükleyici bir atmosfer yaratmak için harika bir fırsat.
Genel FiveM görsellerini unutun; oyuncuların hissetmesini istiyoruz senin Bağlantıya başladıkları anda sunucunun kimliğini öğrenirler.
FiveMX olarak, sunucu sahiplerine gerçekten benzersiz deneyimler yaratmaları için gereken araçları ve bilgiyi sunmaya inanıyoruz.
Bu kapsamlı kılavuz, temel HTML yapısından CSS ile stil oluşturmaya, JavaScript ile etkileşim eklemeye ve son olarak Lua kullanarak bunu FiveM sunucunuza sorunsuz bir şekilde entegre etmeye kadar her adımda size yol gösterecektir.
Hatta daha temiz bir geçiş için varsayılan FiveM köprü animasyonunun nasıl gizleneceğini bile ele alacağız.
Sunucunuzu öne çıkarmaya başlayalım.
Özel FiveM Yükleme Ekranıyla Neden Uğraşıyorsunuz?
Buna değip değmeyeceğini merak ediyor olabilirsiniz.
Kesinlikle!
Bunu sanal dünyanızın lobisi veya girişi olarak düşünün.
İlk İzlenimler: Sunucunuzun tonunu ve profesyonelliğini anında belirler.
Markalaşma: Sunucunuzun adını, logosunu ve genel temasını güçlendirin.
Bilgi Ekranı: Kurallar, Discord bağlantıları, web sitesi URL'leri veya sunucu durum güncellemeleri gibi önemli bilgileri paylaşın önce oyuncular bile ortaya çıkıyor.
Nişanlanmak: Yükleme işlemi sırasında oyuncuların ilgisini canlı tutmak için müzik, dinamik mesajlar veya videolar kullanın ve algılanan bekleme sürelerini azaltın.
Benzersizlik: Varsayılan veya genel ekranları kullanarak sunucunuzu diğer sayısız sunucudan farklılaştırın.
İyi tasarlanmış bir yükleme ekranı, ayrıntılara ve oyuncu deneyimine önem verdiğinizi gösterir.
Ön koşullar
Kodlamaya başlamadan önce gerekli araçlara ve temel anlayışa sahip olduğunuzdan emin olalım:
- Metin Düzenleyici: Kodunuzu yazmak için bir programa ihtiyacınız olacak.
- Visual Studio Code (VS Code): Ücretsiz, güçlü ve şiddetle tavsiye edilen, birçok yararlı uzantıya sahip.
- Sublime Text: Bir diğer popüler, hafif seçenek.
- Notepad++: Windows kullanıcıları için sağlam bir ücretsiz seçenek.
- Kaçınmak Kodlama için yararlı özelliklerden (sözdizimi vurgulama gibi) yoksun oldukları için temel Not Defteri veya TextEdit'i kullanın.
- Temel Web Geliştirme Bilgisi (Yararlı, Zorunlu Değil):
- HTML (Köprü Metni İşaretleme Dili): Bir web sayfasının temel yapısını anlar (etiketler gibi)
<div>,<img>,<p>). Kodu biz sağlayacağız, ancak temelleri bilmek faydalı olacaktır. - CSS (Basamaklı Stil Sayfaları): HTML öğelerinin nasıl biçimlendirileceğini (renkler, boyutlar, konumlar) bilir. Yine size rehberlik edeceğiz, ancak aşinalık bir avantajdır.
- JavaScript (JS): Etkileşimlilik eklemek için temel programlama kavramlarını anlar. Başlangıçta JS'yi nispeten basit tutacağız.
- HTML (Köprü Metni İşaretleme Dili): Bir web sayfasının temel yapısını anlar (etiketler gibi)
- FiveM Sunucu Erişimi: Sunucunuzun dosyalarına, özellikle de
kaynaklarklasörü, yükleme ekranını kurmak için. - Görüntü Düzenleme Yazılımı (Opsiyonel): Logo ve arka plan görselleri oluşturmak veya düzenlemek için Photoshop, GIMP (ücretsiz) veya hatta Canva gibi araçlar faydalı olabilir.
- Sabır ve Öğrenme İsteği: Hata ayıklama ve ince ayar sürecin bir parçasıdır!
Web geliştirme konusunda uzman değilseniz endişelenmeyin.
Her adımı açıkça açıklayacağız ve kopyalanıp yapıştırılabilir kod parçacıkları sağlayacağız.
FiveM Yükleme Ekranlarının Nasıl Çalıştığını Anlamak (NUI)
FiveM, şu adı verilen bir sistemi kullanır: NUI (Yerel Kullanıcı Arayüzü) web sayfalarını görüntülemek için içeri oyun.
Temel olarak, özel yükleme ekranınız, FiveM'in NUI sisteminin oyun varlıkları arka planda yüklenirken oluşturduğu standart bir web sayfasıdır (HTML, CSS ve JavaScript ile oluşturulmuştur).
Bu, görsel açıdan zengin ve etkileşimli deneyimler yaratmak için standart web teknolojilerinden yararlanabileceğimiz anlamına geliyor.
The çekirdek components are:
dizin.html: Yükleme ekranınızın yapısını ve içeriğini tanımlayan ana dosya.stil.css: Görsel görünümü (düzen, renkler, yazı tipleri vb.) tanımlayan dosya.betik.js: Dinamik davranış (metin, animasyon, müzik çalma gibi) ekleyen dosya.fxmanifest.lua(veya__kaynak.lua): Sunucuya bunun bir kaynak olduğunu söyleyen, bunun bir yükleme ekranı olduğunu belirten ve gerekli tüm dosyaları listeleyen özel bir FiveM dosyası.
Şimdi inşa etmeye başlayalım.
Adım 1: Temel HTML Yapısını Oluşturma (dizin.html)
Öncelikle yükleme ekranı kaynağınız için yeni bir klasör oluşturun. Buna benim-yükleme-ekranım.
Bu klasörün içinde şu adlı bir dosya oluşturun: dizin.html.
Bu dosya yükleme ekranımızın iskeletini oluşturacak.
Farklı öğeler için kapsayıcılara ihtiyacımız var: arka plan, logo, yükleme ilerleme göstergesi ve metin mesajları için alanlar.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sunucu Adı - Yükleniyor...</title>
<!-- Link to your CSS file -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- Main container for the entire screen -->
<div class="loading-container">
<!-- Background Element (handled by CSS) -->
<div class="background"></div>
<!-- Content Wrapper -->
<div class="content">
<!-- Logo Area -->
<div class="logo-area">
<img src="resimler/logo.png" alt="Sunucu Logosu" id="server-logo">
<!-- You can replace img with text if you prefer -->
<!-- <h1>My Awesome Server</h1> -->
</div>
<!-- Message Area -->
<div class="message-area">
<p id="loading-message">Bağlantı başlatılıyor...</p>
<p id="dynamic-message">Hoş geldiniz! Sunucu varlıkları yükleniyor...</p>
</div>
<!-- Progress Bar Area -->
<div class="progress-bar-container">
<div class="progress-bar">
<div class="progress-bar-inner" id="progress-bar-inner"></div>
</div>
<p id="progress-text">0%</p>
</div>
<!-- Music Control (Optional) -->
<div class="music-control">
<button id="play-pause-button">Müziği Duraklat</button>
<input type="range" id="volume-slider" min="0" max="1" step="0.01" value="0.5">
</div>
</div> <!-- End Content Wrapper -->
</div> <!-- End Loading Container -->
<!-- Link to your JavaScript file (place at the end of body) -->
<script src="script.js"></script>
</body>
</html>
Açıklama:
<!DOCTYPE html>&<html>: Standart HTML5 kalıbı.<head>: Meta bilgileri ve dış kaynaklara bağlantılar içerir.karakter kümesi="UTF-8": Karakterlerin düzgün görüntülenmesini sağlar.görünüm alanı: Duyarlı tasarım (farklı ekran boyutlarına uyum sağlama) için önemlidir, ancak sabit çözünürlüklü oyun yükleme ekranları için daha az kritiktir.: Bir tarayıcı sekmesinde görünebilecek metni ayarlar (FiveM NUI'de daha az alakalıdır ancak iyi bir uygulamadır).<link rel="stylesheet" href="style.css">: HTML'imizi stil için CSS dosyamıza bağlar.
<body>: Sayfanın görünür içeriğini barındırır.<div class="loading-container">: Her şey için ana sarmalayıcı. Bunu genel düzen için kullanacağız.<div class="background">: Arka plan resmimizi veya videomuzu tutmak için CSS ile şekillendireceğimiz boş bir div.<div class="content">: Gerçek içeriği (logo, metin, ilerleme çubuğu) sararak ortalamaya ve konumlandırmaya yardımcı olur.<div class="logo-area">: Sunucunuzun logosu için bir kapsayıcı.<img src="resimler/logo.png" ...>: Bir resim etiketi. Önemli: Bir tane oluşturmanız gerekecekresimlerklasör içindebenim-yükleme-ekranımve yerleştirlogo.pngdosya orada. Dosya adının eşleştiğinden emin olun!
<div class="message-area">: Metin mesajlarını tutar.- Paragraflara kimlikler veriyoruz (
yükleniyor-mesajı,dinamik-mesaj) böylece daha sonra JavaScript ile bunları kolayca hedefleyebiliriz.
- Paragraflara kimlikler veriyoruz (
<div class="progress-bar-container">: İlerleme çubuğu elemanlarını tutar..ilerleme çubuğu:Çubuğun dış kabı..ilerleme-çubuğu-iç: İç kısmı dolduracak olan kısım. Buna bir ID ( veriyoruzilerleme çubuğu-iç) JS kontrolü için.<p id="progress-text">: Yüzde metnini, bir ID ile birlikte görüntüler.
<div class="music-control">: (Opsiyonel) Arkaplan müziği için temel kontroller. ID'ler JS etkileşimine izin verir.<script src="script.js">: HTML'imizi JavaScript dosyamıza bağlar. Bunu sonuna yerleştirir<body>HTML öğelerinin, komut dosyası onlarla etkileşime girmeden önce var olduğundan emin olur.
Bu dosyayı şu şekilde kaydedin: dizin.html senin içinde benim-yükleme-ekranım Klasör. Bir klasör oluşturun resimler alt klasör ve bir yer tutucu ekle logo.png Şimdilik.
Adım 2: Yükleme Ekranının Stili (CSS – stil.css)
Hadi şimdi güzel görünmesini sağlayalım!
Adında bir dosya oluşturun stil.css aynı şekilde benim-yükleme-ekranım dosya.
Bu dosya görsel sunumu kontrol eder.
/* Temel Sıfırlama ve Gövde Stili */ * { margin: 0; padding: 0; box-sizing: border-box; /* Genişlik/yüksekliğe padding ve kenarlık dahil edilir */ } body, html { height: 100%; width: 100%; overflow: hidden; /* Kaydırma çubuklarını gizle */ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; /* Örnek font */ color: #ffffff; /* Varsayılan metin rengi (beyaz) */ } /* Ana Kapsayıcı */ .loading-container { position: relative; /* Çocukların mutlak konumlandırılması için gereklidir */ width: 100%; height: 100%; display: flex; /* İçeriği ortalamak için flexbox kullanın */ justify-content: center; align-items: center; text-align: center; } /* Arkaplan Stili */ .background { position: absolute; /* İçeriğin arkasında tam ekran kaplama */ top: 0; left: 0; width: 100%; height: 100%; background-image: url('images/background.jpg'); /* BUNU kendi resminizle DEĞİŞTİRİN */ background-size: cover; /* Kabı kaplayacak şekilde resmi ölçeklendir */ background-position: center center; /* Resmi ortala */ background-repeat: no-repeat; z-index: -1; /* Başka bir içeriğin arkasına yerleştir */ filter: bright(0.6); /* İsteğe bağlı: Arkaplanı hafifçe koyulaştır */ } /* --- VEYA Düz Renk Arkaplan Kullan --- */ /* .background { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: #1a1a1a; z-index: -1; } */ /* İçerik Sarmalayıcı */ .content { z-index: 1; /* İçeriğin arka planın üstünde olduğundan emin ol */ padding: 20px; background-color: rgba(0, 0, 0, 0.5); /* Yarı saydam siyah arka plan */ border-radius: 10px; max-width: 600px; /* İçerik genişliğini sınırla */ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.4); } /* Logo Alanı */ .logo-area { margin-bottom: 30px; } #server-logo { max-width: 200px; /* Maksimum logo genişliğini ayarla */ height: auto; /* En boy oranını koru */ display: block; /* Kenar boşluğunun otomatik olarak ortaya gelmesine izin verir */ margin-left: auto; margin-right: auto; } /* Mesaj Alanı */ .message-area { margin-bottom: 30px; } #loading-message { font-size: 1.2em; font-weight: bold; margin-bottom: 10px; color: #cccccc; } #dynamic-message { font-size: 1em; min-height: 40px; /* Mesaj değiştiğinde düzen kaymalarını önle */ } /* İlerleme Çubuğu Alanı */ .progress-bar-container { width: 80%; /* İçerik kabına göre genişlik */ margin: 0 auto; /* Kabı ortala */ margin-bottom: 20px; } .progress-bar { width: 100%; background-color: #555555; /* Koyu gri arka plan */ border-radius: 5px; overflow: hidden; /* Taşan iç çubuğu gizle */ height: 25px; /* Çubuk yüksekliği */ border: 1px solid #333; } .progress-bar-inner { height: 100%; width: 0%; /* 0%'den başla width */ background-color: #4CAF50; /* Yeşil ilerleme rengi */ border-radius: 5px 0 0 5px; /* Sol yarıçapı koru */ transition: width 0.5s ease-in-out; /* Genişlik değişiklikleri için yumuşak geçiş */ text-align: center; line-height: 25px; /* Gerekirse metni dikey olarak ortala */ color: white; } #progress-text { margin-top: 5px; font-size: 0.9em; } /* Müzik Kontrolü (İsteğe bağlı) */ .music-control { margin-top: 25px; display: flex; /* Düğme ve kaydırıcıyı yan yana düzenle */ justify-content: center; align-items: center; gap: 15px; /* Öğeler arasındaki boşluk */ } #play-pause-button { padding: 8px 15px; background-color: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer; font-size: 0.9em; transition: background-color 0.3s ease; } #play-pause-button:hover { background-color: #45a049; } #volume-slider { cursor: pointer; width: 150px; /* Kaydırıcının genişliğini ayarla */ } /* Gerekirse bazı temel duyarlılıklar ekle, ancak NUI'de daha az kritiktir */ @media (max-width: 600px) { .content { max-width: 90%; } .progress-bar-container { width: 90%; } }
Açıklama:
* { kutu boyutlandırma: kenarlık kutusu; }:Öğelerin boyutlandırılmasını daha öngörülebilir hale getirmek için kullanılan yaygın bir sıfırlama.gövde, html: Temel yüksekliği/genişliği ayarlar ve olası kaydırma çubuklarını gizler. Varsayılan bir yazı tipi ve metin rengi ayarlar..yükleme-konteyneri: Kullanımlargörüntüleme: esnekkolayca merkezlemek için.içerikher ikisini de yatay olarak böl (haklı-içerik) ve dikey olarak (hizalama öğeleri).pozisyon: görelimutlak arka planı konumlandırmak için çok önemlidir..arka plan:pozisyon: mutlak: Elemanı normal akıştan çıkarır ve onu en yakın konumlandırılmış atasına göre konumlandırır (.yükleme-konteyneri).üst: 0; sol: 0; genişlik: 100%; yükseklik: 100%;: Kabın tamamını kaplar.arka plan-görüntüsü: url(...): En önemlisi, değişim'resimler/arkaplan.jpg'arka plan resminizin gerçek yoluna. Resmin içinde olduğundan emin olunresimlerdosya.arka plan boyutu: kapak: Görüntüyü güzelce ölçeklendirir.z-indeksi: -1: Diğer unsurların arkasına iter.filtre: parlaklık(0.6): Arka planı koyulaştırarak metni daha okunabilir hale getiren isteğe bağlı bir efekt. Gerektiğinde ayarlayın veya kaldırın.- Alternatif: Yorum satırına alınmış bir bölüm, bir resim yerine basit bir düz arka plan renginin nasıl kullanılacağını gösterir.
.içerik:z-indeksi: 1: Arka planın üstünde durmasını sağlar.arka plan rengi: rgba(0, 0, 0, 0.5): İçerik alanının kendisi için yarı saydam siyah bir arka plan, metnin karmaşık arka planlara karşı öne çıkmasına yardımcı olur. Son değeri (alfa) 0'dan (tamamen saydam) 1'e (tamamen opak) ayarlayın.sınır yarıçapı,maksimum genişlik,kutu gölge: Görsel açıdan biraz cila ekleyin.
.logo-alanı,#sunucu logosu: Logo kabını ve logo görüntüsünün kendisini biçimlendirir (maksimum genişliği, ortalamayı ayarlar)..mesaj-alanı,#yükleniyor-mesajı,#dinamik-mesaj: Metin öğelerinin stilini belirler (yazı tipi boyutu, rengi, kenar boşlukları).min-yükseklikDinamik mesaj içeriğinin uzunluğu değiştiğinde düzenin atlamasını önler..ilerleme-çubuğu-konteyneri,.ilerleme çubuğu,.ilerleme-çubuğu-iç: İlerleme çubuğunun stilini belirler.- Dış konteyner (
.ilerleme çubuğu) arka plan rengini ve şeklini ayarlar. - İç çubuk (
.ilerleme-çubuğu-iç) büyüyen şeydir. Başlangıcıgenişlik: 0%Bu genişliği JavaScript kullanarak değiştireceğiz.geçiş: genişlik 0,5s giriş-çıkış kolaylığı;genişlik değişimini yumuşak hale getirir.
- Dış konteyner (
.müzik-kontrolü,# oynatma-duraklatma-düğmesi,# ses kaydırıcısı: İsteğe bağlı müzik kontrollerinin düzenini oluşturmak ve temel düğme stili eklemek için flexbox'ı kullanır.@media (maksimum genişlik: 600px): Duyarlılık için basit bir medya sorgusu örneği. Daha küçük ekranlarda içerik genişliğini ayarlar (FiveM için daha az kritik ama iyi bir uygulama).
Bunu şu şekilde kaydet: stil.css. Oluşturmayı unutmayın resimler klasörünü oluştur ve ekle arka plan.jpg (veya her ne adlandırıyorsanız) ve logo.png.
Bu noktada teknik olarak şunu açabilirsiniz: dizin.html Dosyayı doğrudan web tarayıcınızda (Chrome veya Firefox gibi) açarak statik görünümünü önizleyebilirsiniz!
Adım 3: Etkileşim ve Dinamik İçerik Ekleme (JavaScript – betik.js)
Şimdi JavaScript kullanarak statik sayfamıza biraz hayat katalım.
Adında bir dosya oluşturun betik.js senin içinde benim-yükleme-ekranım dosya.
Şunlara işlevsellik ekleyeceğiz:
- Yükleme ilerlemesi simüle ediliyor.
- Dinamik/değişen mesajların görüntülenmesi.
- Kontrollerle arka plan müziği ekleme.
- FiveM NUI olaylarının işlenmesi (yükleme ilerlemesini almanın doğru yolu).
// DOM'un (Belge Nesne Modeli - HTML yapısı) tamamen yüklenmesini bekleyin document.addEventListener('DOMContentLoaded', () => { // --- HTML Öğelerine İlişkin Başvuruları Alın --- const progressBarInner = document.getElementById('progress-bar-inner'); const progressText = document.getElementById('progress-text'); const dynamicMessage = document.getElementById('dynamic-message'); const loadingMessage = document.getElementById('loading-message'); // Aşamaları güncellemek için // --- Yapılandırma --- const messages = [ "Çekirdek sistemler yükleniyor...", "Ağ bağlantısı kuruluyor...", "En son sunucu varlıkları indiriliyor...", "Oynatıcı verileri senkronize ediliyor...", "Harita ayrıntıları ayrıştırılıyor...", "Neredeyse tamamlandı, dünya hazırlanıyor...", "İpucu: Discord'umuzu şu adresten ziyaret edin: discord.gg/yourinvite", "İpucu: Kuralları websitemiz yourwebsite.com'dan kontrol edin", "Harika Sunucumuza Hoş Geldiniz!" ]; let currentMessageIndex = 0; const messageChangeInterval = 5000; // Mesajı her 5 saniyede bir değiştir (5000ms) // Arkaplan Müziği (İsteğe bağlı) const backgroundMusic = new Audio('audio/background_music.ogg'); // ÖNEMLİ: FiveM uyumluluğu için .ogg kullanın backgroundMusic.volume = 0.5; // Başlangıç ses seviyesini ayarla (0,0 ila 1,0) backgroundMusic.loop = true; // Müziği döngüye al const playPauseButton = document.getElementById('play-pause-button'); const volumeSlider = document.getElementById('volume-slider'); let isPlaying = false; // Müzik durumunu takip et // --- İşlevler --- // İlerleme çubuğunu ve metni güncelleme fonksiyonu function updateProgress(yüzde) { percentage = Math.min(100, Math.max(0, percentage)); // 0 ile 100 arasına sabitle progressBarInner.style.width = `${yüzde}%`; progressText.textContent = `${Math.round(yüzde)}%`; } // Dinamik mesajı değiştirme fonksiyonu function changeDynamicMessage() { dynamicMessage.style.opacity = 0; // Solma setTimeout(() => { currentMessageIndex = (currentMessageIndex + 1) % messages.length; dynamicMessage.textContent = messages[currentMessageIndex]; dynamicMessage.style.opacity = 1; // Solma }, 500); // Solma geçişini bekle (0,5 sn) } // Müzik çalmayı deneyen fonksiyon (tarayıcının otomatik oynatma kısıtlamalarını işler) function playMusic() { backgroundMusic.play().then(() => { isPlaying = true; playPauseButton.textContent = 'Müziği Duraklat'; console.log("Müzik çalmaya başladı."); }).catch(error => { // Otomatik oynatma engellendi, kullanıcı etkileşimi gerçekleşene kadar tarayıcılarda yaygındır console.log("Müzik otomatik oynatma başarısız oldu. Kullanıcı etkileşimi bekleniyor.", error); isPlaying = false; playPauseButton.textContent = 'Müziği Çal'; // Oynatmayı başlatmak için gövdede veya düğmede bir tıklama dinleyicisine ihtiyacımız olabilir }); } // --- İlk Kurulum --- // İlk yükleme mesajını ayarla loadingMessage.textContent = "Başlatılıyor..."; updateProgress(0); // İlerlemeyi 0%'de başlat // Dinamik mesajları değiştirmeye başla dynamicMessage.textContent = messages[0]; // İlk mesajı hemen göster setInterval(changeDynamicMessage, messageChangeInterval); // Müziği otomatik olarak çalmayı dene playMusic(); // Arkaplanda müzik çalmayı dene // --- Olay Dinleyicileri --- // Müzik Olay Dinleyicilerini Kontrol Eder playPauseButton.addEventListener('click', () => { if (isPlaying) { backgroundMusic.pause(); isPlaying = false; playPauseButton.textContent = 'Müzik Çal'; } else { // Önemli: Olası ilk hataları işleyen oynatma işlevini yeniden tetikleyin playMusic(); } }); volumeSlider.addEventListener('input', (event) => { backgroundMusic.volume = event.target.value; }); // --- FiveM NUI Olay İşleme --- // Bu, FiveM yükleme süreciyle etkileşimin ÖZÜDÜR /* FiveM NUI mesajları JavaScript olayları aracılığıyla gönderilir. Pencere nesnesinde 'message' olaylarını dinleriz. Olay 'data' özelliği Lua'dan gönderilen bilgileri içerir. */ window.addEventListener('message', function(event) { const data = event.data; // FiveM tarafından yükleme ilerlemesi için kullanılan belirli NUI mesaj türünü kontrol edin // 'loadstatus' olayı genel ilerleme metnini sağlar. if (data.type === 'loadstatus') { if(data.status) { loadingMessage.textContent = data.status; } } // 'Progress' olayı ayrıntılı bileşen ilerlemesini sağlar (bunu çubuk için kullanın) else if (data.eventName === 'progress') { // data.loadFraction 0,0 ile 1,0 arasında bir değer verir const progressPercentage = data.loadFraction * 100; updateProgress(progressPercentage); } // Yükleme neredeyse tamamlandığında Lua'dan gönderebileceğimiz özel bir olay else if (data.type === 'loadingComplete') { updateProgress(100); loadingMessage.textContent = "Yükleme Tamamlandı! Sunucuya Katılıyorum..."; // Ekran kaybolmadan önce buraya kaybolma efektleri ekleyebilirsiniz } }); // --- Geri Dönüş/Benzetimli İlerleme (NUI olayları alınmadıysa veya test amaçlı) --- // Yalnızca FiveM NUI olaylarına güveniyorsanız bunu yorum satırına alın veya kaldırın /* let simulatedProgress = 0; const interval = setInterval(() => { simulatedProgress += Math.random() * 5; // Rastgele küçük bir miktar artırın if (simulatedProgress >= 100) { simulatedProgress = 100; clearInterval(interval); // 100%'ye ulaşıldığında simülasyonu durdurun loadingMessage.textContent = "Yükleme Tamamlandı! Sunucuya Katılıyorum server..."; // Son mesajı güncelle } updateProgress(simulatedProgress); }, 300); // Her 300 ms'de bir güncelle */ // Yükleme sırasında tüm ekran için küçük bir açılma efekti ekle document.body.style.opacity = 0; setTimeout(() => { document.body.style.transition = 'opacity 1s ease-in-out'; document.body.style.opacity = 1; }, 100); // Yüklemeden hemen sonra açılma efektini başlat }); // DOMContentLoaded'ı sonlandır
Açıklama:
belge.addEventListener('DOMContentYüklendi', () => { ... });: Bu, JavaScript kodunun yalnızca çalışmasını sağlar sonrasında Tüm HTML sayfa yapısı yüklendi ve üzerinde değişiklik yapmaya hazır.- Element Referansları: Etkileşim kurmamız gereken HTML öğelerine referansları kullanarak erişiyoruz
belge.getElementById()İşte bu yüzden HTML'de benzersiz kimliklerin olması önemlidir. - Yapılandırma:
mesajlar: Dinamik mesaj alanında gezinmek istediğiniz farklı metin dizelerini tutan bir dizi. Bunları özelleştirin!geçerliİletiDizini: Şu anda hangi mesajın görüntülendiğini takip eder.mesajDeğişimAralığı: Mesajın ne sıklıkla (milisaniye cinsinden) değişeceğini ayarlar.
- Arka Plan Müziği Kurulumu:
yeni Ses('ses/arkaplan_müziği.ogg'): Bir HTML ses nesnesi oluşturur. Önemli olarak:- Bir tane oluştur
sesklasör içindebenim-yükleme-ekranım. - Arkaplan müzik dosyanızı oraya yerleştirin.
- Kullanın
.oggBiçimlendir! MP3 ve diğer formatlar FiveM NUI içinde güvenilir olmayabilir veya hiç çalışmayabilir. MP3'ü OGG'ye dönüştürmek için çevrimiçi dönüştürücüleri kolayca bulabilirsiniz.
- Bir tane oluştur
arkaplanMüzik.ses: Başlangıç ses seviyesini ayarlar (0,0 = sessiz, 1,0 = tam).arkaplanMüzik.döngü = doğru;: Müziğin tekrarlanmasını sağlar.- Ayrıca oynat/duraklat düğmesine ve ses kaydırıcısına da göndermeler görüyoruz.
updateProgress(yüzde)işlev: Bir sayı alır (0-100), sınırlar içinde olduğundan emin olmak için onu sıkıştırır, güncellerGenişlikİç ilerleme çubuğu öğesinin stilini değiştirir ve yüzde gösteriminin metin içeriğini değiştirir.DinamikMesajıdeğiştir()işlev:- Kullanımlar
setAralıkKurulum aşamasında bu fonksiyonu tekrar tekrar çağırmak. - Bir sonraki mesajın indeksini hesaplar ve modül operatörünü kullanarak (
%). - Günceller
metinİçerikof'undinamikMesajöğe. - Bonus: CSS opaklığı ve basit bir kaybolma/kararma efekti içerir
Zamanaşımı Ayarladaha yumuşak bir geçiş için. Eklegeçiş: opaklık 0,5 sn giriş-çıkış kolaylığı;için.mesaj-alanı pBunun görsel olarak çalışması için CSS'inizde seçici kullanmanız gerekir.
- Kullanımlar
Müzik çal()işlev: Müziği kullanarak çalma girişimleriarkaplanMüzik.çal()..Daha sonra()başarılı oynatmayı yönetirken,.yakalamak()tarayıcı otomatik oynatma kısıtlamaları nedeniyle sıklıkla oluşan hataları işler (önce kullanıcı etkileşimi gerektirir). Düğme metnini buna göre günceller.- İlk Kurulum: Başlangıç metnini ayarlar, ilerlemeyi 0'a sıfırlar, ilk dinamik mesajı görüntüler ve mesaj değişiklikleri için aralık zamanlayıcısını başlatır. Ayrıca şunu çağırır:
Müzik çal()sesi başlatmayı deneyin. - Olay Dinleyicileri (Müzik Kontrolleri):
- Tıklamaları dinler
oynatDuraklatDüğmesiMüzik çalıyorsa, duraklatır; aksi takdirde, müzik çalar.Müzik çal()(ilk otomatik oynatmanın başarısız olduğu durumları ele almak önemlidir). - Dinler
girişolaylarhacim kaydırıcısı(kaydırıcı hareket ettikçe sürekli olarak ateşlenir) ve güncellerarkaplanMüzik.ses.
- Tıklamaları dinler
- FiveM NUI Olay İşleme (
window.addEventListener('mesaj', ...)):- Bu, en önemli kısımdır gerçek Entegrasyon. FiveM, NUI penceresine (HTML sayfanıza) şu komutu kullanarak mesajlar gönderir:
Mesaj gönderUygulama Programlama Arayüzü. - Bu mesajları dinliyoruz
pencerenesne. olay.vericontains the payload sent from FiveM’s Lua scripts.- Biz kontrol ediyoruz
olay.veri.türüveyaolay.veri.olayAdı(farklı FiveM sürümleri/bağlamları biraz farklı yapılar kullanabilir) ne tür bir mesaj olduğunu görmek için. 'yük durumu': Genellikle genel durum metni içerir (örneğin, "Harita yükleniyor", "Komut dosyaları başlatılıyor").Mesaj yükleniyorparagraf.'ilerlemek': Bu genellikle gerçek yükleme çubuğu ilerlemesi için kullanılır.veri.yüklemeKesirigenellikle yüzdeye dönüştürdüğümüz ve verilerimize girdiğimiz 0,0 ile 1,0 arasında bir değer sağlargüncellemeİlerlemeişlev.'yüklemeTamamlandı': Bu standart bir FiveM etkinliği değil, bir örnektir gelenek sana mesaj at olabilir Yüklemenin sonunu bildirmek için bir Lua betiğinden (daha sonra tartışacağız) gönderin, böylece ilerlemeyi 100% olarak ayarlayabilir ve son bir mesaj gösterebilirsiniz.
- Bu, en önemli kısımdır gerçek Entegrasyon. FiveM, NUI penceresine (HTML sayfanıza) şu komutu kullanarak mesajlar gönderir:
- Geri Dönüş/Simüle Edilmiş İlerleme:
- Yorumlanmış bölüm bir temel simülasyon ilerlemenin. Kullanır
setAralıkİlerleme çubuğunu periyodik olarak küçük rastgele bir miktarda artırmak için. - Bu, yükleme ekranınızı bir tarayıcıda görsel olarak test etmek için yararlıdır olmadan FiveM'i çalıştırıyorum.
- Gerçek FiveM NUI olaylarını kullanırken bu simülasyon kodunu KALDIRMALI veya YORUM OLARAK İPTAL etmelisinizAksi takdirde, çakışan ilerleme güncellemeleri görebilirsiniz.
- Yorumlanmış bölüm bir temel simülasyon ilerlemenin. Kullanır
- Solma Efekti: Sayfa yüklendiğinde daha akıcı bir görünüm için tüm gövdeye hafif bir geçiş ekler.
Bu dosyayı şu şekilde kaydedin: betik.js. Oluşturmayı unutmayın ses klasörünü oluştur ve ekle .ogg müzik dosyası.
Adım 4: FiveM ile Entegrasyon (Lua – fxmanifest.lua)
Şimdi FiveM sunucusuna yeni kaynağımızı bildirmemiz ve bunu bir yükleme ekranı olarak tanımlamamız gerekiyor.
Adında bir dosya oluşturun fxmanifest.lua kökünde benim-yükleme-ekranım dosya.
-- Kaynak Manifestosu fx_version 'cerulean' -- 'cerulean' veya 'adamant' veya 'bodacious' gibi daha yeni bir sürüm kullanın oyun 'gta5' yazarı 'Adınız veya Sunucu Adınız' açıklaması 'Muhteşem Sunucum için Özel Yükleme Ekranı' sürüm '1.0.0' -- Bu kaynağı yükleme ekranı olarak belirtin loadscreen 'index.html' -- UI tarafından ihtiyaç duyulan tüm dosyaları listeleyin (HTML, CSS, JS, resimler, ses, yazı tipleri, vb.) dosyalar { 'index.html', 'style.css', 'script.js', 'images/logo.png', 'images/background.jpg', -- Tüm resimlerinizi buraya ekleyin 'audio/background_music.ogg' -- Tüm ses dosyalarınızı buraya ekleyin -- 'fonts/mycustomfont.woff2' -- Kullanıyorsanız özel yazı tipleri ekleyin } -- İsteğe bağlı: Gelişmiş kontrol için istemci betiği (varsayılan öğeleri gizlemek gibi) client_script 'client.lua' -- İsteğe bağlı: Yükleme ekranınızın sunucudan veri alması gerekiyorsa (daha gelişmiş) -- server_script 'server.lua' -- İsteğe bağlı: Gerekirse NUI ayarlarını tanımlayın (temel yükleme ekranları için nadiren gerekir) -- nui_settings { -- ['scriptFramePolicy'] = "frame-ancestors 'self' https://cfx.re" -- Örnek güvenlik politikası -- }
Açıklama:
fx_version 'gök mavisi': Manifest sürümünü tanımlar. 'cerulean' yaygın bir temel sürümdür, ancak 'adamant' veya 'bodacious' gibi daha yeni sürümler de mevcuttur. Daha yeni sürümlerden gelen özelliklere ihtiyacınız yoksa 'cerulean'ı kullanın.oyun 'gta5': Bu kaynağın hangi oyun için olduğunu belirtir.yazar,Tanım,versiyon: Kaynağınız hakkında meta veriler. Bunları uygun şekilde doldurun.yükleme ekranı 'index.html': İşte kritik çizgi burası. FiveM'e belirtilen HTML dosyasını kullanmasını söyler (dizin.html(bizim durumumuzda) oyunun yükleme ekranı olarak.dosyalar { ... }: Çok önemli! Listelemelisiniz her bir dosya HTML sayfanızın, kaynağın kök klasörüne göre yüklenmesi gereken değer. Bu şunları içerir:- HTML dosyasının kendisi (
dizin.html) - CSS dosyası (
stil.css) - JavaScript dosyası (
betik.js) - Tüm görseller (örn.
resimler/logo.png,resimler/arkaplan.jpg) - Tüm ses dosyaları (örn.
ses/arkaplan_müziği.ogg) - CSS'nizde bağlantısını verdiğiniz özel yazı tipleri.
- Burada bir dosyayı unutursanız, oyun içinde yüklenmez!
- HTML dosyasının kendisi (
istemci_betiği 'client.lua': Bunu ekliyoruz çünkü bir sonraki adımda varsayılan FiveM yükleme öğelerini gizlemeyi ele alan küçük bir istemci betiği oluşturacağız.sunucu_komut dosyası 'sunucu.lua': Yalnızca yükleme ekranınızın sunucuyla iletişim kurması gereken gelişmiş senaryolar için gereklidir (örneğin, dinamik oyuncu sayılarını almak) önce (Ana oyun ortamı yüklenir, bu da karmaşıktır). Bunu temel bir kurulum için kullanmayacağız.nui_ayarları: NUI çerçevesi için belirli güvenlik politikalarının ayarlanmasına olanak tanır. Harici içerik yerleştirmiyorsanız veya karmaşık etkileşimlerle uğraşmıyorsanız, standart yükleme ekranları için genellikle gerekli değildir.
Bu dosyayı şu şekilde kaydedin: fxmanifest.lua.
(Not: Eski sunucularda kullanılabilir __kaynak.lua yerine fxmanifest.luaSözdizimi çok benzer, ancak fx_sürümü genellikle atlanır veya farklıdır ve yönergeler biraz farklılık gösterebilir. fxmanifest.lua (modern standarttır).
Adım 5: Varsayılan FiveM Bridge Animasyonunu Devre Dışı Bırakma (Lua – istemci.lua)
Varsayılan olarak, FiveM kendi yükleme metnini ve bazen bir "köprü" yükleme animasyonunu gösterir önce özel ekranınız tamamen devralır. Bunları daha temiz bir görünüm için istemci tarafı Lua betiği kullanarak gizleyebiliriz.
Adında bir dosya oluşturun istemci.lua senin içinde benim-yükleme-ekranım dosya.
-- yükleme ekranı kaynağı için client.lua -- Bu kod, kaynak istemcide başlar başlamaz çalışır -- NUI'nin muhtemelen hazır olduğundan emin olmak için kısa bir süre bekleriz Citizen.Wait(100) -- Yöntem 1: ShutdownLoadingScreenNui Kullanımı (Basit gizleme için önerilir) -- Bu, varsayılan FiveM yükleme GUI öğelerini hemen gizlemeye çalışır. -- Genellikle etkilidir, ancak istemci yükleme hızına bağlı olarak zamanlama bazen zor olabilir. ShutdownLoadingScreenNui() -- Gerekirse NUI sayfanıza bir mesaj da gönderebilirsiniz, örneğin, -- Lua'nın hazır olduğunu veya ilk verileri ilettiğini belirtmek için. -- SendNUIMessage({ -- type = "luaReady", -- message = "İstemci betiği yüklendi!" -- }) -- Yöntem 2: CreateThread ve AddTextEntry kullanarak daha kontrollü gizleme -- Bu yöntem, varsayılan yükleme metin girdilerini sürekli olarak geçersiz kılar. -- Varsayılan metnin kısa bir süre titrememesini sağlamada daha güvenilir olabilir. -- Eğer bunu tercih ediyorsanız bu bölümü yorum satırından çıkarın ve ShutdownLoadingScreenNui() fonksiyonunu yorum satırına alın. --[[ Citizen.CreateThread(function() -- Varsayılan "Başlatılıyor..." metin bileşenlerini gizle AddTextEntry('FE_THDR_GTAO', ' ') -- Çevrimiçi Yükleme AddTextEntry('PM_NAME_APP', ' ') -- FiveM Uygulama Adı (değişebilir) AddTextEntry('PM_INFO_DET', ' ') -- Derleme Bilgileri/Bağlantı durumu AddTextEntry('LOADING_SPLAYER_L', ' ') -- Hikaye Modu Yükleme (bazen görünür) AddTextEntry('DLC_ITEM_UNLOCK', ' ') -- Varsa mesajların kilidini aç -- Özel ekranın etkin olması beklenirken bunları periyodik olarak geçersiz kılmaya devam et -- Bu döngü aşırı olabilir; genellikle bunları bir kez ayarlamak yeterlidir. -- Performans etkilenirse Bekleme süresini ayarlayın veya döngüyü kaldırın. while true do Citizen.Wait(500) -- Her 500 ms'de bir kontrol et/geçersiz kıl -- yükleme ekranı hala etkin (sahte kod, gerçek mantığa ihtiyaç duyar) -- yerel isLoading = GetIsLoadingScreenActive() -- Bu yerel yeterince erken çalışmayabilir -- eğer isLoading değilse o zaman sonu kes -- Ana oyun yüklendiğinde döngüden çık (daha iyi bir koşula ihtiyaç duyar) -- Her ihtimale karşı geçersiz kılmaları yeniden uygula AddTextEntry('FE_THDR_GTAO', ' ') AddTextEntry('PM_NAME_APP', ' ') AddTextEntry('PM_INFO_DET', ' ') AddTextEntry('LOADING_SPLAYER_L', ' ') AddTextEntry('DLC_ITEM_UNLOCK', ' ') -- İsteğe bağlı olarak, sağ alttaki dönen yükleme çemberini gizle HideHudComponentThisFrame(14) -- HUD_LOADING_SPINNER sonu sonu) --]] -- Gerekirse buraya daha fazla mantık ekleyebilirsiniz, örneğin oyun olaylarını dinlemek için -- NUI yükleme ekranınıza belirli mesajlar göndermek için. -- Örnek: Oyuncu ortaya çıktığında bir mesaj gönder (ancak yükleme ekranı genellikle o zamana kadar gitmiş olur) -- AddEventHandler('playerSpawned', function() -- SendNUIMessage({ type = 'playerReady' }) -- end) print('[MyLoadingScreen] İstemci betiği yüklendi.')
Açıklama:
Vatandaş.Bekle(100): Küçük bir gecikme. Bazen NUI veya oyun öğeleriyle etkileşim kurmaya çalışıyorum hemen betik yüklemeleri başarısız olabilir. Bu, şeylere başlatma için bir an verir.KapatmaYüklemeEkranıNui(): Bu, oyun/FiveM tarafından sağlanan varsayılan yükleme ekranı kullanıcı arayüzü öğelerini gizlemek için özel olarak tasarlanmış, FiveM'e özgü yerleşik bir işlevdir. Genellikle en basit ve en doğrudan yoldur.SendNUIMessage({ ... }): Verileri nasıl gönderebileceğinizi gösteren bir örnek itibaren Lua ile JavaScript'iniz. Geçtiğiniz tablo,olay.verinesne seninwindow.addEventListener('mesaj', ...)dinleyicibetik.jsBunu belirli eylemleri tetiklemek veya sunucu bilgilerini iletmek için kullanabilirsiniz.- Yöntem 2 (Yorumlar Dışında):
- Kullanarak alternatif bir yaklaşım sağlar
Metin Girişi EkleBu fonksiyon, tuşlarıyla tanımlanan varsayılan oyun metin dizelerini geçersiz kılmanıza olanak tanır (örneğinFE_THDR_GTAO). Bunları bir boşluğa (' ') ayarlayarak, onları etkili bir şekilde gizleyebilirsiniz. - The
Vatandaş.Konu OluşturBu görev için ayrı bir iş parçacığı oluşturur. - The
doğru olsa dadöngü (ileVatandaş.Bekle) bu geçersiz kılmaları sürekli olarak yeniden uygular. Bu, metni sıfırlamaya çalışan oyuna karşı daha sağlam olabilir ancak aşırıya kaçabilir. Ayrıca şunları içerirHudComponentThisFrame'i Gizle(14)çarkı gizlemek için. - Seçmek bir yöntem. Kullanarak
KapatmaYüklemeEkranıNui()Varsayılan öğelerin hala kısa bir süre yanıp sönmesi gibi sorunlarla karşılaşmadığınız sürece, genellikle basitlik açısından tercih edilir.
- Kullanarak alternatif bir yaklaşım sağlar
yazdır(...): İstemcinin F8 konsoluna bir mesaj kaydeder, yüklenen betiği onaylamak için kullanışlıdır.
Bu dosyayı şu şekilde kaydedin: istemci.lua.
Adım 6: Yükleme Ekranını Yükleme ve Çalıştırma
Artık tüm parçalar oluşturuldu, bunları sunucuya koyalım.
- Kaynağı Yükle:
- Tümünü al
benim-yükleme-ekranımklasör (şimdi şunları içerir)dizin.html,stil.css,betik.js,fxmanifest.lua,istemci.luaveresimlerVeses(içerikleriyle birlikte alt klasörler). - Bu klasörün tamamını FiveM sunucunuza yükleyin
kaynaklarDizin. FTP yazılımı (örneğin FileZilla) veya sunucunuzun web panelini kullanabilirsiniz. Yapı şöyle görünmelidir:[sunucu-verisi]/kaynaklar/benim-yükleme-ekranım/.
- Tümünü al
- Kaynağın Sağlanması
sunucu.cfg:- Sunucunuzun ana yapılandırma dosyasını açın, genellikle şu şekilde adlandırılır:
sunucu.cfg. - Kaynakların başladığı bölümü bulun (satırlar genellikle şu şekilde başlar:
emin olmakveyabaşlangıç). - Yükleme ekranı kaynağınızı başlatmak için bir satır ekleyin:
cfg # Özel Yükleme Ekranı ensure my-loading-screen - Yerleştirmenin biraz önemi var: Listelendiğinden emin olun önce Ekranın mümkün olduğunca erken görünmesini istiyorsanız yüklenmesi uzun zaman alabilecek kaynaklar. Ancak, temel
emin olmakgenellikle yeterlidir. Olumsuz herhangi birinin içine yerleştirin[kategori]Eğer varsayılan kaynak olmasını istiyorsanız parantez içine alın.
- Sunucunuzun ana yapılandırma dosyasını açın, genellikle şu şekilde adlandırılır:
- Sunucunuzu Yeniden Başlatın: Değişiklikler için
sunucu.cfgve yeni kaynağın tanınması için FiveM sunucunuzu tamamen yeniden başlatmanız gerekir. - Bağlan ve Test Et: FiveM'i başlatın ve sunucunuza bağlanın. Artık varsayılan yerine özel yükleme ekranınızı görmelisiniz! İlerleme çubuğunu (gerçek FiveM yüklemesine tepki vermeli), değişen mesajları ve müzik kontrollerini test edin. Oyun içindeki F8 konsolunu herhangi bir hata olup olmadığını kontrol edin.
istemci.luaveya olası NUI sorunları. JavaScript hataları için tarayıcı konsolunu kontrol edin (genellikle F8 -> NUI Araçları üzerinden veya doğrudan HTML'yi açarak erişilebilir).
Gelişmiş Özelleştirme Fikirleri
Temelleri çalıştırdıktan sonra daha gelişmiş özellikleri keşfedebilirsiniz:
- Arka Plan Videoları: Statik bir resim yerine HTML kullanın
etiket.- Eklemek
sanadizin.html. - Stil
#bg-videoCSS'de buna benzer.arka plandiv (mutlak konum, 100% genişlik/yükseklik,nesneye uygun: kapak,z-indeksi: -1). - Önemli: Videolar yükleme ekranı boyutunu önemli ölçüde artırır. Bunları büyük ölçüde optimize edin (çözünürlük, bit hızı). Şunlar gibi formatları kullanın:
.mp4(H.264 kodeği). Video dosyasını eklemeyi unutmayınfxmanifest.lua. Otomatik oynatma gerekebilirsessizBaşlangıçta tarayıcı politikaları nedeniyle ses özelliği devre dışıdır; kullanıcı etkileşimine (ses kontrolüne tıklamak gibi) bağlı olarak sesi açmak için JS'ye ihtiyacınız olabilir.
- Eklemek
- Sunucu Kurallarını/Mesajlarını Dinamik Olarak Getirme: Mesajları JS'ye sabit kodlamak yerine şunu kullanın:
gidip getirmeksenin içindebetik.jskuralları veya duyuruları bir yerden yüklemek için.jsonKaynağınızdaki dosyadan veya harici bir web sunucusundan/API'den bile. Bu güncellemeleri kolaylaştırır. - Web Çerçevelerini Kullanma: Daha hızlı stil oluşturmak için Tailwind CSS veya Bootstrap gibi CSS çerçevelerini veya daha karmaşık kullanıcı arayüzü mantığı için Vue.js veya React gibi JavaScript çerçevelerini kullanın (ancak bu, önemli ölçüde karmaşıklık ve derleme adımları ekler).
- API Entegrasyonları: Harici API'lerden veri alın (örneğin, bir Discord botu ve basit bir API uç noktası kullanarak Discord sunucunuzdan çevrimiçi oyuncu sayısını gösterin). Bunun için sunucu tarafı betikleme gerekir (
sunucu.lua(kaynaklarınızda veya ayrı bir web servisinde) güvenli bir şekilde işlemek için. - Daha Karmaşık Animasyonlar: CSS animasyonlarını kullanın (
@anahtar kareler) veya daha yumuşak geçişler, solma efektleri veya animasyonlu logolar için JavaScript animasyon kütüphanelerini (GSAP gibi) kullanın.
Yaygın Sorunların Giderilmesi
- Yükleme Ekranı Görünmüyor:
- Kontrol etmek
sunucu.cfg: mıyükleme ekranımı garantilemevcut ve doğru yazılmış mı? Kaynakla ilgili olarak başlangıçta sunucu konsolunda herhangi bir hata var mı? - Kontrol etmek
fxmanifest.lua: mıyükleme ekranı 'index.html'satır doğru mu? Tümü gerekli dosyalar (HTML, CSS, JS, resimler, ses) listelenmiştirdosyalarBlok? Dosya adlarını ve yollarını dikkatlice kontrol edin (Linux'ta büyük/küçük harfe duyarlıdır!). - Klasör Yapısını Kontrol Et:
benim-yükleme-ekranımklasörün doğrudan içindekaynaklardosya?
- Kontrol etmek
- CSS Stilleri Uygulanmadı:
- HTML'yi kontrol edin
<link>etiket:href="stil.css"doğru? - Kontrol etmek
fxmanifest.lua: mıstil.csslistelenendosyalarengellemek? - CSS Sözdizimini Kontrol Edin: Yazınızda yazım hataları veya yanlışlıklar var mı?
stil.cssDosya? Bir CSS doğrulayıcısı kullanın. - Tarayıcı Önbelleği: Bazen FiveM'in NUI önbelleği eski sürümleri tutar. FiveM önbelleğinizi temizleyin (genellikle
%localappdata%FiveMFiveM.appcacheWindows'ta şu klasörleri silin:tarayıcı,db,nui-depolama) ve FiveM'i yeniden başlatın.
- HTML'yi kontrol edin
- JavaScript Çalışmıyor (İlerleme yok, mesaj değişmiyor, müzik yok):
- HTML'yi kontrol edin
<script>etiket:kaynak="script.js"doğru ve yerleştirilmiş son of'un<body>? - Kontrol etmek
fxmanifest.lua: mıbetik.jslistelenendosyalarengellemek? - Tarayıcı Konsolunu Kontrol Edin: FiveM'de F8 konsolunu açın, NUI Devtools'a gidin (varsa) veya
dizin.htmldoğrudan bir tarayıcıda ve geliştirici konsolunu (genellikle F12) JavaScript hataları için kontrol edin. Bu hatalar genellikle tam sorun satırını belirler. - Ses Sorunları: Müzik dosyası
.oggbiçimi? Yol içinde mi?yeni Ses(...)doğru mu?ses/sizin_müziğiniz.oggManifest'te listelenmiş mi? Tarayıcının otomatik oynatma kısıtlamalarını unutmayın – müzik yalnızca oynat düğmesine tıklandıktan sonra başlayabilir.
- HTML'yi kontrol edin
- İlerleme Çubuğu Güncellenmiyor:
- FiveM NUI etkinliklerine mi güveniyorsunuz?
window.addEventListener('mesaj', ...)? Bu kodun etkin olduğundan (yorum satırına alınmadığından) emin olun. - Etkinlik adları (
yük durumu,ilerlemek,yükkesiri) doğru mu? Bunlar bazen FiveM güncellemeleri veya belirli oyun yapıları arasında biraz farklılık gösterebilir.konsol.log(JSON.stringify(olay.veri))FiveM'in tam olarak hangi verileri gönderdiğini görmek için mesaj dinleyicisinin içine bakın. - Öğe kimliği (
ilerleme çubuğu-iç) hem HTML hem de JS'de doğru mu?
- FiveM NUI etkinliklerine mi güveniyorsunuz?
- Varsayılan FiveM Yükleme Öğeleri Hala Görünüyor:
- Kontrol etmek
istemci.lua: Komut dosyası çalışıyor mu (kontrol edin)baskıF8'deki mesaj)?KapatmaYüklemeEkranıNui()çağrılıyor mu? KullanıyorsanızMetin Girişi Ekle, anahtarlar oyun yapınız için doğru mu? Başlangıç değerini artırmayı deneyinVatandaş.Bekle().
- Kontrol etmek
Premium Bir Çözüme mi İhtiyacınız Var? FiveMX'yi İnceleyin!
Sıfırdan bir yükleme ekranı oluşturmak ödüllendirici bir iş olsa da, özellikle gelişmiş özellikler ve son derece cilalı bir tasarım istiyorsanız, zaman alıcı da olabilir.
Hazır ve profesyonel bir çözümü tercih ediyorsanız, FiveMX'de sizin için her şeyi düşündük.
Deneyimli geliştiriciler tarafından tasarlanan, birinci sınıf, özellik açısından zengin yükleme ekranlarından oluşan özenle seçilmiş bir seçki sunuyoruz.
FiveMX Ücretli Yükleme Ekranlarının Avantajları:
- Profesyonel Tasarımlar: Görsel olarak muhteşem ve modern bir estetik.
- Gelişmiş Özellikler: Genellikle arka plan videoları, müzik çalarlar, birden fazla yapılandırılabilir bölüm, Discord entegrasyon önizlemeleri, sunucu durum göstergeleri ve daha fazlasını içerir.
- Kolay Yapılandırma: Genellikle derin kod değişikliklerine gerek kalmadan metinleri, logoları, bağlantıları ve özellikleri özelleştirmek için basit yapılandırma dosyalarıyla birlikte gelirler.
- Güvenilirlik ve Destek: Uyumluluk açısından test edilmiştir ve sorunlarla karşılaşmanız halinde genellikle geliştirici desteğiyle birlikte gelir.
- Zamandan ve Emekten Tasarruf Edin: Anında yüksek kaliteli bir sonuç elde edin, böylece sunucunuzun diğer yönlerine odaklanabilirsiniz.
Sunucunuzun kimliğine en uygun olanı bulmak için arayüz ve yükleme ekranı yelpazemizi keşfedin:
- FiveMX Yükleme Ekranları Kategorisi
- FiveMX Script Koleksiyonu (Arayüzler bölümü genellikle Yükleme ekranlarını içerir)
FiveMX'de mevcut olan şu popüler seçenekleri göz önünde bulundurun:
- Modern Yükleme Ekranı V1:Başlamanız için şık ve temiz bir seçenek.
- Gelişmiş Yükleme Ekranı V6: Son derece özelleştirmeye yönelik özelliklerle dolu.
- Benzersiz Yükleme Ekranı V13:Farklı bir tasarımla öne çıkın.
- Yükleme Ekranı V16: Modern özelliklere sahip bir diğer mükemmel seçim.
Premium bir yükleme ekranına yatırım yapmak, sunucunuzun algılanan kalitesini ve oyuncu deneyimini ilk tıklamadan itibaren önemli ölçüde artırabilir.
Çözüm
Bir oluşturma Özel FiveM Yükleme Ekranı Sunucunuzun kimliğini geliştirmenin ve daha iyi bir kullanıcı deneyimi sağlamanın güçlü bir yoludur.
HTML yapısını kurma, CSS ile biçimlendirme, JavaScript ile dinamik davranış ekleme ve bunu FiveM'e entegre etme adımlarını inceledik. fxmanifest.lua ve basit bir istemci.lua varsayılan öğeleri gizlemek için komut dosyası.
Unutmayın ki anahtar nokta dikkatli dosya yönetimi (her şeyi manifest dosyasında listelemek), gerçek ilerleme güncellemeleri için NUI olaylarının nasıl çalıştığını anlamak ve web standartlarını (HTML, CSS, JS) kullanmaktır.
Farklı stiller, mesajlar ve medyayı denemekten korkmayın.
Sorunları gidermek için geliştirici konsollarını kullanarak tarayıcınızda ve oyun içinde kapsamlı testler yapın.
Whether you build your own masterpiece following this guide or choose a polished premium option from FiveMX.com, investing in your loading screen is investing in your server’s first impression.
Keyifli kodlamalar dileriz. Umarız bu, oyuncularınız için harika bir giriş noktası oluşturmanıza yardımcı olur!
Sıkça Sorulan Sorular (SSS)
S1: Resim yerine arka plan videoları kullanabilir miyim?
A: Evet! HTML'yi kullanın etiket (). Ekranı kaplamak için CSS ile biçimlendirin (pozisyon: mutlak, genişlik: 100%, yükseklik: 100%, nesneye uygun: kapak, z-indeksi: -1). Unutmayın sesini kapatmak Otomatik oynatmanın güvenilir bir şekilde çalışması için video dosya boyutunu büyük ölçüde optimize edin, MP4 (H.264) gibi uyumlu formatları kullanın ve video dosyasını listeye ekleyin. fxmanifest.lua.
S2: İlerleme çubuğunun nasıl gösterileceğini nasıl yaparım? gerçek FiveM yükleme süreci devam ediyor mu?
A: En güvenilir yol JavaScript'i kullanmaktır window.addEventListener('mesaj', ...) FiveM tarafından gönderilen NUI mesajlarını dinlemek için. Özellikle, şu tür bir olay arayın: ilerlemek genellikle bir yükkesiri özellik (0.0 ile 1.0 arasında bir değer). Bunu 100 ile çarpın ve bunu güncellemeİlerleme JavaScript işlevi. Yalnızca simüle edilmiş ilerlemeye (örneğin) güvenmekten kaçının setAralık (örnek) son versiyon için.
S3: Yükleme ekranı dosyalarını sunucumda tam olarak nereye koymalıyım?
A: Kaynağınız için özel bir klasör oluşturun (örneğin, benim-yükleme-ekranım) sunucunuzun ana dizininin içinde kaynaklar dizin. Tüm dosyalar (dizin.html, stil.css, betik.js, fxmanifest.lua, istemci.luave alt klasörler gibi resimler, ses) bu kaynak klasörünün içine gitmelidir.
S4: Arkaplan müziğim olabilir mi? Kontrolleri nasıl eklerim?
A: Evet. HTML'yi kullanın etiketle veya oluştur Ses JavaScript'te nesne (yeni Ses('ses/müzik.ogg')). En önemlisi, şunu kullanın: .ogg ses formatı FiveM NUI'de en iyi uyumluluk için. Standart HTML düğmeleri ekleyin () ve potansiyel olarak bir aralık girişi (<input type="range">) hacminiz için dizin.html. JavaScript olay dinleyicilerini kullanın (olaydinleyicisiekle) bu öğeler üzerinde ses nesnesinin denetimini sağlamak için .oynamak(), .duraklama(), Ve .hacim özellikleri. Manifest'inizde ses dosyasını listelemeyi unutmayın.
S5: Yükleme ekranım neden hiç görünmüyor?
A: Aşağıdaki yaygın suçluları iki kez kontrol edin:
1. Kaynak doğru bir şekilde sağlanıyor mu? sunucu.cfg (resource_folder_name'i sağlayın)?
2. Bu mu? fxmanifest.lua kaynak klasöründe mevcut mu?
3. Manifestoda şunlar var mı? yükleme ekranı 'html_dosyanız.html' astar?
4. Vardır Tümü Gerekli dosyalar (HTML, CSS, JS, resimler, ses, yazı tipleri) doğru bir şekilde listelenmiştir dosyalar { ... } Manifest'te? Yolları ve dosya adlarını kontrol edin (büyük/küçük harfe duyarlı!).
5. Kaynağın yüklenememesiyle ilgili olarak sunucu konsolunda veya istemci F8 konsolunda herhangi bir hata var mı?
6. Kaynağı ekledikten ve doğruladıktan sonra sunucuyu yeniden başlattınız mı?
S6: Oyun başladığında yükleme ekranının sorunsuz bir şekilde kaybolmasını nasıl sağlayabilirim?
C: Bu, Lua betiğiniz ile NUI sayfanız arasında iletişim gerektirir. FiveM'in, yakalanması kolay, tamamen güvenilir bir "yükleme tamamlandı, oluşturulmak üzere" olayı yoktur. önce NUI yok edildi. Ancak şunları yapabilirsiniz:
1. Özel bir NUI mesajı gönderin (SendNUIMessage({ type = 'yükleniyorNeredeyseTamamlandı' })) belirli oyun olaylarına veya zamanlayıcılara dayalı bir istemci Lua betiğinden, spawn'dan hemen önce.
2. JavaScript'inizde bu mesajı dinleyin (eğer (event.data.type === 'yükleniyorNeredeyseTamamlandı')).
3. Alındığında, ana kabınızda bir CSS kaybolma animasyonunu tetikleyin (.loading-container.fade-out { opaklık: 0; geçiş: opaklık 1sn kolay çıkış; } ve ekle kaybolma JS kullanan sınıf). Bu görsel bir geçiş sağlar, ancak NUI daha sonra FiveM tarafından aniden kaldırılabilir.
Ücretli Yükleme Ekranları
-
0R-YÜKLEME EKRANI V2
Orijinal fiyat: $23.00.$16.00Şu andaki fiyat: $16.00. -
2NA Yükleme ekranı
Orijinal fiyat: $33.00.$14.00Şu andaki fiyat: $14.00. -
Özel Yükleme Ekranı
Orijinal fiyat: $48.99.$24.99Şu andaki fiyat: $24.99. -
Gözler Yükleme Ekranı
Orijinal fiyat: $14.99.$9.99Şu andaki fiyat: $9.99. -
izzy Yükleme Ekranı
Orijinal fiyat: $33.00.$27.00Şu andaki fiyat: $27.00. -
izzy Yükleme Ekranı v7
Orijinal fiyat: $27.00.$15.00Şu andaki fiyat: $15.00. -
Jakrino Yükleme Ekranı
Orijinal fiyat: $13.00.$8.00Şu andaki fiyat: $8.00. -
KS Yükleme ekranı
Orijinal fiyat: $20.99.$13.99Şu andaki fiyat: $13.99. -
Yükleme Ekranı (DebuX)
Orijinal fiyat: $15.99.$6.99Şu andaki fiyat: $6.99.
Ücretsiz Yükleme Ekranları
Tamamdır! Herhangi bir sorunuz var mı? Yorum bırakın.




















