Vendiendo artículos

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Para la siguiente etapa del ciclo de juego, los jugadores deben vender sus artículos por oro para permitirles comprar más espacio en sus mochilas.

Crear una plataforma de venta

Los jugadores venderán sus artículos poniéndose en una plataforma que les dará oro por cada artículo en su bolsa.

Configurando la plataforma

La plataforma puede ser cualquier parte y incluirá un script que maneje la venta.

  1. Crea una nueva parte llamada SellPlatform. Personalízala para que se adapte al tema de tu experiencia.

  2. En SellPlatform, crea un nuevo script llamado SellScript y agrega un hacer un comentario.

  3. En SellScript, escribe local sellPart = script.Parent para obtener la parte de SellPlatform.


    -- Vende todos los artículos de un jugador y los da oro
    local sellPart = script.Parent

Manipulando Eventos Táctiles

Para usar la plataforma, el script necesita una función para verificar si algún jugador lo toca.

  1. Crea una función llamada onTouch() que comprueba si un jugador está tocando la plataforma.


    local function onTouch(partTouched)
    local character = partTouched.Parent
    end
  2. Para cambiar cualquiera de las estadísticas en la tabla de clasificación, el script necesita saber qué jugador está controlando el personaje. En la declaración if, use la función GetPlayerFromCharacter() para encontrar un jugador.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
  3. En la siguiente línea, obtenga el contenedor de estadísticas de ese jugador.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Obtiene la tabla de clasificación del jugador. Necesario para obtener artículos y dinero
    local playerStats = player:FindFirstChild("leaderstats")
    end
  4. En la siguiente línea, crea variables para obtener el dinero y los artículos del jugador.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Obtiene la tabla de clasificación del jugador. Necesario para obtener artículos y dinero
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Obtiene los artículos y el dinero del jugador
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    end
    end
  5. Para comprobar tu trabajo, agrega una declaración de impresión que se ejecutará si un jugador toca sellPart.


    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
  6. En la parte inferior del script, conecta el onTouch() para vender el evento Touched de Part.


    local Players = game:GetService("Players")
    local function onTouch(partTouched)
    local character = partTouched.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Obtiene la tabla de clasificación del jugador. Necesario para obtener artículos y dinero
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Obtiene los artículos y el dinero del jugador
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
    end
    end
    end
    sellPart.Touched:Connect(onTouch)
  7. Juega tu proyecto y pisa en venderPieza; deberías ver el mensaje "A Player touched sellPart" en la ventana de salida.

Vendiendo artículos

En esta experiencia, un jugador obtendrá 100 oro por cada objeto. Después de obtener dinero, sus artículos se restablecerán a 0, permitiendo a los jugadores explorar el mundo para obtener más artículos.

Codificación de una Nueva Función de Venta

  1. Bajo las variables, crea una función llamada sellItems() que obtiene dos parámetros nombrados playerItems y playerGold .


    -- Vende todos los artículos de un jugador y los da oro
    local sellPart = script.Parent
    local function sellItems(playerItems, playerGold)
    end
    local function onTouch(partTouched)
  2. Para dar a los jugadores la cantidad correcta de oro, toma el valor de los playerItems y multiplícalo por la cantidad de oro que deben recibir por objeto. Este ejemplo da cien monedas de oro por objeto.

    En la función sellItems(), escribe local totalSell = playerItems.Value * 100


    local function sellItems(playerItems, playerGold)
    -- Obtiene la cantidad de artículos que tiene el jugador y los multiplica por su valor de artículo.
    local totalSell = playerItems.Value * 100
    end
  3. Escriba playerGold.Value += totalSell para agregar el oro a los elementos a su oro actual.


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    -- Agregue cuánto gana el jugador a su dinero
    playerGold.Value += totalSell
    end
  4. Escriba playerItems.Value = 0 . Esto establece los elementos de un jugador de nuevo en 0. Si los elementos de un jugador no están establecidos de nuevo en 0, el script seguirá dando a los jugadores oro sin detenerse.


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    playerGold.Value += totalSell
    playerItems.Value = 0
    end
  5. En la función onTouch(), bajo la segunda declaración if, llama a la función sellItems() . Pasa los parámetros, sellItems() y 1> playerGold1> para que se puedan cambiar.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Obtiene la tabla de clasificación del jugador. Necesario para obtener artículos y dinero
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Obtiene los artículos y el dinero del jugador
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    if playerItems and playerGold then
    sellItems(playerItems, playerGold)
    end
    end
    end
  6. Juega tu proyecto; revisa que cada vez que un jugador pisa la plataforma, su oro incrementa y sus artículos están configurados a 0.

Consejos de solución de problemas

En este punto, vender artículos no funciona como se esperaba, intente uno de los siguientes abajo.

  • sellItems() se llama en la segunda si la declaración comprueba los elementos del jugador.
  • Cualquier valor, como playerItems, usa .Value al final si estás haciendo un cambio en él. El valor siempre se capitaliza.
  • sellPart.Touched:Connect(onTouch) se escribe en la parte inferior del script.
  • sellItems(playerItems, playerGold) se escribe antes del final del if humanoide entonces la declaración.