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