Foros de Araboth Roleplay
Sistema de graffity - Versión para impresión

+- Foros de Araboth Roleplay (https://foros.arabothrp.com)
+-- Foro: Comunidad (https://foros.arabothrp.com/forumdisplay.php?fid=11)
+--- Foro: Aportes (https://foros.arabothrp.com/forumdisplay.php?fid=14)
+--- Tema: Sistema de graffity (/showthread.php?tid=25876)



Sistema de graffity - Lucass - 24-04-2024

Buenas chicos, quería aportar la base de un sistema de grafitis pero creo que éste sistema puede aportar mucho al servidor y dar mucho rol para las familias. Creo que con ésta base se les puede ocurrir muchas ideas y mejorarlo en un 200%, éxitos.

Código:
-- Creamos una tabla para almacenar los grafitis pendientes de aprobación
local grafitisPendientes = {}

-- Creamos una tabla para almacenar los grafitis realizados por cada familia
local grafitisPorFamilia = {}

-- Definimos una función para mostrar el panel de escritura
function mostrarPanelDeEscritura(player)
    -- Verificamos si la familia del jugador ha alcanzado el límite diario de grafitis
    local playerTeam = getPlayerTeam(player)
    if not playerTeam then
        outputChatBox("Necesitas pertenecer a una familia para hacer grafiti.", player, 255, 0, 0)
        return
    end
   
    local teamName = getTeamName(playerTeam)
    if not grafitisPorFamilia[teamName] then
        grafitisPorFamilia[teamName] = 0
    end
   
    if grafitisPorFamilia[teamName] >= 3 then
        outputChatBox("Tu familia ha alcanzado el límite diario de grafitis.", player, 255, 0, 0)
        return
    end
   
    -- Mostramos el panel de escritura
    local screenWidth, screenHeight = guiGetScreenSize()
    local panel = guiCreateWindow((screenWidth - 400) / 2, (screenHeight - 200) / 2, 400, 200, "Escribir grafiti", false)
    local editText = guiCreateEdit(0.05, 0.3, 0.9, 0.4, "", true, panel)
    local button = guiCreateButton(0.3, 0.7, 0.4, 0.2, "Confirmar", true, panel)
   
    addEventHandler("onClientGUIClick", button, function()
        local grafitiText = guiGetText(editText)
        destroyElement(panel)
        solicitarAprobacion(player, grafitiText)
    end, false)
end

-- Definimos una función para solicitar la aprobación del grafiti
function solicitarAprobacion(player, texto)
    table.insert(grafitisPendientes, {player = player, texto = texto})
    outputChatBox("¡Nuevo grafiti pendiente de aprobación!", root, 255, 255, 0)
end

-- Definimos una función para mostrar el panel de grafitis pendientes
function mostrarPanelDeGrafitisPendientes(admin)
    local screenWidth, screenHeight = guiGetScreenSize()
    local panel = guiCreateWindow((screenWidth - 400) / 2, (screenHeight - 300) / 2, 400, 300, "Grafitis Pendientes", false)
    local gridList = guiCreateGridList(0.05, 0.05, 0.9, 0.8, true, panel)
    guiGridListAddColumn(gridList, "Jugador", 0.5)
    guiGridListAddColumn(gridList, "Texto", 0.5)
   
    for _, grafiti in ipairs(grafitisPendientes) do
        local row = guiGridListAddRow(gridList)
        guiGridListSetItemText(gridList, row, 1, getPlayerName(grafiti.player), false, false)
        guiGridListSetItemText(gridList, row, 2, grafiti.texto, false, false)
    end
   
    local button = guiCreateButton(0.3, 0.9, 0.4, 0.1, "Aprobar seleccionados", true, panel)
   
    addEventHandler("onClientGUIClick", button, function()
        local selectedItems = guiGridListGetSelectedItems(gridList)
       
        for _, item in ipairs(selectedItems) do
            local row = item.row
            local grafiti = grafitisPendientes[row]
            realizarGrafiti(grafiti.player, grafiti.texto)
            table.remove(grafitisPendientes, row)
        end
       
        guiGridListClear(gridList)
        for _, grafiti in ipairs(grafitisPendientes) do
            local row = guiGridListAddRow(gridList)
            guiGridListSetItemText(gridList, row, 1, getPlayerName(grafiti.player), false, false)
            guiGridListSetItemText(gridList, row, 2, grafiti.texto, false, false)
        end
    end, false)
end

-- Definimos una función para verificar si un jugador es administrador
function isPlayerAdmin(player)
    -- Aquí debes agregar tu lógica para determinar si un jugador es administrador
    -- Por ejemplo, puedes usar una tabla de administradores o una función específica del servidor
    return true -- Por ahora asumiremos que todos los jugadores son administradores para fines de demostración
end

-- Definimos una función para realizar el grafiti en el juego
function realizarGrafiti(player, texto)
    local x, y, z = getElementPosition(player)
    local _, _, rot = getElementRotation(player)
    local offset = 1.5
    local grafitiX = x + offset * math.cos(math.rad(rot))
    local grafitiY = y + offset * math.sin(math.rad(rot))
    local grafitiObject = create3DText(texto, grafitiX, grafitiY, z, 0, 0, 0)
    outputChatBox("¡Grafiti realizado! Texto: " .. texto, player, 0, 255, 0)
   
    local playerTeam = getPlayerTeam(player)
    if playerTeam then
        local teamName = getTeamName(playerTeam)
        grafitisPorFamilia[teamName] = (grafitisPorFamilia[teamName] or 0) + 1
    end
end

-- Definimos un comando para que los administradores vean los grafitis pendientes
addCommandHandler("grafitispendientes", function(player)
    if not isPlayerAdmin(player) then
        outputChatBox("No tienes permiso para usar este comando.", player, 255, 0, 0)
        return
    end
   
    mostrarPanelDeGrafitisPendientes(player)
end)

-- Definimos un comando para que los jugadores hagan grafiti
addCommandHandler("grafiti", function(player)
    mostrarPanelDeEscritura(player)
end)

-- Restablecemos el contador de grafitis diario para cada familia al inicio de cada día (cada 24 horas)
setTimer(function()
    grafitisPorFamilia = {}
end, 24 * 60 * 60 * 1000, 0) -- Se ejecuta cada 24 horas

Hay que ajustar la función "isPlayerAdmin" para que refleje la lógica real de tu servidor para determinar si un jugador es administrador.


RE: Sistema de graffity - Breeze slot - 25-04-2024

Quedaría obsoleto. Aca no se interpretan pandillas, puro mafias y organizaciones.


RE: Sistema de graffity - Lucass - 28-04-2024

(25-04-2024, 02:13 PM)Breeze slot escribió: Quedaría obsoleto. Aca no se interpretan pandillas, puro mafias y organizaciones.

No sabes ni lo que jugas si crees que éste servidor se abstiene de roles de pandillas.

Te dejo hasta una guía de como te enseñan a hacerlo por si tenes dificultades en el rol.


RE: Sistema de graffity - Ivako - 16-05-2024

grande mi bro el rolero


RE: Sistema de graffity - lollypop - 27-06-2024

Muy buena idea sisi.

(25-04-2024, 02:13 PM)Breeze slot escribió: Quedaría obsoleto. Aca no se interpretan pandillas, puro mafias y organizaciones.

kkkk mi amigo el que mas juega


RE: Sistema de graffity - Nicolashh - 07-07-2024

grande mi bro rol serio


RE: Sistema de graffity - lollypop - 07-07-2024

deja de farmear msj nicolash


RE: Sistema de graffity - Nicolashh - 07-07-2024

deja de farmear msj lollypop


RE: Sistema de graffity - lollypop - 08-07-2024

No voy a estar activo hoy en el rol. Estoy conociendo una mujer (una de verdad) en una hora y media (no espero que muchos de ustedes entiendan) por favor no me envien mensaje preguntando si puedo rolear (estoy conociendo una mujer, ok) Lo mas probable es que estes tomando un descanso porque yo estare con la mujer (repito no espero que entiendas) ella esta realmente interesada en mi y no es una situacion que pueda pasar por alto por un juego sin sentido como el gta de todas formas lo que pase no sera interesante (porque conocere a una mujer, no es algo que realmente vayas a entender) esta es mi vida ahora. Conocer una mujer y no perder mi precioso tiempo en el rol, tengo que pasar de cosas tan simples y empezar a disfrutar (no entenderias) ? ☝️


RE: Sistema de graffity - lollypop - 09-07-2024

farming jaja