Comprar mejoras

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

Esto nos lleva a la última etapa del ciclo de juego: comprar mejoras.Al permitir que los jugadores compren mejoras que aumenten el tamaño de su bolsa de artículos, pueden recolectar más artículos por viaje y ganar aún más oro.

Crear una comprar

Cada tienda tendrá un botón que los jugadores hagan clic para comprar una bolsa de artículos más grande.La tienda misma será una parte con una SurfaceGUI, un elemento que permite que se escriba texto en las piezas.

Crear la señal

  1. En el espacio de trabajo, crea un nuevo modelo llamado Tienda.

  2. En la tienda, crea una nueva parte de bloque llamada BuyButton.

  3. En BuyButton, agregue una nueva interfaz de usuario de superficie haciendo clic en + y desplazándose hacia la interfaz de usuario.

  4. En la interfaz de usuario de superficie, agregue una nueva etiqueta de texto llamada BuyText. Una pequeña etiqueta aparecerá en algún lugar de la parte.

  5. Dependiendo de cómo se haya hecho la pieza, la etiqueta puede estar en otro lugar.Si no ves el texto en el lado que quieres, ve al SurfaceGUI y encuentra la propiedad Cara.Cambia esa propiedad hasta que veas la etiqueta de texto.

Cambiar el texto del signo

En este momento, el TextLabel es realmente pequeño y difícil de ver para los jugadores. Necesita ser escalado.

  1. En las propiedades de BuyText, haz clic en la flecha junto a Tamaño . Cambia el desplazamiento para X (izquierda y derecha) y Y (arriba y abajo) a 0.

  2. Cambia el escala de X y Y a 0.5 para hacer un cuadrado.

  3. Desplácese hacia arriba en las propiedades de TextLabel y haga clic en la flecha de la izquierda de AnchorPoint .Escriba 0.5 para X y Y.Esto mueve parte de tu etiqueta fuera de vista, pero la posicionarás correctamente a continuación.

  4. Desplácese hacia abajo en las propiedades y abra Posición . Cambie la escala de X y Y a 0.5 para que la caja se centre en el medio.

  5. En las propiedades de BuyText, desplace hacia abajo y cambie texto a algo descriptivo. Por instancia: "Buy Larger Bag: 100 gold" .

  6. Compruebe TextScaled para ser en . Esto escala automáticamente su texto para que encaje en la caja delimitadora.

Añade un detector de clics

Los jugadores comprarán artículos haciendo clic en la tienda en lugar de simplemente tocarla.El script usará un detector de clics para decir si un jugador ha hecho clic en la señal de la tienda. Los detectores de clics son objetos que permiten a los usuarios interactuar con algo en el entorno, ambiente, como abrir una puerta.

  1. En el botón de compra, agrega un detector de clics.

  2. En BuyButton, agrega un nuevo script llamado BuyScript y dale un hacer un comentariodescriptivo.

  3. En BuyScript, crea variables para almacenar la parte del botón y el detector de clics.


    -- Permite a los jugadores hacer clic en un botón para comprar una actualización que aumente los espacios
    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
  4. Crea una nueva función llamada giveUpgrade() que obtiene un parámetro llamado player .La función actualizará los espacios de un jugador cada vez que haga clic en el botón.


    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
    local function giveUpgrade(player)
    end
  5. Después de la función, escriba el evento de conexión del detector de clics a la función .


    local function giveUpgrade(player)
    end
    clickDetector.MouseClick:Connect(giveUpgrade)
  6. Añade una declaración de impresión en giveUpgrade() para probar la función.


    local function giveUpgrade(player)
    print("Someone clicked the button.")
    end
  7. Juega tu proyecto. Haz clic en el botón y comprueba que veas el texto en la ventana de salida.

Consejos de solución de problemas

Problema: No puedes hacer clic en el botón o un cursor de ratón no aparece en el botón.

  • Asegúrese de que el objeto ClickDetector sea un hijo de la parte que está tratando de hacer clic.
  • Asegúrate de que tu personaje esté lo suficientemente cerca del botón. O, asegúrate de que la herramienta no esté equipada.

Comprar mejoras

Con un botón de trabajo, es hora de agregar código en giveUpgrade para eliminar el oro de un jugador a cambio de una bolsa mejorada.

Añadir variables de actualización

Cada actualización tendrá dos variables: el costo de la actualización y cuántos espacios tiene.

  1. En BuyScript, debajo de local clickDetector, crea dos variables:

    • newSpace : ¿Cuántos espacios agrega una actualización al comprarla.
    • upgradeCost : El costo de una sola mejora

    -- Variables para la mejora
    local newSpaces = 10
    local upgradeCost = 100

Otorgar mejoras

Antes de vender al jugador la mejora, debes verificar si tienen suficiente dinero. Si lo hacen, agregarás a su cantidad máxima de espacios.

  1. En giveUpgrade() , escriba lo siguiente para obtener las estadísticas de los líderes del jugador para que pueda acceder a sus variables de oro y espacio.


    local function giveUpgrade(player)
    print("Someone clicked the button")
    -- Obtiene la tabla de clasificación del jugador para obtener otros valores de Int
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Obtiene el dinero y los espacios del jugador para hacer cambios
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    end
    end
  2. Después de escribir las variables para espacios, crea una declaración if para si el valor de playerGold es mayor o igual al costo de actualización.


    local function giveUpgrade(player)
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    -- Comprueba si el jugador tiene suficiente dinero para pagar la mejora
    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    end
    end
    end
  3. En la declaración if, resta el costo de la mejoradel oro del jugador.


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    -- Resta el costo del objetodel dinero del jugador
    playerGold.Value -= upgradeCost
    end
  4. En la siguiente línea, añade el número de los espacios actuales del jugador junto con los nuevos espacios otorgados por mejora.


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    playerGold.Value -= upgradeCost
    playerSpaces.Value += newSpaces
    end
  5. Juega tu proyecto y comprueba la tabla de clasificación para ver si la mejora de espacios funcionó.

Consejos de solución de problemas

En este punto, las actualizaciones no funcionan como se pretendía, prueba una de las siguientes opciones.

  • Asegúrate de que cualquier cosa en el de tenga citas en ambos lados, como .
  • Asegúrese de que cada cadena en FindFirstChild sea exactamente la misma que el nombre de ese IntValue en el script de configuración del reproductor.Por ejemplo, si tu código usa rubíes como dinero, deberías tener FindFirstChild("Rubies") .
  • Asegúrate de que giveUpgrade() esté por encima de clickDetector.MouseClick.

Completa el script BuyScript

Una versión terminada del script se puede referenciar a continuación.


-- Permite a los jugadores hacer clic en un botón para comprar una actualización que aumente MaxSpaces
local buyButton = script.Parent
local clickDetector = buyButton.ClickDetector
-- Variables para la mejora
local newSpaces = 10
local upgradeCost = 100
local function giveUpgrade(player)
print("Someone clicked the button")
-- Obtiene la tabla de clasificación del jugador para obtener otros valores de Int
local playerStats = player:FindFirstChild("leaderstats")
if playerStats then
-- Obtiene el dinero y los espacios del jugador para hacer cambios
local playerGold = playerStats:FindFirstChild("Gold")
local playerSpaces = playerStats:FindFirstChild("Spaces")
-- Comprueba si el jugador tiene suficiente dinero para pagar la mejora
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
print("Player can buy item")
-- Resta el costo del objetodel dinero del jugador
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)