Can Someone help me with this?
Client:
local scaleCurve = { {0, 0.8}, {0.8, 1.2}, {99, 99} }
local firstCar
local secondCar
local thirdCar
local firstName
local secondName
local thirdName
local camStart = nil
local camX = 0
local camY = 0
local camZ = 0
local tocamX = 0
local tocamY = 0
local tocamZ = 0
function createPodium(podiumThird, podiumSecond, podiumFirst)
local carFirst = podiumFirst[1][2]
local carSecond = podiumSecond[1][2]
local carThird = podiumThird[1][2]
firstName = podiumFirst[1][1]
secondName = podiumSecond[1][1]
thirdName = podiumThird[1][1]
camX = 1271
camY = -845
camZ = 91
tocamX = 1291
tocamY = -841
tocamZ = 91
fadeCamera(true,2)
setCameraMatrix(camX, camY, camZ, 1281.5999755859, -830, 82.900001525879)
setTime(0, 0)
firstCar = createVehicle ( carFirst, 1281.5999755859, -830, 82.900001525879, 0, 0, 180 )
secondCar = createVehicle ( carSecond, 1275.1999511719, -828.59997558594, 82.900001525879, 0, 0, 180 )
thirdCar = createVehicle ( carThird, 1288.1999511719, -828.59997558594, 82.900001525879, 0, 0, 180 )
setVehicleColor( firstCar, 255, 255, 0 )
setVehicleColor( secondCar, 0, 255, 0 )
setVehicleColor( thirdCar, 255, 0, 0 )
camStart = getTickCount()
addEventHandler ( "onClientRender", root, dxCreatePodium )
addEventHandler ( "onClientRender", root, cameraMovement )
setTimer (
function ( )
destroyPodium()
end
,4000,1)
setTimer (
function ( )
destroyDraws()
end
,4500,1)
end
addEvent( "onWins", true )
addEventHandler( "onWins", getRootElement(), createPodium )
function cameraMovement()
local now = getTickCount()
local endTime = camStart + 5000
local elapsedTime = now - camStart
local duration = endTime - camStart
local progress = elapsedTime / duration
local x, y, z = interpolateBetween ( camX, camY, camZ, tocamX, tocamY, tocamZ, progress, "OutBack")
setCameraMatrix(x, y, z, 1281.5999755859, -830, 82.900001525879)
end
function dxCreatePodium ()
----------------WINNER
local x,y,z = getElementPosition(firstCar)
z = z + 2
local distance = getDistanceBetweenPoints3D( x, y, z, 1271, -845, 91)
local sx, sy = getScreenFromWorldPosition(x,y,z)
if sx then
local scale = 1/(0.3 * (distance / 120))
local w = dxGetTextWidth(firstName, 0.5 * 2 * 0.3, "default-bold")
dxDrawText( firstName, sx - w, sy - scale, sx - w, sy, tocolor(255,255,255,255), 2, "default-bold", "left", "bottom", false, false, false, true )
end
----------------SECOND
local x,y,z = getElementPosition(secondCar)
z = z + 2
local distance = getDistanceBetweenPoints3D( x, y, z, 1271, -845, 91)
local sx, sy = getScreenFromWorldPosition(x,y,z)
if sx then
local scale = 1/(0.3 * (distance / 120))
local w = dxGetTextWidth(secondName, 0.5 * 2 * 0.3, "default-bold")
dxDrawText( secondName, sx - w, sy - scale, sx - w, sy, tocolor(255,255,255,255), 2, "default-bold", "left", "bottom", false, false, false, true )
end
----------------THIRD
local x,y,z = getElementPosition(thirdCar)
z = z + 2
local distance = getDistanceBetweenPoints3D( x, y, z, 1271, -845, 91)
local sx, sy = getScreenFromWorldPosition(x,y,z)
if sx then
local scale = 1/(0.3 * (distance / 120))
local w = dxGetTextWidth(thirdName, 0.5 * 2 * 0.3, "default-bold")
dxDrawText( thirdName, sx - w, sy - scale, sx - w, sy, tocolor(255,255,255,255), 2, "default-bold", "left", "bottom", false, false, false, true )
end
end
function destroyDraws()
removeEventHandler ( "onClientRender", root, dxCreatePodium )
removeEventHandler ( "onClientRender", root, cameraMovement )
end
function destroyPodium()
destroyElement(firstCar)
destroyElement(secondCar)
destroyElement(thirdCar)
end
Destruction Derby:
DestructionDerby = setmetatable({}, RaceMode)
DestructionDerby.__index = DestructionDerby
DestructionDerby:register('Destruction derby')
function DestructionDerby:isApplicable()
return not RaceMode.checkpointsExist() and RaceMode.getMapOption('respawn') == 'none'
end
function DestructionDerby:getPlayerRank(player)
return #getActivePlayers()
end
-- Copy of old updateRank
function DestructionDerby:updateRanks()
for i,player in ipairs(g_Players) do
if not isPlayerFinished(player) then
local rank = self:getPlayerRank(player)
if not rank or rank > 0 then
setElementData(player, 'race rank', rank)
end
end
end
-- Make text look good at the start
if not self.running then
for i,player in ipairs(g_Players) do
setElementData(player, 'race rank', '' )
setElementData(player, 'checkpoint', '' )
end
end
end
function DestructionDerby:onPlayerWasted(player)
if isActivePlayer(player) then
self:handleFinishActivePlayer(player)
if getActivePlayerCount() <= 0 then
RaceMode.endMap()
else
TimerManager.createTimerFor("map",player):setTimer(clientCall, 3000, 1, player, 'Spectate.start', 'auto')
end
end
RaceMode.setPlayerIsFinished(player)
showBlipsAttachedTo(player, false)
end
function DestructionDerby:onPlayerQuit(player)
if isActivePlayer(player) then
self:handleFinishActivePlayer(player)
if getActivePlayerCount() <= 0 then
RaceMode.endMap()
end
end
end
function DestructionDerby:handleFinishActivePlayer(player)
-- Update ranking board for player being removed
if not self.rankingBoard then
self.rankingBoard = RankingBoard:create()
self.rankingBoard:setDirection( 'up', getActivePlayerCount() )
end
local timePassed = self:getTimePassed()
self.rankingBoard:add(player, timePassed)
-- Do remove
finishActivePlayer(player)
-- Update ranking board if one player left
local activePlayers = getActivePlayers()
if #activePlayers == 1 then
self.rankingBoard:add(activePlayers[1], timePassed)
triggerClientEvent ( "onWins", getRootElement(), activePlayers[1] )
end
end
------------------------------------------------------------
-- activePlayerList stuff
--
function isActivePlayer( player )
return table.find( g_CurrentRaceMode.activePlayerList, player )
end
function addActivePlayer( player )
table.insertUnique( g_CurrentRaceMode.activePlayerList, player )
end
function removeActivePlayer( player )
table.removevalue( g_CurrentRaceMode.activePlayerList, player )
end
function finishActivePlayer( player )
table.removevalue( g_CurrentRaceMode.activePlayerList, player )
table.insertUnique( g_CurrentRaceMode.finishedPlayerList, _getPlayerName(player) )
end
function getFinishedPlayerCount()
return #g_CurrentRaceMode.finishedPlayerList
end
function getActivePlayerCount()
return #g_CurrentRaceMode.activePlayerList
end
function getActivePlayers()
return g_CurrentRaceMode.activePlayerList
end
Error:
race/modes/Client.lua :25: Attempt To Index Local 'podiumFirst' (a nil value)
How To FIx iT?