เอกสาร

X3D Respawn (หน้าจอตาย)

หน้าจอตายฟรี: ปุ่มเรียกหมอ หมอออนไลน์ต้องรอหมอ จุดเกิดใหม่ ชุบตัวเอง สรุปการตาย และเก็บสถานะตายตอนออกเกม

ซื้อ / รับฟรีตั้งค่า config

การติดตั้ง

  1. วางโฟลเดอร์ x3d_respawn ไว้ใน resources/ ห้ามเปลี่ยนชื่อโฟลเดอร์
  2. รัน install.sql เพื่อเพิ่มคอลัมน์ users.is_dead (รันซ้ำได้) ถ้าตารางผู้เล่นของเซิร์ฟไม่ได้ชื่อ users ให้แก้ทั้งในไฟล์นี้และที่ Config.UsersTable
  3. เพิ่มใน server.cfg:
ensure oxmysql
ensure es_extended    # ถ้าใช้ ESX (โหมด standalone ไม่ต้องมี)
ensure x3d_respawn

ใช้หน้าจอตายได้ทีละตัว: ถ้าเปิด esx_ambulancejob อยู่ ให้ปิดหน้าจอตายของมัน แล้วให้สคริปต์หมอเรียก event ของ x3d_respawn ตามหัวข้อ "สำหรับสคริปต์หมอ" ด้านล่าง

ต้องมี

resource จำเป็นไหม ใช้ทำอะไร
oxmysql จำเป็น เก็บธงตาย
es_extended ไม่บังคับ ESX Legacy (ถ้าไม่มี ใช้โหมด standalone ผ่าน Config.Framework — ธงตายข้ามเกมใช้ได้เฉพาะ ESX)

ตั้งค่าทั้งหมด: shared/config.lua

ทั่วไป

ค่า ค่าเริ่มต้น ความหมาย
Config.Locale 'th' 'th' หรือ 'en'
Config.UsersTable 'users' ตารางผู้เล่นของ ESX
Config.MinDeathDelayMs 1200 หน่วงกี่มิลลิวินาทีก่อนหน้าจอตายขึ้น
Config.UseRedFilter true จอแดงตอนตาย

ปุ่มเรียกหมอ: Config.CallEMS

ค่า ค่าเริ่มต้น ความหมาย
enabled true แสดงปุ่มเรียกหมอ
jobs { 'ambulance' } อาชีพที่ได้รับแจ้งเมื่อมีคนกดเรียกหมอ
cooldownSeconds 60 เรียกซ้ำได้ทุกกี่วินาที
message { th = 'หมดสติ ต้องการหมอ', en = ... } ข้อความที่หมอเห็น

กดแล้วเกิดอะไร (ทำงานในตัว ไม่ต้องพึ่งสคริปต์อื่น):

  1. ผู้เล่นออนไลน์ทุกคนที่มีอาชีพใน jobs (ค่าเริ่มต้น ambulance) ได้แจ้งเตือน "เคสฉุกเฉิน" พร้อมข้อความที่ตั้งไว้ และมีจุดกะพริบบนแผนที่ที่ตำแหน่งผู้ป่วย (หายเองใน 60 วินาที)
  2. พิกัดอ่านจากตัวละครฝั่งเซิร์ฟเวอร์ ปลอมไม่ได้
  3. ใช้ระบบ dispatch อื่น? แก้ addons/dispatch/client.lua และ addons/dispatch/server.lua

ต้องรอหมอ: Config.MedicGate

ค่า ค่าเริ่มต้น ความหมาย
enabled true เปิดการเช็คหมอ
jobs { 'ambulance' } อาชีพที่นับเป็นหมอ
onDutyOnly false นับเฉพาะหมอที่เข้าเวร (job.onDuty)
minMedics 1 หมอออนไลน์ถึงเท่านี้ = ต้องรอหมอ
waitWithMedics 600 มีหมอ: รอกี่วินาทีแล้วเกิดเองได้ · 0 = ไม่ได้เลย ต้องรอหมอชุบ
waitWithoutMedics 30 ไม่มีหมอ: รอกี่วินาทีแล้วเกิดเองได้
includeSelfRevive false ชุบตัวเองด้วยไอเทมต้องรอเหมือนกันไหม

หน้าจอตายจะขึ้นเช่น "มีหมอออนไลน์ 2 คน · เกิดเองได้ใน 6:52" และนับจำนวนหมอใหม่ทุก 10 วินาที ถ้าหมอออฟไลน์หมดระหว่างรอ จะเปลี่ยนไปใช้ waitWithoutMedics ทันที

ตัวอย่าง: เซิร์ฟ RP จริงจัง มีหมอแล้วต้องรอหมอเท่านั้น

Config.MedicGate = { enabled = true, jobs = { 'ambulance' }, minMedics = 1, waitWithMedics = 0, waitWithoutMedics = 60 }

จุดเกิดและชุบตัวเอง

ค่า ค่าเริ่มต้น ความหมาย
Config.TownRespawn true กดเกิดที่เมืองหลักได้
Config.NodeRespawn false กดเกิดที่จุดใกล้ตัวได้
Config.TownOptionsToShow / NodeOptionsToShow 1 แสดงกี่จุด (ใกล้สุดก่อน)
Config.Nodes 3 เมือง + 4 จุด จุดเกิด: type = 'town' หรือ 'node', towers = ตำแหน่งจริงที่ตัวละครไปโผล่ (เลือกที่ใกล้ศพที่สุด)
Config.SelfRevive ปิด ชุบตัวเองด้วยไอเทม: item, count, label, labelTh
Config.Blip เปิด จุดบนแผนที่ของจุดเกิด

ธงตายและแอดมิน

ค่า ค่าเริ่มต้น ความหมาย
Config.PersistDeath.enabled true ออกเกมตอนตาย กลับเข้ามาก็ยังตาย ถ้าผู้เล่นค้างตาย แอดมินใช้ /revive ปลดได้
Config.AdminReviveCommand /revive [id] ชุบผู้เล่น (ว่าง = ตัวเอง)
Config.AdminHealCommand /heal [id] รักษาผู้เล่น
Config.DeadSync เปิด กด X เด้งศพ (กันศพติดกำแพง) ได้ทุก 10 วินาที และจำกัดความเร็วศพ

ปรับให้เข้ากับเซิร์ฟ: addons/

ไฟล์ ฟังก์ชัน ค่าเริ่มต้น
addons/dispatch/client.lua Dispatch.Available(), Dispatch.CallEMS(message) แจ้งหมอในตัว + จุดบนแผนที่ (แก้เพื่อต่อ dispatch อื่น)
addons/hud/client.lua Hud.Show(visible), BlipName(node) เรดาร์ของเกม + event x3d_respawn:hud
addons/notify/client.lua Notify(message, kind) esx_notify → ox_lib → ESX
addons/anticheat/server.lua OnRespawnTeleport(src) ว่าง (no-op) — ต่อระบบกันโกงของคุณเองตรงนี้
addons/locale/shared.lua T(th, en) ตาม Config.Locale

สำหรับสคริปต์หมอ

-- server
TriggerClientEvent('x3d_respawn:cmdRevive', target)   -- ชุบร่าง
exports['x3d_respawn']:ClearDeathFlag(target)          -- ล้างธงตายใน DB
TriggerClientEvent('x3d_respawn:cmdHeal', target)     -- รักษา

-- client
exports['x3d_respawn']:IsPlayerDead()                   --> boolean
AddEventHandler('x3d_respawn:cl_onDeathStart', function() end)
AddEventHandler('x3d_respawn:cl_revived', function(how) end)   -- 'cmd', 'self', 'external' หรือ id จุดเกิด

ปัญหาที่พบบ่อย

อาการ สาเหตุ / วิธีแก้
ไม่มีปุ่มเรียกหมอ Config.CallEMS.enabled = false หรือ Dispatch.Available() ใน addons/dispatch/client.lua คืนค่า false
กดเรียกหมอแล้วไม่มีใครได้รับแจ้ง ไม่มีผู้เล่นออนไลน์ที่มีอาชีพใน Config.CallEMS.jobs
ขึ้นหน้าจอตายสองอัน ยังเปิดหน้าจอตายตัวอื่นอยู่ (เช่นของ esx_ambulancejob)
ผู้เล่นค้างตายตอนเข้าเกม Config.PersistDeath เปิดอยู่ ใช้ /revive <id>
ปุ่มเกิดเองกดไม่ได้ มีหมอออนไลน์ตาม Config.MedicGate รอเวลาที่แสดงบนจอ
ดูหน้าสินค้า