Đối với giai đoạn tiếp theo của chuỗi game, người chơi cần phải bán các vật phẩm của họ để cho phép họ mua thêm không gian trong ba lô của họ.
Tạo một nền tảng bán
Người chơi sẽ bán các mặt hàng của họ bằng cách bước vào một nền tảng cung cấp cho họ vàng cho mỗi mặt hàng trong túi của họ.
Tạo một nền tảng
Nền tảng có thể là bất kỳ phần nào và sẽ bao gồm một script xử lý bán hàng.
Tạo một phần mới có tên là SellPlatform. Tùy chỉnh nó để phù hợp với chủ đề của trải nghiệm của bạn.
Trong SellPlatform, tạo một mã mới có tên là SellScript và thêm bình luận.
Trong SellScript, hãy viết local sellPart = script.Parent để nhận phần SellPlatform.
-- Bán tất cả vật phẩm của một người chơi và đưa vànglocal sellPart = script.Parent
Xử lý Sự kiện Cảm ứng
Để sử dụng nền tảng này, script cần một chức năng để kiểm tra nếu bất kỳ người chơi nào chạm vào nó.
Tạo một chức năng tên là onTouch() để kiểm tra xem một người đang chạm vào nền tảng.
local function onTouch(partTouched)local character = partTouched.ParentendĐể thay đổi bất kỳ chỉ số nào trên bảng xếp hạng, script cần phải biết người chơi đang điều khiển nhân vật. Trong if statement, hãy sử dụng hàm GetPlayerFromCharacter() để tìm một người chơi.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)Ở dòng tiếp theo, lấy container thống kê của người chơi đó.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- Lấy bảng xếp hạng của người chơi. Cần thiết để nhận được các mặt hàng và tiềnlocal playerStats = player:FindFirstChild("leaderstats")endỞ dòng tiếp theo, tạo các biến để nhận tiền và vật phẩm của người chơi.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- Lấy bảng xếp hạng của người chơi. Cần thiết để nhận được các mặt hàng và tiềnlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Lấy vật phẩm và tiền của người chơilocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")endendĐể kiểm tra công việc của bạn, hãy thêm một tuyên bố in sẽ được thi hành nếu một người chạm vào sellPart.
local playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")Ở dưới cùng của script, kết nối onTouch() để bán sự kiện Đã chạm của part.
local Players = game:GetService("Players")local function onTouch(partTouched)local character = partTouched.Parentlocal player = Players:GetPlayerFromCharacter(character)if player then-- Lấy bảng xếp hạng của người chơi. Cần thiết để nhận được các mặt hàng và tiềnlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Lấy vật phẩm và tiền của người chơilocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")endendendsellPart.Touched:Connect(onTouch)Chơi dự án của bạn và bước vào sellPart; bạn nên thấy thông điệp "A Player touched sellPart" trong Cửa sổ Ra mắt.
Bán các mặt hàng
Trong trải nghiệm này, một người chơi nhận được 100 vàng cho mỗi một vật phẩm. Sau khi nhận được tiền, các mặt hàng của họ sẽ được đặt lại thành 0, cho phép người chơi khám phá thế giới để tìm thêm các mặt hàng.
Lập chức năng bán mới
Dưới các biến, tạo một hàm tên là sellItems() để nhận hai tham số tên là playerItems và playerGold .
-- Bán tất cả vật phẩm của một người chơi và đưa vànglocal sellPart = script.Parentlocal function sellItems(playerItems, playerGold)endlocal function onTouch(partTouched)Để cho người chơi số lượng vàng phù hợp, hãy lấy giá trị của playerItems và nhân với số lượng vàng mà họ nên nhận mỗi món vật phẩm. Ví dụ này cho một trăm đồng vàng per món vật phẩm.
Trong hàm sellItems(), hãy nhập local totalSell = playerItems.Value * 100
local function sellItems(playerItems, playerGold)-- Nhận số lượng món đồ người chơi có và nhân đi số lượng mỗi món đồ bằng giá trị.local totalSell = playerItems.Value * 100endNhập playerGold.Value += totalSell để thêm vàng cho các mục vào vàng hiện tại của họ.
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100-- Thêm số tiền mà người chơi kiếm được vào tiền của họplayerGold.Value += totalSellendKiểu playerItems.Value = 0 . Điều này đặt lại các mục của một người chơi trở lại 0. Nếu các mục của một người chơi không được đặt trở lại 0, script sẽ tiếp tục cho người chơi vàng mà không dừng lại.
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100playerGold.Value += totalSellplayerItems.Value = 0endTrong chức năng onTouch(), trong dòng thứ hai if statement , gọi chức năng sellItems(). Được truyền trong các tham số, 1> playerItems1> và 4> playerGold4> để có thể thay đổi chúng.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- Lấy bảng xếp hạng của người chơi. Cần thiết để nhận được các mặt hàng và tiềnlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Lấy vật phẩm và tiền của người chơilocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")if playerItems and playerGold thensellItems(playerItems, playerGold)endendendChơi dự án của bạn; kiểm tra rằng mỗi khi một người chơi bước vào nền tảng, vàng của họ tăng lên và các mục được đặt để 0.
Mẹo dịch vụ
Tại thời điểm này, bán các mặt hàng không hoạt động như ý muốn, hãy thử một trong những lựa chọn dưới đây.
- sellItems() được gọi trong thứ hai nếu tuyên bố kiểm tra các mục của người chơi.
- Bất kỳ IntValue, giống như playerItems, sử dụng .Value ở cuối nếu bạn thực hiện thay đổi đối với nó. Giá trị luôn được viết hoa.
- sellPart.Touched:Connect(onTouch) được viết ở phía dưới của script.
- sellItems(playerItems, playerGold) được viết trước khi kết thúc câu if humanoid then statement.