So übergeben Sie Parameter vom Client an den Server-Callback, speichern Daten im Array und senden sie an den Client zurück
P粉785905797
P粉785905797 2024-04-03 13:05:29
0
1
471

Ich möchte die Fahrzeugvariable vom Client an den Serverrückruf senden. Dort werde ich überprüfen, ob die Person mit der Steam-ID das Fahrzeug besitzt, das sie öffnen möchte. Wenn ja, werden alle Nummernschilder, die sie besitzt, gespeichert Ein Array wird eingefügt und an den Client zurückgesendet.

Wie übergebe ich Parameter vom Client an den Server-Callback?

#Kunde

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

#serverseitig

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

Antworte allen(1)
P粉567281015

您所需要做的就是向客户端的回调添加一个附加参数。如果您像我下面那样定义上面的板,那么“,板”就可以了。

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)

对于服务器端,您只需 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)
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage