Rê chuột lên ServerScriptService, bấm + và thêm một Script. Đặt tên là Stats.
Xóa dòng có sẵn rồi dán đoạn code này vào.
Nhấn Play. Danh sách người chơi hiện Power 0 và Coins 0.
ServerScriptService > Stats
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local stats = Instance.new("Folder")
stats.Name = "leaderstats"
stats.Parent = player
for _, name in ipairs({"Power", "Coins"}) do
local value = Instance.new("IntValue")
value.Name = name
value.Parent = stats
end
local multiplier = Instance.new("IntValue")
multiplier.Name = "Multiplier"
multiplier.Value = 1
multiplier.Parent = player
end)
Mỗi phần làm gì
Vòng lặp tạo hai giá trị chỉ với một đoạn code: Power và Coins.
Multiplier là lượng sức mạnh mà một lần bấm cho. Nó bắt đầu từ 1.
Multiplier nằm trên người chơi chứ không nằm trong leaderstats, nên nó bị ẩn khỏi danh sách người chơi.
Xem thêm chi tiết
Khi bạn bấm +, gõ từ Script để tìm nhanh.
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ả.
Đổi tên script trong Explorer bằng F2. Tên này chỉ để bạn dùng. Nó giúp bạn tìm lại script sau này.
Danh sách người chơi ở góc trên bên phải của game.
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.
Thêm một Part. Đặt Size thành 6, 8, 6, bật Anchored và đặt tên là Crystal. Chọn một màu sáng và đặt Material thành Neon.
Rê chuột lên Crystal, bấm + và thêm một ClickDetector.
Thêm một Script vào Crystal và dán đoạn code này.
Nhấn Play và bấm vào viên pha lê. Power tăng 1 sau mỗi lần bấm.
Crystal > Script
local crystal = script.Parent
local clickDetector = crystal.ClickDetector
clickDetector.MouseClick:Connect(function(player)
local power = player.leaderstats.Power
power.Value += player.Multiplier.Value
end)
Mỗi phần làm gì
ClickDetector làm cho part có thể bấm được. Nó cũng hoạt động khi chạm trên điện thoại.
MouseClick cho script biết người chơi nào đã bấm.
Script cộng Multiplier của người chơi vào Power, nên các nâng cấp làm mỗi lần bấm mạnh hơn.
Xem thêm chi tiết
Gõ kích thước vào ô Size trong Properties rồi nhấn Enter. Sau đó nâng viên pha lê lên bằng công cụ Move cho đến khi nó đứng trên sàn.
Khi bạn bấm +, gõ ClickDetector để tìm. Trong Explorer, nó phải nằm thụt vào một bậc, bên dưới Crystal.
Trong game, con trỏ chuột đổi thành hình bàn tay khi nó ở trên viên pha lê.
Bạn phải đứng đủ gần. ClickDetector hoạt động từ khoảng cách 32 studs trở xuống.
Lỗi thường gặp. Bấm mà không có gì xảy ra: ClickDetector phải nằm ngay trong Crystal, cạnh script.
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.
Thêm một Part trên sàn. Đặt Size thành 8, 1, 8, bật Anchored, cho nó màu vàng và đặt tên là Sell.
Thêm một Script vào Sell và dán đoạn code này.
Nhấn Play, bấm vào viên pha lê vài lần rồi bước lên bệ. Power biến thành Coins.
Sell > Script
local Players = game:GetService("Players")
local pad = script.Parent
pad.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if not player then return end
local stats = player.leaderstats
if stats.Power.Value > 0 then
stats.Coins.Value += stats.Power.Value
stats.Power.Value = 0
end
end)
Mỗi phần làm gì
GetPlayerFromCharacter tìm ra người chơi đã bước lên bệ.
Bệ cộng toàn bộ Power của người chơi vào Coins rồi đặt Power về lại 0.
Xem thêm chi tiết
Pad là một part phẳng để người chơi bước lên.
Đặt pad phẳng trên sàn. Nếu nó quá cao, người chơi không bước lên được.
Bước lên pad khi có 0 sức mạnh thì không có gì xảy ra. Vậy là đúng.
Để thử: bấm vào viên pha lê 10 lần, bước lên pad, và danh sách người chơi hiện Power 0 và Coins 10.
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.
Thêm một Part khác trên sàn. Đặt Size thành 8, 1, 8, bật Anchored, cho nó màu xanh dương và đặt tên là Upgrade.
Thêm một Script vào Upgrade và dán đoạn code này.
Nhấn Play, kiếm 25 tiền xu rồi bước lên bệ. Giờ mỗi lần bấm cho 2 sức mạnh.
Upgrade > Script
local Players = game:GetService("Players")
local pad = script.Parent
local waiting = {}
pad.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if not player or waiting[player] then return end
local price = player.Multiplier.Value * 25
local coins = player.leaderstats.Coins
if coins.Value < price then return end
waiting[player] = true
coins.Value -= price
player.Multiplier.Value += 1
task.wait(1)
waiting[player] = nil
end)
Mỗi phần làm gì
Giá bằng Multiplier của người chơi nhân với 25, nên mỗi lần nâng cấp đắt hơn lần trước.
Bảng waiting ngăn việc đứng lâu trên bệ mua nhiều nâng cấp cùng lúc.
Sau khi mua, Multiplier tăng thêm 1.
Xem thêm chi tiết
Đặt pad cách pad bán vài bước chân, để người chơi không mua nhầm.
Nâng cấp đầu tiên giá 25 xu. Sau đó, Coins giảm đi 25 và mỗi lần bấm cho 2 sức mạnh.
Khi có ít xu hơn giá, pad không làm gì. Hãy bước ra, kiếm thêm rồi quay lại.
Khoảng nghỉ 1 giây là lý do đứng yên trên pad chỉ mua được một nâng cấp mỗi lầ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.