SuleymanM Posted December 19, 2013 Share Posted December 19, 2013 (edited) 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 Edited December 20, 2013 by Guest Link to comment
Castillo Posted December 19, 2013 Share Posted December 19, 2013 And how should we know what you have to modify? Link to comment
SuleymanM Posted December 20, 2013 Author Share Posted December 20, 2013 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
..:D&G:.. Posted December 20, 2013 Share Posted December 20, 2013 How are we supposed to know what you need to modify if we haven't even know how the script looks like -.- Link to comment
h4x7o0r Posted December 26, 2013 Share Posted December 26, 2013 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
SuleymanM Posted December 28, 2013 Author Share Posted December 28, 2013 i added first quote to my destructionderby... but not function... what overwrite ?? -- if i add quote #1 and #2 to my destructionderby... not loading maps.. Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now