Bán các mặt hàng

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Đố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.

  1. 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.

  2. Trong SellPlatform, tạo một mã mới có tên là SellScript và thêm bình luận.

  3. 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àng
    local 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ó.

  1. 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.Parent
    end
  2. Để 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)
  3. Ở 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ền
    local playerStats = player:FindFirstChild("leaderstats")
    end
  4. Ở 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ền
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Lấy vật phẩm và tiền của người chơi
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    end
    end
  5. Để 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")
  6. Ở 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.Parent
    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ền
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Lấy vật phẩm và tiền của người chơi
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
    end
    end
    end
    sellPart.Touched:Connect(onTouch)
  7. 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

  1. Dưới các biến, tạo một hàm tên là sellItems() để nhận hai tham số tên là playerItemsplayerGold .


    -- Bán tất cả vật phẩm của một người chơi và đưa vàng
    local sellPart = script.Parent
    local function sellItems(playerItems, playerGold)
    end
    local function onTouch(partTouched)
  2. Để 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 * 100
    end
  3. Nhậ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 += totalSell
    end
  4. Kiể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 * 100
    playerGold.Value += totalSell
    playerItems.Value = 0
    end
  5. Trong 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ền
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Lấy vật phẩm và tiền của người chơi
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    if playerItems and playerGold then
    sellItems(playerItems, playerGold)
    end
    end
    end
  6. Chơ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.