Client.lua 
	 
 
addEvent("c_raceStart", true)
local l_markerposX = {2366, 2343, 2244, 2219, 2215, 2269, 2688, 2715, 2542, 2528, 2494, 2487}
local l_markerposY = {-1658, -1706, -1732, -1870, -1951, -2065, -2049, -1952, -1932, -1756, -1732, -1670}
local l_Z = 13.2
local l_Z2 = 13.5
local l_marker = {}
local l_blip = {}
local l_target = 0
local l_racecar = nil
local raceTimer = nil
function f_race(who)
    if l_target > 0 and l_racecar ~= nil and l_marker[l_target] == source and getPedOccupiedVehicle(who) == l_racecar then
        triggerServerEvent("s_checkpos", who, l_target)
        outputChatBox("Checkpoint " .. l_target .. " Reached!")
        playSoundFrontEnd(43)
        destroyElement(source)
        destroyElement(l_blip[l_target])
        if l_target < 11 then
            l_blip[l_target + 1] = createBlipAttachedTo(l_marker[l_target + 1], 19)
            l_marker[l_target + 2] = createMarker(l_markerposX[l_target + 2], l_markerposY[l_target + 2], l_Z, "checkpoint", 4, 255, 0, 0, 255)
            addEventHandler("onClientMarkerHit", l_marker[l_target + 2], f_race)
            setMarkerTarget(l_marker[l_target + 1], l_markerposX[l_target + 2], l_markerposY[l_target + 2], l_Z2)
            l_target = l_target + 1
        elseif l_target == 11 then
            l_blip[l_target + 1] = createBlipAttachedTo(l_marker[l_target + 1], 53)
            l_target = l_target + 1
        elseif l_target == 12 then
            l_target = l_target + 1
            playSound("sound/mission_accomplished.mp3")
            triggerServerEvent("s_finish", who, who, 1)
            if isTimer(raceTimer) then killTimer(raceTimer) end
        end
    end
end
function f_raceStart(num)
    l_racecar = getPedOccupiedVehicle(localPlayer)
    l_target = 1
    setTimer(function()
        playSoundFrontEnd(44)
    end, 1000, 3)
    setTimer(function()
        playSoundFrontEnd(45)
        triggerServerEvent("s_startEngine", localPlayer)
    end, 4000, 1)
    
    for i = 1, 2 do
        l_marker[i] = createMarker(l_markerposX[i], l_markerposY[i], l_Z, "checkpoint", 4, 255, 0, 0, 255)
        addEventHandler("onClientMarkerHit", l_marker[i], f_race)
        if i < 2 then
            l_blip[i] = createBlipAttachedTo(l_marker[i], 19)
            setMarkerTarget(l_marker[i], l_markerposX[i + 1], l_markerposY[i + 1], l_Z2)
        end
    end
    raceTimer = setTimer(function()
        triggerServerEvent("s_finish", localPlayer, localPlayer, 0)
    end, 60000, 1)
end
addEventHandler("c_raceStart", getRootElement(), f_raceStart)
addEventHandler("onClientVehicleExit", getRootElement(), function(vehicle)
    if vehicle == l_racecar then
        triggerServerEvent("s_finish", localPlayer, localPlayer, 0)
    end
end)
	 
	 
	server.lua 
	 
 
addEvent("s_finish", true)
addEvent("s_startEngine", true)
local r_markerposX = 2463
local r_markerposY = -1658
local r_markerposZ = 14
function s_starter()
    setVehicleEngineState(getPedOccupiedVehicle(client), true)
    setVehicleDamageProof(getPedOccupiedVehicle(client), false) 
end
addEventHandler("s_startEngine", getRootElement(), s_starter)
function f_finish(who, num)
    if num > 0 then
        givePlayerMoney(who, 5000)
        outputChatBox("u've completed the race", who, 0, 255, 0)
    else
        outputChatBox("u failed the race or exited the vehicle.", who, 255, 0, 0)
    end
    setElementPosition(who, r_markerposX, r_markerposY, r_markerposZ)
    setElementRotation(who, 0, 0, 90)
    if isPedInVehicle(who) then
        local vehicle = getPedOccupiedVehicle(who)
        setElementPosition(vehicle, r_markerposX, r_markerposY, r_markerposZ)
        setElementRotation(vehicle, 0, 0, 90)
        setVehicleEngineState(vehicle, false)
        setVehicleDamageProof(vehicle, true)
    end
end
addEventHandler("s_finish", getRootElement(), f_finish)