Çöpçü Avı

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

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:

  1. Görüntü sekmesinden açın Araç çantası ve Yaratıcı mağazası sekmesini seçin.

    Toolbox toggle button in Studio
  2. 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 >.

  3. Yerini ve tıklayın Geliştirici Modülleri düğmesi.

  4. Kaçak Avı modülünü bulun ve tıklayın veya 3B görüntüye sürükleyin ve bırakın.

  5. 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.

  1. Modülün ana klasörünün Token1 düğümünü içindeki Çalışma Alanı klasörünü bulun.

  2. Hareket Token1 üst seviye Çalışma Alanı hiyerarşisine taşı ve istediğin yere yerleştir.

  3. Jetonun eşsiz bir adı verin ; bu ad, modülün her oyuncunun topladığı jetonları izlediği şekildir.

  4. 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.

  1. 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.

  2. Buna benzersiz bir ad verin . Bu ad, modülün her oyuncunun girdiği bölgeleri izlediği şekildir.

  3. 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.

  4. 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:

  1. In Başlangıç ​​OyuncuScriptleri , yeni bir LocalScript oluştur ve onu ÇöpçüAvıYapılandırma olarak yeniden adlandır.

  2. Yeni senaryoya aşağıdaki kodu yapıştırın.

    Yerel Kod - 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,
    })

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.

AnahtarAçıklamaVarsayılan
autoDismissTimeModü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
closeModalGamepadModal'ları kapatmak için kullanılan oyun kolu düğmesi (Enum.KeyCode).ButtonA
closeModalKeyboardModal'ları kapatmak için kullanılan klavye tuşu (Enum.KeyCode).E
completeModalTextKazı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!”
infoModalTextJeton izleyicisine tıkladıktan sonra görünen modalda gösterilecek metin.“Avı bitirmek için tüm jetonları bul”
tokenRotationSpeedJetonların döndüğü hız, saniye başına derece. Dönüşü engellemek için 0'a ayarlanır20
nextArrowImageMevcut mod sayfasından sonra gösterilecek daha fazla mod sayfası olduğunu göstermek için kullanılan görüntü.“rbxassetid://8167172095”
openTokenTrackerGamepadJeton izleyicisini etkinleştirdikten sonra görünen modalları göstermek için kullanılan oyun kolu düğmesi ( Enum.KeyCode ).ButtonY
openTokenTrackerKeyboardJeton izleyicisini etkinleştirdikten sonra görünen modalları göstermek için kullanılan klavye tuşu ( Enum.KeyCode ).Y
openTokenTrackerGamepadButtonImageJeton izleyicisini etkinleştirmek için kullanılan oyun kolu düğmesinin görüntüsü.“rbxassetid://8025860488”
regionIconBölgeler girildiğinde jeton izleyicisinin yanında görüntülenecek simge.“rbxassetid://8073794624”
tokenIconJeton takipçisinin yanında görüntülenecek bir simge, jeton toplarken.“rbxassetid://8073794477”
tokenTrackerPositionSmallDeviceTelefon gibi küçük cihazlardaki jeton izleyici UI'nin konumu ( UDim2 ).(1, 0, 0, 84)
tokenTrackerPositionLargeDeviceTabletler ve PC gibi daha büyük cihazlardaki jeton izleyici arayüzünün konumu ( UDim2 ).(1, 0, 1, -16)
useRegionsjetonlar 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.

AnahtarAçıklamaVarsayı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ı"
datastoreNameKazıcı avcılar tarafından her oyuncunun koleksiyon ilerlemesini depolamak için kullanılan DataStore adı.“Toplayıcı Avı Jetonu”
resetOnPlayerRemovingEğ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: PlayerBir 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: numberKullanı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: PlayerTü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.