Lua 如何制作2倍现金游戏通行证脚本Roblox

Lua 如何制作2倍现金游戏通行证脚本Roblox,lua,roblox,Lua,Roblox,所以我制作了一个脚本,每分钟给你5现金,我还制作了一个游戏通行证,如果有人拥有游戏通行证,他们作为非游戏通行证持有人获得双倍的钱。这是我的剧本 我没有任何脚本提供现金,但问题是在第二个脚本块中,控制台打印错误: 09:10:57.466服务器脚本服务。现金发放者:6:尝试使用“UserId”索引nil-服务器-现金发放者:6 local Give5Cash = game.ReplicatedStorage:WaitForChild("Give5Cash") local Giv

所以我制作了一个脚本,每分钟给你5现金,我还制作了一个游戏通行证,如果有人拥有游戏通行证,他们作为非游戏通行证持有人获得双倍的钱。这是我的剧本 我没有任何脚本提供现金,但问题是在第二个脚本块中,控制台打印错误:

09:10:57.466服务器脚本服务。现金发放者:6:尝试使用“UserId”索引nil-服务器-现金发放者:6

local Give5Cash = game.ReplicatedStorage:WaitForChild("Give5Cash")
local Give10Cash = game.ReplicatedStorage:WaitForChild("Give10Cash")

Give5Cash.OnServerEvent:Connect(function()
    print("Player Will Be Given 5 Cash")
end)

Give10Cash.OnServerEvent:Connect(function()
    print("Player Will Be Given 10 Cash")
end)

在这里,您为
player
分配了一个nil值,您可以不编制索引,而是编制索引

从:

玩家。本地玩家

不复制

此项未跨Roblox的服务器/客户端边界复制

LocalPlayer是一个只读属性,它引用 客户端正在运行游戏

此属性仅为LocalScript(和ModuleScripts)定义 在客户端上运行时。对于服务器(在其上) 脚本对象运行其代码),此属性为nil。

在这里,您为
player
分配了一个nil值,您可以不编制索引,而是编制索引

从:

玩家。本地玩家

不复制

此项未跨Roblox的服务器/客户端边界复制

LocalPlayer是一个只读属性,它引用 客户端正在运行游戏

此属性仅为LocalScript(和ModuleScripts)定义 在客户端上运行时。对于服务器(在其上) 脚本对象运行其代码),此属性为nil。


所以我想出了一个解决这个问题的方法,我已经得到了我问题的答案。 下面是我是如何做到的,我在
ServerScriptService
中制作了
3
脚本,名称为
CashGiver5
CashGiver10
,以及
CashGiverHandler
下面是我添加到每个脚本中的脚本。
CashGiver5

while wait(1) do
    print("Giving Player 5 Cash ")
    for i, player in pairs(game.Players:GetPlayers()) do
        player:WaitForChild("leaderstats").Cash.Value += 5
    end
end
while wait(1) do
    print("Giving Player 10 Cash ")
    for i, player in pairs(game.Players:GetPlayers()) do
        player:WaitForChild("leaderstats").Cash.Value += 10
    end
end
local MarketPlace = game:GetService("MarketplaceService")

game.Players.PlayerAdded:Connect(function(player)
    local g = 16031172 -- DOUBLE CASH ID
    
    local Give5Script = game.ServerScriptService.CashGiver5
    local Give10Script = game.ServerScriptService.CashGiver10

    if MarketPlace:UserOwnsGamePassAsync(player.UserId, g) then
        Give5Script:Destroy()
    else
        Give10Script:Destroy()
    end
end)
CashGiver10

while wait(1) do
    print("Giving Player 5 Cash ")
    for i, player in pairs(game.Players:GetPlayers()) do
        player:WaitForChild("leaderstats").Cash.Value += 5
    end
end
while wait(1) do
    print("Giving Player 10 Cash ")
    for i, player in pairs(game.Players:GetPlayers()) do
        player:WaitForChild("leaderstats").Cash.Value += 10
    end
end
local MarketPlace = game:GetService("MarketplaceService")

game.Players.PlayerAdded:Connect(function(player)
    local g = 16031172 -- DOUBLE CASH ID
    
    local Give5Script = game.ServerScriptService.CashGiver5
    local Give10Script = game.ServerScriptService.CashGiver10

    if MarketPlace:UserOwnsGamePassAsync(player.UserId, g) then
        Give5Script:Destroy()
    else
        Give10Script:Destroy()
    end
end)
CashGiverHandler

while wait(1) do
    print("Giving Player 5 Cash ")
    for i, player in pairs(game.Players:GetPlayers()) do
        player:WaitForChild("leaderstats").Cash.Value += 5
    end
end
while wait(1) do
    print("Giving Player 10 Cash ")
    for i, player in pairs(game.Players:GetPlayers()) do
        player:WaitForChild("leaderstats").Cash.Value += 10
    end
end
local MarketPlace = game:GetService("MarketplaceService")

game.Players.PlayerAdded:Connect(function(player)
    local g = 16031172 -- DOUBLE CASH ID
    
    local Give5Script = game.ServerScriptService.CashGiver5
    local Give10Script = game.ServerScriptService.CashGiver10

    if MarketPlace:UserOwnsGamePassAsync(player.UserId, g) then
        Give5Script:Destroy()
    else
        Give10Script:Destroy()
    end
end)
脚本的作用是什么?

所以基本上,现金发放者脚本是每秒给玩家
现金
的基本脚本。

因此,当玩家被添加到游戏中时,处理程序脚本会销毁其中一个脚本。

因此,我找到了解决这个问题的方法,我的问题得到了答案。 下面是我是如何做到的,我在
ServerScriptService
中制作了
3
脚本,名称为
CashGiver5
CashGiver10
,以及
CashGiverHandler
下面是我添加到每个脚本中的脚本。
CashGiver5

while wait(1) do
    print("Giving Player 5 Cash ")
    for i, player in pairs(game.Players:GetPlayers()) do
        player:WaitForChild("leaderstats").Cash.Value += 5
    end
end
while wait(1) do
    print("Giving Player 10 Cash ")
    for i, player in pairs(game.Players:GetPlayers()) do
        player:WaitForChild("leaderstats").Cash.Value += 10
    end
end
local MarketPlace = game:GetService("MarketplaceService")

game.Players.PlayerAdded:Connect(function(player)
    local g = 16031172 -- DOUBLE CASH ID
    
    local Give5Script = game.ServerScriptService.CashGiver5
    local Give10Script = game.ServerScriptService.CashGiver10

    if MarketPlace:UserOwnsGamePassAsync(player.UserId, g) then
        Give5Script:Destroy()
    else
        Give10Script:Destroy()
    end
end)
CashGiver10

while wait(1) do
    print("Giving Player 5 Cash ")
    for i, player in pairs(game.Players:GetPlayers()) do
        player:WaitForChild("leaderstats").Cash.Value += 5
    end
end
while wait(1) do
    print("Giving Player 10 Cash ")
    for i, player in pairs(game.Players:GetPlayers()) do
        player:WaitForChild("leaderstats").Cash.Value += 10
    end
end
local MarketPlace = game:GetService("MarketplaceService")

game.Players.PlayerAdded:Connect(function(player)
    local g = 16031172 -- DOUBLE CASH ID
    
    local Give5Script = game.ServerScriptService.CashGiver5
    local Give10Script = game.ServerScriptService.CashGiver10

    if MarketPlace:UserOwnsGamePassAsync(player.UserId, g) then
        Give5Script:Destroy()
    else
        Give10Script:Destroy()
    end
end)
CashGiverHandler

while wait(1) do
    print("Giving Player 5 Cash ")
    for i, player in pairs(game.Players:GetPlayers()) do
        player:WaitForChild("leaderstats").Cash.Value += 5
    end
end
while wait(1) do
    print("Giving Player 10 Cash ")
    for i, player in pairs(game.Players:GetPlayers()) do
        player:WaitForChild("leaderstats").Cash.Value += 10
    end
end
local MarketPlace = game:GetService("MarketplaceService")

game.Players.PlayerAdded:Connect(function(player)
    local g = 16031172 -- DOUBLE CASH ID
    
    local Give5Script = game.ServerScriptService.CashGiver5
    local Give10Script = game.ServerScriptService.CashGiver10

    if MarketPlace:UserOwnsGamePassAsync(player.UserId, g) then
        Give5Script:Destroy()
    else
        Give10Script:Destroy()
    end
end)
脚本的作用是什么?

所以基本上,现金发放者脚本是每秒给玩家
现金
的基本脚本。

因此,当玩家被添加到游戏中时,处理程序脚本会销毁其中一个脚本。

有什么方法可以修复它吗?是的,您阅读了手册。您还可以访问服务器端的播放器。只是没有本地播放器…有没有办法修复它?是的,你读了手册。您还可以访问服务器端的播放器。没有本地播放器。。。