Jump to content

[AYUDA]Problema Race


Matt

Recommended Posts

Hola gente de MTA tengo otro problemita :S.

Me gustaria añadir un podium al acabar una pista de DM tipo FFS y algunos servidores mas que ya tienen.

El script lo saque de la comunidad pero al añadir lo que tenia que añadir al destructionderby.lua no puedo dar enter ni setea otros mapas :S.

Aqui esta lo que edite y como lo puse:

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 #activePlayers == 2 then 
triggerClientEvent ( "SaveName3",getRootElement(),_getPlayerName(player)) 
end 
if #activePlayers == 1 then 
triggerClientEvent ( "SaveName2",getRootElement(),_getPlayerName(player)) 
end 
if #activePlayers == 0 then 
triggerClientEvent ( "SaveName",getRootElement(),_getPlayerName(player)) 
triggerEvent("createPeds",getRootElement()) 
end 
        if getMapDM() then 
            if getActivePlayerCount() <= 0 then 
                triggerClientEvent ( "showWinMessage", getRootElement()) 
                RaceMode.endMap() 
            else 
                TimerManager.createTimerFor("map",player):setTimer(clientCall, 2000, 1, player, 'Spectate.start', 'auto') 
            end 
            local activePlayers = getActivePlayers() 
            if getActivePlayerCount() == 1 then 
                if getElementModel(getPedOccupiedVehicle(activePlayers[1])) == 425 then 
                    setElementHealth(activePlayers[1],0) 
                end 
            end 
        else 
            if getActivePlayerCount() <= 1 then 
                triggerClientEvent ( "showWinMessage", getRootElement()) 
                RaceMode.endMap() 
            else 
                TimerManager.createTimerFor("map",player):setTimer(clientCall, 2000, 1, player, 'Spectate.start', 'auto') 
            end 
        end 
    end 
    RaceMode.setPlayerIsFinished(player) 
    showBlipsAttachedTo(player, false) 
end 
  
function DestructionDerby:onPlayerQuit(player) 
    if isActivePlayer(player) then 
        self:handleFinishActivePlayer(player) 
        if getMapDM() then 
            if getActivePlayerCount() <= 0 then 
                RaceMode.endMap() 
            end 
        else 
            if getActivePlayerCount() <= 1 then 
                RaceMode.endMap() 
            end 
        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 
finishActivePlayer(player) 
-- Update ranking board if one player left 
  
if #activePlayers == 1 then 
self.rankingBoard:add(activePlayers[1], timePassed) 
triggerClientEvent ( "onPlayerWin", getRootElement(), activePlayers[1] ) 
end 
--PODIUM SCRIPT 
if #activePlayers == 2 then 
triggerClientEvent ( "SaveName3",getRootElement(),_getPlayerName(player)) 
end 
if #activePlayers == 1 then 
triggerClientEvent ( "SaveName2",getRootElement(),_getPlayerName(player)) 
end 
if #activePlayers == 0 then 
triggerClientEvent ( "SaveName",getRootElement(),_getPlayerName(player)) 
triggerEvent("createPeds",getRootElement()) 
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 
  
function getMapDM() 
    local getMapName = g_MapInfo.name 
    if string.find(getMapName, "[DM]", 1, true) then 
        return true 
    else  
        return false 
    end 
end 

Client del resource de la comunidad:

------------------------------------------------------------------------------------------------------ 
-- * @Author          Pun1sh3r 
-- * @Copyright       2011-2014 by Pun1sh3r 
------------------------------------------------------------------------------------------------------ 
  
WinnerName1 = nil 
WinnerCar1 = nil 
---------------------- 
WinnerName2 = nil 
WinnerCar2 = nil 
---------------------- 
WinnerName3 = nil 
WinnerCar3 = nil 
  
------------------------------------- 
  
function P_PlayerName1(name) 
    WinnerName1 = name 
end 
addEvent("SaveName1",true) 
addEventHandler("SaveName1",getRootElement(),P_PlayerName1) 
  
function P_PlayerName2(name) 
    WinnerName2 = name 
end 
addEvent("SaveName2",true) 
addEventHandler("SaveName2",getRootElement(),P_PlayerName2) 
  
function P_PlayerName3(name) 
    WinnerName3 = name 
end 
addEvent("SaveName3",true) 
addEventHandler("SaveName3",getRootElement(),P_PlayerName3) 
  
------------------------------------- 
  
function P_startPeds(Ped) 
    setTimer(function()  
        local randomHyd = math.random (1,4) 
        if randomHyd == 1 then 
            setPedControlState(Ped,"special_control_left",true)  
            setPedControlState(Ped,"special_control_right",false) 
            setPedControlState(Ped,"special_control_up",false) 
            setPedControlState(Ped,"special_control_down",false) 
        elseif randomHyd == 2 then 
            setPedControlState(Ped,"special_control_right",true) 
            setPedControlState(Ped,"special_control_left",false) 
            setPedControlState(Ped,"special_control_up",false) 
            setPedControlState(Ped,"special_control_down",false) 
        elseif randomHyd == 3 then 
            setPedControlState(Ped,"special_control_down",true) 
            setPedControlState(Ped,"special_control_left",false)  
            setPedControlState(Ped,"special_control_right",false) 
            setPedControlState(Ped,"special_control_up",false) 
        elseif randomHyd == 4 then 
            setPedControlState(Ped,"special_control_up",true) 
            setPedControlState(Ped,"special_control_left",false)  
            setPedControlState(Ped,"special_control_right",false) 
            setPedControlState(Ped,"special_control_down",false) 
        end 
    end,300,22) 
     
    WinnerCar1 = getPedOccupiedVehicle(Ped) 
    P_startfollow(Ped) 
end 
addEvent( "podiumDrivePed1", true ) 
addEventHandler( "podiumDrivePed1", getRootElement(), P_startPeds) 
  
function P_startPed2(Ped) 
    setPedControlState(Ped,"accelerate",true) 
    setPedControlState(Ped,"brake_reverse",true) 
    setTimer(function ()  
        setPedControlState(Ped,"accelerate",false)  
        setPedControlState(Ped,"brake_reverse",false)  
        setPedControlState(Ped,"vehicle_left",false) 
        setPedControlState(Ped,"vehicle_right",false)  
    end,7900,1) 
     
    local randomHyd = 1 
    setTimer(function()  
        if randomHyd == 2 then 
            setPedControlState(Ped,"vehicle_left",true) 
            setPedControlState(Ped,"vehicle_right",false) 
            randomHyd = 1 
        elseif randomHyd == 1 then 
            setPedControlState(Ped,"vehicle_left",false) 
            setPedControlState(Ped,"vehicle_right",true) 
            randomHyd = 2 
        end 
    end,980,8) 
    WinnerCar2 = getPedOccupiedVehicle(Ped) 
end 
addEvent( "podiumDrivePed2", true ) 
addEventHandler( "podiumDrivePed2", getRootElement(), P_startPed2) 
  
function P_startPed3(Ped) 
    setPedControlState(Ped,"special_control_down",true) 
    WinnerCar3 = getPedOccupiedVehicle(Ped) 
end 
addEvent( "podiumDrivePed3", true ) 
addEventHandler( "podiumDrivePed3", getRootElement(), P_startPed3) 
  
------------------------------------- 
  
function P_startfollow() 
    setTimer(function() P_stopfollow() end, 7900, 1) 
    local x, y, z = getElementPosition(WinnerCar1) 
    setCameraMatrix(x+15, y, z+7, x, y, z) 
    addEventHandler("onClientRender",getRootElement(),P_drawWinnerNames) 
end 
  
function P_stopfollow() 
    removeEventHandler("onClientRender",getRootElement(),P_drawWinnerNames) 
    ---------------------- 
    WinnerName1 = nil 
    WinnerCar1 = nil 
    ---------------------- 
    WinnerName2 = nil 
    WinnerCar2 = nil 
    ---------------------- 
    WinnerName3 = nil 
    WinnerCar3 = nil 
end 
  
  
-- NAMETAG WINNER 
local x, y = guiGetScreenSize() 
function P_drawWinnerNames() 
    if WinnerCar1 ~= nil then 
        local x,y,z = getElementPosition(WinnerCar1) 
        local px,py,pz = x+5, y+10, z+2 
        local distance = getDistanceBetweenPoints3D ( x,y,z,px,py,pz ) 
        if distance <= 150 then 
            local sx,sy = getScreenFromWorldPosition ( x, y, z+0.55, 0.06 ) 
            if not sx then return end 
            local scale = 1/(0.3 * (distance / 150)) 
            if WinnerName1 ~= nil then 
                dxDrawText ("#CDD0D11st", sx-40, sy - 50, sx, sy - 50, tocolor(0, 0, 0, 255), math.min ( 0.4*(20/distance)*1.4,4), "default-bold", "center", "bottom", false, false, false, true) 
                dxDrawText ("#CDD0D11st", sx-40, sy - 50, sx, sy - 50, tocolor(255, 255, 255, 255), math.min ( 0.4*(20/distance)*1.4,4), "default-bold", "center", "bottom", false, false, false, true) 
                dxDrawText (WinnerName1, sx-20, sy - 50, sx, sy - 30, tocolor(0, 0, 0, 255), math.min ( 0.4*(20/distance)*1.4,4), "default-bold", "center", "bottom", false, false, false, true) 
                dxDrawText (WinnerName1, sx-20, sy - 50, sx, sy - 30, tocolor(255, 255, 255, 255), math.min ( 0.4*(20/distance)*1.4,4), "default-bold", "center", "bottom", false, false, false, true) 
            end 
        end 
    end 
    if WinnerCar2 ~= nil then 
        local x,y,z = getElementPosition(WinnerCar2) 
        local px,py,pz = x+5, y+10, z+2 
        local distance = getDistanceBetweenPoints3D ( x,y,z,px,py,pz ) 
        if distance <= 150 then 
            local sx,sy = getScreenFromWorldPosition ( x, y, z+0.55, 0.06 ) 
            if not sx then return end 
            local scale = 1/(0.3 * (distance / 150)) 
            if WinnerName2 ~= nil then 
                dxDrawText ("#CDD0D12nd", sx-40, sy - 50, sx, sy - 50, tocolor(0, 0, 0, 255), math.min ( 0.4*(20/distance)*1.4,4), "default-bold", "center", "bottom", false, false, false, true) 
                dxDrawText ("#CDD0D12nd", sx-40, sy - 50, sx, sy - 50, tocolor(255, 255, 255, 255), math.min ( 0.4*(20/distance)*1.4,4), "default-bold", "center", "bottom", false, false, false, true) 
  
                dxDrawText (WinnerName2, sx-20, sy - 50, sx, sy - 30, tocolor(0, 0, 0, 255), math.min ( 0.4*(20/distance)*1.4,4), "default-bold", "center", "bottom", false, false, false, true) 
                dxDrawText (WinnerName2, sx-20, sy - 50, sx, sy - 30, tocolor(255, 255, 255, 255), math.min ( 0.4*(20/distance)*1.4,4), "default-bold", "center", "bottom", false, false, false, true) 
            end 
        end 
    end 
    if WinnerCar3 ~= nil then 
        local x,y,z = getElementPosition(WinnerCar3) 
        local px,py,pz = x+5, y+10, z+2 
        local distance = getDistanceBetweenPoints3D ( x,y,z,px,py,pz ) 
        if distance <= 150 then 
            local sx,sy = getScreenFromWorldPosition ( x, y, z+0.55, 0.06 ) 
            if not sx then return end 
            local scale = 1/(0.3 * (distance / 150)) 
            if WinnerName3 ~= nil then 
                dxDrawText ("#CDD0D13rd", sx-40, sy - 50, sx, sy - 50, tocolor(0, 0, 0, 255), math.min ( 0.4*(20/distance)*1.4,4), "default-bold", "center", "bottom", false, false, false, true) 
                dxDrawText ("#CDD0D13rd", sx-40, sy - 50, sx, sy - 50, tocolor(255, 255, 255, 255), math.min ( 0.4*(20/distance)*1.4,4), "default-bold", "center", "bottom", false, false, false, true) 
                dxDrawText (WinnerName3, sx-20, sy - 50, sx, sy - 30, tocolor(0, 0, 0, 255), math.min ( 0.4*(20/distance)*1.4,4), "default-bold", "center", "bottom", false, false, false, true) 
                dxDrawText (WinnerName3, sx-20, sy - 50, sx, sy - 30, tocolor(255, 255, 255, 255), math.min ( 0.4*(20/distance)*1.4,4), "default-bold", "center", "bottom", false, false, false, true) 
            end 
        end 
    end 
end 

Server:

------------------------------------------------------------------------------------------------------ 
-- * @Author          Pun1sh3r 
-- * @Copyright       2011-2014 by Pun1sh3r 
------------------------------------------------------------------------------------------------------ 
  
function startPodium()  
    outputDebugString("Podium resource successfully started.") 
end 
addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), startPodium) 
  
------------------------------------- 
--DM1 Podium  
local P_Ped1 = nil 
local P_Vehicle1 = nil 
----- 
local P_Ped2 = nil 
local P_Vehicle2 = nil 
----- 
local P_Ped3 = nil 
local P_Vehicle3 = nil 
----- 
local P_BitchPed1 = nil 
local P_BitchPed2 = nil 
local P_BitchPed3 = nil 
local P_BitchPed4 = nil 
----- 
local P_WankPed1 = nil 
  
------------------------ 
  
function createPodium2() 
    P_Ped1 = createPed (29, 2174.9, 1678.5, 25.2) 
    P_Vehicle1 = createVehicle (536,2174.9, 1680.5, 20.2, 0, 0, 284) 
    addVehicleUpgrade ( P_Vehicle1, 1087 ) 
    warpPedIntoVehicle ( P_Ped1, P_Vehicle1 )   
    ------------------------------------------------------------------------------------------------ 
    P_Ped2 = createPed (22,2170.6, 1685.2, 25.2) 
    P_Vehicle2 = createVehicle (536,2170.6, 1685.2, 20.2, 0, 0, 284) 
    addVehicleUpgrade ( P_Vehicle2, 1087 ) 
    warpPedIntoVehicle ( P_Ped2, P_Vehicle2 )   
    ------------------------------------------------------------------------------------------------ 
    P_Ped3 = createPed (10, 2170.2, 1675.4, 25.2) 
    P_Vehicle3 = createVehicle (536, 2170.2, 1675.2, 20.2, 0, 0, 284) 
    addVehicleUpgrade ( P_Vehicle3, 1087 ) 
    warpPedIntoVehicle ( P_Ped3, P_Vehicle3 )  
  
    triggerClientEvent ("podiumDrivePed1", getRootElement(),P_Ped1) 
    triggerClientEvent ("podiumDrivePed2", getRootElement(),P_Ped2) 
    triggerClientEvent ("podiumDrivePed3", getRootElement(),P_Ped3) 
     
    P_BitchPed1 = createPed(63, 2174.3, 1676.1, 20.4, 250.006) 
    setPedAnimation(P_BitchPed1, "STRIP", "STR_Loop_B") 
    P_BitchPed2 = createPed(87, 2173.5, 1681.8, 20.4, 244.006) 
    setPedAnimation(P_BitchPed2, "STRIP", "STR_Loop_A") 
    P_BitchPed3 = createPed(92, 2168.8, 1679.9, 20.4, 254.006) 
    setPedAnimation(P_BitchPed3, "STRIP", "STR_Loop_C") 
    P_BitchPed4 = createPed(138,2173.5, 1671.9, 20.4, 292.003) 
    setPedAnimation(P_BitchPed4, "MISC", "bitchslap") 
    P_WankPed1 = createPed(135, 2176.9, 1684.0, 20.4, 226.004) 
    setPedAnimation(P_WankPed1, "PAULNMAC", "wank_loop") 
    setTimer(function() DM1_destroyPodium2() end, 8000, 1) 
end 
addEvent( "createPeds", true ) 
addEventHandler( "createPeds", getRootElement(), createPodium2 ) 
  
function DM1_destroyPodium2() 
    destroyElement(P_Vehicle1) 
    destroyElement(P_Ped1) 
    P_Ped1 = nil 
    P_Vehicle1 = nil 
    --------------------------- 
    destroyElement(P_Vehicle2) 
    destroyElement(P_Ped2) 
    P_Ped2 = nil 
    P_Vehicle2 = nil 
    --------------------------- 
    destroyElement(P_Vehicle3) 
    destroyElement(P_Ped3) 
    P_Ped3 = nil 
    P_Vehicle3 = nil 
    --------------------------- 
    destroyElement(P_BitchPed1) 
    destroyElement(P_BitchPed2) 
    destroyElement(P_BitchPed3) 
    destroyElement(P_BitchPed4) 
    destroyElement(P_WankPed1) 
    P_BitchPed1 = nil 
    P_BitchPed2 = nil 
    P_BitchPed3 = nil 
    P_BitchPed4 = nil 
    P_WankPed1 = nil 
end 
------------------------------------- 

Cual es el problema :S repito el race no setea mapas ni deja dar enter. Gracias de ante mano :D:)

Link to comment
  • Recently Browsing   0 members

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