Skip to main content

Hooks (Server-side)

Hooks

onPlayerConnecting

ทำงานเมื่อผู้เล่นทำการเชื่อมต่อกับเซิร์ฟเวอร์

บรรทัดที่ 31
function Hooks.onPlayerConnecting(payload)
---เปิดใช้งานฟังก์ชันด้านล่างนี้หากต้องการให้มีการหน่วงเวลาการเชื่อมต่อแบบสุ่ม
-- randomCooldown(payload.deferrals.update)

return true
end
ฟังก์ชัน randomCooldown
บรรทัดที่ 15
local function randomCooldown(deferUpdate)
local minWait <const> = 5 -- กำหนดคูลดาวน์ต่ำสุด (วินาที)
local maxWait <const> = 30 -- กำหนดคูลดาวน์สูงสุด (วินาที)

math.randomseed(os.time())
local waitTime <const> = math.random(minWait, maxWait)

for time = waitTime, 0, -1 do
deferUpdate(('⏳ โปรดรอ %d วินาที การเชื่อมต่อจะเริ่มต้นโดยอัตโนมัติ...'):format(time))
Citizen.Wait(1000)
end
end
  • deferUpdate: function
    • อัปเดตหรือส่งข้อความไปยังไคลเอนต์ที่เชื่อมต่อ
tip

หากเปิดใช้งานฟังก์ชัน randomCooldown แนะนำให้ปิดใช้งานการกำหนดค่า connectionAttemptLimit

Parameters

  • payload: table<{ player: table, deferrals: table }>
    • ตารางข้อมูล
      • player: table<{ [key]: any }>
      • deferrals: table<{ [key]: function }>
        • ฟังก์ชันสำหรับการเลื่อนการเชื่อมต่อ (ดูข้อมูลเพิ่มเติมได้ที่ Deferring connections)
          • update: function
            • ส่งข้อความไปยังไคลเอนต์ที่เชื่อมต่อ
          • presentCard: function
            • ส่งข้อมูล Adaptive Card ไปยังไคลเอนต์ที่เชื่อมต่อ
          • done: function
            • สิ้นสุดกระบวนการ deferral โดยจำเป็นต้องรออย่างน้อยหนึ่ง tick ก่อนที่จะเรียกใช้ done
            • หากระบุ failureReason การเชื่อมต่อจะถูกปฏิเสธ และไคลเอนต์จะเห็นข้อความที่ระบุเหตุผลไว้ หากไม่ระบุ failureReason ไคลเอนต์จะได้รับอนุญาตให้เข้าร่วมเซิร์ฟเวอร์
          • handover: function
            • อนุญาตให้กำหนดชุดของ endpoints สำหรับผู้เล่นในขณะที่กำลังเชื่อมต่อ

Returns

  • allow: boolean | nil
    • ตอบกลับ true หากอนุญาตให้เชื่อมต่อ
    • ตอบกลับ false | nil หากต้องการยกเลิกการเชื่อมต่อ

onPlayerJoining

ทำงานเมื่อผู้เล่นกำลังเข้าร่วมกับเซิร์ฟเวอร์

บรรทัดที่ 41
function Hooks.onPlayerJoining(payload)
return true
end

Parameters

Returns

  • allow: boolean | nil
    • ตอบกลับ true หากอนุญาตให้เชื่อมต่อ
    • ตอบกลับ false | nil หากต้องการยกเลิกการเชื่อมต่อ (เตะออกจากเซิร์ฟเวอร์)

onPlayerDataLoaded

ทำงานเมื่อผู้เล่นเชื่อมต่อและข้อมูลของผู้เล่นถูกโหลดแล้ว

บรรทัดที่ 79
function Hooks.onPlayerDataLoaded(payload)
return payload
end

Parameters

Returns

onPlayerConnectionSpam

ทำงานเมื่อผู้เล่นเชื่อมต่อบ่อยและเร็วเกินกำหนด

บรรทัดที่ 86
function Hooks.onPlayerConnectionSpam(payload)    
return false
end

Parameters

  • payload: table<{ player: table, data: table }>
    • ตารางข้อมูล
      • player: table<{ [key]: any }>
      • data: table<{ [key]: any }>
        • ข้อมูลการเชื่อมต่อบ่อยและเร็วเกินกำหนด
          • attempts: integer
            • จำนวนครั้งที่พยายาม
          • lastAttempt: integer
            • พยายามครั้งสุดท้ายเวลา (Unix time)
          • isBlocked: boolean
            • ค่าเป็น true หากถูกบล็อคแล้ว
          • reason: string
            • เหตุผลที่ปฏิเสธการเชื่อมต่อ

Returns

  • allow: boolean | nil
    • ตอบกลับ true หากอนุญาตให้เชื่อมต่อ
    • ตอบกลับ false | nil หากต้องการยกเลิกการเชื่อมต่อ (รอคูลดาวน์ / บล็อกชั่วคราว)

onPlayerPingExceeded

ทำงานเมื่อผู้เล่นเชื่อมต่อและการตอบสนองของเครือข่ายผู้เล่นช้าเกินกำหนด

บรรทัดที่ 93
function Hooks.onPlayerPingExceeded(payload)
return false
end

Parameters

  • payload: table<{ player: table }>
    • ตารางข้อมูล
      • player: table<{ [key]: any }>
        • ข้อมูลของผู้เล่นเมื่อเชื่อมต่อ
          • netId: integer
            • Net ID ของผู้เล่น
          • identifier: string
          • ping: integer
            • ค่า Ping ของผู้เล่น

Returns

  • allow: boolean | nil
    • ตอบกลับ true หากอนุญาตให้เชื่อมต่อ
    • ตอบกลับ false | nil หากต้องการยกเลิกการเชื่อมต่อ

onBannedHwidDetected

ทำงานเมื่อผู้เล่นเชื่อมต่อและตรวจพบ HWIDs ของผู้เล่นอื่นที่ถูกแบน

บรรทัดที่ 124
function Hooks.onBannedHwidDetected(payload)
return false
end

Parameters

  • payload: table<{ player: table, data: table }>
    • ตารางข้อมูล
      • player: table<{ [key]: any }>
      • data: table<{ [key]: any }>
        • ข้อมูลของผู้เล่นที่ถูกแบน
          • matchedHwids: table<{ [index]: string }>
            • ข้อมูล HWIDs ที่ตรงกัน
          • identifier: string
          • banId: string
            • รหัสอ้างอิงการแบน
          • banDetails: table<{ [key]: any }> | nil

Returns

  • allow: boolean | nil
    • ตอบกลับ true หากอนุญาตให้เชื่อมต่อ
    • ตอบกลับ false | nil หากต้องการยกเลิกการเชื่อมต่อ

onBannedIdentifierDetected

ทำงานเมื่อผู้เล่นเชื่อมต่อและตรวจพบ Identifiers ของผู้เล่นที่ถูกแบน

บรรทัดที่ 151
function Hooks.onBannedIdentifierDetected(payload)
return false
end

Parameters

Returns

  • allow: boolean | nil
    • ตอบกลับ true หากอนุญาตให้เชื่อมต่อ
    • ตอบกลับ false | nil หากต้องการยกเลิกการเชื่อมต่อ

onPlayerInactiveDetected

ทำงานเมื่อผู้เล่นเชื่อมต่อและสถานะถูกตั้งเป็นระงับการใช้งานเนื่องจากไม่เข้าร่วมเซิร์ฟเวอร์ตามระยะเวลาที่กำหนด

บรรทัดที่ 158
function Hooks.onPlayerInactiveDetected(payload)
return false
end

Parameters

  • payload: table<{ player: table, data: table }>

Returns

  • allow: boolean | nil
    • ตอบกลับ true หากอนุญาตให้เชื่อมต่อ
    • ตอบกลับ false | nil หากต้องการยกเลิกการเชื่อมต่อ

onPlayerAirtimeRejected

ทำงานเมื่อผู้เล่นเชื่อมต่อและ Airtime ไม่เพียงพอ (ระบบจำกัดเวลาในการเล่น โดยผู้เล่นจะต้องเติม Airtime เพื่อเพิ่มเวลาในการเล่น)

บรรทัดที่ 165
function Hooks.onPlayerAirtimeRejected(payload)
return false
end

Parameters

  • payload: table<{ player: table, data: table }>
    • ตารางข้อมูล
      • player: table<{ [key]: any }>
      • data: table<{ [key]: any }>
        • ข้อมูลแอร์ไทม์ของผู้เล่น
          • airtime_left: integer
            • จำนวนแอร์ไทม์คงเหลือของผู้เล่น

Returns

  • allow: boolean | nil
    • ตอบกลับ true หากอนุญาตให้เชื่อมต่อ
    • ตอบกลับ false | nil หากต้องการยกเลิกการเชื่อมต่อ

onPlayerBoundIdMismatch

ทำงานเมื่อผู้เล่นเชื่อมต่อและใช้งานบัญชีที่ผูกไว้ไม่ตรงกับฐานข้อมูล

บรรทัดที่ 172
function Hooks.onPlayerBoundIdMismatch(payload)
return false
end

Parameters

Returns

  • allow: boolean | nil
    • ตอบกลับ true หากอนุญาตให้เชื่อมต่อ
    • ตอบกลับ false | nil หากต้องการยกเลิกการเชื่อมต่อ

onAddPlayerToQueue

ทำงานก่อนเพิ่มข้อมูลผู้เล่นไปยังระบบคิวรอเข้าร่วมเซิร์ฟเวอร์

บรรทัดที่ 179
function Hooks.onAddPlayerToQueue(payload)
return payload
end

Parameters

  • payload: table<{ [key]: any }>
    • ข้อมูลของผู้เล่นที่จะใช้งานภายในระบบคิว
      • tempId: integer
        • Temp ID ของผู้เล่น
      • identifier: string
      • name: string
        • ชือของผู้เล่น
      • points: integer
        • จำนวนคิวพ้อยท์ของผู้เล่น
      • position: integer
        • ลำดับของผู้เล่นในคิว
      • joinTime: integer
        • เวลาที่ผู้เล่นเข้าร่วมคิว (Unix time)

Returns