Wananazo Posted July 19, 2023 Share Posted July 19, 2023 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
Salchy Posted July 19, 2023 Share Posted July 19, 2023 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. 1 Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now