Matt Posted September 24, 2014 Share Posted September 24, 2014 Hola gente de MTA tengo otro problemita . 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 . 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 repito el race no setea mapas ni deja dar enter. Gracias de ante mano Link to comment
Recommended Posts