@Bc#. Me Tira Un Error, No me Carga el map ni nada.
Error:
[2013-05-28 12:30:37] SCRIPT ERROR: race\modes\destructionderby.lua:156: 'end' expected (to close 'function' at line 35) near ''
[2013-05-28 12:30:37] WARNING: Loading script failed: race\modes\destructionderby.lua:156: 'end' expected (to close 'function' at line 35) near ''
Linea:
(to close 'function' at line 35) near '' (?)
function DestructionDerby:onPlayerWasted(player)
if isActivePlayer(player) then
self:handleFinishActivePlayer(player)
if getActivePlayerCount() < autoB then
RaceMode.endMap()
else
if getActivePlayerCount() <= autoB and getElementModel(player) == 425 then
RaceMode.endMap()
else
TimerManager.createTimerFor("map",player):setTimer(clientCall, 2000, 1, player, 'Spectate.start', 'auto')
end
end
RaceMode.setPlayerIsFinished(player)
showBlipsAttachedTo(player, false)
end
==> Ultima Linea <==
'end' expected
156: end
Code completo:
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
autoB = 1
function DestructionDerby:onPlayerWasted(player)
if isActivePlayer(player) then
self:handleFinishActivePlayer(player)
if getActivePlayerCount() < autoB then
RaceMode.endMap()
else
if getActivePlayerCount() <= autoB and getElementModel(player) == 425 then
RaceMode.endMap()
else
TimerManager.createTimerFor("map",player):setTimer(clientCall, 2000, 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() < autoB then
RaceMode.endMap()
end
if getActivePlayerCount() <= autoB and getElementModel(player) == 425 then
RaceMode.endMap()
end
end
end
function someoneReachedHunter(number, sort, model)
if sort == "vehiclechange" and model == 425 then
if getActivePlayerCount() <= autoB then
RaceMode.endMap()
triggerEvent ( "activatePodium", getRootElement())
executeCommandHandler("onMapEndResetDeathList",source)
triggerClientEvent ( "onEnd", getRootElement())
end
end
end
addEvent("onPlayerPickUpRacePickup",true)
addEventHandler("onPlayerPickUpRacePickup",getRootElement(),someoneReachedHunter)
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
local rank = self:getPlayerRank(player)
finishActivePlayer(player)
if rank and rank > 1 then
triggerEvent( "onPlayerFinishDD",player,tonumber( rank ) )
end
-- Update ranking board if one player left
local activePlayers = getActivePlayers()
if #activePlayers == 1 then
self.rankingBoard:add(activePlayers[1], timePassed)
showMessage(getPlayerName(activePlayers[1]) .. ' Ha Ganado!', 255, 153, 100)
triggerEvent( "onPlayerWinDD",activePlayers[1] )
end
end
----------------------
-- Automated auto-B
----------------------
addEvent("onMapStarting")
addEventHandler("onMapStarting", getRootElement(),
function(mapInfo, mapOptions, gameOptions)
if (ismapDM(mapInfo.name) == 1) then
autoB = 1
elseif (ismapDM(mapInfo.name) == 2) then
autoB = 2
elseif (ismapDM(mapInfo.name) == 3) then
autoB = 2
end
end)
function ismapDM(isim)
if string.find(isim, "[DM]", 1, true) then
return 1
elseif string.find(isim, "[DD]", 1,true) then
return 2
elseif string.find(isim, "[FUN]", 1,true) then
return 3
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