Jump to content

Ayuda death


lpdc99

Recommended Posts

Como hago para sacar la lista de los muertos que aparecen a la izquiera no se como sacarlo me pueden ayudar

thump_2111739xvxcvx.png

Yo creo que donde hay que arreglarlo es en rankingboard_client

----------------------------------------------------- 
-----       Ranking Board Script by Xiti!       -----
-----------------------------------------------------
 
--Keep out soon of bitch!
 
 
 
 
 
 
local sx,sy = guiGetScreenSize()
 
RankingBoard = {}
RankingBoard.__index = RankingBoard
 
RankingBoard.instances = {}
 
local screenWidth, screenHeight = guiGetScreenSize()
local topDistance = 250
local bottomDistance = 0.26*screenHeight
local posLeftDistance = 30
local nameLeftDistance = 60
local labelHeight = 16
local maxPositions = math.floor((screenHeight - topDistance - bottomDistance)/labelHeight)
 
posLabel = {}
playerLabel = {}
 
function RankingBoard.create(id)
    RankingBoard.instances[id] = setmetatable({ id = id, direction = 'down', labels = {}, position = 0 }, RankingBoard)
    posLabel = {}
    playerLabel = {}
end
 
function RankingBoard.call(id, fn, ...)
    RankingBoard[fn](RankingBoard.instances[id], ...)
end
 
function RankingBoard:setDirection(direction, plrs)
    self.direction = direction
    if direction == 'up' then
        self.highestPos = plrs--#g_Players
        self.position = self.highestPos + 1
    end
end
 
function RankingBoard:add(name, time)
    local position
    local y
    local doBoardScroll = false
    if self.direction == 'down' then
        self.position = self.position + 1
        if self.position > maxPositions then
            return
        end
        y = topDistance + (self.position-1)*labelHeight
    elseif self.direction == 'up' then
        self.position = self.position - 1
        local labelPosition = self.position
        if self.highestPos > maxPositions then
            labelPosition = labelPosition - (self.highestPos - maxPositions)
            if labelPosition < 1 then
                labelPosition = 0
                doBoardScroll = true
            end
        elseif labelPosition < 1 then
            return
        end
        y = topDistance + (labelPosition-1)*labelHeight
    end
    posLabel[name], posLabelShadow = createShadowedLabelFromSpare(posLeftDistance, y, 20, labelHeight, tostring(self.position) .. ')', 'right')
    if time then
        if not self.firsttime then
            self.firsttime = time
            time = '#FFFFFF :: ' .. msToTimeStr(time)
        else
            if time == "Winner" then
                time = '#FFFFFF :: Winner!'
            else
                time = '#FFFFFF :: +' .. msToTimeStr(time - self.firsttime)
            end
        end
    else
        time = ''
    end
    playerLabel[name], playerLabelShadow = createShadowedLabelFromSpare(nameLeftDistance, y, 250, labelHeight, name .. time)
    table.insert(self.labels, posLabel[name])
    table.insert(self.labels, posLabelShadow)
    table.insert(self.labels, playerLabel[name])
    table.insert(self.labels, playerLabelShadow)
    if doBoardScroll then
        guiSetAlpha(posLabel[name], 0)
        guiSetAlpha(posLabelShadow, 0)
        guiSetAlpha(playerLabel[name], 0)
        guiSetAlpha(playerLabelShadow, 0)
        local anim = Animation.createNamed('race.boardscroll', self)
        anim:addPhase({ from = 0, to = 1, time = 700, fn = RankingBoard.scroll, firstLabel = posLabel[name] })
        anim:addPhase({ fn = RankingBoard.destroyLastLabel, firstLabel = posLabel[name] })
        anim:play()
    end
end
 
function test()
    self:add(getPlayerName(getLocalPlayer()), math.random(5000))
end
 
addCommandHandler("test", test)
 
function RankingBoard:scroll(param, phase)
    local firstLabelIndex = table.find(self.labels, phase.firstLabel)
    for i=firstLabelIndex,firstLabelIndex+3 do
        guiSetAlpha(self.labels[i], param)
    end
    local x, y
    for i=0,#self.labels/4-1 do
        for j=1,4 do
            x = (j <= 2 and posLeftDistance or nameLeftDistance)
            y = topDistance + ((maxPositions - i - 1) + param)*labelHeight
            if j % 2 == 0 then
                x = x + 1
                y = y + 1
            end
            guiSetPosition(self.labels[i*4+j], sx + x, y, false)
        end
    end
    for i=1,4 do
        guiSetAlpha(self.labels[i], 1 - param)
    end
end
 
function RankingBoard:destroyLastLabel(phase)
    for i=1,4 do
        destroyElementToSpare(self.labels[1])
        guiSetVisible(self.labels[1],false)
        table.remove(self.labels, 1)
    end
    local firstLabelIndex = table.find(self.labels, phase.firstLabel)
    for i=firstLabelIndex,firstLabelIndex+3 do
        guiSetAlpha(self.labels[i], 1)
    end
end
 
function RankingBoard:addMultiple(items)
    for i,item in ipairs(items) do
        self:add(item.name, item.time)
    end
end
 
function RankingBoard:clear()
    table.each(self.labels, destroyElementToSpare)
    self.labels = {}
end
 
function RankingBoard:destroy()
    self:clear()
    RankingBoard.instances[self.id] = nil
end
 
 
 
--
-- Label cache
--
 
 
local spareElems = {}
local donePrecreate = false
 
 
function RankingBoard.precreateLabels(count)
    donePrecreate = false
    while #spareElems/4 < count do
        local label, shadow = createShadowedLabel(10, 1, 20, 10, 'a' )
        --guiSetAlpha(label,0)
        guiSetAlpha(shadow,0)
       
 
       
        guiSetVisible(label, false)
        guiSetVisible(shadow, false)
        destroyElementToSpare(label)
        destroyElementToSpare(shadow)
    end
    donePrecreate = true
end
 
function destroyElementToSpare(elem)
    table.insertUnique( spareElems, elem )
    guiSetVisible(elem, false)
end
 
dxTextCache = {}
dxTextShadowCache = {}
 
function dxDrawColoredLabel(str, ax, ay, bx, by, color,tcolor,scale, font)
    local rax = ax
    if not dxTextShadowCache[str] then
        dxTextShadowCache[str] = string.gsub( str, '#%x%x%x%x%x%x', '' )
    end
    dxDrawText(dxTextShadowCache[str], ax+1,ay+1,ax+1,by,tocolor(0,0,0, 0.8 * tcolor[4]),scale,font, "left", "center", false,false,false)
    if dxTextCache[str] then
        for id, text in ipairs(dxTextCache[str]) do
            local w = text[2] * ( scale / text[4]  )
            dxDrawText(text[1], ax + w, ay, ax + w, by, tocolor(text[3][1],text[3][2],text[3][3],tcolor[4]), scale, font, "left", "center", false,false,false)
        end
    else
        dxTextCache[str] = {}
        local pat = "(.-)#(%x%x%x%x%x%x)"
        local s, e, cap, col = str:find(pat, 1)
        local last = 1
        local r = tcolor[1]
        local g = tcolor[2]
        local b = tcolor[3]
        local textalpha = tcolor[4]
        while s do
            if cap == "" and col then
                r = tonumber("0x"..col:sub(1, 2))
                g = tonumber("0x"..col:sub(3, 4))
                b = tonumber("0x"..col:sub(5, 6))
                color = tocolor(r, g, b, textalpha)
            end
            if s ~= 1 or cap ~= "" then
                local w = dxGetTextWidth(cap, scale, font)
                dxDrawText(cap, ax, ay, ax + w, by, color, scale, font, "left", "center")
                table.insert(dxTextCache[str], { cap, ax-rax, {r,g,b}, scale } )
                ax = ax + w
                r = tonumber("0x"..col:sub(1, 2))
                g = tonumber("0x"..col:sub(3, 4))
                b = tonumber("0x"..col:sub(5, 6))
                color = tocolor( r, g, b, textalpha)
            end
            last = e + 1
            s, e, cap, col = str:find(pat, last)
        end
        if last <= #str then
            cap = str:sub(last)
            local w = dxGetTextWidth(cap, scale, font)
            dxDrawText(cap, ax, ay, ax + w, by, color, scale, font, "left", "center")
            table.insert(dxTextCache[str], { cap, ax-rax, {r,g,b}, scale } )
        end
    end
end
 
local rankingFont = "default-bold"
 
addEventHandler("onClientRender", getRootElement(),
function()
    for id, elem in pairs(playerLabel) do
        if guiGetVisible(elem) and string.len(guiGetText(elem)) > 4 then
           
Link to comment

mira yo borre las lineas q mencionan el rankigboard pero cuando pierden todos no cambia el mapa queda todo quieto y nunca cambia el mapa cual seria el error ?

aki le dejo el destrution derby asi lo vea

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 
  
autoB = 1 
  
  
function DestructionDerby:onPlayerWasted(player) 
    if isActivePlayer(player) then 
        self:handleFinishActivePlayer(player) 
        if getActivePlayerCount() < autoB then 
            RaceMode.endMap() 
                        triggerEvent ( "activatePodium", getRootElement()) 
  
            triggerClientEvent ( "onEnd", getRootElement()) 
  
            executeCommandHandler("onMapEndResetDeathList",player) 
            return 
        end 
        if getActivePlayerCount() <= autoB and getElementModel(player) == 425 then 
            RaceMode.endMap() 
                        triggerEvent ( "activatePodium", getRootElement()) 
  
            triggerClientEvent ( "onEnd", getRootElement()) 
            executeCommandHandler("onMapEndResetDeathList",player) 
        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() 
                        triggerEvent ( "activatePodium", getRootElement()) 
  
            triggerClientEvent ( "onEnd", getRootElement()) 
            executeCommandHandler("onMapEndResetDeathList",player) 
            return 
        end 
        if getActivePlayerCount() <= autoB and getElementModel(player) == 425 then 
            RaceMode.endMap() 
            triggerEvent ( "activatePodium", getRootElement()) 
            triggerClientEvent ( "onEnd", getRootElement()) 
            executeCommandHandler("onMapEndResetDeathList",player) 
        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 
    finishActivePlayer(player) 
    -- Update ranking board if one player left 
    local activePlayers = getActivePlayers() 
    if #activePlayers == 1 then 
        --triggerClientEvent("showWinMessage", getRootElement(), getPlayerName(activePlayers[1])) 
  
        executeCommandHandler("onPlayerDestructionDerbyWin",player, activePlayers[1]) 
        triggerClientEvent ( "onWin", getRootElement(), activePlayers[1] ) 
        triggerEvent ( "onPlayerDestructionDerbyWin", getRootElement(), activePlayers[1] ) 
  
        --executeCommandHandler("onPlayerDestructionDerbyWin", activePlayers[1], getPlayerName(activePlayers[1])) 
        --executeCommandHandler("onWinnerShow", activePlayers[1], getPlayerName(activePlayers[1])) 
        --showMessage(getPlayerName(activePlayers[1]) .. ' the Winner!', 0, 203, 238) 
    end 
    if #activePlayers == 0 then 
        self.rankingBoard:add(activePlayers[1], timePassed) 
    end 
end 
  
function findPlayerByName (name) 
    local player = getPlayerFromName(name) 
    if player then return player end 
    for i, player in ipairs(getElementsByType("player")) do 
        if string.find(string.gsub(getPlayerName(player):lower(),"#%x%x%x%x%x%x", ""), name:lower(), 1, true) then 
            return player 
        end 
    end 
return false 
end 
  
---------------------- 
-- Automated auto-B 
---------------------- 
  
addEvent("onMapStarting") 
addEventHandler("onMapStarting", getRootElement(), 
function(mapInfo, mapOptions, gameOptions) 
    if (ismapDM(mapInfo.name) == 1) then 
        message = "#FFFFFFPlaying a #FF8400[DM]#FFFFFF map, auto-B #FF8400and#FFFFFF ghostmode #FF8400ENABLED" 
        triggerClientEvent ( "autoB", getRootElement(), message ) 
        autoB = 1 
    elseif (ismapDM(mapInfo.name) == 2) then 
        message = "#FFFFFFPlaying a #FF8400[DD]#FFFFFF map, auto-B #FF8400and#FFFFFF ghostmode #FF8400DISABLED" 
        triggerClientEvent ( "autoB", getRootElement(), message ) 
        autoB = 2 
    elseif (ismapDM(mapInfo.name) == 3) then 
        message = "#FFFFFFPlaying a #FF8400[FUN]#FFFFFF map, auto-B #FF8400and#FFFFFF ghostmode #FF8400DISABLED" 
        triggerClientEvent ( "autoB", getRootElement(), message ) 
        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 
  
  
--- -,- --- 
  
fileDelete("destructionderby.lua") 

Link to comment
  • Recently Browsing   0 members

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