X3D Loading Screen (หน้าโหลด)
หน้าโหลดสไตล์เทอร์มินัล มีปุ่ม ENTER WORLD ให้ผู้เล่นกดเองก่อนลงเมือง ไฟล์ HTML เดียว ไม่ต้อง build
ซื้อ / รับฟรีการติดตั้ง
- เอา
esx_loadingscreen(หรือหน้าโหลดตัวเดิม) ออกจากserver.cfg— สองตัวใช้ช่องloadscreenเดียวกัน ใส่พร้อมกันไม่ได้ - วางโฟลเดอร์
x3d_loadingscreenลงresources/ - ใส่ใน
server.cfg
ensure x3d_loadingscreen
จบ ไม่ต้อง build ไม่ต้องรัน SQL
เปลี่ยนชื่อเซิร์ฟ
เปิด loadscreen.html หาบล็อกนี้ (ประมาณบรรทัด 270)
// ══ ตั้งค่าที่นี่ ═══════════════════════════════════════════
var BRAND = 'SERVER'; // ชื่อใหญ่หัวจอ
var SUBTITLE = '// SERVER BOOT SEQUENCE'; // บรรทัดรอง
var BUILD = 'v1.0.2'; // มุมขวาบน
// ═══════════════════════════════════════════════════════════
แก้แล้ว restart x3d_loadingscreen ผู้เล่นที่เข้ามาใหม่จะเห็นทันที
ใส่ภาพพื้นหลัง
วางไฟล์ไว้ข้าง loadscreen.html ไม่ต้องแก้โค้ด
| ไฟล์ | ผล |
|---|---|
bg.png |
ภาพเดียว แสดงนิ่ง |
bg.png … bg6.png |
สไลด์ crossfade ทุก 7 วินาที |
.jpg ก็ได้ |
bg.jpg … bg6.jpg |
ตัวสไลด์เช็กเองว่าไฟล์ไหนโหลดได้จริง ไฟล์ที่ไม่มีจะถูกข้าม ไม่ error
ขนาดที่พอ: 1920×1080 ย่อด้วย object-fit: cover อยู่แล้ว · เกิน 2 MB ต่อรูปจะทำให้ผู้เล่นรอนานขึ้นโดยไม่ได้อะไรเพิ่ม
ใช้วิดีโอแทนภาพ
วาง bg.mp4 แล้วแก้ <body> ใน loadscreen.html
<body class="has-vid">
(ค่าเริ่มต้นคือ class="has-img")
ใส่เพลง
วาง loop.mp3 ข้าง loadscreen.html ปุ่มปรับเสียงกับ slider จะใช้งานได้เอง ระดับเสียงถูกจำไว้ใน localStorage ของผู้เล่น
รองรับ audio/loading_music.mp3 ด้วย (ตำแหน่งเดิมของ esx_loadingscreen)
ปุ่ม ENTER WORLD ทำงานยังไง
โหลด asset ครบ 100%
↓
รอ core แจ้งว่าข้อมูลผู้เล่นพร้อมแล้ว
↓
พร้อม → ปุ่มติดไฟ กดได้ (หรือกด Enter)
↓
จอ fade ดำ → ปิดหน้าโหลด → ยิง esx:playerReadyToSpawn
ฝั่ง client รับสองทาง — esx:playerDataReady (จาก es_extended X3D Build) และ esx:playerLoaded (ESX มาตรฐาน) ทางไหนมาก่อนก็เปิดปุ่ม
ถ้าผู้เล่นค้างจอดำ
เกิดเมื่อ core ปล่อยผู้เล่นลงเมืองไปแล้วโดยไม่ได้รอกดปุ่ม แล้วผู้เล่นมากดทีหลัง จอจะ fade ดำโดยไม่มีอะไร fade กลับ
es_extended X3D Build ยิง esx:spawnedWithoutEnterWorld มาให้ หน้าโหลดจะปิดตัวเองแล้ว fade เข้าให้ ไม่ต้องตั้งอะไรเพิ่ม
ใช้ core อื่นแล้วเจอปัญหานี้ ให้ยิง event นี้จากฝั่งเซิร์ฟเวอร์
TriggerClientEvent('esx:spawnedWithoutEnterWorld', playerId)
ทดสอบในเบราว์เซอร์
เปิด loadscreen.html ด้วยเบราว์เซอร์ธรรมดาได้เลย จะเข้าโหมดจำลอง ไล่ mount resource ตัวอย่างให้ดู โหมดนี้ไม่ทำงานในเกม
ไฟล์ในนี้
x3d_loadingscreen/
├── fxmanifest.lua
├── loadscreen.html ← ทุกอย่างอยู่ในนี้
├── client/client.lua ← handshake ENTER WORLD
├── cursors/*.png
└── README.md