local QBCore = exports['qb-core']:GetCoreObject() local Time = 0 local TicketAtivo = false local Veiculo = nil local KartingPoly = PolyZone:Create({ vector2(-169.23545837402, -2126.0227050781), vector2(-103.59944915771, -2103.1733398438), vector2(-101.42811584473, -2102.9812011719), vector2(-102.84362030029, -2099.4099121094), vector2(-118.13861083984, -2055.4501953125), vector2(-120.92548370361, -2048.2705078125), vector2(-122.6300201416, -2040.9029541016), vector2(-122.81782531738, -2031.3441162109), vector2(-116.01826477051, -1980.0040283203), vector2(-114.74008178711, -1979.4429931641), vector2(-61.650188446045, -1986.5238037109), vector2(-53.568267822266, -1989.6710205078), vector2(-49.210807800293, -1994.4814453125), vector2(-39.566497802734, -2020.3823242188), vector2(-74.735076904297, -2033.3594970703), vector2(-104.93293762207, -2029.0303955078), vector2(-105.09645843506, -2039.6833496094), vector2(-101.85122680664, -2048.6860351562), vector2(-101.7225112915, -2049.4038085938), vector2(-85.72745513916, -2093.2482910156), vector2(-84.908203125, -2097.1889648438), vector2(-44.1120262146, -2082.5266113281), vector2(-28.414522171021, -2077.0905761719), vector2(-19.66005897522, -2081.6242675781), vector2(-17.005525588989, -2089.7761230469), vector2(-16.292013168335, -2095.9597167969), vector2(-18.063987731934, -2105.0646972656), vector2(-24.122716903687, -2113.2478027344), vector2(-29.74503326416, -2117.0571289062), vector2(-69.816352844238, -2131.3469238281), vector2(-77.692192077637, -2129.7614746094), vector2(-88.093696594238, -2133.6105957031), vector2(-92.520805358887, -2139.3259277344), vector2(-143.04769897461, -2157.0837402344), vector2(-150.01580810547, -2155.7995605469), vector2(-159.11499023438, -2158.771484375) }, { name="kartzone", }) CreateThread(function() while true do Wait(0) ClearAreaOfVehicles(-85.162, -2067.108, 21.797, 1000, false, false, false, false, false) RemoveVehiclesFromGeneratorsInArea(-85.162 - 90.0, -2067.108 - 90.0, 21 - 90.0, -85.162 + 90.0, 2067.108 + 90.0, 21 + 90.0) end end) CreateThread(function() RequestModel(`hc_driver`) while not HasModelLoaded(`hc_driver`) do Wait(1) end KartingPed = CreatePed(2, `hc_driver`, Config.Locations['Ped'], false, false) SetPedFleeAttributes(KartingPed, 0, 0) SetPedDiesWhenInjured(KartingPed, false) TaskStartScenarioInPlace(KartingPed, "missheistdockssetup1clipboard@base", 0, true) SetPedKeepTask(KartingPed, true) SetBlockingOfNonTemporaryEvents(KartingPed, true) SetEntityInvincible(KartingPed, true) FreezeEntityPosition(KartingPed, true) exports['qb-target']:AddBoxZone("KartingPed", Config.Locations['PedTarget'], 1, 1, { name="KartingPed", heading=0, debugpoly = false, }, { options = { { event = "qb-gocart:client:MenuAluger", icon = "fas fa-car", label = "Snak med personen", } }, distance = 2.5 }) local blip = AddBlipForCoord(Config.Locations['PedTarget']) SetBlipSprite (blip, 38) SetBlipDisplay(blip, 2) SetBlipScale (blip, 0.7) SetBlipColour (blip, 3) SetBlipAsShortRange(blip, true) BeginTextCommandSetBlipName("STRING") AddTextComponentString('GoKarting') EndTextCommandSetBlipName(blip) end) RegisterNetEvent('qb-gocart:client:MenuAluger', function() if TicketAtivo == true then exports['qb-menu']:openMenu({ { header = Lang.MenuHeader, isMenuHeader = true, }, { header = Lang.CloseMenu, event = "qb-menu:closeMenu", icon = "fas fa-times-circle", }, { header = Lang.StopTicket, txt = "", icon = "fas fa-ticket", event = "qb-gocart:client:Ticket", params = { event = "qb-gocart:client:Ticket", args = 5 }, }, }) else exports['qb-menu']:openMenu({ { header = Lang.MenuHeader, isMenuHeader = true, }, { header = Lang.CloseMenu, event = "qb-menu:closeMenu", icon = "fas fa-times-circle", }, { header = Lang.Ticket1, txt = Lang.Duration .. Config.Tickets[1].time .. Lang.Minutes .. "
" .. Lang.Price .. Config.Tickets[1].price .. ",- DKK", icon = "fas fa-ticket", event = "qb-gocart:client:Ticket1", params = { event = "qb-gocart:client:Ticket", args = 1 }, }, { header = Lang.Ticket2, txt = Lang.Duration .. Config.Tickets[2].time .. Lang.Minutes .. "
" .. Lang.Price .. Config.Tickets[2].price .. ",- DKK", icon = "fas fa-ticket", event = "qb-gocart:client:Ticket", params = { event = "qb-gocart:client:Ticket", args = 2 }, }, { header = Lang.Ticket3, txt = Lang.Duration .. Config.Tickets[3].time .. Lang.Minutes .. "
" .. Lang.Price .. Config.Tickets[3].price .. ",- DKK", icon = "fas fa-ticket", params = { event = "qb-gocart:client:Ticket", args = 3 }, }, { header = Lang.Ticket4, txt = Lang.Duration .. Config.Tickets[4].time .. Lang.Minutes .. "
" .. Lang.Price .. Config.Tickets[4].price .. ",- DKK", icon = "fas fa-ticket", event = "qb-gocart:client:Ticket", params = { event = "qb-gocart:client:Ticket", args = 4 }, }, }) end end) local function drawTxt(text, font, x, y, scale, r, g, b, a) SetTextFont(font) SetTextScale(scale, scale) SetTextColour(r, g, b, a) SetTextOutline() SetTextCentre(1) SetTextEntry("STRING") AddTextComponentString(text) DrawText(x, y) end local function DeleteVehicle(Time, veh) local Tempo = Time * 1000 print(Tempo) Wait(Tempo) DeleteEntity(Veiculo) TicketAtivo = false QBCore.Functions.Notify(Lang.Finished, 'primary', 7500) end local function startTimer(Time, veh) local gameTimer = GetGameTimer() local EliminarVeiculo = GetVehiclePedIsIn(PlayerPedId(), true) CreateThread(function() while TicketAtivo or not TicketAtivo do Wait(1) if TicketAtivo == true then if GetGameTimer() < gameTimer + tonumber(1000 * Time) then local secondsLeft = GetGameTimer() - gameTimer drawTxt(Lang.TimeRemaning .. math.ceil(Time - secondsLeft / 1000) .. Lang.Seconds, 4, 0.5, 0.93, 0.50, 255, 255, 255, 180) end elseif TicketAtivo == false then DeleteEntity(Veiculo) gameTimer = 0 Time = 0 end end end) end local function SpawnKart(Time) local veiculo = Config.Vehicle local coords = Config.Locations['KartSpawn'] local EliminarVeiculo = GetVehiclePedIsIn(PlayerPedId(), true) QBCore.Functions.SpawnVehicle(veiculo, function(veh) Veiculo = veh SetVehicleNumberPlateText(veh, "KART"..tostring(math.random(1000, 9999))) exports['qb-fuel']:SetFuel(veh, 100.0) TriggerEvent("vehiclekeys:client:SetOwner", GetVehicleNumberPlateText(veh)) SetVehicleEngineOn(veh, true, true) startTimer(Time, veh) DeleteVehicle(Time, veh) end, coords, true) end RegisterNetEvent('qb-gocart:client:Ticket', function(args) if args == 1 and TicketAtivo == false then local time = Config.Tickets[1].time * 60 TriggerServerEvent('QBCore:Server:RemoveMoney', 'bank', Config.Tickets[1].price) Time = time TicketAtivo = true SpawnKart(Time) elseif args == 2 and TicketAtivo == false then local time2 = Config.Tickets[2].time * 60 TriggerServerEvent('QBCore:Server:RemoveMoney', 'bank', Config.Tickets[2].price) Time = time2 TicketAtivo = true SpawnKart(Time) elseif args == 3 and TicketAtivo == false then local time3 = Config.Tickets[3].time * 60 TriggerServerEvent('QBCore:Server:RemoveMoney', 'bank', Config.Tickets[3].price) Time = time3 TicketAtivo = true SpawnKart(Time) elseif args == 4 and TicketAtivo == false then local time4 = Config.Tickets[4].time * 60 TriggerServerEvent('QBCore:Server:RemoveMoney', 'bank', Config.Tickets[4].price) Time = time4 TicketAtivo = true SpawnKart(Time) elseif args == 5 and TicketAtivo == true then TicketAtivo = false Time = 0 DeleteEntity(Veiculo) else QBCore.Functions.Notify(Lang.ActiveTicket, 'error', 7500) end end) CreateThread(function() KartingPoly:onPlayerInOut(function(isPointOutside) if not isPointOutside then if TicketAtivo == true then TicketAtivo = false Time = 0 DeleteEntity(Veiculo) QBCore.Functions.Notify(Lang.DeletedVehicle, 'primary', 7500) end end end) end)