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

Làm tycoon đầu tiên của bạn

Một dropper thả ra các khối, một băng chuyền chở chúng đi, một collector biến chúng thành cash, và một nút mua dropper thứ hai.

Miễn phí60 phút · Người mới · Roblox Studio
1
Bước 1 / 9

Chuẩn bị place

  1. Mở Roblox Studio, bấm New Experience và chọn mẫu Baseplate.
  2. Trong Explorer, rê chuột lên Workspace, bấm + và thêm một Folder. Đặt tên là Tycoon.
  3. Mọi thứ bạn xây trong hướng dẫn này đều cho vào folder đó. Nó giúp Explorer gọn gàng.

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.
  • Khi bạn bấm +, một danh sách mở ra. Gõ từ Folder để tìm nhanh, rồi bấm vào nó.
  • Để đổi tên folder, bấm vào nó một lần, nhấn F2, gõ Tycoon và nhấn Enter.
  • Nếu dùng Mac, hãy dùng phím Cmd mỗi khi hướng dẫn này nói Ctrl.
Mẹo. Hãy đổi tên mỗi part ngay sau khi tạo. Script tìm part theo tên, nên một part vẫn tên là Part sẽ không hoạt độ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 →

2
Bước 2 / 9

Cho mỗi người chơi cash

  1. Rê chuột lên ServerScriptService, bấm + và thêm một Script. Đặt tên là Leaderstats.
  2. Xóa dòng có sẵn rồi dán đoạn code này vào.
  3. Nhấn Play. Tên bạn hiện trong danh sách người chơi, bên cạnh là Cash 0.
ServerScriptService > Leaderstats
local Players = game:GetService("Players")

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

	local cash = Instance.new("IntValue")
	cash.Name = "Cash"
	cash.Value = 0
	cash.Parent = stats
end)

Mỗi phần làm gì

  • PlayerAdded chạy một lần cho mỗi người chơi vào game.
  • Một folder tên leaderstats là đặc biệt. Roblox hiện các giá trị trong đó ở danh sách người chơi.
  • IntValue chứa một số nguyên. Ở đây nó chứa số cash của người chơi.

Xem thêm chi tiết

  • ServerScriptService nằm trong danh sách của Explorer. Các script trong đó chạy trên máy chủ, nơi người chơi không thể thay đổi.
  • 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ả.
  • Quay lại thế giới của bạn bằng cách bấm vào tab có tên place của bạn.
  • Danh sách người chơi ở góc trên bên phải của game. Nhấn F5 để bắt đầu và Shift+F5 để dừ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 →

3
Bước 3 / 9

Xây dropper

  1. Thêm một Part vào folder Tycoon. Đặt Size thành 4, 1, 4, bật Anchored và đặt tên là Dropper.
  2. Nâng nó lên cao khoảng 10 studs so với sàn bằng công cụ Move (Ctrl+2).
  3. Thêm một Script vào Dropper và dán đoạn code này.
  4. Nhấn Play. Cứ 2 giây lại có một khối màu vàng rơi xuống.
Dropper > Script
local Debris = game:GetService("Debris")
local dropper = script.Parent

while true do
	task.wait(2)

	local cube = Instance.new("Part")
	cube.Name = "Cube"
	cube.Size = Vector3.new(1.5, 1.5, 1.5)
	cube.Color = Color3.fromRGB(255, 200, 60)
	cube.Position = dropper.Position - Vector3.new(0, 2, 0)
	cube.Parent = workspace

	Debris:AddItem(cube, 20)
end

Mỗi phần làm gì

  • Instance.new tạo một part mới từ code.
  • Position đặt khối thấp hơn dropper 2 studs.
  • Debris xóa mỗi khối sau 20 giây, nên các khối cũ không bao giờ chất đống.

Xem thêm chi tiết

  • Để đưa part vào folder, kéo tên nó trong Explorer thả lên tên Tycoon.
  • Với công cụ Move, kéo mũi tên xanh lá lên trên. Ô Position trong Properties cho thấy độ cao là số ở giữa.
  • Khối lập phương xuất hiện thấp hơn máy thả 2 studs rồi rơi xuống. Nếu máy thả đặt quá thấp, các khối sẽ chất đống bên dưới nó.
  • Khối đầu tiên xuất hiện 2 giây sau khi game bắt đầu.
Lỗi thường gặp. Không có khối nào xuất hiện: hãy kiểm tra script nằm trong Dropper và Dropper đã được Anchored.
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 / 9

Thêm băng chuyền

  1. Thêm một Part, đặt Size thành 6, 1, 30, bật Anchored và đặt tên là Conveyor.
  2. Đặt nó trên sàn sao cho một đầu nằm ngay dưới dropper.
  3. Thêm một Script vào Conveyor và dán đoạn code này.
  4. Nhấn Play. Các khối rơi xuống băng chuyền và trượt dọc theo nó.
Conveyor > Script
local conveyor = script.Parent

conveyor.AssemblyLinearVelocity = conveyor.CFrame.LookVector * 8

Mỗi phần làm gì

  • AssemblyLinearVelocity cho Roblox biết các vật nằm trên part phải di chuyển nhanh thế nào.
  • LookVector là hướng mà mặt trước của part nhìn tới. Số 8 là tốc độ tính bằng studs mỗi giây.

Xem thêm chi tiết

  • Mỗi part đều có một mặt trước. Băng chuyền đẩy các khối về phía mặt trước của nó.
  • Cạnh dài của băng chuyền, dài 30 studs, phải hướng ra xa máy thả, về phía nơi sẽ đặt máy thu.
  • Bản thân băng chuyền không di chuyển. Chỉ những thứ nằm trên nó mới trượt đi.
  • Nếu các khối rơi ra mép bên, hãy làm băng chuyền rộng hơn hoặc dời máy thả vào giữa nó.
Lỗi thường gặp. Các khối trượt sai hướng: hãy xoay băng chuyền 180 độ bằng công cụ Rotate (Ctrl+4).
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 / 9

Thu các khối

  1. Thêm một Part ở đầu xa của băng chuyền. Đặt Size thành 6, 4, 1, bật Anchored, cho nó màu xanh lá và đặt tên là Collector.
  2. Dựng nó thẳng đứng như một bức tường, để các khối đâm vào nó.
  3. Thêm một Script vào Collector và dán đoạn code này.
  4. Nhấn Play. Mỗi khối chạm tới collector sẽ cộng 5 vào Cash.
Collector > Script
local Players = game:GetService("Players")
local collector = script.Parent

collector.Touched:Connect(function(hit)
	if hit.Name ~= "Cube" then return end
	hit:Destroy()

	for _, player in ipairs(Players:GetPlayers()) do
		local stats = player:FindFirstChild("leaderstats")
		if stats then
			stats.Cash.Value += 5
		end
	end
end)

Mỗi phần làm gì

  • Script bỏ qua mọi thứ không tên là Cube. Chân của bạn không được tính.
  • Destroy xóa khối khỏi game.
  • Vòng lặp tặng 5 cash cho mọi người chơi trong server. Một tycoon mà mỗi khu đất có một chủ là bài học nâng cao.

Xem thêm chi tiết

  • Size 6, 4, 1 đã đứng thẳng sẵn: rộng 6, cao 4 và dày 1. Đặt nó chắn ngang cuối băng chuyền như một cánh cổng đang đóng.
  • Mép dưới của nó nên chạm vào băng chuyền, để không khối nào lọt xuống dưới được.
  • Để làm nó màu xanh lá, bấm vào ô Color trong Properties.
  • Để thử: nhấn F5 và nhìn danh sách người chơi. Cash tăng thêm 5 mỗi lần một khối chạm đến bức tườ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 / 9

Chuẩn bị dropper thứ hai

  1. Chọn Dropper và nhấn Ctrl+D. Đặt tên bản sao là Dropper2 và dời nó cạnh dropper đầu tiên, vẫn ở phía trên băng chuyền.
  2. Kéo Dropper2 từ Workspace vào ServerStorage.
  3. Nó biến mất khỏi thế giới. Các vật thể trong ServerStorage chờ ở đó cho đến khi một script đưa chúng trở lại.

Xem thêm chi tiết

  • Bản sao nằm đúng lên trên bản gốc. Kéo nó sang bên bằng công cụ Move để bạn thấy cả hai.
  • Đổi tên bản sao bằng F2. Tên phải là Dropper2, chữ D viết hoa và không có dấu cách.
  • ServerStorage nằm trong danh sách của Explorer. Kéo tên Dropper2 thả lên nó.
  • Script bên trong bản sao đi theo cùng nó. Bạn không cần thêm lại.
Mẹo. Script nằm trong ServerStorage không chạy. Vì vậy dropper thứ hai im lặng cho đến khi có người mua 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 →

7
Bước 7 / 9

Thêm nút mua

  1. Thêm một Part trên sàn gần băng chuyền. Đặt Size thành 4, 1, 4, bật Anchored, cho nó màu xanh dương sáng và đặt tên là BuyDropper.
  2. Thêm một Script vào BuyDropper và dán đoạn code này.
  3. Để gắn nhãn cho nút, rê chuột lên BuyDropper, bấm + và thêm một BillboardGui. Đặt Size của nó thành {0, 200}, {0, 50} và StudsOffset thành 0, 3, 0.
  4. Thêm một TextLabel vào trong BillboardGui. Đặt Size thành {1, 0}, {1, 0}, bật TextScaled và gõ dòng chữ này: Second dropper - 50
BuyDropper > Script
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")

local button = script.Parent
local PRICE = 50
local bought = false

button.Touched:Connect(function(hit)
	if bought then return end

	local player = Players:GetPlayerFromCharacter(hit.Parent)
	local stats = player and player:FindFirstChild("leaderstats")
	if not stats or stats.Cash.Value < PRICE then return end

	bought = true
	stats.Cash.Value -= PRICE
	ServerStorage.Dropper2.Parent = workspace
	button:Destroy()
end)

Mỗi phần làm gì

  • PRICE là giá tiền. Hãy đổi con số để nút rẻ hơn hoặc đắt hơn.
  • Script kiểm tra rằng một người chơi thật đã chạm vào nút và người chơi đó có đủ cash.
  • Chuyển Dropper2 vào workspace là bật nó lên. Script của nó bắt đầu chạy ngay.

Xem thêm chi tiết

  • Người chơi mua bằng cách bước lên nút, nên hãy đặt nó trên sàn ở chỗ dễ đến.
  • Với Size và StudsOffset, bấm vào ô trong Properties, gõ các số đúng như được chỉ, kèm cả dấu ngoặc và dấu phẩy, rồi nhấn Enter.
  • Text là một thuộc tính của TextLabel. Bấm vào ô Text, gõ các chữ và nhấn Enter.
  • Nhãn lơ lửng phía trên nút. Nếu không thấy nó, hãy tăng số ở giữa của StudsOffset.
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 / 9

Thử cả vòng lặp

  1. Nhấn F5. Xem các khối rơi xuống, chạy trên băng chuyền và biến thành cash.
  2. Đợi đến khi bạn có 50 cash, rồi bước lên nút màu xanh dương.
  3. Dropper thứ hai xuất hiện, nút biến mất và cash của bạn tăng nhanh gấp đôi.
  4. Nhấn Shift+F5 để dừng. Nếu có gì sai, hãy mở cửa sổ Output từ menu Window và đọc chữ màu đỏ.

Xem thêm chi tiết

  • Cần 10 khối, tức là ít nhất 20 giây, để có 50 cash.
  • Sau khi mua, Cash giảm đi 50. Vậy là đúng. Bạn đã trả tiền cho máy thả.
  • Nút bị xóa sau khi mua, nên không thể mua hai lần.
  • Nếu máy thả thứ hai xuất hiện sai chỗ, hãy dừng game, kéo Dropper2 từ ServerStorage về lại Workspace, dời nó đi, rồi kéo nó vào ServerStorage lần nữa.
Lỗi thường gặp. Cash không bao giờ thay đổi: các vật rơi xuống phải có tên Cube, đúng như trong script của dropper.
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 →

9
Bước 9 / 9

Đă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. Tiến trình chưa được lưu. Khi một người chơi thoát game, cash sẽ mất. Lưu dữ liệu là một bài học nâng cao.
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é

  • Làm mỗi khối có giá trị 10 cash thay vì 5.
  • Thêm dropper thứ ba có giá 200 cash.
  • Làm dropper thứ hai nhanh hơn dropper đầu tiên. Bạn phải đổi con số nào?