เอกสาร
ตั้งค่าทั้งหมด:
ปุ่มเรียกหมอ:
ต้องรอหมอ:
ปรับให้เข้ากับเซิร์ฟ:
ดูหน้าสินค้า
X3D Respawn (หน้าจอตาย)
หน้าจอตายฟรี: ปุ่มเรียกหมอ หมอออนไลน์ต้องรอหมอ จุดเกิดใหม่ ชุบตัวเอง สรุปการตาย และเก็บสถานะตายตอนออกเกม
ซื้อ / รับฟรีตั้งค่า configการติดตั้ง
- วางโฟลเดอร์
x3d_respawnไว้ในresources/ห้ามเปลี่ยนชื่อโฟลเดอร์ - รัน
install.sqlเพื่อเพิ่มคอลัมน์users.is_dead(รันซ้ำได้) ถ้าตารางผู้เล่นของเซิร์ฟไม่ได้ชื่อusersให้แก้ทั้งในไฟล์นี้และที่Config.UsersTable - เพิ่มใน
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 = ... } |
ข้อความที่หมอเห็น |
กดแล้วเกิดอะไร (ทำงานในตัว ไม่ต้องพึ่งสคริปต์อื่น):
- ผู้เล่นออนไลน์ทุกคนที่มีอาชีพใน
jobs(ค่าเริ่มต้นambulance) ได้แจ้งเตือน "เคสฉุกเฉิน" พร้อมข้อความที่ตั้งไว้ และมีจุดกะพริบบนแผนที่ที่ตำแหน่งผู้ป่วย (หายเองใน 60 วินาที) - พิกัดอ่านจากตัวละครฝั่งเซิร์ฟเวอร์ ปลอมไม่ได้
- ใช้ระบบ 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 รอเวลาที่แสดงบนจอ |