Das ScavengerHunt-Entwicklermodul gibt Spieler einen inherenten gamifizierten Weg, um deine Erlebniszu erkunden, und stellen sie organisch in den gesamten Ort ein. Der Fortschritt des Spielers ist dauerhaft, so dass Rätzelkämpfe zwischen Sitzungen fortgesetzt werden können.
Modul-Einsatz
Installation
Um das ScavengerHunt -Modul in einem Erlebnis zu verwenden:
Von der Ansicht-Registerkarte öffnen Sie die Werkzeugkiste und wählen Sie die Creator-Store -Registerkarte.
Stellen Sie sicher, dass die Models Sortierung ausgewählt ist, dann klicken Sie auf die Alle anzeigen Schaltfläche für Kategorien .
Suchen Sie die Dev-Module -Kachel und klicken Sie darauf.
Suchen Sie das Rätzelmodul und klicken Sie darauf, oder ziehen Sie es in die 3D-Ansicht.
In dem Explorer-Fenster bewegen Sie das gesamte ScavengerHunt-Modell in ServerScriptService . Nach dem Laufen der Erlebniswird das Modul auf verschiedene Dienste verteilt und beginnt zu laufen.
Token verwenden
Das Plugin "Schatzjäger-Modul" verwendet Token als Gegenstände, nach denen Spieler suchen und sammeln. Das Modul kommt mit einem Token-Modell, das Sie in der 3D-Welt platzieren können.
Suchen Sie das Token1 Netzwerk innerhalb der Arbeitsbereich -Ordner der Hauptordner des Moduls.
Bewegen Sie Token1 in die oberste Ebene der Arbeitsbereich Hierarchie und positionieren Sie es dort, wo Sie möchten.
Geben Sie dem Token einen einzigartigen Namen; dieser Name ist, wie das Modul verfolgt, welche Token jedes Spieler gesammelt hat.
Um mehr Token hinzuzufügen, duplizieren Sie ein bestehendes Token und geben Sie es einen einzigartigen Namen.
Wenn Sie die mitgelieferten Mesh-Token nicht verwenden möchten, werden alle Model oder BasePart funktionieren, solange sie die folgenden Kriterien erfüllen:
Objekt hat ein CollectionService Tag von ScavengerHuntPart. Wenn gewünscht, kann der Name des Tags CollectionService , der von dem Modul verwendet wird, geändert werden, indem ein anderes Wert für 1> токенTag1> in einem 4> konfigurierenServer4>-Aufruf festgelegt wird.
Objekt enthält eine Kindheit StringValue Instanz, die auf den "Geschmackstext" eingestellt ist, um anzuzeigen, wenn das Token gesammelt wird.
Verwendung von Regionen
Regionen unterscheiden sich leicht von Token, da große Bereiche, die als "gesammelt" markiert sind, sobald der Spieler sie betritt. Darüber hinaus, wenn ein Spieler die Region verlässt, wird der Geschmacks-Text-Modus automatisch abgewiesen und die Region selbst aus dem Arbeitsbereich entfernt.
Erstellen Sie einen verankerten Teil um die Region, z. B. einen Block oder eine Kugel. Das Modul deaktiviert automatisch die CanCollide Eigenschaft auf der Laufzeit, damit die Spieler nicht physisch mit der Region kollidieren.
Geben Sie ihm einen einzigartigen Namen . Dieser Name ist, wie das Modul verfolgt, in welche Regionen jedes Spieler eingegeben hat.
Mit dem Tags-Abschnitt der Eigenschaften der Teil, oder Studio's Tag-Editor, geben Sie dem Tag ScavengerHuntPart an, um das Teil so zu etikettieren, dass 1> Class.CollectionService1> es erkennt. Wenn gewünscht, kann der Tagname, den das Modul
Enthalte eine Kinders StringValue Instanz, die auf den "Geschmackstext" eingestellt ist, um angezeigt zu werden, wenn die Region eingegeben wird.
Konfiguration
Das Modul ist für die meisten Anwendungsfälle vordefiniert, aber es kann leicht anpassen. Zum Beispiel, um die Token-Rotation-Geschwindigkeit zu ändern und das modale Nachrichtanzupassen:
In StarterPlayerScripts erstellen Sie ein neues LocalScript und benennen Sie es zu KonfigurierenScavengerHunt um.
Fügen Sie den folgenden Code in das neue Skript, das. PL: die Skriptsein.
Lokales Skript - Konfigurieren Sie ScavengerHuntlocal 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,})
Sammlerereignisse
Jedes Mal, wenn ein Spieler ein Token sammelt oder eine Region betritt, wird das gesammelte Ereignis ausgelöst. Sie können dieses Ereignis von einem Server-seitigen Script hören und entsprechend reagieren. Die verbundene Funktion erhält das Player, das mit dem Token oder der Region kollidiert und den Namen des Tokens oder der Region.
Ebenso, wenn ein Spieler alle Token sammelt oder alle mit dem Tag alle in der Region eingibt, wird das Ereignis alle gesammelt ausgelöst und die verbundene Funktion den zugeordneten Class.Player ausführt. Diese Funktion wird nur einmal pro Spieler ausgeführt und kann verwendet werden, um diesen Spieler mit einem 1>
Skript
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)
Benutzerdefinierte grafische Benutzeroberfläche
Dieses Modul gibt mehrere Optionen zum Anpassen seiner grafische Benutzeroberfläche, aber Sie können stattdessen benutzerdefinierte GUI-Elemente anzeigen.
Wenn useCustomModals in der Funktion true in der konfigurieren Client auf 11> zeigenInfoModal1> gesetzt ist, wird das Ereignis 4> zeigeInfoModal4> jedes Mal ausgelöst, wenn der Spieler den Token-Tracker aktiviert. Ähnlich wie das Ereign
Lokales Skript
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showInfoModal:Connect(function()
-- Zeige ein benutzerdefiniertes Info-Modul
local infoModal = Players.LocalPlayer.PlayerGui.ScavengerInfoModal
infoModal.Enabled = true
end)
ScavengerHunt.showCompleteModal:Connect(function()
-- Zeige eine benutzerdefinierte vollständige Modal
local completeModal = Players.LocalPlayer.PlayerGui.ScavengerCompleteModal
completeModal.Enabled = true
end)
GUI-Sichtbarkeit
Standardmäßig versteckt die Rätzeljagd alle ScreenGuis und CoreGuis (außer der Spielerliste), wenn die Info-Modalt oder die Abschluss-Modalt erscheinen. Wenn Sie dieses automatische Verhalten und die Programmiersprache übersteigen möchten, um die G
Lokales Skript
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 = {}
-- Erstellen Sie ein Bildschirmsystem, das nicht versteckt wird
local specialGuiInstance = Instance.new("ScreenGui")
-- Ziehen Sie die GUI-Oberfläche über der grafische Benutzeroberfläche
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Text-Label zum grafische Benutzeroberflächehinzufügen
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()
-- Alle entwicklerdefinierten Bildschirm-GUIs ausblenden
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
-- Bestimmte Kern-GUIs ausblenden
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
ScavengerHunt.showOtherGuis(function()
-- Zeige alle entwicklerdefinierten Bildschirm-GUIs, die versteckt waren
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Zeige bestimmte Kern-GUI, die versteckt waren
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)
API-Referenz
Funktionen
konfigurierenClient
Überschreibt Standard-Client-Konfigurationsoptionen durch die folgenden Schlüssel/ Werte in der config Tabelle. Diese Funktion kann nur von einem LocalScript aufgerufen werden.
Schlüssel | Beschreibung | Standard |
---|---|---|
autoDismissTime | Zeit in Sekunden, bevor das Modal automatisch abbricht oder auf die nächste Seite navigiert, wenn es eine gibt. Setzen Sie es auf 0, um zu deaktivieren. | 20 |
closeModalGamepad | Gamepad-Button zum Schließen von Modalen ( Enum.KeyCode ). | ButtonA |
closeModalKeyboard | Tastatur-Taste verwendet, um Modals zu schließen ( Enum.KeyCode ). | E |
completeModalText | Text, der auf dem Modal anzeigt wird, nachdem der Token-Tracker beim Klicken auf die Schnitzeljagd abgeschlossen ist. | „Danke für deine Teilnahme!“ |
infoModalText | Text, der auf dem Modal anzeigt wird, nachdem Sie auf die Token-Tracker-Anzeige geklickt haben. | „Finde alle Token, um die Jagd abzuschließen“ |
tokenRotationSpeed | Geschwindigkeit, mit der die Token pro Sekunde drehen. Setzen Sie auf 0, um die Rotation zu verhindern. | 20 |
nextArrowImage | Bild wird verwendet, um anzuzeigen, dass es mehr modale Seiten gibt, die nach der aktuellen modalen Seite angezeigt werden. | „rbxassetid://8167172095“ |
openTokenTrackerGamepad | Spielpad-Button wird verwendet, um die Modale anzuzeigen, die nach der Aktivierung des Token-Trackers erscheinen ( Enum.KeyCode ). | ButtonY |
openTokenTrackerKeyboard | Tastatur-Taste, die verwendet wird, um die Modals anzuzeigen, die nach dem Aktivieren des Token-Trackers erscheinen (Enum.KeyCode). | Y |
openTokenTrackerGamepadButtonImage | Bild für die Spielpad-Taste, die verwendet wird, um den Token-Tracker zu aktivieren. | „rbxassetid://8025860488“ |
regionIcon | Symbol, das neben dem Token-Tracker angezeigt wird, wenn Regionen eingegeben werden. | „rbxassetid://8073794624“ |
tokenIcon | Symbol, das neben dem Token-Tracker angezeigt wird, wenn Sie Token sammeln. | „rbxassetid://8073794477“ |
tokenTrackerPositionSmallDevice | Position des Token-Tracker-UI auf kleinen Geräten wie Telefonen ( UDim2 ). | (1, 0, 0, 84) |
tokenTrackerPositionLargeDevice | Position des Token-Tracker-UI auf größeren Geräten wie Tablets und PC ( UDim2 ). | (1, 0, 1, -16) |
useRegions | Statt Token , verwende Regionen . | falsch |
Lokales Skript
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},})
konfigurierenServer
Überschreibt Standard-Server-Konfigurationsoptionen durch die folgenden Schlüssel/ Werte in der config Tabelle. Diese Funktion kann nur von einem Script aufgerufen werden.
Schlüssel | Beschreibung | Standard |
---|---|---|
tokenTag | Tag, der von CollectionService verwendet wird, um alle Token oder Regionen zu finden, die in der Schnitzeljagd verwendet werden. | „Kopfgeldjagd“ |
datastoreName | Name des DataStore , der von der Rätzeljagd verwendet wird, um den Fortschritt der Sammlung jedes Spieler:inzu speichern. | „ScavengerHuntTokens“ |
resetOnPlayerRemoving | Wenn wahr, setzt der Benutzer den Fortschritt zurück, wenn er die Erlebnisverlässt; praktisch, um den Fortschritt nicht zu speichern, während der Schnitzeljagd getestet wird. | falsch |
Skript
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.configureServer({tokenTag = "GreenGem",})
deaktivieren
Versteckt alle UI für die Schnitzeljagd, verbindet alle Eingabeelement-Zuhörer und verhindert, dass Spieler Token sammeln oder mit Regionen interagieren. Diese Funktion kann nur von einem Script aufgerufen werden.
Skript
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.disable()
aktivieren
Zeigt alle UI für die Schnitzeljagd an, verbindet alle Ereignishörer und ermöglicht es Spielern, Token zu sammeln und mit Regionen zu interagieren. Diese Funktion kann nur von einem Script aufgerufen werden.
Skript
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.enable()
Ereignisse
gesammelt
Feuert ab, wenn ein Spieler mit einem Token kollidiert oder eine Region betritt. Die verbundene Funktion erhält den Player, der mit dem Token kollidiert oder die Region betritt und den Namen des Tokens, der kollidiert wurde oder die Region, die eingergeben wurde. Dieses Ereignis kann nur in einem Script verbunden werden.
Parameter | |
---|---|
Spieler:in: Player | Benutzer, der mit einem Token kollidiert oder eine Region eingegeben hat. |
ItemName: string | Name des Tokens, der kollidiert wurde, oder die Region, die eingegeben wurde. |
gesamtGesammelt: number | Gesamte Anzahl der von dem Benutzer Spieler:in gesammelten Token. |
Skript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.collected:Connect(function(player, itemName, totalCollected)
print(player.DisplayName, itemName, totalCollected)
end)
alleGesammelt
Feuert ab, wenn ein Spieler alle Token sammelt oder alle Regionen in der Schnitzeljagd betritt. Die verbundene Funktion erhält das Player, das alle Token gesammelt hat, und wird nur einmal pro Spieler:inausgelöst. Dieses Ereignis kann nur in einem Script verbunden werden.
Parameter | |
---|---|
Spieler:in: Player | Spieler, der alle Token gesammelt hat oder alle Regionen betreten hat. |
Skript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completed the hunt!")
end)
zeigeInfoModal
Feuert, wenn der Spieler auf die Token-Verfolger-Registerkarte klickt, wenn die useCustomModals Konfiguration auf "True" gesetzt ist. Dieses Ereignis kann nur in einem Class.LocalScript verbunden werden.
Lokales Skript
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)
showFertig
Feuert, wenn der Spieler auf den Token-Tracker klickt, wenn die useCustomModalsKonfiguration Option auf true und der Spieler alle Token in der Schnitzeljagd gesammelt hat. Dieses Ereignis kann nur in einem 1> Class.LocalScript1> verbunden werden.
Lokales Skript
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)
Rückrufe
Andere Guis ausblenden
Dieser Rückruf wird sofort vor dem Anzeigen eines Modals ausgeführt, damit Sie entweder ScreenGuis oder Elemente innerhalb von ihnen deaktivieren können, bevor das Modal angezeigt wird. Siehe GUI-Sichtbarkeit für Details und Codes.
AndereGuis anzeigen
Dieser Rückruf wird sofort nach dem Schließen eines Modals ausgelöst, so dass Sie gesamte ScreenGuis oder Elemente innerhalb von ihnen aktivieren können. Siehe GUI-Sichtbarkeit für Details und Codes.