Jump to content

error does not show the marker in the game


Wananazo

Recommended Posts

It does not show the marker in the game, well I try to make a marker for conquest but I don't know what I need to make it work well

 

-- Configuraciones
local tiempoDeDisputa = 90 -- Tiempo en segundos para disputa del marker
local tiempoCierre = 2 * 24 * 60 * 60 -- Tiempo en segundos para cerrar el marker (2 días)
local aclPermitidos = { -- ACL permitidos para tomar el marker
    ["admin"] = true,
    ["vip"] = true,
    ["jugadorpremium"] = true
}

-- Coordenadas del marker (¡ajusta estos valores a tus necesidades!)
local x = -371.26409912109 -- coordenada x ,,
local y = -1048.9447021484 -- coordenada y
local z = 59.283256530762  -- coordenada z

-- Variables globales
local marker = nil
local tiempoRestante = tiempoDeDisputa

-- Función para actualizar el tiempo restante en pantalla
function actualizarTiempoRestante()
    if isElement(marker) then
        setElementData(marker, "tiempoRestante", tiempoRestante)
    end
end

-- Función para notificar que el marker está siendo tomado
function notificarTomandoMarker(jugador)
    outputChatBox("¡" .. getPlayerName(jugador) .. " está tomando el marker!", root, 255, 165, 0) -- Mensaje en chat
end

-- Función para notificar que el marker se cerró
function notificarMarkerCerrado()
    outputChatBox("El marker ha sido cerrado.", root, 255, 0, 0) -- Mensaje en chat
end

-- Función para notificar que el marker abrió después de los 2 días
function notificarMarkerAbierto()
    outputChatBox("El marker ha sido abierto nuevamente.", root, 0, 255, 0) -- Mensaje en chat
end

-- Función para tomar el marker
function tomarMarker(jugador)
    local acl = getPlayerACL(jugador)
    if not aclPermitidos[acl] then
        outputChatBox("No tienes permiso para tomar el marker.", jugador, 255, 0, 0) -- Mensaje en chat al jugador
        return
    end

    if not isElement(marker) then
        marker = createMarker(x, y, z - 1, "cylinder", 5, 255, 165, 0, 150) -- Crear el marker en la posición (x, y, z) con color naranja y forma cilíndrica
        setElementData(marker, "tiempoRestante", tiempoDeDisputa) -- Establecer el tiempo restante inicial
        setElementVisibleTo(marker, root, true) -- Hacer que el marker sea visible para todos los jugadores
        setTimer(cerrarMarker, tiempoCierre * 1000, 1) -- Cerrar el marker después de tiempoCierre segundos
        notificarMarkerAbierto()
    end

    notificarTomandoMarker(jugador)
end

-- Función para cerrar el marker
function cerrarMarker()
    destroyElement(marker)
    marker = nil
    notificarMarkerCerrado()
    tiempoRestante = tiempoDeDisputa -- Reiniciar el tiempo restante
    actualizarTiempoRestante()
end

-- Función para actualizar el tiempo restante cada segundo
function actualizarTiempo()
    tiempoRestante = tiempoRestante - 1
    actualizarTiempoRestante()

    if tiempoRestante <= 0 then
        cerrarMarker()
    end
end

-- Inicializar el script
addEventHandler("onResourceStart", resourceRoot, function()
    setTimer(actualizarTiempo, 1000, tiempoDeDisputa)
end)

-- Asignar la función tomarMarker al evento onMarkerHit
addEventHandler("onMarkerHit", root, function(hitElement, matchingDimension)
    if isElement(marker) and source == marker and getElementType(hitElement) == "player" then
        tomarMarker(hitElement)
    end
end)

-- Avisar al ACL policial cuando el marker está siendo tomado
function avisarPolicial()
    for _, jugador in ipairs(getElementsByType("player")) do
        local acl = getPlayerACL(jugador)
        if acl == "policial" then
            outputChatBox("¡El marker está siendo tomado!", jugador, 255, 0, 0) -- Mensaje en chat al policía
        end
    end
end

-- Asignar la función avisarPolicial al evento onMarkerHit
addEventHandler("onMarkerHit", root, function(hitElement, matchingDimension)
    if isElement(marker) and source == marker and getElementType(hitElement) == "player" then
        avisarPolicial()
    end
end)


 

Link to comment

Hola, buenas noches.

Vale, para analizar, estás añadiendo estos eventos de onMarkerHit, a todos los markers (root)

-- Asignar la función tomarMarker al evento onMarkerHit
addEventHandler("onMarkerHit", root, function(hitElement, matchingDimension)
    if isElement(marker) and source == marker and getElementType(hitElement) == "player" then
        tomarMarker(hitElement)
    end
end)

-- Asignar la función avisarPolicial al evento onMarkerHit
addEventHandler("onMarkerHit", root, function(hitElement, matchingDimension)
    if isElement(marker) and source == marker and getElementType(hitElement) == "player" then
        avisarPolicial()
    end
end)

Esto es una mala practica, ya que sería más óptimo sólo 'atachar' ese evento sólamente al elemento que haga falta y que nos sea necesario, un cierto marker por ejemplo. Pero dejemos de lado esto. Estás verificando bien, que el source, sea el marker en cuestión, sin embargo, acá está la falla, en ningun momento se crea el marker ese del que hablamos.

Podes hacer que el marker se cree al inicio del script (funcion que se ejecuta con el onResourceStart) y ahí mismo, añadir los addEventHandlers de tomarMarker() y avisarPolicial(), 'atachado' a ese marker recién creado.

  • Like 1
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...