出售物品

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

在遊戲循環的下一階段,玩家需要出售物品換取黃金,以便他們可以在背包中購買更多空間。

創建一個銷售平台

玩家會在平台上販售物品,每販售一件物品就會獲得黃金。

設定平台

平台可以是任何部分,並包含處理銷售的腳本。

  1. 創建一個名為 SellPlatform 的新零件。自訂它以符合您體驗主題。

  2. 在 SellPlatform 中,創建一個名為 SellScript 的新腳本並添加留言。

  3. 在 SellScript 中,輸入 local sellPart = script.Parent 以獲得 SellPlatform 部分。


    -- 出售玩家所有物品並給予他們黃金
    local sellPart = script.Parent

處理觸摸事件

要使用平台,腳本需要一個功能來檢查是否有玩家觸碰它。

  1. 創建名為 onTouch() 的函數,以檢查玩家是否正在觸碰平台。


    local function onTouch(partTouched)
    local character = partTouched.Parent
    end
  2. 若要變更排行榜上的任何統計數據,腳本需要知道哪位玩家控制角色。在 if 聲明中,使用 GetPlayerFromCharacter() 函數尋找一名玩家。


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
  3. 在下一行中,取得該玩家的首领統計容器。


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- 取得玩家的排行榜。需要獲得物品和金錢
    local playerStats = player:FindFirstChild("leaderstats")
    end
  4. 在下一行上,創建變量以獲得玩家的金錢和物品。


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- 取得玩家的排行榜。需要獲得物品和金錢
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- 取得玩家的物品和金錢
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    end
    end
  5. 要檢查您的工作,添加一個會在玩家觸碰 sellPart 時執行的列印聲明。


    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
  6. 在腳指令碼底部,連接 onTouch() 到 sellPart 的已觸發事件。


    local Players = game:GetService("Players")
    local function onTouch(partTouched)
    local character = partTouched.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- 取得玩家的排行榜。需要獲得物品和金錢
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- 取得玩家的物品和金錢
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
    end
    end
    end
    sellPart.Touched:Connect(onTouch)
  7. 播放您的項目並踩到 sellPart;您應該在輸出窗口看到訊息 "A Player touched sellPart"

出售物品

在此體驗中,玩家將獲得每件道具 100 枚金幣。獲得金錢後,他們的物品將被設置為 0,讓玩家探索世界以獲得更多物品。

編寫新的出售功能

  1. 在變量下,創建名為 sellItems() 的函數,獲得兩個參數名稱為 playerItemsplayerGold 的參數。


    -- 出售玩家所有物品並給予他們黃金
    local sellPart = script.Parent
    local function sellItems(playerItems, playerGold)
    end
    local function onTouch(partTouched)
  2. 為玩家提供正確數量的黃金,請取得 playerItems 的值,並將其乘以每件物道具應得到的黃金數量。這個例子每件物道具提供一百個金幣。

    sellItems() 功能中,輸入 local totalSell = playerItems.Value * 100


    local function sellItems(playerItems, playerGold)
    -- 獲得玩家擁有的物品數量,並將其乘以物品價值。
    local totalSell = playerItems.Value * 100
    end
  3. 輸入 playerGold.Value += totalSell 以將黃金添加到物品的現有黃金。


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    -- 添加玩家賺取的金錢數量到他們的資金
    playerGold.Value += totalSell
    end
  4. 類型 playerItems.Value = 0 。這會將玩家的物品重設為 0。如果玩家的物品未設為 0,腳本將繼續向玩家提供金幣,而不會停止。


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    playerGold.Value += totalSell
    playerItems.Value = 0
    end
  5. onTouch() 功能中, 在第二個 if 聲明下 ,呼叫 sellItems() 函數。傳遞參數、playerItemsplayerGold 以便它們可以被更改。


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- 取得玩家的排行榜。需要獲得物品和金錢
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- 取得玩家的物品和金錢
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    if playerItems and playerGold then
    sellItems(playerItems, playerGold)
    end
    end
    end
  6. 播放您的項目;檢查每當玩家踏上平台時,他們的黃金會增加和物品會設為 0。

排除故障提示

在這個時候,出售物品不像預期的那樣運作,請嘗試以下方法之一。

  • sellItems() 在第 呼叫檢查玩家物品的聲明。
  • 任何 IntValue,例如 playerItems,在結尾使用 .Value 如果你對它進行變更。值總是大寫。
  • sellPart.Touched:Connect(onTouch) 在腳指令碼的 底部 輸入。
  • sellItems(playerItems, playerGold) 在 ifhumanoid 然後命令結束之前輸入。