es_extended คืออะไร และทำไมเซิร์ฟ ESX ควรเปลี่ยนมาใช้ ESX Legacy Core — X3D Build (ฟรี)
es_extended คือ core ของ ESX Legacy ที่ทุกสคริปต์ในเซิร์ฟพึ่งพา บทความนี้อธิบายปัญหาของ esx_core 1.13.4 ต้นฉบับ (ของหายตอนล่ม โผล่กลางแมพ callback รั่ว ดูปก่อนรีสตาร์ท) และสิ่งที่ X3D Build แก้ พร้อมวิธีวางทับตัวเดิมโดยไม่แก้สคริปต์สักบรรทัด
es_extended คือ core ของ ESX Legacy resource ตัวเดียวที่ทุกสคริปต์ในเซิร์ฟ ESX ต้องพึ่ง ทั้งเงิน ไอเทม อาชีพ อาวุธ การเซฟผู้เล่น และ callback ระหว่าง client กับ server ถ้า core มีปัญหา ทุกอย่างบนเซิร์ฟมีปัญหาตาม
ESX Legacy Core — X3D Build คือ es_extended ที่ฟอร์กจาก esx_core 1.13.4 แล้วแก้จุดที่ทำให้เซิร์ฟจริงเจ็บซ้ำ ๆ ใช้งานจริงบนเซิร์ฟที่มีคนเล่นก่อนปล่อย แจกฟรีภายใต้ GPL v3 เหมือนต้นฉบับ
ดาวน์โหลด: ESX Legacy Core — X3D Build · คู่มือ: เอกสารการติดตั้ง
สคริปต์ที่เกี่ยวข้อง
ปัญหาของ es_extended ต้นฉบับที่เซิร์ฟไทยเจอบ่อย
- ผู้เล่นโผล่กลางแมพหรือเกิดมาตาย — ตอนหลุดหรือเซิร์ฟล่ม ร่างถูก cull ก่อนเซฟ พิกัดอ่านได้
(0,0,0)เลือด0แล้วเขียนทับลงฐานข้อมูล - เซิร์ฟล่มทีของหายทั้งเซสชัน — ต้นฉบับเซฟตอนผู้เล่นออกเท่านั้น ล่ม 1 ครั้ง = ย้อนกลับไปตอนล็อกอินทุกคน
- ดูปช่วงก่อนรีสตาร์ท — 10 นาทีสุดท้ายก่อน txAdmin รีสตาร์ท คือช่วงที่โอนเงิน/ไอเทมแล้วรอให้เซิร์ฟดับก่อนเซฟ
- callback รั่ว —
ESX.TriggerServerCallbackที่ไม่มีใครตอบค้างในหน่วยความจำจนเซิร์ฟรีสตาร์ท - ไอเทมว่างทั้งเซิร์ฟตอนบูต — ถ้า MySQL ยังไม่พร้อมตอนอ่านตารางไอเทมครั้งแรก
ESX.Itemsจะว่างทั้งเซสชัน - ช้าขึ้นตามจำนวนคน — ค้นหาเงิน/ไอเทม/อาวุธไล่ทีละตัวทุกครั้ง และเซฟ encode JSON ใหม่ทั้ง 4 ก้อนต่อคน
X3D Build แก้อะไร
| เรื่อง | esx_core 1.13.4 | X3D Build |
|---|---|---|
| เซฟตอนหลุด/ล่ม | เขียน (0,0,0) และเลือด 0 ทับได้ |
ตรวจก่อนเซฟ ใช้ค่าล่าสุดที่ถูกต้อง |
| เซฟระหว่างเล่น | ตอนออกเท่านั้น | Config.SaveInterval เซฟทุกคนทุก 10 นาที |
| Spawn | ปล่อยทันที เสี่ยงตกทะลุแมพ | รอพื้นโหลดจริง มีตัวจับเวลากันค้าง |
| ตารางไอเทมตอนบูต | อ่านครั้งเดียว ว่างก็ว่างทั้งเซสชัน | อ่านซ้ำจนกว่าจะได้ |
| ค้นหาเงิน/ไอเทม/อาวุธ | ไล่ทีละตัว | O(1) |
| เซฟผู้เล่น | encode JSON ทั้ง 4 ก้อนทุกครั้ง | encode เฉพาะส่วนที่เปลี่ยน |
| callback ไม่มีคนตอบ | ค้างตลอด | timeout + ล้างตอนออก + กวาดเป็นรอบ |
| ก่อนรีสตาร์ท | ไม่มีอะไรกัน | ล็อกเศรษฐกิจ 10 นาทีสุดท้าย |
| audit log | ไม่มี | เงิน/ไอเทม/อาวุธ/join/leave/chat/death ลงตาราง + Discord webhook |
| กระสุน | เชื่อ client | clamp ค่าที่ client ส่งมา |
| คำต้องห้าม | ไม่มี | ตัวกรอง + นับ strike แล้วเตะ |
ลงทับตัวเดิมได้เลย ไม่ต้องแก้สคริปต์
ชื่อ resource ยังเป็น es_extended ทุก @es_extended/imports.lua และ dependencies { 'es_extended' } ของสคริปต์ที่มีอยู่ทำงานต่อได้ทันที
- สำรอง
es_extendedตัวเดิม (ย้ายออกนอกresources/) - วางโฟลเดอร์ใหม่แทน
- เปิดเซิร์ฟ — มีฐานข้อมูล ESX อยู่แล้วไม่ต้องรัน SQL
ชื่อตารางตั้งได้ที่ Config.Tables (ค่าเริ่มต้นคือชื่อมาตรฐาน ESX) ตรวจเจอ nc_inventory / ox_inventory ให้เอง ไอคอนเงินและไอเทมใน notification ชี้ไปที่ inventory ที่คุณใช้อยู่
รายละเอียดทุกค่า config อยู่ในคู่มือการติดตั้ง
ใครควรใช้ ใครยังไม่ควร
ควรใช้ ถ้าเซิร์ฟคุณรัน ESX Legacy 1.13.x อยู่แล้ว มีคนเล่นจริง และเคยเจอของหายตอนล่ม โผล่กลางแมพ หรือดูปก่อนรีสตาร์ท
รอก่อน ถ้าคุณแก้ es_extended เองไว้เยอะ ต้อง merge ของคุณเข้ากับ X3D Build ก่อน (ซอร์สเปิดทั้งหมด รายการที่แก้อยู่ใน README.md) และตัวนี้เป็นฟอร์กจาก 1.13.4 ไม่ได้ตาม release ใหม่ของ ESX โดยอัตโนมัติ
ใช้คู่กับอะไรดี
- X3D Anti-Cheat รับ event
esx:serverEntityCreatedจาก core ตัวนี้ไป whitelist entity ที่เซิร์ฟสร้างเอง - X3D Environment ล้างแมพ ลดแลค ฟรี
- สคริปฟรีตัวอื่นของ X3D ทั้งหมดอยู่ในบทความแจกสคริป FiveM ฟรี
คำถามที่พบบ่อย
ต้องรัน SQL ไหม — ไม่ ถ้ามีฐานข้อมูล ESX อยู่แล้ว ติดตั้งใหม่ทั้งหมดค่อยรัน es_extended.sql
ใช้กับ ox_inventory ได้ไหม — ได้ core ตรวจเจอเองและชี้ไอคอนไปที่ inventory ที่คุณใช้
ฟรีจริงไหม มีเงื่อนไขอะไร — ฟรี ภายใต้ GNU GPL v3 เหมือนต้นฉบับ ซอร์สเปิด แก้ต่อและแจกต่อได้ภายใต้สัญญาเดิม ลิขสิทธิ์ต้นฉบับเป็นของ Jérémie N'gadi และโปรเจกต์ ESX Legacy
อัปเดตตาม ESX ตัวหลักไหม — ไม่อัตโนมัติ ฐานคือ 1.13.4 การอัปเดตของ X3D Build ประกาศในหน้าสินค้าและ Discord ของร้าน
ดาวน์โหลดได้ที่ ESX Legacy Core — X3D Build ล็อกอินด้วย Discord แล้วกดรับฟรี
สคริปต์ที่เกี่ยวข้อง
