Jump to content

Recommended Posts

LO QUE PASA ES CUANDO SE EJECUTA CON EL TIME QUEDA DIRECTO EL TOXI NO SE COMO ASER Y ESCHO DE TODO NO ME FUNCIONA AYUDA PORFAVOR ESTA ES LA PAJINA PARA QUE LO CHEQUEN AYUDA https://community.multitheftauto.com/?p=resources&s=details&id=15445

----SERVER---

function math.round(number, decimals, method) -- De la wiki
    decimals = decimals or 0
    local factor = 10 ^ decimals
    if (method == "ceil" or method == "floor") then return math[method](number * factor) / factor
    else return tonumber(("%."..decimals.."f"):format(number)) end
end

local explosiones = { -- Posición de las explosiones
    {2691.86, 2784.75, 59.02},
    {2716.19, 2773.16, 74.83},
    {2716.98, 2769.41, 53.08},
    {2692.65, 2773.92, 40.15},
    {2612.71, 2678.42, 30.00},
    {2580.86, 2702.58, 24.84},
    {2538.07, 2822.08, 11.66},
    {2593.50, 2826.69, 11.45},
    {2625.39, 2829.98, 28.71},
    {2693.25, 2694.72, 28.50},
    {2716.90, 2683.54, 32.09},
    {2733.75, 2678.40, 62.65},
    {2596.64, 2638.77, 82.87},
    {2510.14, 2688.21, 59.54},
    {2630.57, 2829.37, 50.60},
    {2685.79, 2838.06, 24.07},
    {2596.24, 2770.00, 23.82},
    {2608.27, 2733.59, 28.56},
    {2641.34, 2696.41, 25.82},
    {2650.74, 2671.53, 38.53}
}
local sonidos = {"sounds/alert.mp3", "sounds/alert2.mp3"} -- Sonidos
local timedOut = false -- Timer para que se inicie el evento una vez ejecutado el sonido
local iniciado = false -- Si el evento esta iniciado
local tickFin = false -- El milisegundo en el que terminará el evento

function onStop() -- Si el resource se detiene, todo vuelve a la normalidad
    setWeather(0)
    resetSunColor()
    resetSkyGradient()
    resetWaterColor()
end
addEventHandler("onResourceStop", resourceRoot, onStop)

function onJoin() -- Si alguien se conecta...
    if iniciado then -- Y el evento esta iniciado...
        local calculo = (math.abs(getTickCount()-tickFin))/1000
        if calculo < 20 then -- Y el tiempo restante es menor a 20 segundos...
            outputChatBox("#AA0000¡¡Legaste muy tarde para el evento!! =(", source, 0,0,0,true) -- ¡Entonces no se ejecutará el evento en el cliente!
        else
            triggerClientEvent(source, "onToxicIniciarEvento", source, sonidos[math.random(1, #sonidos)], calculo)
        end
    end
end
addEventHandler("onPlayerJoin", root, onJoin)

function cambiarSonidoTiempo(ms) -- Sincroniza el sonido de la alerta con la explosión
    if not timedOut then
        timedOut = setTimer(function() 
            timedOut = false
            for _,tabla in ipairs(explosiones) do -- Crea la explosiones
                setTimer(createExplosion, math.random(250, 1000), 1, tabla[1], tabla[2], tabla[3], 7)
            end
            
            setTimer(function() -- Esto hace que la muerte por la explosión se relentice por medio segundo
                if col and isElement(col) then -- Y esto hace que cualquier persona dentro del colShape salga volando y se muera
                    for k,thePlayer in pairs(getElementsWithinColShape(col, "player")) do -- Agarra a todos los jugadores dentro de la zona
                        setElementVelocity(thePlayer, 0, 0, 20) -- Volar
                        killPed(thePlayer) -- Y morir
                    end
                    for k,veh in pairs(getElementsWithinColShape(col, "vehicle")) do -- Agarra a todos los vehículos dentro de la zona
                        setElementVelocity(veh, 0, 0, 10) -- Los hace volar
                        blowVehicle(veh) -- Y explotar
                    end
                    destroyElement(col) -- Y luego se destruye por las dudas
                end
            end, 500, 1)
        end, ms, 1)
    end
end
addEvent("onClientToxicSonidoTiempo", true)
addEventHandler("onClientToxicSonidoTiempo", root, cambiarSonidoTiempo)

addEvent("onToxicSetElementHealth", true)
addEventHandler("onToxicSetElementHealth", root, setElementHealth) -- Esto sirve para sincronizar el quitado del vida del cliente al servidor

--[[function togEvento(thePlayer, cmd, tiempo) -- Tiempo en segundos
    local cuenta = getPlayerAccount(thePlayer)
    if not isGuestAccount(cuenta) and isObjectInACLGroup("user."..getAccountName(cuenta), aclGetGroup("Admin")) then -- Si el usuario tiene cuenta y es Admin
        if not iniciado then -- Y el evento no esta iniciado
            if not tiempo or not tonumber(tiempo) then
                outputChatBox("#AA0000No colocaste un tiempo, así que se puso automáticamente la duración a 900 segundos.", thePlayer, 0,0,0,true) 
                outputChatBox("#AA0000Para colocar un tiempo usa: #FFFFFF/"..cmd.." <tiempo en segundos>", thePlayer, 0,0,0,true) 
                tiempo = 900
            end
            tickFin = getTickCount() + tiempo*1000 -- Este será el milisegundo final del evento
            iniciado = true -- Esto marca que el evento inicio
            col = createColSphere(2632.54, 2743.05, 23.82, 175) -- Esto crea la zona donde cualquier persona que se encuentre morirá al ocurrir la explosión
            
            triggerClientEvent(root, "onToxicIniciarEvento", thePlayer, sonidos[math.random(1, #sonidos)], tonumber(tiempo)) -- Esto avisa al cliente del evento
            outputServerLog(getPlayerName(thePlayer).." inició el Evento TOXIC con el comando /"..cmd.." "..tostring(tiempo)) -- Y esto deja un LOG para ver quien inicio el evento (logs/server.log)
            
            setTimer(function() -- Y esto lo finaliza al pasar el tiempo necesario
                iniciado = false
                tickFin = false
            end, tiempo*1000, 1)
        elseif not timedOut then -- O el evento ya se inició
            iniciado = false
            triggerClientEvent(root, "onToxicFinalizarEvento", thePlayer)
        else -- O el evento se esta iniciando (impaciente!)
            outputChatBox("#FF7500Espera a que ocurra la explosión para detener el evento.", thePlayer, 0,0,0,true)
        end
    end
end
addCommandHandler("toxic", togEvento)]]

------AQUI ESTA EL PROBLEMA NO ME FUNCIONA SE ACTIVA SI PERO NO SE DESACTIVA  PARA ASI QUE SE ACTIVE MEDIA ORA ---

function chequearTiempo() -- Esto debería de hacer que el evento se ejecute los domingos a las 3 de la tarde, más info: https://wiki.multitheftauto.com/wiki/GetRealTime
    local tiempoReal = getRealTime()
    if tiempoReal.hour == 15 and tiempoReal.minute == 0 and tiempoReal.weekday == 0 not iniciado then -- Que sean las 3 de la tarde, el domingo y que no este iniciado
        local tiempo = 3600 -- Una hora son 3600 segundos
        tickFin = getTickCount() + tiempo*1000
        iniciado = true
        col = createColSphere(2632.54, 2743.05, 23.82, 175)
       
        triggerClientEvent(root, "onToxicIniciarEvento", resourceRoot, sonidos[math.random(1, #sonidos)], tonumber(tiempo))
       
        setTimer(function()
            iniciado = false
            tickFin = false
        end, tiempo*1000, 1)
       
        outputServerLog("¡El evento TOXIC se inicio de forma automático!")
    end
end
setTimer(chequearTiempo, 10000, 0)

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

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