Jump to content

[HELP] Ayuda Con Este Problema


Recommended Posts

Hola Pues Queria Pedirles Ayuda Ya Que Soy Nuevo En Esto Y Quiero Aprender Arreglarlo. Bueno Voy a Tema

Busco un Script que al morir en DM Sigue el map Asta que muera o llege a hunter Y Al llegar Al Hunter De un Tanto de Dinero como 1000.

Pero cuando en DD Quede 1 Termine el Map y Le De Dinero Como 500.

Yo Arregle Eso Pero En DD Queda 1 Y no Termina el Map. tiene Que Dar Enter Y no Da Dinero al LLegar a Hunter O Quedar 1 :(:(

Por favor Ayudenme con Este Problema

Link to comment

Mira por el asunto de cuando llegue al hunter termine el map tienes que editar el destructionderby.lua que esta en la carpeta modes de tu race, y poner una condición con esto:

getElementModel(player) == 425 

por lo del dd tienes que editar el mismo lua pero tendrás que usar una función como esta para que el auto b funcione detectando que mapa estas jugando:

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 

Y por ultimo con respecto al asunto de los dineros, no tiene caso ponerle a tu race dinero si no lo usaras en nada, asi que te recomiendo que te consigas o hagas un userpanel. Si te consigues un userpanel lo mas probable es que venga con las funciones de dar dinero por lo que tu pedías así que no sera mucho problema ese tema.

Link to comment

@Bc Este Es el DestructionDerby.Lua Que Tengo Actualmente

Abrir Spoiler:

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 DestructionDerby:onPlayerWasted(player) 
    if isActivePlayer(player) then 
        self:handleFinishActivePlayer(player) 
        if 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() <= 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() 
    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]) .. ' Ha Ganado!', 255, 153, 100) 
        triggerEvent( "onPlayerWinDD",activePlayers[1] ) 
    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 
  
  

Link to comment

Reemplaza lo que tienes por esto deveria funcionar.

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 
  
autoB = 1 
  
function DestructionDerby:onPlayerWasted(player) 
    if isActivePlayer(player) then 
        self:handleFinishActivePlayer(player) 
        if getActivePlayerCount() < autoB then 
            RaceMode.endMap() 
        else 
        if getActivePlayerCount() <= autoB and getElementModel(player) == 425 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() < autoB then 
            RaceMode.endMap() 
        end 
        if getActivePlayerCount() <= autoB and getElementModel(player) == 425 then 
            RaceMode.endMap() 
        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 
    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]) .. ' Ha Ganado!', 255, 153, 100) 
        triggerEvent( "onPlayerWinDD",activePlayers[1] ) 
    end 
end 
  
---------------------- 
-- Automated auto-B 
---------------------- 
  
addEvent("onMapStarting") 
addEventHandler("onMapStarting", getRootElement(), 
function(mapInfo, mapOptions, gameOptions) 
    if (ismapDM(mapInfo.name) == 1) then 
        autoB = 1 
    elseif (ismapDM(mapInfo.name) == 2) then 
        autoB = 2 
    elseif (ismapDM(mapInfo.name) == 3) then 
        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 

Link to comment

@Bc#. Me Tira Un Error, No me Carga el map ni nada.

Error:

[2013-05-28 12:30:37] SCRIPT ERROR: race\modes\destructionderby.lua:156: 'end' expected (to close 'function' at line 35) near '' 
  
[2013-05-28 12:30:37] WARNING: Loading script failed: race\modes\destructionderby.lua:156: 'end' expected (to close 'function' at line 35) near '' 

Linea:

(to close 'function' at line 35) near '' (?)

function DestructionDerby:onPlayerWasted(player) 
    if isActivePlayer(player) then 
        self:handleFinishActivePlayer(player) 
        if getActivePlayerCount() < autoB then 
            RaceMode.endMap() 
        else 
        if getActivePlayerCount() <= autoB and getElementModel(player) == 425 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 

==> Ultima Linea <==

'end' expected

156: end 

Code completo:

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 
  
autoB = 1 
  
function DestructionDerby:onPlayerWasted(player) 
    if isActivePlayer(player) then 
        self:handleFinishActivePlayer(player) 
        if getActivePlayerCount() < autoB then 
            RaceMode.endMap() 
        else 
        if getActivePlayerCount() <= autoB and getElementModel(player) == 425 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() < autoB then 
            RaceMode.endMap() 
        end 
        if getActivePlayerCount() <= autoB and getElementModel(player) == 425 then 
            RaceMode.endMap() 
        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 
    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]) .. ' Ha Ganado!', 255, 153, 100) 
        triggerEvent( "onPlayerWinDD",activePlayers[1] ) 
    end 
end 
  
---------------------- 
-- Automated auto-B 
---------------------- 
  
addEvent("onMapStarting") 
addEventHandler("onMapStarting", getRootElement(), 
function(mapInfo, mapOptions, gameOptions) 
    if (ismapDM(mapInfo.name) == 1) then 
        autoB = 1 
    elseif (ismapDM(mapInfo.name) == 2) then 
        autoB = 2 
    elseif (ismapDM(mapInfo.name) == 3) then 
        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 

Link to comment
function DestructionDerby:onPlayerWasted(player) 
    if isActivePlayer(player) then 
        self:handleFinishActivePlayer(player) 
        if getActivePlayerCount() < autoB then 
            RaceMode.endMap() 
        else 
        if getActivePlayerCount() <= autoB and getElementModel(player) == 425 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 
end 

Link to comment

Prueba con eso.

function DestructionDerby:onPlayerWasted(player) 
    if isActivePlayer(player) then 
        self:handleFinishActivePlayer(player) 
        if getActivePlayerCount() < autoB then 
            RaceMode.endMap() 
        end 
        if getActivePlayerCount() <= autoB and getElementModel(player) == 425 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 

Link to comment
  • Recently Browsing   0 members

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