เอกสาร

X3D Loading Screen (หน้าโหลด)

หน้าโหลดสไตล์เทอร์มินัล มีปุ่ม ENTER WORLD ให้ผู้เล่นกดเองก่อนลงเมือง ไฟล์ HTML เดียว ไม่ต้อง build

ซื้อ / รับฟรี

การติดตั้ง

  1. เอา esx_loadingscreen (หรือหน้าโหลดตัวเดิม) ออกจาก server.cfg — สองตัวใช้ช่อง loadscreen เดียวกัน ใส่พร้อมกันไม่ได้
  2. วางโฟลเดอร์ x3d_loadingscreen ลง resources/
  3. ใส่ใน 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
ดูหน้าสินค้า