debugging 为什么脚本不能执行if语句?

wnvonmuf  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(176)

我正在尝试做一个游戏,让你得到徽章,而不必为他们工作。但这正在发生:它给了我一个错误。该错误与条件位于同一行。下面是文件的链接(请不要上传到roblox):https://www.mediafire.com/file/yyw8xui9yb4bft0/Place+for+badges.rbxl/file
我希望一切顺利,因为LocalScript。我不知道发生了什么我检查了我的代码,它似乎完美无瑕。有问题的对象是game.StarterGui.ScreenGui.Frame.TextButton.Script
现在,我将展示这些东西:在文本按钮中,有3个相关对象:一个脚本、一个本地脚本和一个数字值。本地脚本的代码为:

local plr = game.Players.LocalPlayer.UserId
script.Parent.Value.Value = plr

现在,脚本:

local player = script.Parent.Value.Value
local badgeservice = game:GetService("BadgeService")
local warning = false

script.Parent.MouseButton1Click:Connect(function()
    if not warning then
        warning = true
        if badgeservice:UserHasBadgeAsync(player, script.Parent.Parent.TextBox.Text) then
            badgeservice:AwardBadge(player, script.Parent.Parent.TextBox.Text)
        else
            script.Parent.Parent.TextLabel.Text = "You already have that badge!"
            wait(3)
            script.Parent.Parent.TextLabel.Text = "Enter badge ID and then press GIVE to get the badge with the corresponding ID"
        end
        warning = false
    end
end)

我一直得到一个错误:Unable to cast string to int64

xjreopfe

xjreopfe1#

如果我理解你的目标正确,你试图获得游戏徽章,即使你不拥有的游戏。不幸的是,这是不可能的。根据BadgeService:AwardBadge的文档:
AwardBadge根据玩家的UserId和徽章ID赠款玩家徽章。要成功授予徽章,必须满足以下条件:

  • 玩家当前必须连接到游戏。
  • 玩家必须还没有徽章(请注意,玩家可以从他们的个人资料中删除奖励的徽章,并再次获得徽章)。
  • 徽章必须从服务器端脚本或脚本最终需要的ModuleScript授予,而不是从LocalScript授予。
  • 徽章必须在与该徽章相关的游戏的一部分中颁发。
  • 场所的所有者还必须拥有徽章(例如,所有者不得删除徽章)。
  • 必须启用徽章;使用通过BadgeService获取的徽章的IsEnabled属性检查此选项:GetBadgeInfoAsync()。

由于您不是目标徽章的所有者,并且此游戏与它们没有关联,因此您不能授予它们。

相关问题