local responded = false local blockrequests = false local source, time, title, message, trigger, ClientOrServer, parameters, parametersNum local function toggleNuiFrame(shouldShow) SetNuiFocus(shouldShow, shouldShow) SendReactMessage('setVisible', shouldShow) end RegisterNUICallback('hideFrame', function(_, cb) toggleNuiFrame(false) debugPrint('Hide NUI frame') cb({}) end) RegisterNuiCallback("getConfig", function(data, cb) cb(Config) end) -- Request RegisterNetEvent('cx_requests:ShowMenu') AddEventHandler('cx_requests:ShowMenu', function(sourceS, timeS, titleS, messageS, triggerS, ClientOrServerS, parametersS, parametersNumS) source, time, title, message, trigger, ClientOrServer, parameters, parametersNum = sourceS, timeS, titleS, messageS, triggerS, ClientOrServerS, parametersS, parametersNumS if not blockrequests then SetNuiFocus(true, true) SendReactMessage("open", { title = title, subtitle = message, }) responded = false local time2 = time - 1 Citizen.SetTimeout(time, function() time2 = time + 1 end) while time > time2 do if responded then break end Wait(1) end if not responded then TriggerServerEvent("cx_requests:ExpiredMessage", source) -- exports['okokNotify']:Alert("EXPIRED", "Time expired! ", 5000, 'warning') SetNuiFocus(false, false) SendNUIMessage({ action = 'close', }) end else TriggerServerEvent("cx_requests:BlockedMessage", source) TriggerServerEvent("cx_requests:SomeoneTriedMessage", source) end end) RegisterNUICallback("action", function(data) if data.action == "acceptRequest" then responded = true TriggerServerEvent("cx_requests:AcceptedMessage", source) -- exports['okokNotify']:Alert("ACCEPTED", "You accepted the request! ", 5000, 'success') SetNuiFocus(false, false) if ClientOrServer:lower() == "server" then if parametersNum == 0 or parameters == nil or parametersNum == nil then TriggerServerEvent(trigger) elseif parametersNum == 1 then TriggerServerEvent(trigger, parameters) elseif parametersNum == 2 then local param1, param2 = parameters:match("([^,]+),([^,]+)") TriggerServerEvent(trigger, param1, param2) elseif parametersNum == 3 then local param1, param2, param3 = parameters:match("([^,]+),([^,]+),([^,]+)") TriggerServerEvent(trigger, param1, param2, param3) elseif parametersNum == 4 then local param1, param2, param3, param4 = parameters:match("([^,]+),([^,]+),([^,]+),([^,]+)") TriggerServerEvent(trigger, param1, param2, param3, param4) elseif parametersNum == 5 then local param1, param2, param3, param4, param5 = parameters:match("([^,]+),([^,]+),([^,]+),([^,]+),([^,]+)") TriggerServerEvent(trigger, param1, param2, param3, param4, param5) end else TriggerServerEvent("cx_requests:ExecuteClient", source, trigger, parameters, parametersNum) end elseif data.action == "declineRequest" or data.action == "closeEsc" then responded = true TriggerServerEvent("cx_requests:DeniedMessage", source) -- exports['okokNotify']:Alert("DENIED", "You denied the request! ", 5000, 'error') SetNuiFocus(false, false) end end) -- Block Request RegisterCommand("requests", function() SetNuiFocus(true, true) SendReactMessage( 'openblock', { status = blockrequests }) end, false) RegisterNUICallback("action", function(data) if data.action == "saveBlockRequest" then if data.status == "disabled" then blockrequests = true -- exports['okokNotify']:Alert("REQUESTS", "Requests have been disabled! ", 5000, 'error') elseif data.status == "enabled" then blockrequests = false -- exports['okokNotify']:Alert("REQUESTS", "Requests have been enabled! ", 5000, 'success') end end end) -- Triggers function requestMenu(id, time, title, message, trigger, side, parameters, parametersNum) TriggerServerEvent('cx_requests:ShowMenuData', id, time, title, message, trigger, side, parameters, parametersNum) -- exports['okokNotify']:Alert("REQUESTS", "Request sent! ", 5000, 'info') end RegisterNetEvent('cx_requests:RequestMenu') AddEventHandler('cx_requests:RequestMenu', function(id, time, title, message, trigger, side, parameters, parametersNum) requestMenu(id, time, title, message, trigger, side, parameters, parametersNum) end)