Jump to content

[HELP] SCRIPT SHOP MARKET


Recommended Posts

HELP, I HAVE A DRUG PANEL IN SPANISH, BUT YOU WILL UNDERSTAND, I NEED HELP WHEN PURCHASING, SO THAT THE USER WHO HAS 0 MONEY, A RED MESSAGE APPEARS IN THE CHAT THAT HE SHOULD HAVE MONEY, TO THE ONE WHO HAS IT, LET HIM BUY, AND HIS PRODUCT GOES TO THE F2 PANEL THAT WE HAVE ALREADY CREATED, BUT WHEN WE BUY, NO "PRODUCT" GOES TO OUR F2 PANEL EITHER AND WE CAN USE IT-

 

CLIENT.LUA 

local inventario = {

    ["THC"] = 0,
    ["LSD"] = 0,
    ["Cocaina"] = 0,
    ["Heroina"] = 0
}
local productosVendedor = {"THC", "LSD", "Cocaina", "Heroina"}
local precios = {
    ["THC"] = 500,
    ["LSD"] = 500,
    ["Cocaina"] = 500,
    ["Heroina"] = 500
}
local ventana, lista, usarButton, cerrarButton


-- Función para abrir el menú de compra
function abrirMenuDeCompra()
    ventana = guiCreateWindow(0.3, 0.3, 0.4, 0.5, "Menu de Compra", true)
    lista = guiCreateGridList(0.1, 0.2, 0.8, 0.5, true, ventana)
    local columnaProducto = guiGridListAddColumn(lista, "Producto", 0.6)
    local columnaPrecio = guiGridListAddColumn(lista, "Precio", 0.3)
   
    for i, producto in ipairs(productosVendedor) do
        local row = guiGridListAddRow(lista)
        guiGridListSetItemText(lista, row, columnaProducto, producto, false, false)
        guiGridListSetItemText(lista, row, columnaPrecio, "$"..precios[producto], false, false)
    end


    local comprarButton = guiCreateButton(0.1, 0.75, 0.8, 0.1, "Comprar Producto", true, ventana)
    guiSetProperty(comprarButton, "NormalTextColour", "FF0000FF") -- Botón en rojo
   
    cerrarButton = guiCreateButton(0.1, 0.88, 0.8, 0.1, "Cerrar", true, ventana)
    guiSetProperty(cerrarButton, "NormalTextColour", "FFFFFFFF") -- Botón de cerrar


    -- Evento para comprar productos
    addEventHandler("onClientGUIClick", comprarButton, function()
        local selectedItem = guiGridListGetSelectedItem(lista)
        if selectedItem ~= -1 then
            local producto = guiGridListGetItemText(lista, selectedItem, columnaProducto)
            triggerServerEvent("comprarProducto", resourceRoot, producto)
        end
    end, false)


    addEventHandler("onClientGUIClick", cerrarButton, function()
        if isElement(ventana) then
            destroyElement(ventana)
            showCursor(false)
        end
    end, false)


    showCursor(true)
end
addEvent("abrirMenuDeCompra", true)
addEventHandler("abrirMenuDeCompra", resourceRoot, abrirMenuDeCompra)


-- Función para agregar el producto al inventario del jugador
function agregarProductoAlInventario(producto)
    if inventario[producto] then
        inventario[producto] = inventario[producto] + 1
    else
        inventario[producto] = 1
    end
    actualizarPanelDeInventario()
end
addEvent("agregarProductoAlInventario", true)
addEventHandler("agregarProductoAlInventario", resourceRoot, agregarProductoAlInventario)


-- Función para mostrar mensaje de compra fallida
function mostrarMensajeCompraFallida()
    outputChatBox("No tienes suficiente dinero para comprar este producto.", 255, 0, 0, true)
end
addEvent("mostrarMensajeCompraFallida", true)
addEventHandler("mostrarMensajeCompraFallida", resourceRoot, mostrarMensajeCompraFallida)


-- Función para mostrar mensaje de compra exitosa
function mostrarMensajeCompraExitosa(producto)
    outputChatBox("Compra exitosa de " .. producto .. ". ¡Gracias por tu compra!", 0, 255, 0, true)
end
addEvent("mostrarMensajeCompraExitosa", true)
addEventHandler("mostrarMensajeCompraExitosa", resourceRoot, mostrarMensajeCompraExitosa)


-- Función para abrir/cerrar el panel de inventario (F2)
function togglePanelDeInventario()
    if isElement(ventana) then
        destroyElement(ventana)
        showCursor(false)
    else
        ventana = guiCreateWindow(0.3, 0.3, 0.4, 0.5, "Inventario de Drogas", true)
        lista = guiCreateGridList(0.1, 0.2, 0.8, 0.5, true, ventana)
        local columnaProducto = guiGridListAddColumn(lista, "Producto", 0.6)
        local columnaCantidad = guiGridListAddColumn(lista, "Cantidad", 0.3)
       
        for i, producto in ipairs(productosVendedor) do
            local row = guiGridListAddRow(lista)
            guiGridListSetItemText(lista, row, columnaProducto, producto, false, false)
            local cantidad = inventario[producto] or 0
            guiGridListSetItemText(lista, row, columnaCantidad, tostring(cantidad), false, false)
            if cantidad == 0 then
                guiGridListSetItemColor(lista, row, columnaCantidad, 255, 255, 255) -- Texto blanco
            else
                guiGridListSetItemColor(lista, row, columnaCantidad, 0, 0, 0) -- Texto negro
            end
        end
       
        usarButton = guiCreateButton(0.1, 0.75, 0.8, 0.1, "Usar Producto", true, ventana)
        guiSetProperty(usarButton, "NormalTextColour", "FF0000FF") -- Botón en rojo
       
        cerrarButton = guiCreateButton(0.1, 0.88, 0.8, 0.1, "Cerrar", true, ventana)
        guiSetProperty(cerrarButton, "NormalTextColour", "FFFFFFFF") -- Botón de cerrar
   
        addEventHandler("onClientGUIClick", usarButton, function()
            local selectedItem = guiGridListGetSelectedItem(lista)
            if selectedItem ~= -1 then
                local producto = guiGridListGetItemText(lista, selectedItem, columnaProducto)
                if inventario[producto] > 0 then
                    usarProducto(producto)
                    inventario[producto] = inventario[producto] - 1
                    actualizarPanelDeInventario()
                else
                    outputChatBox("Debes ir al vendedor para comprar " .. producto, 255, 0, 0, true)
                end
            end
        end, false)
   
        addEventHandler("onClientGUIClick", cerrarButton, function()
            if isElement(ventana) then
                destroyElement(ventana)
                showCursor(false)
            end
        end, false)
   
        showCursor(true)
    end
end
bindKey("F2", "down", togglePanelDeInventario)


-- Función para usar el producto seleccionado
function usarProducto(producto)
    if producto == "THC" then
        outputChatBox("Usaste THC", 255, 0, 0, true)
        -- Aplica efectos de THC
    elseif producto == "LSD" then
        outputChatBox("Usaste LSD", 0, 255, 0, true)
        -- Aplica efectos de LSD
    elseif producto == "Cocaina" then
        outputChatBox("Usaste Cocaina", 255, 255, 0, true)
        -- Aplica efectos de Cocaina
    elseif producto == "Heroina" then
        outputChatBox("Usaste Heroina", 128, 0, 128, true)
        -- Aplica efectos de Heroina
    end
end


-- Función para actualizar el panel de inventario
function actualizarPanelDeInventario()
    if isElement(ventana) then
        destroyElement(ventana)
        togglePanelDeInventario()
    end
end

 

SERVER.LUA

 

-- Crea un vendedor en una ubicación específica
local vendedor = createPed(50, 2165.93, 1696.37, 10.82)
 
-- Congela el vendedor para que no se mueva ni muera
setElementFrozen(vendedor, true)
setElementData(vendedor, "invincible", true)
 
-- Crea un marker (área de interacción) cerca del vendedor
local marketMarker = createMarker(2165.93, 1696.37, 10.10, "cylinder", 1.5, 255, 0, 0, 150)
 
-- Función para mostrar el menú de compra
function mostrarMenuDeCompra(player)
    triggerClientEvent(player, "abrirMenuDeCompra", resourceRoot)
end
 
-- Función para manejar la compra de productos
function comprarProducto(player, producto)
    local precio = 500
    if getPlayerMoney(player) >= precio then
        takePlayerMoney(player, precio)
        triggerClientEvent(player, "agregarProductoAlInventario", resourceRoot, producto)
        triggerClientEvent(player, "mostrarMensajeCompraExitosa", resourceRoot, producto)
    else
        triggerClientEvent(player, "mostrarMensajeCompraFallida", resourceRoot)
    end
end
 
-- Evento para mostrar el menú de compra cuando el jugador entra en el marker
addEventHandler("onMarkerHit", marketMarker, function(player)
    if getElementType(player) == "player" then
        mostrarMenuDeCompra(player)
    end
end)
 
-- Evento para manejar la compra de productos
addEvent("comprarProducto", true)
addEventHandler("comprarProducto", resourceRoot, comprarProducto)
 
-- Hacer al ped invulnerable
addEventHandler("onPedWasted", root, function()
    if source == vendedor then
        cancelEvent()
    end
end)
 
addEventHandler("onClientPedDamage", root, function()
    if source == vendedor then
        cancelEvent()
    end
end)
Link to comment

Try this one

Client.lua
 

local inventario = {
    ["THC"] = 0,
    ["LSD"] = 0,
    ["Cocaina"] = 0,
    ["Heroina"] = 0
}

local productosVendedor = {"THC", "LSD", "Cocaina", "Heroina"}
local precios = {
    ["THC"] = 500,
    ["LSD"] = 500,
    ["Cocaina"] = 500,
    ["Heroina"] = 500
}

local ventana, lista, usarButton, cerrarButton

-- Función para abrir el menú de compra
function abrirMenuDeCompra()
    ventana = guiCreateWindow(0.3, 0.3, 0.4, 0.5, "Menu de Compra", true)
    lista = guiCreateGridList(0.1, 0.2, 0.8, 0.5, true, ventana)
    local columnaProducto = guiGridListAddColumn(lista, "Producto", 0.6)
    local columnaPrecio = guiGridListAddColumn(lista, "Precio", 0.3)
   
    for i, producto in ipairs(productosVendedor) do
        local row = guiGridListAddRow(lista)
        guiGridListSetItemText(lista, row, columnaProducto, producto, false, false)
        guiGridListSetItemText(lista, row, columnaPrecio, "$"..precios[producto], false, false)
    end

    local comprarButton = guiCreateButton(0.1, 0.75, 0.8, 0.1, "Comprar Producto", true, ventana)
    guiSetProperty(comprarButton, "NormalTextColour", "FF0000FF") -- Botón en rojo
   
    cerrarButton = guiCreateButton(0.1, 0.88, 0.8, 0.1, "Cerrar", true, ventana)
    guiSetProperty(cerrarButton, "NormalTextColour", "FFFFFFFF") -- Botón de cerrar

    -- Evento para comprar productos
    addEventHandler("onClientGUIClick", comprarButton, function()
        local selectedItem = guiGridListGetSelectedItem(lista)
        if selectedItem ~= -1 then
            local producto = guiGridListGetItemText(lista, selectedItem, columnaProducto)
            triggerServerEvent("comprarProducto", resourceRoot, producto)
        end
    end, false)

    addEventHandler("onClientGUIClick", cerrarButton, function()
        if isElement(ventana) then
            destroyElement(ventana)
            showCursor(false)
        end
    end, false)

    showCursor(true)
end
addEvent("abrirMenuDeCompra", true)
addEventHandler("abrirMenuDeCompra", resourceRoot, abrirMenuDeCompra)

-- Función para agregar el producto al inventario del jugador
function agregarProductoAlInventario(producto)
    if inventario[producto] then
        inventario[producto] = inventario[producto] + 1
    else
        inventario[producto] = 1
    end
    actualizarPanelDeInventario()
end
addEvent("agregarProductoAlInventario", true)
addEventHandler("agregarProductoAlInventario", resourceRoot, agregarProductoAlInventario)

-- Función para mostrar mensaje de compra fallida
function mostrarMensajeCompraFallida()
    outputChatBox("No tienes suficiente dinero para comprar este producto.", 255, 0, 0, true)
end
addEvent("mostrarMensajeCompraFallida", true)
addEventHandler("mostrarMensajeCompraFallida", resourceRoot, mostrarMensajeCompraFallida)

-- Función para mostrar mensaje de compra exitosa
function mostrarMensajeCompraExitosa(producto)
    outputChatBox("Compra exitosa de " .. producto .. ". ¡Gracias por tu compra!", 0, 255, 0, true)
end
addEvent("mostrarMensajeCompraExitosa", true)
addEventHandler("mostrarMensajeCompraExitosa", resourceRoot, mostrarMensajeCompraExitosa)

-- Función para abrir/cerrar el panel de inventario (F2)
function togglePanelDeInventario()
    if isElement(ventana) then
        destroyElement(ventana)
        showCursor(false)
    else
        ventana = guiCreateWindow(0.3, 0.3, 0.4, 0.5, "Inventario de Drogas", true)
        lista = guiCreateGridList(0.1, 0.2, 0.8, 0.5, true, ventana)
        local columnaProducto = guiGridListAddColumn(lista, "Producto", 0.6)
        local columnaCantidad = guiGridListAddColumn(lista, "Cantidad", 0.3)
       
        for producto, cantidad in pairs(inventario) do
            local row = guiGridListAddRow(lista)
            guiGridListSetItemText(lista, row, columnaProducto, producto, false, false)
            guiGridListSetItemText(lista, row, columnaCantidad, tostring(cantidad), false, false)
            if cantidad == 0 then
                guiGridListSetItemColor(lista, row, columnaCantidad, 255, 255, 255) -- Texto blanco
            else
                guiGridListSetItemColor(lista, row, columnaCantidad, 0, 0, 0) -- Texto negro
            end
        end
       
        usarButton = guiCreateButton(0.1, 0.75, 0.8, 0.1, "Usar Producto", true, ventana)
        guiSetProperty(usarButton, "NormalTextColour", "FF0000FF") -- Botón en rojo
       
        cerrarButton = guiCreateButton(0.1, 0.88, 0.8, 0.1, "Cerrar", true, ventana)
        guiSetProperty(cerrarButton, "NormalTextColour", "FFFFFFFF") -- Botón de cerrar
   
        addEventHandler("onClientGUIClick", usarButton, function()
            local selectedItem = guiGridListGetSelectedItem(lista)
            if selectedItem ~= -1 then
                local producto = guiGridListGetItemText(lista, selectedItem, columnaProducto)
                if inventario[producto] > 0 then
                    usarProducto(producto)
                    inventario[producto] = inventario[producto] - 1
                    actualizarPanelDeInventario()
                else
                    outputChatBox("Debes ir al vendedor para comprar " .. producto, 255, 0, 0, true)
                end
            end
        end, false)
   
        addEventHandler("onClientGUIClick", cerrarButton, function()
            if isElement(ventana) then
                destroyElement(ventana)
                showCursor(false)
            end
        end, false)
   
        showCursor(true)
    end
end
bindKey("F2", "down", togglePanelDeInventario)

-- Función para usar el producto seleccionado
function usarProducto(producto)
    if producto == "THC" then
        outputChatBox("Usaste THC", 255, 0, 0, true)
        -- Aplica efectos de THC
    elseif producto == "LSD" then
        outputChatBox("Usaste LSD", 0, 255, 0, true)
        -- Aplica efectos de LSD
    elseif producto == "Cocaina" then
        outputChatBox("Usaste Cocaina", 255, 255, 0, true)
        -- Aplica efectos de Cocaina
    elseif producto == "Heroina" then
        outputChatBox("Usaste Heroina", 128, 0, 128, true)
        -- Aplica efectos de Heroina
    end
end

-- Función para actualizar el panel de inventario
function actualizarPanelDeInventario()
    if isElement(ventana) then
        destroyElement(ventana)
        togglePanelDeInventario()
    end
end

Server.lua
 

-- Crea un vendedor en una ubicación específica
local vendedor = createPed(50, 2165.93, 1696.37, 10.82)
 
-- Congela el vendedor para que no se mueva ni muera
setElementFrozen(vendedor, true)
setElementData(vendedor, "invincible", true)
 
-- Crea un marker rea de interacción) cerca del vendedor
local marketMarker = createMarker(2165.93, 1696.37, 10.10, "cylinder", 1.5, 255, 0, 0, 150)
 
-- Función para mostrar el menú de compra
function mostrarMenuDeCompra(player)
    triggerClientEvent(player, "abrirMenuDeCompra", resourceRoot)
end
 
-- Función para manejar la compra de productos
function comprarProducto(player, producto)
    local precio = 500
    if getPlayerMoney(player) >= precio then
        takePlayerMoney(player, precio)
        triggerClientEvent(player, "agregarProductoAlInventario", resourceRoot, producto)
        triggerClientEvent(player, "mostrarMensajeCompraExitosa", resourceRoot, producto)
    else
        triggerClientEvent(player, "mostrarMensajeCompraFallida", resourceRoot)
    end
end
 
-- Evento para mostrar el menú de compra cuando el jugador entra en el marker
addEventHandler("onMarkerHit", marketMarker, function(player)
    if getElementType(player) == "player" then
        mostrarMenuDeCompra(player)
    end
end)
 
-- Evento para manejar la compra de productos
addEvent("comprarProducto", true)
addEventHandler("comprarProducto", resourceRoot, comprarProducto)
 
-- Hacer al ped invulnerable
addEventHandler("onPedWasted", root, function()
    if source == vendedor then
        cancelEvent()
    end
end)
 
addEventHandler("onClientPedDamage", root, function()
    if source == vendedor then
        cancelEvent()
    end
end)

 

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