Could Someone please explain how we could run this script ? do we have to make it run through a menu ? what would we have in our resource im new and would like to use it
–Pringus race script (probably more accurately a time trial script)
–todo: add laps?
function LocalPed()
return GetPlayerPed(-1)
end
–Edit the xyz coords of this blip to change the starting line for the race
local blips = {
{title=“Yankton Race”, colour=5, id=315, x= 3103.01, y= -4826.48, z= 111.81}
}
local IsRacing = false
local cP = 1
local cP2 = 2
local checkpoint
local blip
local startTime
–[[
Add checkpoints using the formatting:
CheckPoints[1] = { x = 0, y = 0, z = 0, type = 5}
Number in brackets is the number of the checkpoint (CheckPoints[1] would be the first
checkpoint in the race)
Change the checkpoint type to determine whether or not it will be a checkpoint or
the finish line. type = 5 for regular checkpoints, type = 9 for the finish.
The example race is in North Yankton.
]]
local CheckPoints = {}
CheckPoints[1] = { x = 3193.48, y = -4833.70, z = 111.10, type = 5}
CheckPoints[2] = { x = 3220.04, y = -4723.66, z = 111.59, type = 5}
CheckPoints[3] = { x = 3259.36, y = -4683.49, z = 112.09, type = 5}
CheckPoints[4] = { x = 3213.41, y = -4788.37, z = 111.09, type = 5}
CheckPoints[5] = { x = 3273.93, y = -4842.86, z = 111.08, type = 5}
CheckPoints[6] = { x = 3448.06, y = -4860.14, z = 111.06, type = 5}
CheckPoints[7] = { x = 3512.24, y = -4863.06, z = 110.98, type = 5}
CheckPoints[8] = { x = 3536.23, y = -4734.19, z = 111.84, type = 5}
CheckPoints[9] = { x = 3535.28, y = -4676.86, z = 113.47, type = 5}
CheckPoints[10] = { x = 3493.69, y = -4660.35, z = 114.08, type = 5}
CheckPoints[11] = { x = 3296.20, y = -4614.22, z = 115.23, type = 5}
CheckPoints[12] = { x = 3241.98, y = -4617.21, z = 115.14, type = 5}
CheckPoints[13] = { x = 3236.97, y = -4655.57, z = 113.90, type = 5}
CheckPoints[14] = { x = 3243.55, y = -4682.48, z = 112.04, type = 5}
CheckPoints[15] = { x = 3210.94, y = -4817.35, z = 111.09, type = 9}
Citizen.CreateThread(function()
preRace()
end)
function preRace()
while not IsRacing do
Citizen.Wait(0)
–[[if (IsControlJustReleased(1, 47)) then
SetPedCoordsKeepVehicle(LocalPed(), 3103.01, -4826.48, 111.81)
TriggerServerEvent(“printPlayers”)
end]]
DrawMarker(1, 3103.01, -4826.48, 111.81 - 1, 0, 0, 0, 0, 0, 0, 3.0001, 3.0001, 1.5001, 255, 165, 0,165, 0, 0, 0,0)
if GetDistanceBetweenCoords( 3103.01, -4826.48, 111.81, GetEntityCoords(LocalPed())) < 50.0 then
Draw3DText( 3103.01, -4826.48, 111.81 +.500, “Yankton”,7,0.3,0.2)
Draw3DText( 3103.01, -4826.48, 111.81 +.100, “Race”,7,0.3,0.2)
end
if GetDistanceBetweenCoords( 3103.01, -4826.48, 111.81, GetEntityCoords(LocalPed())) < 2.0 then
TriggerEvent(“fs_freemode:displayHelp”, “Press ~INPUT_CONTEXT~ to Race!”)
if (IsControlJustReleased(1, 38)) then
if IsRacing == false then
IsRacing = true
TriggerEvent(“cRace:TPAll”)
else
return
end
end
end
end
end
RegisterNetEvent(“cRace:TPAll”)
AddEventHandler(“cRace:TPAll”, function()
SetPedCoordsKeepVehicle(PlayerPedId(), 3103.01, -4826.48, 111.81)
SetEntityHeading(PlayerPedId(), 265.0)
Citizen.CreateThread(function()
local time = 0
function setcountdown(x)
time = GetGameTimer() + x*1000
end
function getcountdown()
return math.floor((time-GetGameTimer())/1000)
end
setcountdown(6)
while getcountdown() > 0 do
Citizen.Wait(1)
--how the hell do I disable controls?
DrawHudText(getcountdown(), {255,191,0,255},0.5,0.4,4.0,4.0)
end
TriggerEvent("fs_race:BeginRace")
end)
end)
RegisterNetEvent(“fs_race:BeginRace”) --main loop
AddEventHandler(“fs_race:BeginRace”, function()
startTime = GetGameTimer()
Citizen.CreateThread(function()
checkpoint = CreateCheckpoint(CheckPoints[cP].type, CheckPoints[cP].x, CheckPoints[cP].y, CheckPoints[cP].z + 2, CheckPoints[cP2].x, CheckPoints[cP2].y, CheckPoints[cP2].z, 8.0, 204, 204, 1, 100, 0)
blip = AddBlipForCoord(CheckPoints[cP].x, CheckPoints[cP].y, CheckPoints[cP].z)
while IsRacing do
Citizen.Wait(5)
SetVehicleDensityMultiplierThisFrame(0.0)
SetPedDensityMultiplierThisFrame(0.0)
SetRandomVehicleDensityMultiplierThisFrame(0.0)
SetParkedVehicleDensityMultiplierThisFrame(0.0)
SetScenarioPedDensityMultiplierThisFrame(0.0, 0.0)
--Comment these out if you don't want HUD text
DrawHudText(math.floor(GetDistanceBetweenCoords(CheckPoints[cP].x, CheckPoints[cP].y, CheckPoints[cP].z, GetEntityCoords(GetPlayerPed(-1)))) .. " meters", {249, 249, 249,255},0.0,0.75,1.0,1.0)
DrawHudText(string.format("%i / %i", cP, tablelength(CheckPoints)), {249, 249, 249, 255},0.7,0.0,1.5,1.5)
DrawHudText(formatTimer(startTime, GetGameTimer()), {249, 249, 249,255},0.0,0.0,1.5,1.5)
if GetDistanceBetweenCoords(CheckPoints[cP].x, CheckPoints[cP].y, CheckPoints[cP].z, GetEntityCoords(GetPlayerPed(-1))) < 10.0 then
if CheckPoints[cP].type == 5 then
DeleteCheckpoint(checkpoint)
RemoveBlip(blip)
PlaySoundFrontend(-1, "RACE_PLACED", "HUD_AWARDS")
cP = math.ceil(cP+1)
cP2 = math.ceil(cP2+1)
checkpoint = CreateCheckpoint(CheckPoints[cP].type, CheckPoints[cP].x, CheckPoints[cP].y, CheckPoints[cP].z + 2, CheckPoints[cP2].x, CheckPoints[cP2].y, CheckPoints[cP2].z, 8.0, 204, 204, 1, 100, 0)
blip = AddBlipForCoord(CheckPoints[cP].x, CheckPoints[cP].y, CheckPoints[cP].z)
else
PlaySoundFrontend(-1, "ScreenFlash", "WastedSounds")
DeleteCheckpoint(checkpoint)
RemoveBlip(blip)
IsRacing = false
cP = 1
cP2 = 2
TriggerEvent("chatMessage", "Server", {0,0,0}, string.format("Finished with a time of " .. formatTimer(startTime, GetGameTimer())))
preRace()
end
else
end
end
end)
end)
–utility funcs
function tablelength(T)
local count = 0
for _ in pairs(T) do
count = count + 1 end
return count
end
function formatTimer(startTime, currTime)
local newString = currTime - startTime
local ms = string.sub(newString, -3, -2)
local sec = string.sub(newString, -5, -4)
local min = string.sub(newString, -7, -6)
–newString = string.sub(newString, -1)
newString = string.format("%s%s.%s", min, sec, ms)
return newString
end
function Draw3DText(x,y,z,textInput,fontId,scaleX,scaleY)
local px,py,pz=table.unpack(GetGameplayCamCoords())
local dist = GetDistanceBetweenCoords(px,py,pz, x,y,z, 1)
local scale = (1/dist)*20
local fov = (1/GetGameplayCamFov())*100
local scale = scale*fov
SetTextScale(scaleX*scale, scaleY*scale)
SetTextFont(fontId)
SetTextProportional(1)
SetTextColour(255, 255, 255, 250)
SetTextDropshadow(1, 1, 1, 1, 255)
SetTextEdge(2, 0, 0, 0, 150)
SetTextDropShadow()
SetTextOutline()
SetTextEntry("STRING")
SetTextCentre(1)
AddTextComponentString(textInput)
SetDrawOrigin(x,y,z+2, 0)
DrawText(0.0, 0.0)
ClearDrawOrigin()
end
function DrawHudText(text,colour,coordsx,coordsy,scalex,scaley) --courtesy of driftcounter
SetTextFont(7)
SetTextProportional(7)
SetTextScale(scalex, scaley)
local colourr,colourg,colourb,coloura = table.unpack(colour)
SetTextColour(colourr,colourg,colourb, coloura)
SetTextDropshadow(0, 0, 0, 0, coloura)
SetTextEdge(1, 0, 0, 0, coloura)
SetTextDropShadow()
SetTextOutline()
SetTextEntry(“STRING”)
AddTextComponentString(text)
DrawText(coordsx,coordsy)
end
–create blip
Citizen.CreateThread(function()
for _, info in pairs(blips) do
info.blip = AddBlipForCoord(info.x, info.y, info.z)
SetBlipSprite(info.blip, info.id)
SetBlipDisplay(info.blip, 4)
SetBlipScale(info.blip, 1.0)
SetBlipColour(info.blip, info.colour)
SetBlipAsShortRange(info.blip, true)
BeginTextCommandSetBlipName(“STRING”)
AddTextComponentString(info.title)
EndTextCommandSetBlipName(info.blip)
end
end)