Búsqueda del Tesoro

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

El ScavengerHunt módulo de desarrollador brinda a los jugadores una forma inherentemente gamificada de explorar tu experiencia, introduciéndolos de manera orgánica a todo el lugar. El progreso del jugador es persistente, por lo que las búsquedas del tesoro pueden continuar a través de sesiones.

Uso del módulo

Instalación

Para usar el módulo ScavengerHunt en una experiencia:

  1. Desde el menú Ventana de Studio o la barra de herramientas de la pestaña Inicio, abre la Caja de herramientas y selecciona la pestaña Tienda de Creadores.

  2. Asegúrate de que esté seleccionada la clasificación Modelos, luego haz clic en el botón Ver Todos para Categorías.

  3. Localiza y haz clic en el mosaico Paquetes.

  4. Localiza el módulo Búsqueda del Tesoro y haz clic en él, o arrástralo y suéltalo en la vista 3D.

  5. En la ventana Explorador, mueve todo el modelo ScavengerHunt a ReplicatedStorage. Al ejecutar la experiencia, el módulo comenzará a funcionar.

Usar tokens

El módulo de búsqueda del tesoro utiliza tokens como los elementos que los jugadores buscan y recolectan. El módulo viene con un modelo de token que puedes posicionar en el mundo 3D.

  1. Localiza la malla Token1 dentro de la carpeta Workspace de la carpeta principal del módulo.

  2. Mueve Token1 a la jerarquía de Workspace de nivel superior y colócalo donde desees.

  3. Asigna al token un nombre único; este nombre es cómo el módulo rastrea qué tokens ha recolectado cada jugador.

  4. Para agregar más tokens, duplica un token existente y dale un nombre único.

Si no deseas utilizar las mallas de tokens incluidas, cualquier Model o BasePart funcionará, siempre que cumpla con los siguientes criterios:

  • El objeto tiene una etiqueta de CollectionService llamada ScavengerHuntPart. Si lo deseas, el nombre de la etiqueta de CollectionService que utiliza el módulo se puede cambiar configurando un valor diferente para tokenTag en una llamada a configureServer.

  • El objeto contiene una instancia StringValue hijo configurada con el "texto de sabor" a mostrar cuando se recolecte el token.

    Modelo
    MeshPart

Usar regiones

Las regiones son ligeramente diferentes a los tokens, ya que son áreas grandes que se marcan como "recolectadas" una vez que el jugador entra en ellas. Además, cuando un jugador sale de la región, el modal de texto de sabor se cierra automáticamente y la región misma se elimina del espacio de trabajo.

  1. Crea una parte anclada alrededor de la región, como un bloque o esfera. El módulo desactivará automáticamente la propiedad CanCollide en tiempo de ejecución para que los jugadores no colisionen físicamente con la región.

  2. Asigna un nombre único. Este nombre es cómo el módulo rastrea qué regiones ha entrado cada jugador.

  3. Utilizando la sección Etiquetas de las propiedades de la parte, aplica la etiqueta ScavengerHuntPart a la parte para que CollectionService la detecte. Si lo deseas, el nombre de la etiqueta que utiliza el módulo se puede cambiar configurando un valor diferente para tokenTag en una llamada a configureServer.

  4. Incluye una instancia StringValue hijo configurada con el "texto de sabor" a mostrar cuando se entre en la región.

Configuración

El módulo está preconfigurado para funcionar en la mayoría de los casos de uso, pero puede personalizarse fácilmente. Por ejemplo, para cambiar la velocidad de rotación de los tokens y personalizar el mensaje modal de información:

  1. En StarterPlayerScripts, crea un nuevo LocalScript y renómbralo a ConfigureScavengerHunt.

  2. Pega el siguiente código en el nuevo script.

    LocalScript - ConfigureScavengerHunt

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
    ScavengerHunt.configureClient({
    infoModalText = "¡Bienvenido a mi Búsqueda del Tesoro!",
    completeModalText = "¡Gracias por jugar mi Búsqueda del Tesoro!",
    tokenRotationSpeed = 60,
    })

Eventos de colección

Cada vez que un jugador recolecta un token o entra en una región, se activa el evento collected. Puedes escuchar este evento desde un Script del lado del servidor y responder en consecuencia. La función conectada recibe al Player que chocó con el token o ingresó a la región y el nombre de ese token o región.

De manera similar, cuando un jugador recolecta todos los tokens o entra en todas las regiones etiquetadas, se activa el evento allCollected y la función conectada recibe al Player asociado. Esta función solo se activa una vez por jugador y se puede utilizar para recompensar a ese jugador con una insignia, acceso a una nueva área, moneda dentro de la experiencia, etc.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.collected:Connect(function(player, itemName)
print(player.DisplayName, itemName)
end)
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completó la búsqueda!")
end)

GUI personalizada

Este módulo expone varias opciones para personalizar su GUI predeterminada, pero puedes optar por mostrar elementos de GUI personalizados en su lugar.

Cuando useCustomModals se establece en true en la función configureClient, el evento showInfoModal se activa cada vez que el jugador activa el rastreador de tokens. De manera similar, el evento showCompleteModal se activa cuando el jugador ha recolectado todo en la búsqueda del tesoro. Ambos de estos eventos se pueden escuchar en un LocalScript.

LocalScript

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.showInfoModal:Connect(function()
-- Mostrar un modal de información personalizado
local infoModal = Players.LocalPlayer.PlayerGui.ScavengerInfoModal
infoModal.Enabled = true
end)
ScavengerHunt.showCompleteModal:Connect(function()
-- Mostrar un modal de completado personalizado
local completeModal = Players.LocalPlayer.PlayerGui.ScavengerCompleteModal
completeModal.Enabled = true
end)

Visibilidad de GUI

Por defecto, la búsqueda del tesoro oculta todas las ScreenGuis y CoreGuis (excepto por la lista de jugadores) cuando aparece el modal de información o el modal de finalización. Si deseas anular este comportamiento de ocultación automática y decidir programáticamente qué GUIs deben permanecer visibles, incluye las devoluciones de llamada hideOtherGuis y showOtherGuis y responde con tu propia lógica personalizada.

LocalScript

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local hiddenInstances = {}
-- Crear una Screen GUI que no se ocultará
local specialGuiInstance = Instance.new("ScreenGui")
-- Dibujar la screen GUI encima de la GUI de búsqueda del tesoro
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Agregar etiqueta de texto a la GUI
local specialLabel = Instance.new("TextLabel")
specialLabel.Size = UDim2.fromScale(1, 0.1)
specialLabel.Text = "Permanece visible al mostrar modales"
specialLabel.Font = Enum.Font.GothamMedium
specialLabel.TextSize = 24
specialLabel.Parent = specialGuiInstance
ScavengerHunt.hideOtherGuis(function()
-- Ocultar todas las Screen GUIs definidas por el desarrollador
local instances = playerGui:GetChildren()
for _, instance in instances do
if instance:IsA("ScreenGui") and not instance.Name == "ScavengerHunt" and instance.Enabled then
instance.Enabled = false
table.insert(hiddenInstances, instance)
end
end
-- Ocultar GUI principales específicas
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
ScavengerHunt.showOtherGuis(function()
-- Mostrar todas las Screen GUIs definidas por el desarrollador que fueron ocultadas
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Mostrar GUI principales específicas que fueron ocultadas
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)

Referencia de API

Funciones

configureClient

configureClient(config: table)

Reemplaza las opciones de configuración predeterminadas del lado del cliente a través de las siguientes claves/valores en la tabla config. Esta función solo se puede llamar desde un LocalScript.

ClaveDescripciónPredeterminado
autoDismissTimeTiempo en segundos antes de que el modal se cierre automáticamente o navegue a la siguiente página si hay una. Establecer en 0 para desactivar.20
closeModalGamepadBoton de gamepad utilizado para cerrar modales (Enum.KeyCode).ButtonA
closeModalKeyboardTecla de teclado utilizada para cerrar modales (Enum.KeyCode).E
completeModalTextTexto que se muestra en el modal que aparece después de hacer clic en el rastreador de tokens cuando la búsqueda del tesoro está completa."¡Gracias por participar!"
infoModalTextTexto que se muestra en el modal que aparece después de hacer clic en el rastreador de tokens."Encuentra todos los tokens para completar la búsqueda"
tokenRotationSpeedVelocidad a la que rotan los tokens, en grados por segundo. Establecer en 0 para evitar la rotación.20
nextArrowImageImagen utilizada para indicar que hay más páginas de modales para mostrar después de la página modal actual."rbxassetid://8167172095"
openTokenTrackerGamepadBoton de gamepad utilizado para mostrar los modales que aparecen después de activar el rastreador de tokens (Enum.KeyCode).ButtonY
openTokenTrackerKeyboardTecla de teclado utilizada para mostrar los modales que aparecen después de activar el rastreador de tokens (Enum.KeyCode).Y
openTokenTrackerGamepadButtonImageImagen del botón del gamepad que se utiliza para activar el rastreador de tokens."rbxassetid://8025860488"
regionIconIcono que se mostrará junto al rastreador de tokens al entrar en regiones."rbxassetid://8073794624"
tokenIconIcono que se mostrará junto al rastreador de tokens al recolectar tokens."rbxassetid://8073794477"
tokenTrackerPositionSmallDevicePosición de la interfaz de usuario del rastreador de tokens en dispositivos pequeños como teléfonos (UDim2).(1, 0, 0, 84)
tokenTrackerPositionLargeDevicePosición de la interfaz de usuario del rastreador de tokens en dispositivos más grandes como tabletas y PC (UDim2).(1, 0, 1, -16)
useRegionsEn lugar de tokens, usar regiones.false
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.configureClient({
infoModalText = "¡Bienvenido a mi Búsqueda del Tesoro!",
completeModalText = "¡Gracias por jugar mi Búsqueda del Tesoro!",
tokenRotationSpeed = 60,
navigationBeam = {
lightEmission = 1
},
modal = {
textSize = 14
},
})

configureServer

configureServer(config: table)

Reemplaza las opciones de configuración predeterminadas del lado del servidor a través de las siguientes claves/valores en la tabla config. Esta función solo se puede llamar desde un Script.

ClaveDescripciónPredeterminado
tokenTagEtiqueta utilizada por CollectionService para encontrar todos los tokens o regiones utilizados en la búsqueda del tesoro."ScavengerHuntPart"
datastoreNameNombre del DataStore utilizado por la búsqueda del tesoro para almacenar el progreso de colección de cada jugador."ScavengerHuntTokens"
resetOnPlayerRemovingSi es verdadero, restablece el progreso del usuario cuando abandona la experiencia; conveniente para no guardar el progreso mientras se prueba la búsqueda del tesoro.false
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.configureServer({
tokenTag = "GreenGem",
})

disable

disable()

Oculta toda la interfaz de usuario para la búsqueda del tesoro, desconecta todos los oyentes de eventos de entrada y evita que los jugadores recojan tokens o interactúen con regiones. Esta función solo se puede llamar desde un Script.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.disable()

enable

enable()

Muestra toda la interfaz de usuario para la búsqueda del tesoro, conecta todos los oyentes de eventos de entrada y permite que los jugadores recojan tokens e interactúen con regiones. Esta función solo se puede llamar desde un Script.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.enable()

Eventos

collected

Se activa cuando un jugador choca con un token o entra en una región. La función conectada recibirá al Player que chocó con el token o entró en la región y el nombre del token con el que chocó o la región que se ingresó. Este evento solo se puede conectar en un Script.

Parámetros
player: PlayerUsuario que chocó con un token o ingresó en una región.
itemName: string Nombre del token con el que chocó o la región en la que ingresó.
totalCollected: numberNúmero total de tokens recolectados por el usuario representado por player.
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.collected:Connect(function(player, itemName, totalCollected)
print(player.DisplayName, itemName, totalCollected)
end)

allCollected

Se activa cuando un jugador recolecta todos los tokens o ingresa todas las regiones en la búsqueda del tesoro. La función conectada recibirá al Player que recolectó todos los tokens, y solo se activa una vez por jugador. Este evento solo se puede conectar en un Script.

Parámetros
player: PlayerJugador que recolectó todos los tokens o ingresó todas las regiones.
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completó la búsqueda!")
end)

showInfoModal

Se activa cuando el jugador hace clic en el rastreador de tokens cuando la opción de configuración useCustomModals configuración está establecida en verdadero. Este evento solo se puede conectar en un LocalScript.

LocalScript

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.showInfoModal:Connect(function()
local infoModal = Players.LocalPlayer.PlayerGui.InfoModal
infoModal.Enabled = true
end)

showCompleteModal

Se activa cuando el jugador hace clic en el rastreador de tokens cuando la opción de configuración useCustomModals configuración está establecida en true y el jugador ha recolectado todos los tokens en la búsqueda del tesoro. Este evento solo se puede conectar en un LocalScript.

LocalScript

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.showCompleteModal:Connect(function()
local completeModal = Players.LocalPlayer.PlayerGui.CompleteModal
completeModal.Enabled = true
end)

Devoluciones de llamada

hideOtherGuis

hideOtherGuis(callback: function)

Esta devolución de llamada se ejecuta inmediatamente antes de que se muestre un modal, lo que te permite deshabilitar toda la ScreenGuis o elementos dentro de ellas antes de que se muestre el modal. Consulta Visibilidad de GUI para detalles y código de ejemplo.

showOtherGuis

showOtherGuis(callback: function)

Esta devolución de llamada se ejecuta inmediatamente después de que un modal se haya cerrado, lo que te permite habilitar toda la ScreenGuis o elementos dentro de ellas. Consulta Visibilidad de GUI para detalles y código de ejemplo.

©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.