Devil HunterDevil Docs
Payment In Game

ฟังก์ชัน Hook

ฟังก์ชัน Hook สำหรับปรับแต่งลำดับการทำงาน (config_function_server.lua / config_function_client.lua)

ไฟล์ config_function_server.lua และ config_function_client.lua รวมฟังก์ชัน Hook ที่ทำงานในลำดับต่าง ๆ ของระบบ เช่น ก่อนซื้อ หลังซื้อ ก่อนเติมเงิน

Hook ฝั่งเซิร์ฟเวอร์ (config_function_server.lua)

ลำดับการซื้อ

ก่อนหักเงิน

config_function_server.lua
Config_Function.OnBeforePurchase = function(xPlayer, item, count, currency)
    -- return false เพื่อบล็อกการซื้อ
    return true
end

ซื้อสำเร็จ

config_function_server.lua
Config_Function.OnPurchaseSuccess = function(source, itemname, itemcount)
    -- ส่งการแจ้งเตือนอัตโนมัติ
end

ซื้อล้มเหลว

config_function_server.lua
Config_Function.OnPurchaseFailed = function(source, item, reason)
    -- แสดงเหตุผลที่ล้มเหลว
end

คืนเงิน (กรณี error)

config_function_server.lua
Config_Function.OnPurchaseRefund = function(xPlayer, item, count, currency, refundAmount)
    -- คืน Point/Coin ให้ผู้เล่น
end

ช่องเก็บของเต็ม

config_function_server.lua
Config_Function.OnInventoryFull = function(source, itemname, itemcount)
    -- แจ้งเตือนกรณี inventory เต็ม
end

ถึงลิมิตการซื้อ

config_function_server.lua
Config_Function.OnPurchaseLimitReached = function(source, name, count, limit_max, limit_count)
    -- แจ้งเตือนกรณีซื้อเกินลิมิต
end

สินค้าหมด

config_function_server.lua
Config_Function.OnOutOfStock = function(source, itemname, requestedCount)
    -- แจ้งเตือนกรณีสต็อกหมด
end

ลำดับการเติมเงิน

ก่อนเติม

config_function_server.lua
Config_Function.OnBeforeTopup = function(source, amount, method)
    return true
end

เติม Point สำเร็จ

config_function_server.lua
Config_Function.OnPointTopupSuccess = function(source, point, allpoint)
    -- แจ้งเตือนผู้เล่น
end

เติม Coin สำเร็จ

config_function_server.lua
Config_Function.OnCoinTopupSuccess = function(source, coin, allcoin)
    -- แจ้งเตือนผู้เล่น
end

เติมเงิน cancel/refund

config_function_server.lua
Config_Function.OnTopupCancelled = function(source, amount, method, reason)
    -- แจ้งเตือนกรณียกเลิก
end

ลำดับการเปลี่ยนชื่อ/เบอร์

เปลี่ยนชื่อสำเร็จ

config_function_server.lua
Config_Function.OnNameChangeSuccess = function(source, newFirstName, newLastName, pointsUsed, coinsUsed)
    -- แจ้งผู้เล่น
end

เปลี่ยนเบอร์สำเร็จ

config_function_server.lua
Config_Function.OnPhoneChangeSuccess = function(source, oldPhone, newPhone, pointsUsed, coinsUsed)
    -- แจ้งผู้เล่น
end

ระบบการันตี

ความคืบหน้าการสะสม

config_function_server.lua
Config_Function.OnGuaranteeProgress = function(xPlayer, itemKey, oldProgress, newProgress)
    -- ส่ง webhook ทุก 1000 บาท เช่น
end

รับรางวัล

config_function_server.lua
Config_Function.OnGuaranteeClaim = function(xPlayer, itemKey, tierAmount, reward)
    -- reward = { name, count, label }
end

รีเซ็ตยอดสะสม

config_function_server.lua
Config_Function.OnGuaranteeReset = function(xPlayer, itemKey)
    -- แจ้งผู้เล่น
end

ลำดับการตรวจสลิป

สลิปผ่าน

config_function_server.lua
Config_Function.OnSlipVerified = function(source, slipData)
    -- ส่ง webhook แจ้งแอดมิน
end

สลิปถูกปฏิเสธ

config_function_server.lua
Config_Function.OnSlipRejected = function(source, reason)
    -- แจ้งผู้เล่น
end

ตรวจสอบข้อมูลสลิปเพิ่มเติม

config_function_server.lua
Config_Function.ValidateSlipPayload = function(slipData)
    -- ตัวอย่าง: บังคับยอดขั้นต่ำ
    -- if (slipData.amount or 0) < 50 then
    --     return false, "ยอดต่ำกว่า 50 บาท ไม่อนุมัติ"
    -- end
    return true
end

ลำดับการโหลดผู้เล่น

ผู้เล่นโหลดเสร็จ

config_function_server.lua
Config_Function.OnPlayerLoaded = function(xPlayer)
    -- sync custom data, fetch external API
end

ผู้เล่นออกจากเกม

config_function_server.lua
Config_Function.OnPlayerDropped = function(source, identifier)
    -- cleanup external session
end

การจัดการยานพาหนะ

เพิ่มยานพาหนะเข้า DB

config_function_server.lua
Config_Function.InsertOwnerVehicle = function(xPlayer, vehicle)
    -- เก็บลง owned_vehicles
    -- sync กับ garage/key system
end

สร้างข้อมูลยานพาหนะ

config_function_server.lua
Config_Function.BuildOwnedVehicleData = function(xPlayer, item)
    -- สร้าง vehicle props (mod, color, plate)
end

สุ่มทะเบียน

config_function_server.lua
Config_Function.GenerateVehiclePlate = function(xPlayer)
    -- สุ่มทะเบียน ABC 123
end

การจัดการ Inventory

ให้ไอเทม

config_function_server.lua
Config_Function.GiveItem = function(xPlayer, name, count)
    -- ค่าเริ่มต้นใช้ xPlayer.addInventoryItem
    -- ถ้าใช้ ox_inventory:
    -- return exports.ox_inventory:AddItem(xPlayer.source, name, count)
end

เอาไอเทมออก

config_function_server.lua
Config_Function.RemoveItem = function(xPlayer, name, count)
    -- ค่าเริ่มต้นใช้ xPlayer.removeInventoryItem
end

ตรวจว่ามีไอเทมเพียงพอ

config_function_server.lua
Config_Function.HasItem = function(xPlayer, name, count)
    -- ตรวจสอบจำนวนไอเทมในตัวผู้เล่น
end

การตรวจสอบสิทธิ์

config_function_server.lua
Config_Function.IsAdmin = function(source)
    -- ตรวจ ace permission ก่อน
    -- แล้วตรวจ ESX group
    return false
end

Hook ฝั่ง Client (config_function_client.lua)

ส่งสลิปสำเร็จ

config_function_client.lua
Config_Function.OnSlipUploaded = function()
    -- แจ้งเตือนผู้เล่นหลังส่งสลิป
end

คำนวณราคาเปลี่ยนชื่อ (UI)

config_function_client.lua
Config_Function.CalculateNameChangePrice = function(xPlayer, newFirstName, newLastName, changeType)
    -- ส่งไปที่ NameChangeConfig.CalculatePrice
end

การใช้งาน

การทำงานอัตโนมัติ

ฟังก์ชันเหล่านี้ถูกเรียกอัตโนมัติในลำดับที่เหมาะสม คุณเพียงแก้ไข logic ภายใน ไม่ต้องเรียกใช้เอง

ตัวอย่างการใช้งานจริง

เพิ่ม webhook แจ้งเตือนทุกครั้งที่ผู้เล่นซื้อของ:

config_function_server.lua
Config_Function.OnPurchaseSuccess = function(source, itemname, itemcount)
    Notify(source, "purchase_success", { name = itemname, count = itemcount or 1 })

    -- เพิ่ม webhook ส่วนตัว
    local playerName = GetPlayerName(source)
    PerformHttpRequest('https://your-webhook-url', function(err, text, headers) end, 'POST',
        json.encode({content = playerName .. ' ซื้อ ' .. itemname .. ' x' .. itemcount}),
        { ['Content-Type'] = 'application/json' })
end

บล็อกการซื้อบางไอเทมสำหรับผู้เล่นบางกลุ่ม:

config_function_server.lua
Config_Function.OnBeforePurchase = function(xPlayer, item, count, currency)
    if item.spawnName == 'WEAPON_PISTOL' and xPlayer.getJob() ~= 'police' then
        return false, 'อาวุธนี้ซื้อได้เฉพาะตำรวจเท่านั้น'
    end
    return true
end

On this page