Jump to content

podium by Itoko (OT-Travelling)


SuleymanM

Recommended Posts

Hi all,

I have "NeS's Custom Winner Screen" by Itoko

What need to modify in modes/Destructionderby.lua to function?

-- destructionderby.lua

DestructionDerby = setmetatable({}, RaceMode) 
DestructionDerby.__index = DestructionDerby 
  
DestructionDerby:register('Destruction derby') 
  
function DestructionDerby:isApplicable() 
    return not RaceMode.checkpointsExist() 
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() <= 1 and (not g_GameOptions.autob or not isMapDM())) or (getActivePlayerCount() <= 0) 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() <= 1 and (not g_GameOptions.autob or not isMapDM())) or (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() 
    local rank = self:getPlayerRank(player) 
    self.rankingBoard:add(player, timePassed,rank) 
    -- Do remove 
    if rank == 1 then 
        triggerClientEvent("onServerWantShowCenterMessage",resourceRoot,"The winner is:",getPlayerNametagText(player)) 
    end 
    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, #activePlayers) 
        triggerEvent( "onPlayerWinDD",activePlayers[1] ) 
        local vehicle = getPedOccupiedVehicle(activePlayers[1]) 
        if vehicle then 
            local model = getElementModel(vehicle) 
            if model == 425 and g_GameOptions.autob then 
                RaceMode.endMap() 
            end 
        end 
    end 
end 
  
  
function detectHunterWhileAutoB(_,type,vehicleID) 
    if type == "vehiclechange" and vehicleID == 425 then 
        local activePlayers = getActivePlayers() 
        if g_GameOptions.autob and #activePlayers == 1 then 
            RaceMode.endMap() 
        end 
    end 
end 
addEvent("onPlayerPickUpRacePickup",true) 
addEventHandler("onPlayerPickUpRacePickup",getRootElement(),detectHunterWhileAutoB) 
  
  
------------------------------------------------------------ 
-- 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 
  
function isMapDM() 
    return string.find(g_MapInfo.name,"DM") 
end 
  
function isMapWithoutRespawn() 
    return string.find(g_MapInfo.name,"DM") or string.find(g_MapInfo.name,"DD") 
end 

lx08.png

Edited by Guest
Link to comment

bro , i have other race where function... perfectly..

And ... if i replace destructionderby.lua with that .. no function rankingboard and others..

-- destructionderby.lua (where function podium)

g_CurrentRaceMode = getMapName() 
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 endTheMap() 
    RaceMode.endMap() 
end 
  
function DestructionDerby:onPlayerWasted(player) 
    if isActivePlayer(player) then 
        self:handleFinishActivePlayer(player) 
        if getActivePlayerCount() <= 0 then 
            endTheMap() 
        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() <= 0 then 
            endTheMap() 
        end 
    end 
end 
  
function checkForHunter(number,sort,model) 
    if #getElementsByType("player") <= 0 then return end 
    local activePlayers = getActivePlayers() 
    if #activePlayers == 1 then 
        local vehicle = getPedOccupiedVehicle(activePlayers[1]) 
        if getElementModel(vehicle) == 425 then             setElementHealth(activePlayers[1],0)         
end 
    end 
end 
  
addEvent('onPlayerPickUpRacePickup',true) 
addEventHandler("onPlayerPickUpRacePickup",getRootElement(),checkForHunter) 
  
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 == 2 then 
        triggerClientEvent ( "savetag3",getRootElement(),_getPlayerName(player)) 
    end 
    if #activePlayers == 1 then 
        triggerClientEvent ( "savetag2",getRootElement(),_getPlayerName(player)) 
    end 
    if #activePlayers == 0 then 
        self.rankingBoard:add(activePlayers[1], timePassed) 
        triggerClientEvent ( "savetag",getRootElement(),_getPlayerName(player)) 
        triggerEvent("peds",getRootElement()) 
        --triggerEvent("onPlayerDestructionDerbyWin", getRootElement(), player) 
        --saveDeathPlayer(activePlayers[1]) 
        --addPodiumPlayer(activePlayers[1]) 
        local timeravviato = false 
        if timeravviato == false then 
            setTimer (checkForHunter , 100, 0, player ) 
            timeravviato = true 
        end 
    end 
     
    if #activePlayers == 1 then 
        --showMessage(getPlayerName(activePlayers[1]) .. ' pwned you all!', 171, 7, 7) 
triggerClientEvent ( "Winnertext", getRootElement(), activePlayers[1]  ) 
triggerEvent("onPlayerDestructionDerbyWin", getRootElement(), activePlayers[1]) 
  
        local car = getPedOccupiedVehicle(activePlayers[1]) 
        if car then 
            local model = getElementModel(car) 
            if model == 425 then 
                setElementHealth(activePlayers[1],0) 
            end 
        end 
    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() 
    if #getElementsByType("player") > 0 then 
    return g_CurrentRaceMode.activePlayerList 
    else 
        return false 
    end 
end 
  
  

Link to comment

use in your default destruction_derby.lua (add those lines):

  
function checkForHunter(number,sort,model) 
    if #getElementsByType("player") <= 0 then return end 
    local activePlayers = getActivePlayers() 
    if #activePlayers == 1 then 
        local vehicle = getPedOccupiedVehicle(activePlayers[1]) 
        if getElementModel(vehicle) == 425 then             setElementHealth(activePlayers[1],0)        
end 
    end 
end 
  

and also, right after this comment line, overwrite all with the following chunk:

  
  
  -- Update ranking board if one player left 
    local activePlayers = getActivePlayers() 
    if #activePlayers == 2 then 
        triggerClientEvent ( "savetag3",getRootElement(),_getPlayerName(player)) 
    end 
    if #activePlayers == 1 then 
        triggerClientEvent ( "savetag2",getRootElement(),_getPlayerName(player)) 
    end 
    if #activePlayers == 0 then 
        self.rankingBoard:add(activePlayers[1], timePassed) 
        triggerClientEvent ( "savetag",getRootElement(),_getPlayerName(player)) 
        triggerEvent("peds",getRootElement()) 
        --triggerEvent("onPlayerDestructionDerbyWin", getRootElement(), player) 
        --saveDeathPlayer(activePlayers[1]) 
        --addPodiumPlayer(activePlayers[1]) 
        local timeravviato = false 
        if timeravviato == false then 
            setTimer (checkForHunter , 100, 0, player ) 
            timeravviato = true 
        end 
    end 
    
    if #activePlayers == 1 then 
        --showMessage(getPlayerName(activePlayers[1]) .. ' pwned you all!', 171, 7, 7) 
triggerClientEvent ( "Winnertext", getRootElement(), activePlayers[1]  ) 
triggerEvent("onPlayerDestructionDerbyWin", getRootElement(), activePlayers[1]) 
  
        local car = getPedOccupiedVehicle(activePlayers[1]) 
        if car then 
            local model = getElementModel(car) 
            if model == 425 then 
                setElementHealth(activePlayers[1],0) 
            end 
        end 
    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...