Rumah > Soal Jawab > teks badan
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粉5672810152024-04-04 12:07:24
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)