Bagaimana untuk menghantar parameter dari klien ke panggilan balik pelayan, menyimpan data dalam tatasusunan dan menghantarnya kembali kepada klien
P粉785905797
P粉785905797 2024-04-03 13:05:29
0
1
477

Saya ingin menghantar pembolehubah kenderaan dari pelanggan ke panggilan balik pelayan, di sana saya akan mengesahkan sama ada orang yang mempunyai id wap memiliki kenderaan yang dia cuba buka, jika dia melakukannya maka semua plat yang dimilikinya akan disimpan dalam tatasusunan masuk dan dihantar semula kepada klien.

Bagaimana untuk menghantar parameter dari klien ke panggilan balik pelayan?

#pelanggan

function openmenuvehicle()
    local playerPed = PlayerPedId()
    local coords = GetEntityCoords(playerPed)
    local vehicle = nil

    if IsPedInAnyVehicle(playerPed, false) then
        vehicle = GetVehiclePedIsIn(playerPed, false)
    else
        vehicle = getVehicleInDirection(3.0)

        if not DoesEntityExist(vehicle) then
            vehicle = GetClosestVehicle(coords, 3.0, 0, 70)
        end
    end


    if DoesEntityExist(vehicle) then
        local lockStatus = GetVehicleDoorLockStatus(vehicle)
        if lockStatus == 0 or lockStatus == 1 then
            local trunkpos = GetWorldPositionOfEntityBone(vehicle, GetEntityBoneIndexByName(vehicle, "boot"))
            local distanceToTrunk = GetDistanceBetweenCoords(coords, trunkpos, 1)

            if distanceToTrunk <= 1.25 or (trunkpos.x + trunkpos.y + trunkpos.z) == 0.0 then

                ESX.TriggerServerCallback('esx_inventoryhud_trunk:getOwner', function(isOwner)
                print(isOwner)

                    if isOwner then 
                        TriggerEvent(
                        "mythic_progbar:client:progress",
                        {
                            name = "Open_Trunk",
                            duration = Config.OpenTime,
                            label = 'ABRINDO MALA',
                            useWhileDead = false,
                            canCancel = true,
                            controlDisables = {
                                disableMovement = true,
                                disableCarMovement = true,
                                disableMouse = false,
                                disableCombat = true
                            }
                        },
                        function(status)
                            if not status then
                                currentVehicle = vehicle
                                
                                SetVehicleDoorOpen(vehicle, 5, false, false)
                                local class = GetVehicleClass(vehicle)
                                OpenCoffreInventoryMenu(GetVehicleNumberPlateText(vehicle), Config.VehicleLimit[class])
                            end
                        end
                        )
                    end
                end)
            else
                exports['okokNotify']:Alert("", "Aproxima-te da mala", 3000, 'error')
            end
        else
            exports['okokNotify']:Alert("", "Mala trancada", 3000, 'error')
        end
    else
        exports['okokNotify']:Alert("", "Sem veículos por perto", 3000, 'error') 
    end
end

#sebelah pelayan

ESX.RegisterServerCallback("esx_inventoryhud_trunk:getOwner", function(source, cb, plate)

    local id = GetPlayerIdentifiers(source)[1]
    
    MySQL.Async.fetchAll("SELECT plate FROM owned_vehicles WHERE owner = @owner", {['@owner'] = id}, function(data)
        if data[1].owner == id then 
            return cb(true)
        else
            return cb(false)
        end
    end)
end)

P粉785905797
P粉785905797

membalas semua(1)
P粉567281015

Apa yang anda perlu lakukan ialah menambah parameter tambahan pada panggilan balik pelanggan. Jika anda mentakrifkan papan di atas seperti yang saya lakukan di bawah, maka ",papan" akan baik.

local plate = GetVehicleNumberPlateText(vehicle)
ESX.TriggerServerCallback('esx_inventoryhud_trunk:getOwner', function(isOwner, owned_vehicles)
    print(isOwner)

    if isOwner then
        TriggerEvent(
            "mythic_progbar:client:progress",
            {
                name = "Open_Trunk",
                duration = Config.OpenTime,
                label = 'ABRINDO MALA',
                useWhileDead = false,
                canCancel = true,
                controlDisables = {
                disableMovement = true,
                disableCarMovement = true,
                disableMouse = false,
                disableCombat = true
            }
        },
        function(status)
            if not status then
                currentVehicle = vehicle

                SetVehicleDoorOpen(vehicle, 5, false, false)
                local class = GetVehicleClass(vehicle)
                OpenCoffreInventoryMenu(plate, Config.VehicleLimit[class])
            end
        end)
    end
end, plate)

Untuk bahagian pelayan, anda hanya perlukan cb(data).

ESX.RegisterServerCallback("esx_inventoryhud_trunk:getOwner", function(source, cb, plate)

    local id = GetPlayerIdentifiers(source)[1]

    MySQL.Async.fetchAll("SELECT plate FROM owned_vehicles WHERE owner = @owner", {['@owner'] = id}, function(data)
        local found = false;
        for i = 1, #data do
            local this = data[i]
            if this.plate == plate then
                cb(true, data)
                found = true; -- need to do this to prevent to callbacks
            end
        end
        if not found then cb(false, {}) end
    end)
end)
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan