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)