[SOLVED] I have a very big bug breaking issue. Can only find the solution to this error?
This question has been solved by the original poster.
The scripts that I have will be pretty long so bear with me (however, I will show you which section of the script is mainly important to this issue)
I am trying to make a data storage system in my module script. What I am trying to attempt is saving the players money, however, if I use a certain script, the game can't recognize the value of the money and I get an error message saying this: ServerScriptService.Components.Button:35: attempt to compare number <= nil (this error message applies to another module script btw)
The script below works fine for other things except for the money system: (look near the bottom of script)
001 | local Players = game:GetService( "Players" ) |
002 | local DataStoreService = game:GetService( "DataStoreService" ) |
003 | local PlayerData = DataStoreService:GetDataStore( "PlayerData" ) |
005 | local function LeaderboardSetup(value) |
006 | local leaderstats = Instance.new( "Folder" ) |
007 | leaderstats.Name = "leaderstats" |
009 | local money = Instance.new( "IntValue" ) |
012 | money.Parent = leaderstats |
016 | local function LoadData(player) |
017 | local success, result = pcall ( function () |
018 | return PlayerData:GetAsync(player.UserId) |
023 | return success, result |
026 | local function SaveData(player, data) |
027 | local success, result = pcall ( function () |
028 | PlayerData:SetAsync(player.UserId, data) |
036 | local sessionData = { } |
038 | local playerAdded = Instance.new( "BindableEvent" ) |
039 | local playerRemoving = Instance.new( "BindableEvent" ) |
041 | local PlayerManager = { } |
043 | PlayerManager.PlayerAdded = playerAdded.Event |
044 | PlayerManager.PlayerRemoving = playerRemoving.Event |
046 | function PlayerManager.Start() |
047 | for _, player in ipairs (Players:GetPlayers()) do |
048 | coroutine.wrap(PlayerManager.OnPlayerAdded)(player) |
051 | Players.PlayerAdded:Connect(PlayerManager.OnPlayerAdded) |
052 | Players.PlayerRemoving:Connect(PlayerManager.OnPlayerRemoving) |
054 | game:BindToClose(PlayerManager.OnClose) |
057 | function PlayerManager.OnPlayerAdded(player) |
058 | player.CharacterAdded:Connect( function (character) |
059 | PlayerManager.OnCharacterAdded(player, character) |
062 | local success, data = LoadData(player) |
063 | sessionData [ player.UserId ] = success and data or { |
068 | local leaderstats = LeaderboardSetup(PlayerManager.GetMoney(player)) |
069 | leaderstats.Parent = player |
071 | playerAdded:Fire(player) |
074 | function PlayerManager.OnCharacterAdded(player, character) |
075 | local humanoid = character:FindFirstChild( "Humanoid" ) |
077 | humanoid.Died:Connect( function () |
079 | player:LoadCharacter() |
084 | function PlayerManager.GetMoney(player) |
086 | local leaderstats = player:FindFirstChild( "leaderstats" ) |
088 | local money = leaderstats:FindFirstChild( "Money" ) |
097 | function PlayerManager.SetMoney(player, value) |
099 | sessionData [ player.UserId ] .Money = value |
101 | local leaderstats = player:FindFirstChild( "leaderstats" ) |
103 | local money = leaderstats:FindFirstChild( "Money" ) |
111 | function PlayerManager.OnPlayerRemoving(player) |
112 | SaveData(player, sessionData [ player.UserId ] ) |
113 | playerRemoving:Fire(player) |
116 | function PlayerManager.OnClose() |
117 | for _, player in ipairs (Players:GetPlayers()) do |
118 | PlayerManager.OnPlayerAdded(player) |
However, the script below breaks the money system and can't recognize it: (look near the bottom of script again)
001 | local Players = game:GetService( "Players" ) |
002 | local DataStoreService = game:GetService( "DataStoreService" ) |
003 | local PlayerData = DataStoreService:GetDataStore( "PlayerData" ) |
005 | local function LeaderboardSetup(value) |
006 | local leaderstats = Instance.new( "Folder" ) |
007 | leaderstats.Name = "leaderstats" |
009 | local money = Instance.new( "IntValue" ) |
012 | money.Parent = leaderstats |
016 | local function LoadData(player) |
017 | local success, result = pcall ( function () |
018 | return PlayerData:GetAsync(player.UserId) |
023 | return success, result |
026 | local function SaveData(player, data) |
027 | local success, result = pcall ( function () |
028 | PlayerData:SetAsync(player.UserId, data) |
036 | local sessionData = { } |
038 | local playerAdded = Instance.new( "BindableEvent" ) |
039 | local playerRemoving = Instance.new( "BindableEvent" ) |
041 | local PlayerManager = { } |
043 | PlayerManager.PlayerAdded = playerAdded.Event |
044 | PlayerManager.PlayerRemoving = playerRemoving.Event |
046 | function PlayerManager.Start() |
047 | for _, player in ipairs (Players:GetPlayers()) do |
048 | coroutine.wrap(PlayerManager.OnPlayerAdded)(player) |
051 | Players.PlayerAdded:Connect(PlayerManager.OnPlayerAdded) |
052 | Players.PlayerRemoving:Connect(PlayerManager.OnPlayerRemoving) |
054 | game:BindToClose(PlayerManager.OnClose) |
057 | function PlayerManager.OnPlayerAdded(player) |
058 | player.CharacterAdded:Connect( function (character) |
059 | PlayerManager.OnCharacterAdded(player, character) |
062 | local success, data = LoadData(player) |
063 | sessionData [ player.UserId ] = success and data or { |
068 | local leaderstats = LeaderboardSetup(PlayerManager.GetMoney(player)) |
069 | leaderstats.Parent = player |
071 | playerAdded:Fire(player) |
074 | function PlayerManager.OnCharacterAdded(player, character) |
075 | local humanoid = character:FindFirstChild( "Humanoid" ) |
077 | humanoid.Died:Connect( function () |
079 | player:LoadCharacter() |
084 | function PlayerManager.GetMoney(player) |
086 | return sessionData [ player.UserId ] .Money |
090 | function PlayerManager.SetMoney(player, value) |
092 | sessionData [ player.UserId ] .Money = value |
094 | local leaderstats = player:FindFirstChild( "leaderstats" ) |
096 | local money = leaderstats:FindFirstChild( "Money" ) |
104 | function PlayerManager.OnPlayerRemoving(player) |
105 | SaveData(player, sessionData [ player.UserId ] ) |
106 | playerRemoving:Fire(player) |
109 | function PlayerManager.OnClose() |
110 | for _, player in ipairs (Players:GetPlayers()) do |
111 | PlayerManager.OnPlayerAdded(player) |
I'm really sorry if this is hard to follow through without much context, but any help would be extremely appreciated!