← Všechny návody
Návod 5

Postav svou první hru steal-and-defend

Každý hráč dostane základnu. Vezmi gem z prostředka, dones ho domů pro bod a označ každého, kdo ho nese.

Zdarma70 minut · Začátečník, poslední návod · Roblox Studio
1
Krok 1 / 8

Připrav místo

  1. Otevři Roblox Studio, klikni na New Experience a vyber šablonu Baseplate.
  2. Gem bude ležet uprostřed mapy. Kolem něj budou stát čtyři základny, každá asi 60 studs od středu.
  3. Tahle hra potřebuje aspoň dva hráče, takže ji na konci vyzkoušíš se dvěma testovacími hráči.

Více podrobností

  • Šablona Baseplate je v seznamu šablon na úvodní obrazovce.
  • Pole Position v Properties ukazuje, kde Part stojí. Position 60, 0.5, 0 je 60 studs od středu mapy.
  • Posuň SpawnLocation, plošinu, na které se hráči objevují, blízko středu, aby každý hráč začínal ve stejné vzdálenosti od drahokamu.
  • Na Mac používej klávesu Cmd pokaždé, když návod říká Ctrl.
Tenhle krok mi nefunguje

Nejdřív zkontroluj tyto tři věci

  • Název každého Partu a skriptu je přesně jako v návodu, se stejnými velkými písmeny.
  • Skript leží ve správném objektu. Podívej se na popisek nad polem s kódem.
  • Otevři okno Output z nabídky Window. Červený text ukáže skript a řádek, na kterém je problém.

Pořád to nejde? Napiš nám →

2
Krok 2 / 8

Postav základny

  1. V Explorer najeď myší na Workspace, klikni na + a přidej Folder. Pojmenuj ho Bases.
  2. Přidej Part. Nastav Size na 16, 1, 16, zapni Anchored a udělej ho šedý. Přetáhni ho do Bases a pojmenuj ho Base1.
  3. Třikrát ho zkopíruj pomocí Ctrl+D. Kopie pojmenuj Base2, Base3 a Base4 a každou posuň na jinou stranu mapy.

Více podrobností

  • Part dáš do složky tak, že přetáhneš jeho název v Explorer na název Bases.
  • Kopie vytvořené přes Ctrl+D už jsou uvnitř složky Bases. Každou přejmenuj klávesou F2.
  • Názvy musí být přesně Base1, Base2, Base3 a Base4, bez mezery před číslem.
  • Na serveru s víc než čtyřmi hráči je hráčů víc než základen. Později můžeš v nastavení hry na Creator Hub nastavit velikost serveru na 4.
Tip. Všechny čtyři základny měj stejně daleko od středu. Pak je hra pro všechny spravedlivá.
Tenhle krok mi nefunguje

Nejdřív zkontroluj tyto tři věci

  • Název každého Partu a skriptu je přesně jako v návodu, se stejnými velkými písmeny.
  • Skript leží ve správném objektu. Podívej se na popisek nad polem s kódem.
  • Otevři okno Output z nabídky Window. Červený text ukáže skript a řádek, na kterém je problém.

Pořád to nejde? Napiš nám →

3
Krok 3 / 8

Vytvoř gem

  1. Přidej Part doprostřed mapy, asi 4 studs nad podlahu. Nastav Size na 2, 2, 2, vyber jasnou barvu a nastav Material na Neon. Pojmenuj ho Gem.
  2. Zapni Anchored a Massless a vypni CanCollide.
  3. Najeď myší na Gem, klikni na + a přidej ProximityPrompt. Nastav ActionText na Take a HoldDuration na 1.

Co která část dělá

  • ProximityPrompt ukáže tlačítko, když hráč stojí blízko. Když ho podržíš 1 sekundu, spustí se.
  • Zapnuté Massless a vypnuté CanCollide zařídí, že gem hráče, který ho nese, nezpomaluje ani netlačí.

Více podrobností

  • Anchored, Massless a CanCollide jsou zaškrtávací políčka v Properties.
  • Když klikneš na +, napiš ProximityPrompt, abys ho našel. Klikni na něj a potom v Properties změň ActionText a HoldDuration.
  • Ve hře se objeví malé tlačítko s písmenem E a slovem Take, když stojíš blízko drahokamu.
  • Na telefonu hráči drží prst na tomto tlačítku.
Tenhle krok mi nefunguje

Nejdřív zkontroluj tyto tři věci

  • Název každého Partu a skriptu je přesně jako v návodu, se stejnými velkými písmeny.
  • Skript leží ve správném objektu. Podívej se na popisek nad polem s kódem.
  • Otevři okno Output z nabídky Window. Červený text ukáže skript a řádek, na kterém je problém.

Pořád to nejde? Napiš nám →

4
Krok 4 / 8

Dej každému hráči základnu a skóre

  1. Najeď myší na ServerScriptService, klikni na + a přidej Script. Pojmenuj ho Game.
  2. Smaž řádek, který tam už je, a vlož tento kód. Je to první ze tří částí.
  3. Stiskni Play. Jedna základna zezelená. Ta je tvoje.
ServerScriptService > Game (1 / 3)
local Players = game:GetService("Players")

local bases = workspace:WaitForChild("Bases")
local gem = workspace:WaitForChild("Gem")
local home = gem.CFrame
local carrier = nil

Players.PlayerAdded:Connect(function(player)
	local stats = Instance.new("Folder")
	stats.Name = "leaderstats"
	stats.Parent = player

	local score = Instance.new("IntValue")
	score.Name = "Score"
	score.Parent = stats

	for _, base in ipairs(bases:GetChildren()) do
		if base:GetAttribute("Owner") == nil then
			base:SetAttribute("Owner", player.UserId)
			base.Color = Color3.fromRGB(60, 220, 120)
			break
		end
	end
end)

Players.PlayerRemoving:Connect(function(player)
	for _, base in ipairs(bases:GetChildren()) do
		if base:GetAttribute("Owner") == player.UserId then
			base:SetAttribute("Owner", nil)
			base.Color = Color3.fromRGB(160, 160, 160)
		end
	end
end)

Co která část dělá

  • První řádky najdou základny a gem a zapamatují si, kde gem začínal.
  • SetAttribute zapíše UserId majitele na první volnou základnu.
  • PlayerRemoving základnu zase uvolní, když její majitel odejde.

Více podrobností

  • Skript se otevře na nové kartě. Klikni dovnitř kódu, stiskni Ctrl+A a potom Ctrl+V, aby se všechno přepsalo.
  • Která základna zezelená, závisí na pořadí základen ve složce. Projdi se po mapě a najdi tu svou.
  • Seznam hráčů v pravém horním rohu ukazuje Score 0.
  • Zatím se nic neděje, když dojdeš k drahokamu a držíš E. To přijde v dalším kroku.
Tenhle krok mi nefunguje

Nejdřív zkontroluj tyto tři věci

  • Název každého Partu a skriptu je přesně jako v návodu, se stejnými velkými písmeny.
  • Skript leží ve správném objektu. Podívej se na popisek nad polem s kódem.
  • Otevři okno Output z nabídky Window. Červený text ukáže skript a řádek, na kterém je problém.

Pořád to nejde? Napiš nám →

5
Krok 5 / 8

Nech hráče vzít gem

  1. Znovu otevři skript Game.
  2. Vlož tento kód pod kód z minulého kroku.
  3. Stiskni Play, dojdi ke gem a podrž E. Gem vyskočí nad tvou hlavu a následuje tě.
ServerScriptService > Game (2 / 3)
local function resetGem()
	carrier = nil

	local weld = gem:FindFirstChild("CarryWeld")
	if weld then
		weld:Destroy()
	end

	gem.Anchored = true
	gem.CFrame = home
	gem.ProximityPrompt.Enabled = true
end

gem.ProximityPrompt.Triggered:Connect(function(player)
	local character = player.Character
	local root = character and character:FindFirstChild("HumanoidRootPart")
	if carrier or not root then return end

	carrier = player
	gem.ProximityPrompt.Enabled = false
	gem.Anchored = false
	gem.CFrame = root.CFrame * CFrame.new(0, 4, 0)

	local weld = Instance.new("WeldConstraint")
	weld.Name = "CarryWeld"
	weld.Part0 = root
	weld.Part1 = gem
	weld.Parent = gem
end)

Co která část dělá

  • carrier si pamatuje, kdo gem drží. Nikdo jiný ho nemůže vzít, dokud ho někdo nese.
  • WeldConstraint přilepí gem k hráči, takže se pohybuje s ním.
  • resetGem odstraní spoj a vrátí gem doprostřed.

Více podrobností

  • Skript znovu otevřeš dvojklikem na Game v Explorer.
  • Klikni za úplně poslední znak kódu a stiskni Enter dvakrát. Potom stiskni Ctrl+V. Tentokrát nestiskej Ctrl+A, jinak přepíšeš první část.
  • Drahokam se vznáší 4 studs nad tvou hlavou, dokud ho neseš.
  • Vyzkoušej: vezmi drahokam a ověř, že tlačítko Take zmizí, dokud ho neseš.
Tenhle krok mi nefunguje

Nejdřív zkontroluj tyto tři věci

  • Název každého Partu a skriptu je přesně jako v návodu, se stejnými velkými písmeny.
  • Skript leží ve správném objektu. Podívej se na popisek nad polem s kódem.
  • Otevři okno Output z nabídky Window. Červený text ukáže skript a řádek, na kterém je problém.

Pořád to nejde? Napiš nám →

6
Krok 6 / 8

Přidej body a označování

  1. Vlož tuto poslední část úplně na konec skriptu Game.
  2. Stiskni Play, vezmi gem a vběhni na svou zelenou základnu. Score stoupne o 1 a gem se vrátí doprostřed.
ServerScriptService > Game (3 / 3)
for _, base in ipairs(bases:GetChildren()) do
	base.Touched:Connect(function(hit)
		local player = Players:GetPlayerFromCharacter(hit.Parent)
		if player and player == carrier and base:GetAttribute("Owner") == player.UserId then
			player.leaderstats.Score.Value += 1
			resetGem()
		end
	end)
end

while true do
	task.wait(0.2)

	if carrier then
		local weld = gem:FindFirstChild("CarryWeld")
		local root = weld and weld.Part0
		local character = root and root.Parent
		local humanoid = character and character:FindFirstChildOfClass("Humanoid")

		if not humanoid or humanoid.Health <= 0 or root.Position.Y < -20 then
			resetGem()
		else
			for _, other in ipairs(Players:GetPlayers()) do
				local otherRoot = other ~= carrier and other.Character and other.Character:FindFirstChild("HumanoidRootPart")
				if otherRoot and (otherRoot.Position - root.Position).Magnitude < 5 then
					resetGem()
					break
				end
			end
		end
	end
end

Co která část dělá

  • Každá základna kontroluje tři věci: dotkl se jí hráč, ten hráč nese gem a základna patří jemu.
  • Smyčka dole běží 5krát za sekundu. Když se jiný hráč přiblíží k nosiči na méně než 5 studs, gem se vrátí.
  • Smyčka také vrátí gem, když nosič opustí hru nebo spadne z mapy.

Více podrobností

  • Znovu klikni za úplně poslední znak skriptu, stiskni Enter dvakrát a vlož kód.
  • Hotový skript má tři části v tomto pořadí: základny a skóre, braní drahokamu, počítání bodů a označování.
  • Šedá základna, která nikomu nepatří, nedává body. Počítá se jen tvá vlastní zelená základna.
  • Sám označování nevyzkoušíš. To uděláš ve dvou hráčích v dalším kroku.
Častá chyba. Vložit tuto část doprostřed skriptu. Smyčka while nikdy neskončí, takže kód pod ní se nikdy nespustí.
Tenhle krok mi nefunguje

Nejdřív zkontroluj tyto tři věci

  • Název každého Partu a skriptu je přesně jako v návodu, se stejnými velkými písmeny.
  • Skript leží ve správném objektu. Podívej se na popisek nad polem s kódem.
  • Otevři okno Output z nabídky Window. Červený text ukáže skript a řádek, na kterém je problém.

Pořád to nejde? Napiš nám →

7
Krok 7 / 8

Vyzkoušej se dvěma hráči

  1. Vedle tlačítka Play otevři malou nabídku a vyber Server & Clients. Nastav počet hráčů na 2 a stiskni Play.
  2. Studio otevře dvě okna hry. V každém je jiný hráč s jinou základnou.
  3. V jednom okně vezmi gem. V druhém okně do toho hráče narazi. Gem se vrátí doprostřed.
  4. Test zastav červeným tlačítkem Stop v hlavním okně Studia a pak přepni nabídku zpátky na Test.

Více podrobností

  • Malá nabídka je šipka hned vedle tlačítka Play nahoře ve Studiu.
  • Dvě okna hry se otevřou přes sebe. Jedno odtáhni stranou, abys viděl obě.
  • Než použiješ klávesnici, klikni do okna. Klávesy jdou do okna, na které jsi klikl naposledy.
  • Zkoušení ve dvou oknech chce počítač s dostatkem paměti. Když je to hodně pomalé, nejdřív zavři jiné programy.
Tenhle krok mi nefunguje

Nejdřív zkontroluj tyto tři věci

  • Název každého Partu a skriptu je přesně jako v návodu, se stejnými velkými písmeny.
  • Skript leží ve správném objektu. Podívej se na popisek nad polem s kódem.
  • Otevři okno Output z nabídky Window. Červený text ukáže skript a řádek, na kterém je problém.

Pořád to nejde? Napiš nám →

8
Krok 8 / 8

Zveřejni ji

  1. Vyber File → Publish to Roblox. Dej hře název a krátký popis.
  2. Na webu Creator Hub otevři svou hru a vyplň dotazník Maturity.
  3. Nastav hru na Public a pošli odkaz kamarádovi.

Více podrobností

  • Když hru zveřejňuješ poprvé, Studio se zeptá na název a popis. Klikni na Create.
  • Creator Hub je web create.roblox.com. Přihlas se stejným účtem a v seznamu klikni na svou hru.
  • Roblox může před zveřejněním hry chtít něco navíc, například ověření věku u účtu. Stránka ti řekne, co chybí.
  • Pokud je ti méně než 18, udělej tento krok společně s rodičem.
Tip. Tahle hra je zábavná jen s dalšími hráči. Pozvi na první zápas dva nebo tři kamarády na stejný server.
Tenhle krok mi nefunguje

Nejdřív zkontroluj tyto tři věci

  • Název každého Partu a skriptu je přesně jako v návodu, se stejnými velkými písmeny.
  • Skript leží ve správném objektu. Podívej se na popisek nad polem s kódem.
  • Otevři okno Output z nabídky Window. Červený text ukáže skript a řádek, na kterém je problém.

Pořád to nejde? Napiš nám →

Teď to změň sám

  • Ukonči kolo, když hráč dosáhne 5 bodů, a všechna skóre nastav zpátky na 0.
  • Přidej druhý gem s jinou barvou.
  • Zpomal nosiče. Nápověda: nastav Humanoid.WalkSpeed na 12, když se gem vezme, a zpátky na 16 v resetGem.