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 desarrolladores le da a los jugadores una forma inherentemente gamificada de explorar su experiencia, introduciéndolos orgánicamente en todo el lugar. El progreso del jugador es persistente, por lo que las búsquedas del tesoro pueden continuar a lo largo de sesiones.

Uso de módulos

Instalación

Para usar el módulo ScavengerHunt en una experiencia:

  1. De la pestaña Ver, abra la Caja de herramientas y seleccione la pestaña Tienda del Creador .

    Toolbox toggle button in Studio
  2. Asegúrese de que se seleccione el Modelos clasificación y luego haga clic en el botón Ver Todo para Categorías .

  3. Ubique y haga clic en el mosaico de Modulos de Dev .

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

  5. En la ventana Explorer, mueva el modelo entero de ScavengerHunt a ServerScriptService . Al ejecutar la experiencia, el módulo se distribuirá a varios servicios y comenzará a funcionar.

Uso de fichas

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

  1. Encuentra el Token1 malla dentro de la carpeta espacio de trabajo del directorio principal del módulo.

  2. Mueva Token1 dentro de la jerarquía de nivel superior Espacio de Trabajo y colóquelo donde se desee.

  3. Déle al token un nombre único ; este nombre es cómo el módulo rastrea qué fichas cada jugador ha recogido.

  4. Para agregar más fichas, duplica una ficha existente y le da un nombre único.

Si no desea utilizar los tokens de malla incluidos, cualquier Model o BasePart funcionará, siempre que cumpla con los siguientes criterios:

  • El objeto tiene una etiqueta de CollectionService de ScavengerHuntPart . Si lo desea, el nombre de la etiqueta de CollectionService que utiliza el módulo se puede cambiar al establecer un valor diferente para 2> tokenTag2> en una llamada de 5>配置Server5> .

  • El objeto contiene una instancia hija de StringValue que se establece en el "texto de sabor" para mostrar cuando se recoge el token.

    Modelo
    Parcela de malla

Usando regiones

Las regiones difieren ligeramente de los tokens, ya que grandes áreas que están marcadas como "colectadas" una vez que el jugador las ingresa. Además, cuando un jugador deja la región, el texto de sabor de la región se desplaza automáticamente y la región se elimina del espacio de trabajo.

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

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

  3. Al usar la sección Etiquetas de las propiedades de la parte, o el Editor de Etiquetas de Studio ', aplica la etiqueta ScavengerHuntPart a la parte para que 1> Class.CollectionService1> la detecte. Si lo desea, el nombre de la etiqueta que utiliza el módulo se

  4. Incluye una instancia de StringValue hija que esté configurada como "texto de sabor" para mostrar cuando se ingrese la región.

Configuración

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

  1. En StarterPlayerScripts , crea un nuevo LocalScript y renombralo a ConfigurarScavengerHunt .

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

    LocalScript - ConfigureScavengerHunt

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
    ScavengerHunt.configureClient({
    infoModalText = "Welcome to my Scavenger Hunt!",
    completeModalText = "Thanks for playing my Scavenger Hunt!",
    tokenRotationSpeed = 60,
    })

Eventos de colección

Cada vez que un jugador recoge una ficha o ingresa a una región, el evento recogida se activa. Puedes escuchar este evento desde un lado del servidor Script y responder según sea el caso. La función conectada recibe el Player que colisionó con la ficha o ingresó a la región y ese nombre de región.

Del mismo modo, cuando un jugador recoge todos los tokens o ingresa todas las regiones etiquetadas, el evento todos los recogidos activa y la función conectada recibe el asociado 1> Class.Player1> . Esta función solo se activa una vez por jugador y se puede usar para recompensar a ese jugador con un

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.collected:Connect(function(player, itemName)
print(player.DisplayName, itemName)
end)
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completed the hunt!")
end)

Interfaz gráfica (o GUI)personalizado

Este módulo expone varias opciones para personalizar su interfaz de usuario por defecto, pero puede optar por mostrar elementos de interfaz de usuario personalizados en su lugar.

Cuando useCustomModals está configurado para true en la función ConfigurarCliente, el evento 1> showInfoModal1> se activa cada vez que el jugador activa el rastreador de tokens. De igual forma, el evento 4> showCompleteModal4> se activa cuando el

Script local

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

Visibilidad de GUI

Por defecto, la búsqueda del tesoro oculta todos los ScreenGuis y CoreGuis (excepto la lista de jugadores) cuando aparece la modalidad de información o la modalidad de completación. Si desea sobrepasar este comportamiento de auto-ocultamiento y programar qué GUI deben ser

Script local

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local hiddenInstances = {}
-- Cree una GUI de pantalla que no se ocultará
local specialGuiInstance = Instance.new("ScreenGui")
-- Dibuja la GUI de la pantalla por encima de la Interfaz gráfica (o GUI)de la búsqueda del tesoro
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Añadir etiqueta de texto a la Interfaz gráfica (o GUI)
local specialLabel = Instance.new("TextLabel")
specialLabel.Size = UDim2.fromScale(1, 0.1)
specialLabel.Text = "Remains visible when displaying modals"
specialLabel.Font = Enum.Font.GothamMedium
specialLabel.TextSize = 24
specialLabel.Parent = specialGuiInstance
ScavengerHunt.hideOtherGuis(function()
-- Ocultar todas las interfaces de usuario de desarrolladores
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 del núcleo específicas
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
ScavengerHunt.showOtherGuis(function()
-- Mostrar todos los GUI de pantalla definidos por el desarrollador que se ocultaban
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Mostrar GUI del núcleo específicas que se ocultaron
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)

Referencia de API

Funciones

Configurar cliente

ConfigurarCliente(Configurar: table )

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

ClaveDescripciónPor defecto
autoDismissTimeTiempo en segundos antes de que el modo de página se desactive automáticamente o se navegue a la siguiente página si hay una. Establece 0 para desactivar.20
closeModalGamepadBotón de Gamepad usado para cerrar modalidades ( Enum.KeyCode ).ButtonA
closeModalKeyboardTecla de teclado usada para cerrar modales ( Enum.KeyCode ).E
completeModalTextTexto para mostrar 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 para mostrar 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 en la que se rotarlos tokens, en grados por segundo. Establece 0 para evitar la rotación.20
nextArrowImageImagen utilizada para indicar que hay más páginas modales para mostrar después de la página modular actual.""rboxassetid://8167172095"
openTokenTrackerGamepadBotón de Gamepad usado para mostrar los modales que aparecen después de activar el rastreador de tokens ( Enum.KeyCode ).ButtonY
openTokenTrackerKeyboardTecla de teclado utilizada para mostrar las modalidades que aparecen después de activar el rastreador de tokens ( Enum.KeyCode ).Y
openTokenTrackerGamepadButtonImageImagen para el botón de la consola que se usa para activar el rastreador de tokens.""rboxassetid://8025860488"
regionIconIcono para mostrar junto al rastreador de fichas cuando se ingresa a regiones.""rboxassetid://8073794624"
tokenIconIcono para mostrar junto al rastreador de fichas cuando se recogen fichas.""rboxassetid://8073794477"
tokenTrackerPositionSmallDevicePosición de la interfaz de usuario del rastreador de tokens en pequeños dispositivos, como teléfonos ( UDim2 ).(1, 0, 0, 84)
tokenTrackerPositionLargeDevicePosición del token tracker UI en dispositivos más grandes, como tabletas y PC ( UDim2 ).(1, 0, 1, -16)
useRegionsEn lugar de fichas, usa regiones .falso
Script local

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.configureClient({
infoModalText = "Welcome to my Scavenger Hunt!",
completeModalText = "Thanks for playing my Scavenger Hunt!",
tokenRotationSpeed = 60,
navigationBeam = {
lightEmission = 1
},
modal = {
textSize = 14
},
})

Configurar servidor

Configurar el servidor (Configurar: table )

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

ClaveDescripciónPor defecto
tokenTagEtiqueta usada por CollectionService para encontrar todas las fichas o regiones usadas en la búsqueda del tesoro.«ScavengerHuntPart»
datastoreNameNombre del DataStore usado por la búsqueda del tesoro para almacenar el progreso de la colección de cada jugador.«ScavengerHuntTokens»
resetOnPlayerRemovingSi es así, restablece el progreso del usuario cuando se va de la experiencia; conveniente para no guardar el progreso mientras se prueba la búsqueda del tesoro.falso
Script

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

desactivar

desactivar()

Oculta toda la UI para la búsqueda del tesoro, desconecta todos los eventos de entrada y evita que los jugadores recolecten fichas 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:WaitForChild("ScavengerHunt"))
ScavengerHunt.disable()

activar

activar

Muestra toda la UI para la búsqueda del tesoro, conecta todos los eventos de entrada y permite a los jugadores recoger fichas y interactuar con regiones. Esta función solo se puede llamar desde un Script .

Script

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

Eventos

coleccionado

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

Parámetros
jugador: PlayerUsuario que chocó con un token o ingresó a una región.
itemName: stringNombre del token que fue colisionado o la región que se ingresó.
TotalRecolectado: numberTotal de fichas recogidas por el usuario representado por player .
Script

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

TodoRecolectado

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

Parámetros
jugador: PlayerJugador que ha recogido todos los tokens o ha entrado a todas las regiones.
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completed the hunt!")
end)

Mostrar información modal

Se activa cuando el jugador hace clic en el rastreador de tokens cuando la opción useCustomModalsConfiguración está configurada como verdadera. Este evento solo se puede conectar en un LocalScript .

Script local

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

Mostrar Completado Modal

Se activa cuando el jugador hace clic en el rastreador de tokens cuando la opción useCustomModals配置 está configurada como true y el jugador ha recogido todas las fichas en la búsqueda del tesoro. Este evento solo se puede conectar en un 2>Class.LocalScript2> .

Script local

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

Llamadas

esconderOtroGuis

otroGuis(devolución de llamada: function )

Este llamado se ejecuta inmediatamente antes de que se muestre un modal, para que pueda desactivar todos los elementos dentro de ellos antes de que se muestre el modal. Consulte ScreenGuis para obtener detalles y código de ejemplo.

mostrarOtroGuis

mostrarOtroGuis(devolución de llamada: function )

Este llamado se ejecuta inmediatamente después de que se haya descartado un modal, permitiéndote habilitar todo ScreenGuis o elementos dentro de ellos. Vea Visibilidad de GUI para obtener detalles y código de ejemplo.