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
En el espacio de trabajo, crea un nuevo modelo llamado Tienda.
En la tienda, crea una nueva parte de bloque llamada BuyButton.
En BuyButton, agregue una nueva interfaz de usuario de superficie haciendo clic en + y desplazándose hacia la interfaz de usuario.
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.
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.
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.
Cambia el escala de X y Y a 0.5 para hacer un cuadrado.
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.
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.
En las propiedades de BuyText, desplace hacia abajo y cambie texto a algo descriptivo. Por instancia: "Buy Larger Bag: 100 gold" .
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.
En el botón de compra, agrega un detector de clics.
En BuyButton, agrega un nuevo script llamado BuyScript y dale un hacer un comentariodescriptivo.
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 espacioslocal buyButton = script.Parentlocal clickDetector = buyButton.ClickDetectorCrea 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.Parentlocal clickDetector = buyButton.ClickDetectorlocal function giveUpgrade(player)endDespués de la función, escriba el evento de conexión del detector de clics a la función .
local function giveUpgrade(player)endclickDetector.MouseClick:Connect(giveUpgrade)Añade una declaración de impresión en giveUpgrade() para probar la función.
local function giveUpgrade(player)print("Someone clicked the button.")endJuega 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.
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 mejoralocal newSpaces = 10local 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.
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 Intlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Obtiene el dinero y los espacios del jugador para hacer cambioslocal playerGold = playerStats:FindFirstChild("Gold")local playerSpaces = playerStats:FindFirstChild("Spaces")endendDespué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 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 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 jugadorplayerGold.Value -= upgradeCostendEn 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 thenplayerGold.Value -= upgradeCostplayerSpaces.Value += newSpacesendJuega 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)