Bán vật phẩm

*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 vòng lặp trò chơi, người chơi cần bán các vật phẩm của họ để lấy vàng để 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 vật phẩm 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 vật phẩm trong túi của họ.

Thiết lập 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 kịch bản xử lý bán hàng.

  1. Tạo một phần mới có tên 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 kịch bản mới có tên SellScript và thêm một bình luận.

  3. Trong SellScript, hãy nhập local sellPart = script.Parent để có được phần SellPlatform.


    -- Bán tất cả các vật phẩm của một người chơi và cho họ vàng
    local sellPart = script.Parent

Xử lý sự kiện chạm

Để sử dụng nền tảng, kịch bản cần một chức năng để kiểm tra xem có bất kỳ người chơi nào chạm vào nó không.

  1. Tạo một chức năng có tên là onTouch() kiểm tra xem một người chơi có chạm vào nền tảng hay khô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, kịch bản cần biết người chơi đang kiểm soát nhân vật.Trong tuyên bố if, sử dụng chức năng GetPlayerFromCharacter() để tìm một người chơi.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
  3. Trên dòng tiếp theo, lấy container leaderstats của người chơi đó.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Nhận được bảng xếp hạng của người chơi. Cần thiết để lấy các vật phẩm và tiền
    local playerStats = player:FindFirstChild("leaderstats")
    end
  4. Trên dòng tiếp theo, tạo các biến để lấy 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
    -- Nhận được bảng xếp hạng của người chơi. Cần thiết để lấy các vật phẩm và tiền
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Nhận các 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, thêm một tuyên bố in sẽ chạy nếu một người chơi chạm vào sellPart.


    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
  6. Ở phía dưới cùng của kịch bản, kết nối onTouch() để bán sự kiện đã chạm vào của sellPart.


    local Players = game:GetService("Players")
    local function onTouch(partTouched)
    local character = partTouched.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Nhận được bảng xếp hạng của người chơi. Cần thiết để lấy các vật phẩm và tiền
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Nhận các 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 tin nhắn "A Player touched sellPart" trong cửa sổ Thành phẩm.

Bán vật phẩm

Trong trải nghiệm này, một người chơi sẽ nhận được 100 Vàng cho mỗi 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.

Mã hóa chức năng bán mới

  1. Dưới các biến, tạo một chức năng có tên là sellItems() mà nhận được hai tham số có tên là playerItemsplayerGold .


    -- Bán tất cả các vật phẩm của một người chơi và cho họ vàng
    local sellPart = script.Parent
    local function sellItems(playerItems, playerGold)
    end
    local function onTouch(partTouched)
  2. Để cung cấp cho người chơi lượng vàng phù hợp, hãy lấy giá trị của playerItems và nhân nó với số vàng họ nên nhận mỗi mặt vật phẩm.Ví dụ này cho một trăm mảnh vàng mỗi mặt vật phẩm.

    Trong chức năng sellItems(), nhập local totalSell = playerItems.Value * 100


    local function sellItems(playerItems, playerGold)
    -- Nhận được bao nhiêu vật phẩm mà người chơi có và nhân đó với giá trị của vật phẩm.
    local totalSell = playerItems.Value * 100
    end
  3. Loại playerGold.Value += totalSell để thêm vàng cho các mục vào vàng hiện tại của chúng.


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    -- Thêm bao nhiêu người chơi kiếm được tiền vào tiền của họ
    playerGold.Value += totalSell
    end
  4. Loại playerItems.Value = 0 .Điều này đặt lại các vật phẩm của người chơi về 0.Nếu các vật phẩm của người chơi không được đặt lại thành 0, thì kịch bản 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() , dưới if tuyên bố thứ hai , gọi chức năng sellItems() .Truyền các tham số, playerItemsplayerGold để chúng có thể được thay đổi.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Nhận được bảng xếp hạng của người chơi. Cần thiết để lấy các vật phẩm và tiền
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Nhận các 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 thành 0.

Mẹo khắc phục sự cố

Tại thời điểm này, việc bán hàng không hoạt động như dự định, hãy thử một trong những điều sau.

  • sellItems() được gọi trong giây thứ hai nếu câu lệnh kiểm tra các vật phẩm của người chơi.
  • Bất kỳ IntValue, như playerItems, sử dụng .Value ở cuối nếu bạn đang thực hiện thay đổi cho nó. Giá trị luôn được viết hoa.
  • sellPart.Touched:Connect(onTouch) được gõ tại phần dưới cùng của kịch bản.
  • sellItems(playerItems, playerGold) được gõ trước khi kết thúc if humanoid then câu lệnh.