Menu
CoddyTech

Bir Yumurtadan Evcil Hayvan Çıkar

Coddy'nin Roblox Oyunu: Evcil Hayvan Simülatörü kursunda ders 9 / 18.

Spawn noktasının yakınındaki beyaz yumurtada bir ProximityPrompt bulunur: yanına yürü ve Roblox, basılı tutman için bir tuşla birlikte "Hatch" seçeneğini gösterir (E veya telefonda dokunma). Oyuncu tuşu yeterince uzun süre basılı tuttuğunda, sunucuda oyuncuyla birlikte Triggered tetiklenir:

workspace.Egg.ProximityPrompt.Triggered:Connect(function(player)
end)

Sunucu fiyatı kontrol eder, paraları alır ve bir evcil hayvan verir. Evcil hayvan, adını tutan bir StringValue'dur ve oyuncunun içindeki bir Pets klasöründe bulunur. Sunucunun oyuncunun içine koyduğu her şey o oyuncunun istemcisine çoğaltılır; sonraki bir derste evcil hayvan listesinin ne göstereceğini bilmesi bu sayede mümkün olur.

challenge icon

Görev

Orta
  1. Bir oyuncu katıldığında, ona Pets adlı bir Folder da ver.
  2. givePet(player, name) yaz: oyuncunun Pets klasöründe adı Pet olan bir StringValue oluştur, Value değerini ada ayarla ve onu döndür.
  3. workspace.Egg.ProximityPrompt.Triggered olayına bağlan: oyuncunun coin sayısı Settings.EggPrice değerinden azsa işlemi durdur; aksi takdirde fiyatı düş, ona bir Cat ver ve Player1 hatched a Cat yazdır (oyuncunun Name değeri).

Oyna'ya bas, 25 coin kazan ve yumurtanın yanında E tuşunu basılı tut. Ardından Kontrol et.

Kendin dene

local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Settings = require(game.ReplicatedStorage.Settings)

local remotes = game.ReplicatedStorage.Remotes
local piles = workspace.Piles
local pileSpot = {} -- her yığın -> üzerinde durduğu nokta
local lastHit = {} -- her oyuncu -> en son ne zaman vurduğu

print("A Meadow pile gives " .. Settings.PileValue .. " coins")

-- Her oyuncu, skor tablosunda Coins alır
Players.PlayerAdded:Connect(function(player)
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local coins = Instance.new("IntValue")
	coins.Name = "Coins"
	coins.Parent = leaderstats
end)

-- Bir noktadaki para yığını: ServerStorage.CoinPile öğesinin, canı
-- ve değeri öznitelik olarak ayarlanmış bir kopyası
local function spawnPile(spot)
	local pile = ServerStorage.CoinPile:Clone()
	pile.Position = spot.Position
	pile:SetAttribute("MaxHealth", Settings.PileHealth)
	pile:SetAttribute("Health", Settings.PileHealth)
	pile:SetAttribute("Value", Settings.PileValue)
	pile.HealthGui.Label.Text = pile:GetAttribute("Health") .. "/" .. pile:GetAttribute("MaxHealth")
	pileSpot[pile] = spot
	pile.Parent = piles
	return pile
end

-- Bir vuruş, yığının canını 1 azaltır;
-- canı 0 olduğunda yığın parçalanır ve değerini öder
local function hitPile(player, pile)
	local health = pile:GetAttribute("Health") - 1
	if health > 0 then
		pile:SetAttribute("Health", health)
		pile.HealthGui.Label.Text = health .. "/" .. pile:GetAttribute("MaxHealth")
		return
	end
	player.leaderstats.Coins.Value += pile:GetAttribute("Value")
	local spot = pileSpot[pile]
	pileSpot[pile] = nil
	pile:Destroy()
	-- birkaç saniye sonra aynı noktada yeni bir yığın
	task.delay(Settings.RespawnTime, spawnPile, spot)
end

-- Meadow içindeki her noktada bir yığın
for _, spot in workspace.Zones.Meadow.Spawns:GetChildren() do
	spawnPile(spot)
end

-- İstemci bir yığına vurmak ister. İstemciye asla güvenme: herkes
-- bu remote olayını herhangi bir yerden, herhangi bir veriyle, istediği kadar hızlı tetikleyebilir.
remotes.Hit.OnServerEvent:Connect(function(player, pile)
	-- gerçek bir yığın
	if typeof(pile) ~= "Instance" or pile.Parent ~= piles then
		return
	end
	-- erişim mesafesinde
	local character = player.Character
	local root = character and character:FindFirstChild("HumanoidRootPart")
	if not root or (root.Position - pile.Position).Magnitude > Settings.Reach then
		return
	end
	-- çok hızlı değil
	local now = time()
	if lastHit[player] and now - lastHit[player] < Settings.HitCooldown then
		return
	end
	lastHit[player] = now
	hitPile(player, pile)
end)
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Roblox Oyunu: Evcil Hayvan Simülatörü bölümündeki tüm dersler