You guys probably know the problem that scripts work in studio, but not in game (FE problems). It could be the same problem but I doubt that... I tried to restart studio and still the same problem, it doesn't give an error!.
EDIT: I think it's because the script is too long and the player joins before the playeradded event is loaded but I'm not sure.
The code that is failing is a playeradded event
game.Players.PlayerAdded:connect(function(player) print('ADDED PLAYER') for index, admin in pairs(Admins) do if admin == player.Name then print(player.Name..' is an admin') player.Chatted:Connect(function(Message) print('admin '..player.Name..' chatted this message: '..Message) if Command(Message) then local MsgWords = decrypt(Message) FireCmd(MsgWords, player) end end) end end UpdateBanlist() for index, ban in pairs(BanList) do if ban == player.UserId then warn(ban..player.Name) player:Kick('You have been banned from this game!') end end end)
There is a lot more code but it just doesn't print 'ADDED PLAYER' (it doesn't run any code inside the playeradded event).
I searched for it online but I don't think people had the exact same issue, I don't know if this is a script issue or a studio bug.
This is the whole script
local DataNum = 0 local DataStore = game:GetService('DataStoreService') local BanStore = DataStore:GetDataStore('BanStore_'..DataNum) local BanNameStore = DataStore:GetDataStore('BanNameStore_'..DataNum) print('script running') local ChatEvent = game:GetService('ReplicatedStorage'):WaitForChild('Chat') local GlobalKey = 1000 local Admins = {'RedcommanderV2', 'BANSA168', 'Player1'} -- Remove Player1 local DecryptionPatterns = { ['Default'] = '%S+' } local Prefix = '/' Words = {} Reason = {} BanList = {} BanNameList = {} function Command(Msg) local MsgPrefix = string.sub(Msg,1,1) if MsgPrefix == Prefix then return true else return false end end function decrypt(sentence) Words = {} for word in string.gmatch(sentence, DecryptionPatterns.Default) do table.insert(Words, word) end return Words end function FindTarget(PlrName) if PlrName == nil then return nil end if PlrName == 'Everyone' then return 'Everyone' end for index, plr in pairs(game.Players:GetPlayers()) do if plr.Name == PlrName then return plr end end for index, plr in pairs(game.Players:GetPlayers()) do if plr.Name:lower():sub(1,PlrName:len()) == PlrName:lower() then return plr end end return nil end print('script still running') function FindTargetId(PlrName) if PlrName == 'Everyone' then return 'Everyone' end playerID = nil warn('We\'re using FindTargetId so you have to give the full name!') local success, message = pcall(function() playerID = game.Players:GetUserIdFromNameAsync(PlrName) end) print(PlrName..' has playerID '..playerID) if success then return playerID else return nil end end function UpdateBanlist() BanList = {} BanNameList = {} local Bans = BanStore:GetAsync(GlobalKey) or {} local Names = BanStore:GetAsync(GlobalKey) or {} for index, ban in pairs(Bans) do table.insert(BanList, ban) end for index, name in pairs(Names) do table.insert(BanNameList, name) end end UpdateBanlist() print('script STILL RUNNING') local function FindReason(MsgWords, StartNumber) Reason = {} for index, word in pairs(MsgWords) do if index >= StartNumber then table.insert(Reason, word) end end return(table.concat(Reason, ' ')) end function SetCmd(MsgWords, plr) local Cmd = MsgWords[1] local Target = FindTarget(MsgWords[2]) or plr local Value = MsgWords[3] or 'Gold' local Amount = MsgWords[4] or 1000 if Target ~= 'Everyone' then local leaderstats = Target:WaitForChild('leaderstats') for index, stat in pairs(leaderstats:GetChildren()) do if stat.Name == Value then stat.Value = Amount end end else for index, player in pairs(game.Players:GetPlayers()) do local leaderstats = player:WaitForChild('leaderstats') for index, stat in pairs(leaderstats:GetChildren()) do if stat.Name == Value then stat.Value = Amount end end end end end print('reached line 138') function GiveCmd(MsgWords, plr) local Cmd = MsgWords[1] local Target = FindTarget(MsgWords[2]) or plr local Value = MsgWords[3] or 'Gold' local Amount = MsgWords[4] or 1000 if Target ~= 'Everyone' then local leaderstats = Target:WaitForChild('leaderstats') for index, stat in pairs(leaderstats:GetChildren()) do if stat.Name == Value then stat.Value = stat.Value + Amount end end else for index, player in pairs(game.Players:GetPlayers()) do local leaderstats = player:WaitForChild('leaderstats') for index, stat in pairs(leaderstats:GetChildren()) do if stat.Name == Value then stat.Value = stat.Value + Amount end end end end end function KickCmd(MsgWords, plr) local Cmd = MsgWords[1] local Target = FindTarget(MsgWords[2]) or plr local Reason = FindReason(MsgWords,3) or '' if Target ~= 'Everyone' then Target:Kick(plr.Name..' has kicked you because '..Reason) end end function BanCmd(MsgWords, plr) local Cmd = MsgWords[1] local Target = FindTarget(MsgWords[2]) or plr local Reason = FindReason(MsgWords,3) or '' if Target ~= 'Everyone' then warn('Banning '..Target.Name) if Target.Name == plr.Name then warn('Ban failed because the player you are trying to ban is yourself') else local TargetKey = Target.UserId local Bans = BanStore:GetAsync(GlobalKey) or {} local Names = BanNameStore:GetAsync(GlobalKey) or {} BanList = {} BanNameList = {} for index, ban in pairs(Bans) do table.insert(BanList, ban) end for index, name in pairs(Names) do table.insert(BanNameList, name) end table.insert(BanList, TargetKey) table.insert(BanNameList, TargetKey) BanNameList[TargetKey] = Target.Name local success, message = pcall(function() BanStore:SetAsync(GlobalKey, BanList) BanNameStore:SetAsync(GlobalKey, BanNameList) end) Target:Kick('You have been banned by '..plr.Name..' because '..Reason) end else warn('You cannot ban everyone!') end end print('reached line 219') function UnbanCmd(MsgWords, plr) local Cmd = MsgWords[1] local Target = FindTargetId(MsgWords[2]) or nil if Target and Target ~= 'Everyone' then warn('unbanning '..Target) local TargetKey = Target local Bans = BanStore:GetAsync(GlobalKey) or {} local Names = BanNameStore:GetAsync(GlobalKey) or {} BanList = {} for index, ban in pairs(Bans) do table.insert(BanList, ban) end for index, ban in pairs(Bans) do if ban == TargetKey then table.remove(BanList, index) end end for index, name in pairs(Names) do table.insert(BanNameList, name) end BanNameList[TargetKey] = nil for index, name in pairs(BanNameList) do if name == TargetKey then table.remove(BanNameList, index) end end print(BanList) for index, ban in pairs(BanList) do print(ban) end for index, name in pairs(BanNameList) do print(name) end local success, message = pcall(function() BanStore:SetAsync(GlobalKey, BanList) end) elseif Target and Target == 'Everyone' then BanList = {} local success, message = pcall(function() BanStore:SetAsync(GlobalKey, BanList) BanNameStore:SetAsync(GlobalKey, BanNameList) end) end end function ListCmd(MsgWords, plr) UpdateBanlist() ChatEvent:FireClient(plr, MsgWords, Color3.new(1,1,1)) print('fired') end function FireCmd(MsgWords, plr) if MsgWords[1] == '/set' then SetCmd(MsgWords, plr) elseif MsgWords[1] == '/give' then GiveCmd(MsgWords, plr) elseif MsgWords[1] == '/kick' then KickCmd(MsgWords, plr) elseif MsgWords[1] == '/ban' then BanCmd(MsgWords, plr) elseif MsgWords[1] == '/unban' then UnbanCmd(MsgWords, plr) elseif MsgWords[1] == '/list' then ListCmd(MsgWords, plr) else warn('eror!') end end print('reached line 305') game.Players.PlayerAdded:connect(function(player) print('ADDED PLAYER') for index, admin in pairs(Admins) do if admin == player.Name then print(player.Name..' is an admin') player.Chatted:Connect(function(Message) print('admin '..player.Name..' chatted this message: '..Message) if Command(Message) then local MsgWords = decrypt(Message) FireCmd(MsgWords, player) end end) end end UpdateBanlist() for index, ban in pairs(BanList) do if ban == player.UserId then warn(ban..player.Name) player:Kick('You have been banned from this game!') end end end) print('finished')