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 del juego: comprar mejoras. Al permitir que los jugadores compren mejoras que aumentan el tamaño de su bolsa de artículos, pueden cosechar más artículos por viaje y ganar aún más oro.

Creando una Tienda

Cada tienda tendrá un botón que los jugadores harán clic para comprar una bolsa de artículos más grande. La tienda misma será una parte con una interfaz de usuario de SurfaceGUI, un artículo que permite escribir texto en las partes.

Creando el Signo

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

  2. En la Tienda, crea una nueva parte del bloque llamada BuyButton.

  3. En el Botón de Compra, agregue una nueva GUI de Superficie haciendo clic en el + y desplazándose hasta Interfaz gráfica (o GUI).

  4. En la interfaz gráfica de usuario de Surface, agregue una nueva etiqueta de texto llamada BuyText. Aparecerá una pequeña etiqueta en algún lugar de la parte.

  5. Dependiendo de cómo se fabricó la parte, la etiqueta puede estar en otro lugar. Si no ve el texto en el lado que desea, vaya a la interfaz de usuario de SurfaceGUI y busque la propiedad Face. Cambie esa propiedad hasta que vea la etiqueta de texto.

Cambiando el texto del letrero

En este momento, la Etiqueta de Texto es realmente pequeña y difícil de ver para los jugadores. Necesita ser escalado.

  1. En las propiedades de ComprarTexto, haga clic en la flecha junto a Tamaño . Cambie el Deslocamiento para X (izquierda y derecha) e Y (arriba y abajo) a 0.

  2. Cambia la escala de X e Y a 0.5 para hacer un cuadrado.

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

  4. Desplácese hacia abajo en las propiedades y abra Posición . Cambie la escala de X e Y a 0.5 para que el cuadro esté centrado en el centro.

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

  6. Marque TextScaled para que sea en . Esto escala automáticamente su texto para que se ajuste a la caja delimitadora.

Añadiendo un Detector de Clics

Los jugadores comprarán artículos haciendo clic en la tienda en lugar de tocarla. El script usará un detector de clics para saber si un jugador ha hecho clic en el letrero 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, añade un Detector de Clics.

  2. En BuyButton, añade un nuevo script llamado BuyScript y dale un hacer un comentariodescriptivo.

  3. En BuyScript, crea variables para almacenar la parte del botón y haz clic en detector.


    -- Permite a los jugadores hacer clic en un botón para comprar una mejora que aumenta los espacios
    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
  4. Crea una nueva función llamada giveUpgrade() que tenga un parámetro llamado player. La función mejorará 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 conecte el evento MouseClick del detector de clics a la función giveUpgrade().


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


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

Consejos para solucionar problemas

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

  • Asegúrese de que el objeto ClickDetector sea un hijo de la parte en la que está intentando hacer clic.
  • Comprueba 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 que funciona, es hora de agregar código a giveUpgrade para eliminar el oro de un jugador a cambio de una bolsa mejorada.

Añadiendo Variables de Mejora

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

  1. En BuyScript, en local clickDetector, crea dos variables:

    • newSpace : ¿Cuántos espacios añade una mejora cuando se compra?
    • upgradeCost : El costo de una única mejora

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

Otorgando Mejoras

Antes de vender la mejora al jugador, debe verificar si tiene suficiente dinero. Si lo hace, agregará a su cantidad máxima de espacios.

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


    local function giveUpgrade(player)
    print("Someone clicked the button")
    -- Obtén la tabla de clasificación del jugador para obtener otros IntValues
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Obtiene el dinero y los espacios del jugador para realizar cambios
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    end
    end
  2. Después de escribir las variables para los espacios, crea una sentencia if para determinar si el valor de playerGold es mayor o igual al costo de la 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 sentencia if, resta el costo de la mejora del oro del jugador.


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


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

Consejos para solucionar problemas

En este momento, las mejoras no funcionan como se esperaba, prueba uno de los siguientes.

  • Asegúrese de que cualquier cosa en el () de FindFirstChild() tenga citas en ambos lados , como "leaderstats".
  • Comprueba que cada cadena de FindFirstChild sea exactamente igual al nombre de ese IntValue en el script PlayerSetup. Por ejemplo, si tu código usa Rubíes como dinero, deberías tener FindFirstChild("Rubies") .
  • Asegúrese de que giveUpgrade() esté por encima de clickDetector.MouseClick.

Completa el script de BuyScript

Se puede hacer referencia a una versión terminada del guión a continuación.


-- Permite a los jugadores hacer clic en un botón para comprar una mejora que aumenta los 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")
-- Obtén la tabla de clasificación del jugador para obtener otros IntValues
local playerStats = player:FindFirstChild("leaderstats")
if playerStats then
-- Obtiene el dinero y los espacios del jugador para realizar 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")
-- Subtrae el costo del objeto del dinero del jugador
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)