The ScavengerHunt geliştirici modülü oyunculara deneyiminizi keşfetmek için doğuştan oyunlaştırılmış bir yol verir ve onları tüm dünyaorganik olarak tanıtır.Oyuncu ilerlemesi kalıcıdır, bu nedenle avcılar turlar arasında devam edebilir.
Modül kullanımı
Yükleme
Bir deneyimde Kaçak Avı modülünü kullanmak için:
Modellerin sıralanması seçildiğinden emin olun, ardından Tümünü Görüntüle düğmesine tıklayın Kategoriler için >.
Yerini ve tıklayın Geliştirici Modülleri düğmesi.
Kaçak Avı modülünü bulun ve tıklayın veya 3B görüntüye sürükleyin ve bırakın.
Gezgin penceresinde, tüm Kaçak Avı modelini Sunucu Kod Hizmetine taşıyın.Deneyimi çalıştırdıktan sonra, modül kendini çeşitli hizmetlere dağıtacak ve çalışmaya başlayacaktır.
Jetonları kullan
Çöp avı modülü, oyuncuların aradığı ve topladığı eşyalar olarak jetonları kullanır.Modül, 3B dünyada konumlandırabileceğiniz bir jeton modeli ile birlikte gelir.
Modülün ana klasörünün Token1 düğümünü içindeki Çalışma Alanı klasörünü bulun.
Hareket Token1 üst seviye Çalışma Alanı hiyerarşisine taşı ve istediğin yere yerleştir.
Jetonun eşsiz bir adı verin ; bu ad, modülün her oyuncunun topladığı jetonları izlediği şekildir.
Daha fazla jeton eklemek için mevcut bir jetonu kopyalayın ve benzersiz bir ad verin.
Paketlenmiş örgü jetonlarını kullanmak istemiyorsanız, aşağıdaki kriterlere uyuyorsa herhangi bir Model veya BasePart çalışacaktır:
Nesnenin bir CollectionService etiketi var ScavengerHuntPart .İstendiğinde, modülün kullandığı etiket adı, bir çağrısında farklı bir değer ayarlayarak değiştirilebilir.
Nesne, toplandığında görüntülenmesi için "lezzet metni" olarak ayarlanmış bir çocuk StringValue örneği içerir.
Model DokumaParçası
Bölgeleri kullan
Bölgeler, oyuncu onlara girdikten sonra "toplandı" olarak işaretlenen geniş alanlardan biraz farklıdır, çünkü oyuncu onlara girdikten sonra toplanır.Ayrıca, bir oyuncu bölgeden ayrıldığında, lezzet metin modu otomatik olarak reddedilir ve bölge kendi çalışma alanından kaldırılır.
Bir blok veya küre gibi bölgede sabitlenmiş bir parça oluşturun.Modül, çalışma sırasında otomatik olarak CanCollide özelliğini devre dışı bırakacak, böylece oyuncular bölgeyle fiziksel olarak çarpışmayacak.
Buna benzersiz bir ad verin . Bu ad, modülün her oyuncunun girdiği bölgeleri izlediği şekildir.
Parçanın özelliklerinin Etiketler bölümünü veya Stüdyonun Etiket Düzenleyicisi kullanarak, etiketi ScavengerHuntPart parçaya uygulayın, böylece CollectionService onu tespit edebilsin.İstendiğinde, modülün kullandığı etiket adı bir tokenTagconfigureServer çağrısında farklı bir değer ayarlayarak değiştirilebilir.
Bölge girildiğinde görüntülenmesi gereken "lezzet metni" için bir çocuk StringValue örneği setine "flavor text" ekleyin.
Yapılandırma
Modül çoğu kullanım durumu için önceden yapılandırılmıştır, ancak kolayca özelleştirilebilir.Örneğin, jeton dönme hızını değiştirmek ve mod modu bilgi mesajını özelleştirmek için:
In Başlangıç OyuncuScriptleri , yeni bir LocalScript oluştur ve onu ÇöpçüAvıYapılandırma olarak yeniden adlandır.
Yeni senaryoya aşağıdaki kodu yapıştırın.
Yerel Kod - 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,})
Koleksiyon olayları
Bir oyuncu bir jeton toplar veya bir bölgeye girerse, toplanan etkinlik ateşlenir.Bu olayı bir sunucu tarafından dinleyebilir ve buna göre yanıt verebilirsiniz Script.Bağlı işlev, jetonla çarpışan veya bölgeye giren Player ı alır ve bu jeton veya bölgenin adı.
Benzer şekilde, bir oyuncu tüm jetonları toplar veya tüm etiketli bölgeler girerse, allCollected etkinliği ateşlenir ve bağlı işlev etiketli Player alır.Bu işlev yalnızca oyuncu başına bir kez ateş edilir ve bu oyuncuyu bir rozet , yeni bir alana erişim, deneyim içi para , vb. ödüllendirmek için kullanılabilir.
Komut Dosyası
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)
Özel GUI
Bu modül, varsayılan GUI'yi özelleştirmek için birkaç seçenek sunar, ancak yerine özel GUI öğeleri görüntülemek için seçeneğe sahip olabilirsiniz.
useCustomModals i true fonksiyonunda configureClient için ayarlanırsa, oyuncu token izleyicisini etkinleştirdiğinde her seferinde showInfoModal etkinliği ateşlenir.Benzer şekilde, oyuncu kazıcı avında her şeyi topladığında showCompleteModal etkinliği ateşlenir.Bu olayların her ikisi de bir LocalScript içinde dinlenebilir.
YerelScript
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showInfoModal:Connect(function()
-- Özel bir bilgi modu göster
local infoModal = Players.LocalPlayer.PlayerGui.ScavengerInfoModal
infoModal.Enabled = true
end)
ScavengerHunt.showCompleteModal:Connect(function()
-- Özel bir tam modali göster
local completeModal = Players.LocalPlayer.PlayerGui.ScavengerCompleteModal
completeModal.Enabled = true
end)
UI görünürlüğü
Varsayılan olarak, avcılar tüm ScreenGuis ve CoreGuis (oyuncu listesi hariç) gizler, bilgi modu veya bitirme modu göründüğünde (oyuncu listesi hariç).Bu otomatik gizleme davranışını geçersiz kılmak ve hangi GUI'lerin görünür kalması gerektiğine programatik olarak karar vermek istiyorsanız, hideOtherGuis ve showOtherGuis geri çağrılarını içere ve kendi özel mantığınızla yanıt verin.
YerelScript
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 = {}
-- Gizlenmeyecek bir ekran GUI'si oluştur
local specialGuiInstance = Instance.new("ScreenGui")
-- Çöpçü avı GUI üzerinde ekran GUI çizin
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- UI'ye metin etiketi ekleyin
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()
-- Tüm geliştirici tanımlı ekran arayüzlerini gizle
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
-- Belirli çekirdek GUI'leri gizle
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
ScavengerHunt.showOtherGuis(function()
-- Gizlenmiş olan tüm geliştirici tanımlı ekran arayüzlerini göster
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Gizlenen belirli çekirdek GUI'leri göster
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)
API referansı
Fonksiyonlar
client yapılandırmak
configureClient(config: table )
Varsayılan istemci tarafı yapılandırma seçeneklerini aşağıdaki anahtarlar/değerler aracılığıyla geçersiz kılar: config tablosunda.Bu işlev yalnızca bir LocalScript 'dan çağrılabilir.
Anahtar | Açıklama | Varsayılan |
---|---|---|
autoDismissTime | Modül otomatik olarak kendini reddetmeden veya bir sonraki sayfaya yönlendirmeden önce saniyeler içinde. Devre dışı bırakmak için 0'a etkin değil. | 20 |
closeModalGamepad | Modal'ları kapatmak için kullanılan oyun kolu düğmesi (Enum.KeyCode). | ButtonA |
closeModalKeyboard | Modal'ları kapatmak için kullanılan klavye tuşu (Enum.KeyCode). | E |
completeModalText | Kazıcı avı tamamlandığında görünen modaldaki gösterilecek metin. Text to show on the modal that appears after clicking the token tracker when the scavenger hunt is complete. | “Katıldığınız için teşekkürler!” |
infoModalText | Jeton izleyicisine tıkladıktan sonra görünen modalda gösterilecek metin. | “Avı bitirmek için tüm jetonları bul” |
tokenRotationSpeed | Jetonların döndüğü hız, saniye başına derece. Dönüşü engellemek için 0'a ayarlanır | 20 |
nextArrowImage | Mevcut mod sayfasından sonra gösterilecek daha fazla mod sayfası olduğunu göstermek için kullanılan görüntü. | “rbxassetid://8167172095” |
openTokenTrackerGamepad | Jeton izleyicisini etkinleştirdikten sonra görünen modalları göstermek için kullanılan oyun kolu düğmesi ( Enum.KeyCode ). | ButtonY |
openTokenTrackerKeyboard | Jeton izleyicisini etkinleştirdikten sonra görünen modalları göstermek için kullanılan klavye tuşu ( Enum.KeyCode ). | Y |
openTokenTrackerGamepadButtonImage | Jeton izleyicisini etkinleştirmek için kullanılan oyun kolu düğmesinin görüntüsü. | “rbxassetid://8025860488” |
regionIcon | Bölgeler girildiğinde jeton izleyicisinin yanında görüntülenecek simge. | “rbxassetid://8073794624” |
tokenIcon | Jeton takipçisinin yanında görüntülenecek bir simge, jeton toplarken. | “rbxassetid://8073794477” |
tokenTrackerPositionSmallDevice | Telefon gibi küçük cihazlardaki jeton izleyici UI'nin konumu ( UDim2 ). | (1, 0, 0, 84) |
tokenTrackerPositionLargeDevice | Tabletler ve PC gibi daha büyük cihazlardaki jeton izleyici arayüzünün konumu ( UDim2 ). | (1, 0, 1, -16) |
useRegions | jetonlar yerine, bölgeleri kullanın. | sahte |
YerelScript
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},})
sunucu yapılandırmak
configureServer(config: table )
Varsayılan sunucu tarafı yapılandırma seçeneklerini aşağıdaki anahtarlar/değerler aracılığıyla geçersiz kılar: config tablosunda.Bu işlev yalnızca bir Script 'dan çağrılabilir.
Anahtar | Açıklama | Varsayılan |
---|---|---|
tokenTag | Çöpçü avında kullanılan tüm jetonları veya bölgeleri bulmak için CollectionService tarafından kullanılan etiket. | :"Çöpçü Avı Parçası" |
datastoreName | Kazıcı avcılar tarafından her oyuncunun koleksiyon ilerlemesini depolamak için kullanılan DataStore adı. | “Toplayıcı Avı Jetonu” |
resetOnPlayerRemoving | Eğer doğruysa, kullanıcı deneyimden ayrıldığında kullanıcının ilerlemesini sıfırlar; avcılık avını test ederken ilerleme kaydetmezken uygun. | sahte |
Komut Dosyası
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.configureServer({tokenTag = "GreenGem",})
etkin değil
devre dışı bırak()
Tüm avcılar için tüm UI'leri gizler, tüm giriş etkinlik dinleyicilerini koparır ve oyuncuların jeton toplamasını veya bölgelerle etkileşim kurmasını engeller.Bu işlev yalnızca bir Script 'den çağrılabilir.
Komut Dosyası
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.disable()
etkinleştir
etkinleştir()
Çöp avı için tüm arayüzü gösterir, tüm giriş etkinlik dinleyicilerini bağlar ve oyuncuların jeton toplamasına ve bölgelerle etkileşim kurmasına izin verir.Bu işlev yalnızca bir Script 'den çağrılabilir.
Komut Dosyası
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.enable()
Etkinlikler
toplandı
Bir oyuncu bir tokenle çarpışır veya bir bölgeye girerse ateş eder.Bağlı işlev, jetonla çarpışan veya bölgeye giren Player ı alacak ve çarpıştırılan jetonun adı veya bölgeye giren adı.Bu etkinlik yalnızca bir Script içinde bağlanabilir.
Değerler | |
---|---|
oyuncu: Player | Bir jetonla çarpışan veya bir bölgeye giren kullanıcı. |
öğe adı: string | Çarpıştırılan jetonun adı veya girilen bölgenin adı. |
toplamToplanan: number | Kullanıcı tarafından toplanan toplam jeton sayısı player tarafından temsil edilir. |
Komut Dosyası
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.collected:Connect(function(player, itemName, totalCollected)
print(player.DisplayName, itemName, totalCollected)
end)
tümToplanan
Bir oyuncu tüm jetonları toplar veya avcılıkta tüm bölgelere girerse ateş eder.Bağlı işlev, tüm jetonları toplayan Player alacak ve sadece oyuncu başına bir kez ateşlenecek.Bu etkinlik yalnızca bir Script içinde bağlanabilir.
Değerler | |
---|---|
oyuncu: Player | Tüm jetonları toplayan veya tüm bölgeleri girerek oyuncu. |
Komut Dosyası
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completed the hunt!")
end)
showInfoModal göster
Oyuncu useCustomModalsyapılandırma seçeneği doğru ayarlanırken oyuncu üzerindeki jeton izleyiciye tıkladığında ateş eder.Bu etkinlik yalnızca bir LocalScript içinde bağlanabilir.
YerelScript
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)
showCompleteModal göster
Oyuncu useCustomModalsyapılandırma seçeneği true ayarlandığında ve oyuncu avcılıkta tüm jetonları topladığında token izleyicisine tıklar ve yangın çıkar.Bu etkinlik yalnızca bir LocalScript içinde bağlanabilir.
YerelScript
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)
Geri çağrılar
hideOtherGuis'yi gizle
hideOtherGuis(çağrışım: function )
Bu geri arama, modal gösterilmeden hemen önce çalışır, böylece modal gösterilmeden önce tüm ScreenGuis veya içindeki elemanları devre dışı bırakabilirsiniz.Ayrıntılar ve örnek kod için GUI Görünürlüğü'ye bakın.
showOtherGuis'i göster
showOtherGuis(çağrışım: function )
Bu geri arama, bir modal reddedildikten hemen sonra çalışır, böylece tüm ScreenGuis veya onların içindeki elemanları etkinleştirebilirsiniz.Ayrıntılar ve örnek kod için GUI Görünürlüğü'ye bakın.