Jump to content

[HELP] SCRIPT SHOP MARKET


Emnadai

Recommended Posts

Posted

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)
Posted

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
Posted (edited)
On 26/02/2025 at 13:45, xMKHx said:

Pruebe este

Client.lua
 

 
    
    
    
    


 
 
    
    
    
    


 


 
     
     
   
       
         
    

     
   

    
         
          
             
        
    

         
        
    




 
     
    
    



 



 



 
     
    
         
         
       
           
             
              
            
            
        
       
       
   
             
              
                 
                  
                
                
            
        
   
             
            
        
   
    



 
      
        
      
        
      
        
      
        
    



 
     
    

Servidor.lua
 

    
 
    
 
         
 
  

 
 
     
       
     
    

 
  
       
    

 
  
 
  
    
    

  
    
    

 

does not create any market or seller x = 2169.82, y = 1687.11, Z = 10.82

Edited by Emnadai

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