Golderz
Lektion 5 von 22 im Kurs Roblox-Spiel: Fabrik-Tycoon von Coddy.
Ein bisschen Glück hält die Spieler am Förderband: Manches Erz ist Gold und fünfmal so viel wert. math.random() ohne Argumente gibt eine Zahl von 0 bis (aber nicht einschließlich) 1 zurück, sie liegt also in einem von zehn Fällen unter 0,1:
if math.random() < Settings.GoldChance then
-- Dieses Exemplar ist aus Gold
endGolderz leuchtet (Neon) und ist Settings.OreValue * 5 wert.
Während der Laufzeit des Spiels wird manches Erz vom Förderband fallen. Debris:AddItem(ore, 20) entfernt jedes Erz nach 20 Sekunden, egal, wo es gelandet ist, sodass die Welt sich nie mit herumliegenden Teilen füllt.
Aufgabe
EinfachFärbe jedes zehnte Erz golden und räume herumliegendes Erz auf.
- Färbe das Erz in
dropOregoldfarben, wennmath.random() < Settings.GoldChancegilt: VerwendeColor3.fromRGB(255, 200, 40), setze das Material auf Neon und den Wert aufSettings.OreValue * 5. - Rufe nach dem Festlegen des übergeordneten Objekts für das Erz
Debris:AddItem(ore, 20)auf.
Drücke auf „Spielen“: Ab und zu fährt ein leuchtendes Golderz über das Förderband und bringt 50 ein. Klicke dann auf „Prüfen“.
Probier es selbst
local Players = game:GetService("Players")
local Settings = require(game.ReplicatedStorage.Settings)
local tycoon = workspace.Tycoon
print("Ore is worth " .. Settings.OreValue .. " Cash")
-- Jeder Spieler erhält Cash auf der Bestenliste
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local cash = Instance.new("IntValue")
cash.Name = "Cash"
cash.Parent = leaderstats
end)
-- Ore: ein kleines Teil, das Cash wert ist und unter einem Dropper abgeworfen wird
local function dropOre(dropper)
local ore = Instance.new("Part")
ore.Name = "Ore"
ore.Size = Vector3.new(1, 1, 1)
ore.Color = Color3.fromRGB(150, 150, 160)
ore.Position = dropper.Position - Vector3.new(0, 2.5, 0)
ore:SetAttribute("Value", Settings.OreValue)
-- Lektion 5: Gold Ore kommt hierhin
ore.Parent = workspace
end
local function startDropper(dropper)
task.spawn(function()
while dropper:IsDescendantOf(workspace) do
dropOre(dropper)
task.wait(Settings.DropInterval)
end
end)
end
startDropper(tycoon.Dropper)
-- Das Förderband transportiert alles, was darauf liegt
tycoon.Conveyor.AssemblyLinearVelocity = Vector3.new(Settings.BeltSpeed, 0, 0)
-- Der Sammler wandelt Ore in Cash um
tycoon.Collector.Touched:Connect(function(hit)
if hit.Name == "Ore" then
local value = hit:GetAttribute("Value")
hit:Destroy()
for _, player in Players:GetPlayers() do
player.leaderstats.Cash.Value += value
end
end
end)
Alle Lektionen in Roblox-Spiel: Fabrik-Tycoon
Übe selbstständig: Roblox-Playground