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')
