对于游戏循环的下一阶段,玩家需要出售他们的物品以金币的价格允许他们购买更多空间在背包中。
创建一个出售平台
玩家将通过踏上平台获得金币,每个物品都有金币。
设置平台
平台可以是任何部分,包括处理销售的脚本。
创建一个名为 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() 来销售零件触摸事件。
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 的值,然后乘以金币每个物品目的金币。这个示例使用了 100 个金物品。
在 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,脚本将继续给玩家发金,无论其物品是否为0。
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100playerGold.Value += totalSellplayerItems.Value = 0end在 onTouch() 函数中,在第二个 if 句话下,调用 sellItems() 函数。 通过参数, sellItems() 和 1> playerGold1> 来更改它们。
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) 在脚本的 底部 输入。
- sellItems(playerItems, playerGold) 在 humanoid 声明的结束前输入。