📧AFU.Mailbox

ตัวอย่างการส่งเมลให้ผู้เล่นใหม่

  • ในตัวอย่างนี้ทำงานร่วมกับ `esx_identity` หรือ ที่ชอบเรียกกันว่า สคริปหน้ากรอกข้อมูลตัวละครผู้เล่นใหม่ที่เข้ามา

RegisterServerEvent('esx_identity:setIdentity')
AddEventHandler('esx_identity:setIdentity', function(data, myIdentifiers)
	local source = source ---@comments set local เลขไอดีของผู้เล่น
	local xPlayer = ESX.GetPlayerFromId(source)
	setIdentity(myIdentifiers.steamid, data, function(callback)
		if callback then
			TriggerClientEvent('kiss_scoreboard:profile', -1)
			TriggerClientEvent('esx_identity:identityCheck', myIdentifiers.playerid, true)
			TriggerEvent('esx_identity:characterUpdated', myIdentifiers.playerid, data)
			xPlayer.setName(('%s %s'):format(data.firstname, data.lastname))

			---@comments AFU Mailbox add mail to new player!
			pcall(function()
				local mailTemplateId = "id ของ template mail ใน database"
				exports.afu_mailbox:sendMailToPlayer({source}, mailTemplateId)
			end)
		else
			xPlayer.showNotification(_U('failed_identity'))
		end
	end)
end)

ตัวอย่างการใส่ Discord Log (Azael, NC)

ที่อยู่ไฟล์

+ config\server.functions.lua

ตัวอย่าง (Example)

---@param source number เลขไอดีผู้เล่น
---@param identifier string ไอเดนติไฟเออร์
---@param addTemplateDatas CacheMailTemplateOnAddRewardsData[] ข้อมูลเทมเพลตที่เพิ่มไอเทม
function Functions.OnAddItemsFromMailRewards(source, identifier, addTemplateDatas)
    local xPlayer = ESX.GetPlayerFromId(source)
    if not xPlayer then
        Logger.error(("xPlayer not found source to add items: %s"):format(source))
        return
    end
    local logText = ("ผู้เล่น %s:%s ได้รับไอเทมจากเมล"):format(source, identifier)
    for _, addTemplateData in ipairs(addTemplateDatas) do
        logText = logText .. ("\nหัวเรื่องเทมเพลต %s / เลขเทมเพลต %s"):format(addTemplateData.title, addTemplateData.id)
        for _, reward in ipairs(addTemplateData.rewards) do
            if reward.type == "item" then
                logText = logText .. ("\nไอเทม %s จำนวน %s"):format(reward.name, reward.count)
                xPlayer.addInventoryItem(reward.name, reward.count)
            elseif reward.type == "account" then
                logText = logText .. ("\nเงิน %s จำนวน %s"):format(reward.name, reward.count)
                xPlayer.addAccountMoney(reward.name, reward.count)
            elseif reward.type == "exec-server-side" then
                logText = logText .. ("\nของขวัญผ่านฟังก์ชั่น %s จำนวน %s"):format(reward.name, reward.count)
                local execFunction = MapAddOnItemsExecuteServerSide[reward.name]
                if execFunction and execFunction.svExecFunc then
                    execFunction.svExecFunc(source, identifier, xPlayer)
                else
                    logText = logText .. ("\nไม่พบฟังก์ชั่น %s"):format(reward.name)
                end
            else
                logText = logText .. ("\nไม่รู้จัก type %s"):format(reward.type)
            end
        end
    end
    
    ---@comments Log ของ AFU
    pcall(function()
        exports["afu_log"]:send(source, {
            event_key = "get_rewards_from_mail",
            event_data = {
                identifier = identifier,
                addTemplateDatas = addTemplateDatas
            }
        })
    end)

    ---@comments Log ของ azael
    pcall(function()
        exports['azael_dc-serverlogs']:insertData({
            event = 'afu_mail_box_rewards_event',
            content = logText,
            source = xPlayer.source,
            color = 1
        })
    end)

    ---@comments Log ของ NC
    pcall(function()
        exports.nc_discordlogs:Discord({
            webhook = 'your_web_hook_key', -- ใส่ชื่อ webhook ที่ต้องการใน Config.Webhooks
            xPlayer = xPlayer,         -- ในฝั่ง Server ต้องใส่ xPlayer ทุกครั้ง
            xTarget = xPlayer,         -- ในฝั่ง Server, xPlayer ของผู้ถูกกระทำ
            message = "ได้รับของขวัญจากเมล",
            description = logText,     -- คำอธิบายรายละเอียด (optional)
        })
    end)
end

Last updated