forked from Simnation/Main
107 lines
3.5 KiB
Lua
107 lines
3.5 KiB
Lua
local QBCore = exports['qb-core']:GetCoreObject()
|
|
local bac = nil
|
|
local display = false
|
|
|
|
function SetDisplay(bool)
|
|
display = bool
|
|
SetNuiFocus(bool, bool)
|
|
SendNUIMessage({
|
|
type = "ui",
|
|
status = bool,
|
|
})
|
|
end
|
|
|
|
RegisterNUICallback("exit", function(data)
|
|
SetDisplay(false)
|
|
SendNUIMessage({
|
|
type = "data",
|
|
bac = '0.00',
|
|
textColor = '--color-black'
|
|
})
|
|
end)
|
|
|
|
RegisterNUICallback("startBac", function(data)
|
|
local target = GetClosestPlayerRadius(2.0)
|
|
if target == nil then
|
|
QBCore.Functions.Notify("Keine Person in der Nähe gefunden!", "error")
|
|
return
|
|
end
|
|
TriggerServerEvent('qb-alcoholtest:server:doBacTest', GetPlayerServerId(target))
|
|
QBCore.Functions.Notify('Anfrage wurde an ' .. GetPlayerName(target) .. ' gesendet')
|
|
end)
|
|
|
|
-- Kontrollen deaktivieren, wenn UI geöffnet ist
|
|
Citizen.CreateThread(function()
|
|
while true do
|
|
Citizen.Wait(0)
|
|
if display then
|
|
DisableControlAction(0, 1, display) -- LookLeftRight
|
|
DisableControlAction(0, 2, display) -- LookUpDown
|
|
DisableControlAction(0, 142, display) -- MeleeAttackAlternate
|
|
DisableControlAction(0, 18, display) -- Enter
|
|
DisableControlAction(0, 322, display) -- ESC
|
|
DisableControlAction(0, 106, display) -- VehicleMouseControlOverride
|
|
else
|
|
Citizen.Wait(500)
|
|
end
|
|
end
|
|
end)
|
|
|
|
-- Alkoholtester Item verwenden
|
|
RegisterNetEvent('qb-alcoholtest:client:useBreathalyzer')
|
|
AddEventHandler('qb-alcoholtest:client:useBreathalyzer', function()
|
|
SetDisplay(true)
|
|
end)
|
|
|
|
-- BAC-Test Anfrage erhalten
|
|
RegisterNetEvent('qb-alcoholtest:client:requestBac')
|
|
AddEventHandler('qb-alcoholtest:client:requestBac', function(leo, target)
|
|
local accepted = nil
|
|
QBCore.Functions.Notify(GetPlayerName(GetPlayerFromServerId(leo)) .. " möchte deinen Alkoholwert testen.")
|
|
QBCore.Functions.Notify("Akzeptieren [Y] Ablehnen [N]")
|
|
|
|
Citizen.CreateThread(function()
|
|
while accepted == nil do
|
|
Citizen.Wait(0)
|
|
if IsControlJustReleased(1, 246) then -- Y Taste
|
|
accepted = true
|
|
TriggerServerEvent('qb-alcoholtest:server:acceptedBac', leo, target)
|
|
|
|
-- Tatsächlichen BAC-Wert vom System abrufen
|
|
TriggerServerEvent('qb-alcoholtest:server:getActualBAC', leo, target)
|
|
end
|
|
if IsControlJustReleased(1, 249) then -- N Taste
|
|
accepted = false
|
|
TriggerServerEvent('qb-alcoholtest:server:refusedBac', leo, target)
|
|
end
|
|
end
|
|
end)
|
|
end)
|
|
|
|
-- BAC-Wert anzeigen
|
|
RegisterNetEvent('qb-alcoholtest:client:displayBac')
|
|
AddEventHandler('qb-alcoholtest:client:displayBac', function(bac, color)
|
|
SendNUIMessage({
|
|
type = "data",
|
|
bac = bac,
|
|
textColor = color
|
|
})
|
|
end)
|
|
|
|
-- BAC-Test abgelehnt
|
|
RegisterNetEvent('qb-alcoholtest:client:bacRefused')
|
|
AddEventHandler('qb-alcoholtest:client:bacRefused', function(target)
|
|
SetDisplay(false)
|
|
SendNUIMessage({
|
|
type = "data",
|
|
bac = '0.00',
|
|
textColor = '--color-black'
|
|
})
|
|
QBCore.Functions.Notify(GetPlayerName(GetPlayerFromServerId(target)) .. " hat den Alkoholtest abgelehnt!", "error")
|
|
end)
|
|
|
|
-- BAC-Test akzeptiert
|
|
RegisterNetEvent('qb-alcoholtest:client:acceptedBac')
|
|
AddEventHandler('qb-alcoholtest:client:acceptedBac', function(target)
|
|
QBCore.Functions.Notify("Teste " .. GetPlayerName(GetPlayerFromServerId(target)) .. "'s Blutalkoholwert...")
|
|
end)
|