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:
De la pestaña Ver, abra la Caja de herramientas y seleccione la pestaña Tienda del Creador .
Asegúrese de que se seleccione el Modelos clasificación y luego haga clic en el botón Ver Todo para Categorías .
Ubique y haga clic en el mosaico de Modulos de Dev .
Ubique el módulo Búsqueda de tesoros y haz clic en él, o arrástralo y suéltalo en la vista 3D.
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.
Encuentra el Token1 malla dentro de la carpeta espacio de trabajo del directorio principal del módulo.
Mueva Token1 dentro de la jerarquía de nivel superior Espacio de Trabajo y colóquelo donde se desee.
Déle al token un nombre único ; este nombre es cómo el módulo rastrea qué fichas cada jugador ha recogido.
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.
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.
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.
Dale un nombre único . Este nombre es cómo el módulo rastrea qué regiones ingresa cada jugador.
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
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:
En StarterPlayerScripts , crea un nuevo LocalScript y renombralo a ConfigurarScavengerHunt .
Pega el siguiente código en el nuevo script.
LocalScript - ConfigureScavengerHuntlocal 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
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 .
Clave | Descripción | Por defecto |
---|---|---|
autoDismissTime | Tiempo 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 |
closeModalGamepad | Botón de Gamepad usado para cerrar modalidades ( Enum.KeyCode ). | ButtonA |
closeModalKeyboard | Tecla de teclado usada para cerrar modales ( Enum.KeyCode ). | E |
completeModalText | Texto 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!» |
infoModalText | Texto 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» |
tokenRotationSpeed | Velocidad en la que se rotarlos tokens, en grados por segundo. Establece 0 para evitar la rotación. | 20 |
nextArrowImage | Imagen utilizada para indicar que hay más páginas modales para mostrar después de la página modular actual. | ""rboxassetid://8167172095" |
openTokenTrackerGamepad | Botón de Gamepad usado para mostrar los modales que aparecen después de activar el rastreador de tokens ( Enum.KeyCode ). | ButtonY |
openTokenTrackerKeyboard | Tecla de teclado utilizada para mostrar las modalidades que aparecen después de activar el rastreador de tokens ( Enum.KeyCode ). | Y |
openTokenTrackerGamepadButtonImage | Imagen para el botón de la consola que se usa para activar el rastreador de tokens. | ""rboxassetid://8025860488" |
regionIcon | Icono para mostrar junto al rastreador de fichas cuando se ingresa a regiones. | ""rboxassetid://8073794624" |
tokenIcon | Icono para mostrar junto al rastreador de fichas cuando se recogen fichas. | ""rboxassetid://8073794477" |
tokenTrackerPositionSmallDevice | Posición de la interfaz de usuario del rastreador de tokens en pequeños dispositivos, como teléfonos ( UDim2 ). | (1, 0, 0, 84) |
tokenTrackerPositionLargeDevice | Posición del token tracker UI en dispositivos más grandes, como tabletas y PC ( UDim2 ). | (1, 0, 1, -16) |
useRegions | En 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
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 .
Clave | Descripción | Por defecto |
---|---|---|
tokenTag | Etiqueta usada por CollectionService para encontrar todas las fichas o regiones usadas en la búsqueda del tesoro. | «ScavengerHuntPart» |
datastoreName | Nombre del DataStore usado por la búsqueda del tesoro para almacenar el progreso de la colección de cada jugador. | «ScavengerHuntTokens» |
resetOnPlayerRemoving | Si 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
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
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: Player | Usuario que chocó con un token o ingresó a una región. |
itemName: string | Nombre del token que fue colisionado o la región que se ingresó. |
TotalRecolectado: number | Total 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: Player | Jugador 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
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
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.