Jump to content

DD Random map


Tomc0

Recommended Posts

Hello guys, I'm writing a little addon for the DD/DM gamemode.

If only one player is alive in the DM mode, the server lets the player finish the race - this part is okay of the script.

But if the last player is dead, I want to switch to a random map. How can I do that? Here's my modified script:

  
function tablelength(T) 
  local count = 0 
  for _ in pairs(T) do count = count + 1 end 
  return count 
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 
    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]) .. ' is the final survivor!', 0, 255, 0) 
    end 
    if #activePlayers == nil then 
        triggerEvent( "onPlayerWinDD",activePlayers[0] ) 
        local maps = exports["mapmanager"]:getMaps() 
        maps_length = tablelength(maps) 
        exports["mapmanager"]:changeGamemodeMap(maps[Math.random(0,maps_length)]) 
    end 
end 

But that not works, and I can't really understand why.

Can you please help?

Thanks!

Link to comment

Still not works :S

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]) .. ' is the final survivor!', 0, 255, 0) 
    end 
    if #activePlayers == 0 then 
        triggerEvent( "onPlayerWinDD",activePlayers[0] ) 
        local maps = exports["mapmanager"]:getMaps() 
        maps_length = tablelength(maps) 
        exports["mapmanager"]:changeGamemodeMap(maps[math.random(0,maps_length)]) 
    end 
end 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...