lpdc99 Posted August 20, 2013 Share Posted August 20, 2013 Como hago para sacar la lista de los muertos que aparecen a la izquiera no se como sacarlo me pueden ayudar 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
Daniel1zD Posted August 22, 2013 Share Posted August 22, 2013 Borrando o solo bloque alas con -- Link to comment
Bc# Posted August 22, 2013 Share Posted August 22, 2013 yo lo saco desde el destructionderby.lua, se borran todas las lineas donde se menciona rankingboard y listo. Link to comment
lpdc99 Posted August 25, 2013 Author Share Posted August 25, 2013 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
lpdc99 Posted August 25, 2013 Author Share Posted August 25, 2013 Buee algo hice bien solo me falta una cosa para terminar el problema q ahora solo me aparece el numero :c como lo saco pls ayudenme Link to comment
EstrategiaGTA Posted August 25, 2013 Share Posted August 25, 2013 Postea tu código editado. Link to comment
Recommended Posts