← Tất cả hướng dẫn
Hướng dẫn 5

Làm game cướp và bảo vệ đầu tiên của bạn

Mỗi người chơi có một căn cứ. Chộp lấy viên ngọc ở giữa, chạy về nhà để ghi điểm, và bắt bất kỳ ai đang mang nó.

Miễn phí70 phút · Người mới, hướng dẫn cuối · Roblox Studio
1
Bước 1 / 8

Chuẩn bị place

  1. Mở Roblox Studio, bấm New Experience và chọn mẫu Baseplate.
  2. Viên ngọc sẽ nằm ở giữa bản đồ. Bốn căn cứ sẽ đứng xung quanh nó, mỗi cái cách giữa khoảng 60 studs.
  3. Game này cần ít nhất hai người chơi, nên cuối cùng bạn sẽ thử nó với hai người chơi thử.

Xem thêm chi tiết

  • Mẫu Baseplate nằm trong danh sách các mẫu ở màn hình bắt đầu.
  • Ô Position trong Properties cho biết part đang ở đâu. Position 60, 0.5, 0 cách giữa bản đồ 60 studs.
  • Di chuyển SpawnLocation, tức là bệ nơi người chơi xuất hiện, vào gần giữa, để mọi người chơi bắt đầu cách viên ngọc một khoảng bằng nhau.
  • Nếu dùng Mac, hãy dùng phím Cmd mỗi khi hướng dẫn này nói Ctrl.
Bước này không chạy được với mình

Hãy kiểm tra ba điều này trước

  • Tên của mọi part và script phải giống hệt trong hướng dẫn, kể cả chữ hoa.
  • Script phải nằm trong đúng vật thể. Hãy xem dòng nhãn phía trên khung code.
  • Mở cửa sổ Output từ menu Window. Chữ màu đỏ cho biết script nào và dòng nào bị lỗi.

Vẫn chưa được? Hãy viết thư cho chúng mình →

2
Bước 2 / 8

Xây các căn cứ

  1. Trong Explorer, rê chuột lên Workspace, bấm + và thêm một Folder. Đặt tên là Bases.
  2. Thêm một Part. Đặt Size thành 16, 1, 16, bật Anchored và cho nó màu xám. Kéo nó vào Bases và đặt tên là Base1.
  3. Nhân bản nó ba lần bằng Ctrl+D. Đặt tên các bản sao là Base2, Base3 và Base4 và đặt mỗi cái ở một phía của bản đồ.

Xem thêm chi tiết

  • Để đưa part vào folder, kéo tên nó trong Explorer thả lên tên Bases.
  • Các bản sao làm bằng Ctrl+D đã nằm sẵn trong folder Bases. Đổi tên từng cái bằng F2.
  • Các tên phải đúng là Base1, Base2, Base3 và Base4, không có dấu cách trước con số.
  • Một máy chủ có hơn bốn người chơi thì có nhiều người chơi hơn căn cứ. Sau này bạn có thể đặt sức chứa máy chủ là 4 trong phần cài đặt game trên Creator Hub.
Mẹo. Hãy giữ cả bốn căn cứ cách giữa một khoảng bằng nhau. Như vậy game công bằng với mọi người.
Bước này không chạy được với mình

Hãy kiểm tra ba điều này trước

  • Tên của mọi part và script phải giống hệt trong hướng dẫn, kể cả chữ hoa.
  • Script phải nằm trong đúng vật thể. Hãy xem dòng nhãn phía trên khung code.
  • Mở cửa sổ Output từ menu Window. Chữ màu đỏ cho biết script nào và dòng nào bị lỗi.

Vẫn chưa được? Hãy viết thư cho chúng mình →

3
Bước 3 / 8

Tạo viên ngọc

  1. Thêm một Part ở giữa bản đồ, cao hơn sàn khoảng 4 studs. Đặt Size thành 2, 2, 2, chọn một màu sáng và đặt Material thành Neon. Đặt tên là Gem.
  2. Bật Anchored và Massless, và tắt CanCollide.
  3. Rê chuột lên Gem, bấm + và thêm một ProximityPrompt. Đặt ActionText thành Take và HoldDuration thành 1.

Mỗi phần làm gì

  • ProximityPrompt hiện một nút khi người chơi đứng gần. Giữ nút 1 giây sẽ kích hoạt nó.
  • Bật Massless và tắt CanCollide giúp viên ngọc không làm chậm hay đẩy người chơi đang mang nó.

Xem thêm chi tiết

  • Anchored, Massless và CanCollide là các ô đánh dấu trong Properties.
  • Khi bạn bấm +, gõ ProximityPrompt để tìm. Bấm vào nó, rồi đổi ActionText và HoldDuration trong Properties.
  • Trong game, một nút nhỏ có chữ E và chữ Take xuất hiện khi bạn đứng gần viên ngọc.
  • Trên điện thoại, người chơi giữ ngón tay trên nút đó.
Bước này không chạy được với mình

Hãy kiểm tra ba điều này trước

  • Tên của mọi part và script phải giống hệt trong hướng dẫn, kể cả chữ hoa.
  • Script phải nằm trong đúng vật thể. Hãy xem dòng nhãn phía trên khung code.
  • Mở cửa sổ Output từ menu Window. Chữ màu đỏ cho biết script nào và dòng nào bị lỗi.

Vẫn chưa được? Hãy viết thư cho chúng mình →

4
Bước 4 / 8

Cho mỗi người chơi một căn cứ và một điểm số

  1. Rê chuột lên ServerScriptService, bấm + và thêm một Script. Đặt tên là Game.
  2. Xóa dòng có sẵn rồi dán đoạn code này vào. Đây là phần đầu trong ba phần.
  3. Nhấn Play. Một căn cứ chuyển sang màu xanh lá. Đó là căn cứ của bạn.
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)

Mỗi phần làm gì

  • Những dòng đầu tìm các căn cứ và viên ngọc và nhớ chỗ viên ngọc ban đầu.
  • SetAttribute ghi UserId của chủ nhân lên căn cứ trống đầu tiên.
  • PlayerRemoving trả căn cứ về trạng thái trống khi chủ nhân của nó thoát game.

Xem thêm chi tiết

  • Script mở ra trong một tab mới. Bấm vào trong code, nhấn Ctrl+A rồi Ctrl+V để thay thế tất cả.
  • Căn cứ nào chuyển sang màu xanh lá phụ thuộc vào thứ tự các căn cứ trong folder. Hãy đi một vòng để tìm căn cứ của bạn.
  • Danh sách người chơi ở góc trên bên phải hiện Score 0.
  • Hiện giờ chưa có gì xảy ra khi bạn đi đến viên ngọc và giữ E. Việc đó sẽ có ở bước tiếp theo.
Bước này không chạy được với mình

Hãy kiểm tra ba điều này trước

  • Tên của mọi part và script phải giống hệt trong hướng dẫn, kể cả chữ hoa.
  • Script phải nằm trong đúng vật thể. Hãy xem dòng nhãn phía trên khung code.
  • Mở cửa sổ Output từ menu Window. Chữ màu đỏ cho biết script nào và dòng nào bị lỗi.

Vẫn chưa được? Hãy viết thư cho chúng mình →

5
Bước 5 / 8

Cho phép người chơi lấy viên ngọc

  1. Mở lại script Game.
  2. Dán đoạn code này bên dưới code của bước trước.
  3. Nhấn Play, đi tới viên ngọc và giữ E. Viên ngọc nhảy lên trên đầu bạn và đi theo bạn.
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)

Mỗi phần làm gì

  • carrier nhớ ai đang giữ viên ngọc. Không ai khác lấy được nó khi nó đang được mang.
  • WeldConstraint dán viên ngọc vào người chơi, nên nó di chuyển theo họ.
  • resetGem gỡ mối hàn và đặt viên ngọc về lại giữa bản đồ.

Xem thêm chi tiết

  • Để mở lại script, nhấp đúp vào Game trong Explorer.
  • Bấm vào sau ký tự cuối cùng của code rồi nhấn Enter hai lần. Sau đó nhấn Ctrl+V. Lần này đừng nhấn Ctrl+A, nếu không bạn sẽ thay mất phần đầu.
  • Viên ngọc lơ lửng cao hơn đầu bạn 4 studs khi bạn mang nó.
  • Để thử: lấy viên ngọc, rồi kiểm tra xem nút Take có biến mất trong suốt lúc bạn mang nó không.
Bước này không chạy được với mình

Hãy kiểm tra ba điều này trước

  • Tên của mọi part và script phải giống hệt trong hướng dẫn, kể cả chữ hoa.
  • Script phải nằm trong đúng vật thể. Hãy xem dòng nhãn phía trên khung code.
  • Mở cửa sổ Output từ menu Window. Chữ màu đỏ cho biết script nào và dòng nào bị lỗi.

Vẫn chưa được? Hãy viết thư cho chúng mình →

6
Bước 6 / 8

Thêm tính điểm và bắt người

  1. Dán phần cuối này vào tận cuối script Game.
  2. Nhấn Play, lấy viên ngọc và chạy lên căn cứ màu xanh lá của bạn. Score tăng 1 và viên ngọc quay về giữa bản đồ.
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

Mỗi phần làm gì

  • Mỗi căn cứ kiểm tra ba điều: có người chơi chạm vào, người chơi đó đang mang viên ngọc, và căn cứ thuộc về họ.
  • Vòng lặp ở dưới cùng chạy 5 lần mỗi giây. Nếu người chơi khác lại gần người mang ngọc hơn 5 studs, viên ngọc quay về chỗ cũ.
  • Vòng lặp cũng đặt lại viên ngọc nếu người mang thoát game hoặc rơi khỏi bản đồ.

Xem thêm chi tiết

  • Một lần nữa, bấm vào sau ký tự cuối cùng của script, nhấn Enter hai lần rồi dán.
  • Script hoàn chỉnh có ba phần theo thứ tự này: các căn cứ và điểm số, lấy viên ngọc, ghi điểm và đánh dấu.
  • Một căn cứ màu xám không thuộc về ai thì không cho điểm. Chỉ căn cứ màu xanh lá của chính bạn mới tính.
  • Chơi một mình thì không thử được việc đánh dấu. Bạn sẽ thử việc đó với hai người chơi ở bước tiếp theo.
Lỗi thường gặp. Dán phần này vào giữa script. Vòng lặp while không bao giờ kết thúc, nên code bên dưới nó không bao giờ chạy.
Bước này không chạy được với mình

Hãy kiểm tra ba điều này trước

  • Tên của mọi part và script phải giống hệt trong hướng dẫn, kể cả chữ hoa.
  • Script phải nằm trong đúng vật thể. Hãy xem dòng nhãn phía trên khung code.
  • Mở cửa sổ Output từ menu Window. Chữ màu đỏ cho biết script nào và dòng nào bị lỗi.

Vẫn chưa được? Hãy viết thư cho chúng mình →

7
Bước 7 / 8

Thử với hai người chơi

  1. Cạnh nút Play, mở menu nhỏ và chọn Server & Clients. Đặt số người chơi là 2 và nhấn Play.
  2. Studio mở hai cửa sổ game. Mỗi cửa sổ là một người chơi khác nhau với một căn cứ khác nhau.
  3. Lấy viên ngọc ở một cửa sổ. Ở cửa sổ còn lại, chạy tới người chơi đó. Viên ngọc quay về giữa bản đồ.
  4. Dừng bài thử bằng nút Stop màu đỏ trong cửa sổ Studio chính, rồi chuyển menu về lại Test.

Xem thêm chi tiết

  • Menu nhỏ là mũi tên ngay cạnh nút Play ở phía trên Studio.
  • Hai cửa sổ game mở ra chồng lên nhau. Kéo một cửa sổ sang bên để bạn thấy cả hai.
  • Hãy bấm vào trong một cửa sổ trước khi dùng bàn phím. Các phím đi vào cửa sổ bạn bấm gần nhất.
  • Thử với hai cửa sổ cần một máy tính có đủ bộ nhớ. Nếu máy chạy rất chậm, hãy đóng các chương trình khác trước.
Bước này không chạy được với mình

Hãy kiểm tra ba điều này trước

  • Tên của mọi part và script phải giống hệt trong hướng dẫn, kể cả chữ hoa.
  • Script phải nằm trong đúng vật thể. Hãy xem dòng nhãn phía trên khung code.
  • Mở cửa sổ Output từ menu Window. Chữ màu đỏ cho biết script nào và dòng nào bị lỗi.

Vẫn chưa được? Hãy viết thư cho chúng mình →

8
Bước 8 / 8

Đăng game

  1. Chọn File → Publish to Roblox. Đặt tên cho game và viết một mô tả ngắn.
  2. Trên trang Creator Hub, mở game của bạn và điền bảng câu hỏi Maturity.
  3. Đặt game thành Public và gửi đường link cho một người bạn.

Xem thêm chi tiết

  • Lần đầu bạn đăng game, Studio hỏi tên và mô tả. Bấm Create.
  • Creator Hub là trang web create.roblox.com. Đăng nhập bằng cùng tài khoản và bấm vào game của bạn trong danh sách.
  • Roblox có thể yêu cầu thêm trước khi game được công khai, ví dụ kiểm tra độ tuổi của tài khoản. Trang sẽ cho bạn biết còn thiếu gì.
  • Nếu bạn dưới 18 tuổi, hãy làm bước này cùng với bố mẹ.
Mẹo. Game này chỉ vui khi có người chơi khác. Hãy mời hai hoặc ba người bạn vào cùng một server cho trận đầu tiên.
Bước này không chạy được với mình

Hãy kiểm tra ba điều này trước

  • Tên của mọi part và script phải giống hệt trong hướng dẫn, kể cả chữ hoa.
  • Script phải nằm trong đúng vật thể. Hãy xem dòng nhãn phía trên khung code.
  • Mở cửa sổ Output từ menu Window. Chữ màu đỏ cho biết script nào và dòng nào bị lỗi.

Vẫn chưa được? Hãy viết thư cho chúng mình →

Giờ tự mình thay đổi nhé

  • Kết thúc vòng chơi khi một người chơi đạt 5 điểm và đặt mọi điểm số về lại 0.
  • Thêm một viên ngọc thứ hai với màu khác.
  • Làm người mang ngọc chậm đi. Gợi ý: đặt Humanoid.WalkSpeed thành 12 khi viên ngọc bị lấy và về lại 16 trong resetGem.