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
En el área de trabajo, crea un nuevo modelo llamado Tienda.
En la Tienda, crea una nueva parte del bloque llamada BuyButton.
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).
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.
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.
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.
Cambia la escala de X e Y a 0.5 para hacer un cuadrado.
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.
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.
En las propiedades de BuyText, desplácese hacia abajo y cambie Text a algo descriptivo. Por instancia: "Buy Larger Bag: 100 gold" .
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.
En el Botón de Compra, añade un Detector de Clics.
En BuyButton, añade un nuevo script llamado BuyScript y dale un hacer un comentariodescriptivo.
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 espacioslocal buyButton = script.Parentlocal clickDetector = buyButton.ClickDetectorCrea 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.Parentlocal clickDetector = buyButton.ClickDetectorlocal function giveUpgrade(player)endDespués de la función, escriba conecte el evento MouseClick del detector de clics a la función giveUpgrade().
local function giveUpgrade(player)endclickDetector.MouseClick:Connect(giveUpgrade)Añade una sentencia de impresión en giveUpgrade() para probar la función.
local function giveUpgrade(player)print("Someone clicked the button.")endReproduce 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.
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 mejoralocal newSpaces = 10local 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.
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 IntValueslocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Obtiene el dinero y los espacios del jugador para realizar cambioslocal playerGold = playerStats:FindFirstChild("Gold")local playerSpaces = playerStats:FindFirstChild("Spaces")endendDespué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 thenlocal playerGold = playerStats:FindFirstChild("Gold")local playerSpaces = playerStats:FindFirstChild("Spaces")-- Comprueba si el jugador tiene suficiente dinero para pagar la mejoraif playerGold and playerSpaces and playerGold.Value >= upgradeCost thenendendendEn 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 jugadorplayerGold.Value -= upgradeCostendEn 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 thenplayerGold.Value -= upgradeCostplayerSpaces.Value += newSpacesendJuega 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)