Ошибка Roblox: MarketplaceService:PromptGamePassPurchase() игрок должен быть типа Player, но имеет тип nil

#lua #roblox

Вопрос:

Из-за этого я не могу заставить свой игровой билет работать. вот мой код:

 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)
 

Ответ №1:

Вы, кажется, используете hit то же самое, что вы нашли BasePart бы, что касается другой части игрового мира, используя Touched событие. Однако, поскольку это графический интерфейс, он работает по-другому.

Согласно документации, MouseButton1Up имеет два числовых параметра, которые соответствуют точным координатам x и y, в которых пользователь нажимает/нажимает на свой экран. Поскольку первый параметр соответствует значению координаты x, а не Модели игрока в игровом мире, он возвращает значение null.

Поэтому вместо этого вы хотите обратиться к game.Players.LocalPlayer 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)