為下一個階段的遊戲循環,玩家需要出售他們的物品以獲得金幣,以便他們可以在背包中購買更多空間。
建立出售平台
玩家將以踏上平台獲得金幣,每個項目都有在他們的背包中的金幣。
設置平台
平台可以是任何部分,包括處理銷售的指令碼。
創建名為 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要檢查您的工作,請添加一個 print 語句,這會在玩家碰到 sellPart 時執行。
local playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")在腳指令碼底部,連接 onTouch() 以銷售零件碰觸事件。
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 * 100endType 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 += totalSellend將 playerItems.Value = 0 設為玩家的項目。這會將玩家的項目設為 0。如果玩家的項目未設為 0,則會繼續向玩家提供金幣,無論他們的項目是否為 0。
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100playerGold.Value += totalSellplayerItems.Value = 0end在 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 thensellItems(playerItems, playerGold)endendend播放您的項目;每次玩家踏上平台時,他們的黃金會增加,並設定為 0。
排障提示
在這個時候,出售物品不再如預期般工作,請試一下下面的一個。
- sellItems() 在第 秒 後呼叫,如果檢查玩家的項目。
- 任何 IntValue ,例如玩家項目,會在變更它們的時候使用 .Value 在結束。值是總是以大寫。
- sellPart.Touched:Connect(onTouch) 在 指令碼幕底部 的 script 中輸入。
- sellItems(playerItems, playerGold) 在 if humanoid 然後的語句中輸入。