
在遊戲循環的下一階段,玩家需要出售物品換取黃金,以便他們可以在背包中購買更多空間。
創建一個銷售平台
玩家會在平台上販售物品,每販售一件物品就會獲得黃金。
設定平台
平台可以是任何部分,並包含處理銷售的腳本。
創建一個名為 SellPlatform 的新零件。自訂它以符合您體驗主題。
在 SellPlatform 中,創建一個名為 SellScript 的新腳本並添加留言。
在 SellScript 中,輸入 local sellPart = script.Parent 以獲得 SellPlatform 部分。
-- 出售玩家所有物品並給予他們黃金local sellPart = script.Parent
處理觸摸事件
要使用平台,腳本需要一個功能來檢查是否有玩家觸碰它。
創建名為 onTouch() 的函數,以檢查玩家是否正在觸碰平台。
local function onTouch(partTouched)local character = partTouched.Parentend若要變更排行榜上的任何統計數據,腳本需要知道哪位玩家控制角色。在 if 聲明中,使用 GetPlayerFromCharacter() 函數尋找一名玩家。
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)在下一行中,取得該玩家的首领統計容器。
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- 取得玩家的排行榜。需要獲得物品和金錢local playerStats = player:FindFirstChild("leaderstats")end在下一行上,創建變量以獲得玩家的金錢和物品。
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")endend要檢查您的工作,添加一個會在玩家觸碰 sellPart 時執行的列印聲明。
local playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")在腳指令碼底部,連接 onTouch() 到 sellPart 的已觸發事件。
local Players = game:GetService("Players")local function onTouch(partTouched)local character = partTouched.Parentlocal 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")endendendsellPart.Touched:Connect(onTouch)播放您的項目並踩到 sellPart;您應該在輸出窗口看到訊息 "A Player touched sellPart"。
出售物品
在此體驗中,玩家將獲得每件道具 100 枚金幣。獲得金錢後,他們的物品將被設置為 0,讓玩家探索世界以獲得更多物品。
編寫新的出售功能
在變量下,創建名為 sellItems() 的函數,獲得兩個參數名稱為 playerItems 和 playerGold 的參數。
-- 出售玩家所有物品並給予他們黃金local sellPart = script.Parentlocal function sellItems(playerItems, playerGold)endlocal function onTouch(partTouched)為玩家提供正確數量的黃金,請取得 playerItems 的值,並將其乘以每件物道具應得到的黃金數量。這個例子每件物道具提供一百個金幣。
在 sellItems() 功能中,輸入 local totalSell = playerItems.Value * 100
local function sellItems(playerItems, playerGold)-- 獲得玩家擁有的物品數量,並將其乘以物品價值。local totalSell = playerItems.Value * 100end輸入 playerGold.Value += totalSell 以將黃金添加到物品的現有黃金。
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100-- 添加玩家賺取的金錢數量到他們的資金playerGold.Value += totalSellend類型 playerItems.Value = 0 。這會將玩家的物品重設為 0。如果玩家的物品未設為 0,腳本將繼續向玩家提供金幣,而不會停止。
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100playerGold.Value += totalSellplayerItems.Value = 0end在 onTouch() 功能中, 在第二個 if 聲明下 ,呼叫 sellItems() 函數。傳遞參數、playerItems 和 playerGold 以便它們可以被更改。
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 thensellItems(playerItems, playerGold)endendend播放您的項目;檢查每當玩家踏上平台時,他們的黃金會增加和物品會設為 0。
排除故障提示
在這個時候,出售物品不像預期的那樣運作,請嘗試以下方法之一。
- sellItems() 在第 秒 呼叫檢查玩家物品的聲明。
- 任何 IntValue,例如 playerItems,在結尾使用 .Value 如果你對它進行變更。值總是大寫。
- sellPart.Touched:Connect(onTouch) 在腳指令碼的 底部 輸入。
- sellItems(playerItems, playerGold) 在 ifhumanoid 然後命令結束之前輸入。