Roblox 错误:MarketplaceService:PromptGamePassPurchase() 玩家应为 Player 类型,但其类型为 nil

问题描述 投票:0回答:2

因此我无法让我的游戏通行证工作。这是我的代码:

local TENROBUXGUI = script.Parent
local TextButton = TENROBUXGUI.TextButton

TextButton.MouseButton1Up:Connect(function(hit)
    local player = game.Players:GetPlayerFromCharacter(hit)
    if player then
        game:GetService("MarketplaceService"):PromptGamePassPurchase(player, 21187565)
    end
end)
lua roblox
2个回答
1
投票

您使用

hit
的方式似乎与您使用
BasePart
事件发现
Touched
接触游戏世界中的另一部分的方式相同。然而,由于这是一个 GUI,它的工作方式并不相同。

根据 documentation

MouseButton1Up
有两个数字参数,对应于用户在屏幕上单击/点击的确切 x 和 y 坐标。由于第一个参数对应于 x 坐标值,而不是游戏世界中玩家的模型,因此它返回 null。

因此,您要做的是引用

game.Players.LocalPlayer
来获取单击 GUI 的玩家的
Player
对象。

local TENROBUXGUI = script.Parent
local TextButton = TENROBUXGUI.TextButton

TextButton.MouseButton1Up:Connect(function()
    local player = game.Players.LocalPlayer
    if player then
        game:GetService("MarketplaceService"):PromptGamePassPurchase(player, 21187565)
    end
end)

0
投票

本地玩家 = game.Players:GetPlayerFromCharacter(hit.Parent)

© www.soinside.com 2019 - 2024. All rights reserved.