出售物品

*此內容是使用 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. 要檢查您的工作,請添加一個 print 語句,這會在玩家碰到 sellPart 時執行。


    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
  6. 在腳指令碼底部,連接 onTouch() 以銷售零件碰觸事件。


    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. Type playerGold.Value += totalSell to add the gold for the items to their current gold。


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    -- 添加玩家對資金的收入
    playerGold.Value += totalSell
    end
  4. playerItems.Value = 0 設為玩家的項目。這會將玩家的項目設為 0。如果玩家的項目未設為 0,則會繼續向玩家提供金幣,無論他們的項目是否為 0。


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    playerGold.Value += totalSell
    playerItems.Value = 0
    end
  5. onTouch() 函數中, 在第二個 if 句中的第二個 if 句下,呼叫 sellItems() 函數。 通過參數, 1> playerItems1> 和 4> playerGold4> 來變更。


    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 ,例如玩家項目,會在變更它們的時候使用 .Value 在結束。值是總是以大寫。
  • sellPart.Touched:Connect(onTouch)指令碼幕底部 的 script 中輸入。
  • sellItems(playerItems, playerGold) 在 if humanoid 然後的語句中輸入。