diff --git a/client/events.lua b/client/events.lua index df2adec..673094a 100644 --- a/client/events.lua +++ b/client/events.lua @@ -126,11 +126,11 @@ RegisterNetEvent('QBCore:Command:SpawnVehicle', function(vehName) while not HasModelLoaded(hash) do Wait(0) end - - if IsPedInAnyVehicle(ped) then + + if IsPedInAnyVehicle(ped) then DeleteVehicle(veh) end - + local vehicle = CreateVehicle(hash, GetEntityCoords(ped), GetEntityHeading(ped), true, false) TaskWarpPedIntoVehicle(ped, vehicle, -1) SetVehicleFuelLevel(vehicle, 100.0) @@ -170,6 +170,20 @@ RegisterNetEvent('QBCore:Notify', function(text, type, length) QBCore.Functions.Notify(text, type, length) end) +RegisterNetEvent('QBCore:Client:UseItem', function(item) + TriggerServerEvent('QBCore:Server:UseItem', item) +end) + +-- Callback Events -- + +-- Client Callback +RegisterNetEvent('QBCore:Client:TriggerClientCallback', function(name, ...) + QBCore.Functions.TriggerClientCallback(name, function(...) + TriggerServerEvent('QBCore:Server:TriggerClientCallback', name, ...) + end, ...) +end) + +-- Server Callback RegisterNetEvent('QBCore:Client:TriggerCallback', function(name, ...) if QBCore.ServerCallbacks[name] then QBCore.ServerCallbacks[name](...) @@ -177,10 +191,6 @@ RegisterNetEvent('QBCore:Client:TriggerCallback', function(name, ...) end end) -RegisterNetEvent('QBCore:Client:UseItem', function(item) - TriggerServerEvent('QBCore:Server:UseItem', item) -end) - -- Me command local function Draw3DText(coords, str) diff --git a/client/functions.lua b/client/functions.lua index 75e937b..ad525a8 100644 --- a/client/functions.lua +++ b/client/functions.lua @@ -117,11 +117,26 @@ function QBCore.Debug(resource, obj, depth) TriggerServerEvent('QBCore:DebugSomething', resource, obj, depth) end +-- Callback Functions -- + +-- Client Callback +function QBCore.Functions.CreateClientCallback(name, cb) + QBCore.ClientCallbacks[name] = cb +end + +function QBCore.Functions.TriggerClientCallback(name, cb, ...) + if not QBCore.ClientCallbacks[name] then return end + QBCore.ClientCallbacks[name](cb, ...) +end + +-- Server Callback function QBCore.Functions.TriggerCallback(name, cb, ...) QBCore.ServerCallbacks[name] = cb TriggerServerEvent('QBCore:Server:TriggerCallback', name, ...) end + + function QBCore.Functions.Progressbar(name, label, duration, useWhileDead, canCancel, disableControls, animation, prop, propTwo, onFinish, onCancel) if GetResourceState('progressbar') ~= 'started' then error('progressbar needs to be started in order for QBCore.Functions.Progressbar to work') end exports['progressbar']:Progress({ diff --git a/client/main.lua b/client/main.lua index efa365b..e11a124 100644 --- a/client/main.lua +++ b/client/main.lua @@ -2,6 +2,7 @@ QBCore = {} QBCore.PlayerData = {} QBCore.Config = QBConfig QBCore.Shared = QBShared +QBCore.ClientCallbacks = {} QBCore.ServerCallbacks = {} exports('GetCoreObject', function() diff --git a/server/events.lua b/server/events.lua index 65d3268..690ff06 100644 --- a/server/events.lua +++ b/server/events.lua @@ -57,13 +57,13 @@ local function onPlayerConnecting(name, setKickReason, deferrals) deferrals.update(string.format(Lang:t('info.join_server'), name)) if not license then - deferrals.done(Lang:t('error.no_valid_license')) + deferrals.done(Lang:t('error.no_valid_license')) elseif isBanned then deferrals.done(Reason) elseif isLicenseAlreadyInUse and QBCore.Config.Server.CheckDuplicateLicense then deferrals.done(Lang:t('error.duplicate_license')) elseif isWhitelist and not whitelisted then - deferrals.done(Lang:t('error.not_whitelisted')) + deferrals.done(Lang:t('error.not_whitelisted')) else deferrals.done() if QBCore.Config.Server.UseConnectQueue then @@ -103,8 +103,17 @@ RegisterNetEvent('QBCore:Server:OpenServer', function() end end) --- Callbacks +-- Callback Events -- +-- Client Callback +RegisterNetEvent('QBCore:Server:TriggerClientCallback', function(name, ...) + if QBCore.ClientCallbacks[name] then + QBCore.ClientCallbacks[name](...) + QBCore.ClientCallbacks[name] = nil + end +end) + +-- Server Callback RegisterNetEvent('QBCore:Server:TriggerCallback', function(name, ...) local src = source QBCore.Functions.TriggerCallback(name, src, function(...) diff --git a/server/functions.lua b/server/functions.lua index 95b302d..4cab087 100644 --- a/server/functions.lua +++ b/server/functions.lua @@ -196,8 +196,15 @@ function PaycheckInterval() SetTimeout(QBCore.Config.Money.PayCheckTimeOut * (60 * 1000), PaycheckInterval) end --- Callbacks +-- Callback Functions -- +-- Client Callback +function QBCore.Functions.TriggerClientCallback(name, source, cb, ...) + QBCore.ClientCallbacks[name] = cb + TriggerClientEvent('QBCore:Client:TriggerClientCallback', source, name, ...) +end + +-- Server Callback function QBCore.Functions.CreateCallback(name, cb) QBCore.ServerCallbacks[name] = cb end diff --git a/server/main.lua b/server/main.lua index 41c0c43..206e6dd 100644 --- a/server/main.lua +++ b/server/main.lua @@ -1,6 +1,7 @@ QBCore = {} QBCore.Config = QBConfig QBCore.Shared = QBShared +QBCore.ClientCallbacks = {} QBCore.ServerCallbacks = {} QBCore.UseableItems = {}