Try disabling the sending of string-based packets (RemoteEvents, RemoteFunctions, StringValues etc) and check if the error still occurs. If it doesn’t happen, slowly turn on things which send strings until it starts happening again. When it starts happening again, you should know what’s causing the server to crash.
Assuming it’s replication of strings which is causing it, of course.
The things that do send strings via remote events send two string; “Idle” or “Hunt” and they do so at a very constant rate an average of around three or four thousand times before the server crashes, and they had been doing so since before the crashing began. I’m absolutely convinced that it’s not any of the remoteevents. The only other C sided thing I could think of that used strings was data saving, so I made sure that wasn’t it by saving a 1000 line inventory string, and it worked fine. There is literally nothing in the game that would happen around once every thirty minutes that I could replicate to a T, we tested it for 45 and it did not crash, it only seems to crash when a lot of players are there, without any specific trigger.
Also, nothing is ever sent to all players at once via a C sided function, IE there’s never any invokeClient going on, so I’ve no idea what I could be doing to cause something like this anything other than indirectly.
I’m having the same problem at one of my games - upon using admin commands to kick or ban someone (anyone, really), after a varying delay it will do the same thing. All players will be disconnected, but it will not say “You have lost connection to the server.” Moving still works in small steps to an extent.
This didn’t occur from something that I did, because it started while I was away for a week and could not update my game anyway.
This has to be an error C side. It makes no sense that your scripts can run as you say thousands of times before encountering such an error in fact it seems very unrealistic.
Have you tried isolating the problem to figure out what exactly is causing this?
This is a tricky issue, but rest assured we are trying to track it down.
The reason why it’s so tricky is because usually the error message, such as “bad string length”, is not accurate. This is because somehow reading of bitstream got out of order, and we are trying to deserialize the bitstream as a string when it’s actually something else.
We have plans to add more useful debug information. In mean time, if you guys can repro this issue or have any information that you think might be helpful, such as last thing you were doing or stuff happening in the place right before disconnect, please let us know.
[quote] This is a tricky issue, but rest assured we are trying to track it down.
The reason why it’s so tricky is because usually the error message, such as “bad string length”, is not accurate. This is because somehow reading of bitstream got out of order, and we are trying to deserialize the bitstream as a string when it’s actually something else.
We have plans to add more useful debug information. In mean time, if you guys can repro this issue or have any information that you think might be helpful, such as last thing you were doing or stuff happening in the place right before disconnect, please let us know. [/quote]
This occurs at my place every time the :Kick() function is called.
[code]function Commands.kick(args,sender)
MinimumPermission(2,sender)
assert(args[1],“Player to kick is missing”)
local banned = GetPlayersFromString(args[1],sender)
for _,i in pairs(banned) do
if avoidantibans then
Instance.new("Model",Players).Name = i.Name
end
i:Kick()
end
Tell(sender,"Kicked "..tostring(comunpack(banned))..".",3)
end[/code]
-RyanDolan123’s Admin Commands
It occurs when using Person299’s as well:
if string.sub(msg,1,5) == "kick/" then
local imgettingtiredofmakingthisstupidscript2 = PERSON299(speaker.Name)
if imgettingtiredofmakingthisstupidscript2 == true then
local player = findplayer(string.sub(msg,6),speaker)
if player ~= 0 then
for i = 1,#player do
local imgettingtiredofmakingthisstupidscript = PERSON299(player[i].Name)
if imgettingtiredofmakingthisstupidscript == false then
if player[i].Name ~= eloname then
player[i]:Kick()
end end end end end end
[quote] [code]function Commands.kick(args,sender)
MinimumPermission(2,sender)
assert(args[1],“Player to kick is missing”)
local banned = GetPlayersFromString(args[1],sender)
for _,i in pairs(banned) do
if avoidantibans then
Instance.new("Model",Players).Name = i.Name
end
i:Kick()
end
Tell(sender,"Kicked "..tostring(comunpack(banned))..".",3)
end[/code]
-RyanDolan123’s Admin Commands
It occurs when using Person299’s as well:
if string.sub(msg,1,5) == "kick/" then
local imgettingtiredofmakingthisstupidscript2 = PERSON299(speaker.Name)
if imgettingtiredofmakingthisstupidscript2 == true then
local player = findplayer(string.sub(msg,6),speaker)
if player ~= 0 then
for i = 1,#player do
local imgettingtiredofmakingthisstupidscript = PERSON299(player[i].Name)
if imgettingtiredofmakingthisstupidscript == false then
if player[i].Name ~= eloname then
player[i]:Kick()
end end end end end end [/quote]
[quote] This is a tricky issue, but rest assured we are trying to track it down.
The reason why it’s so tricky is because usually the error message, such as “bad string length”, is not accurate. This is because somehow reading of bitstream got out of order, and we are trying to deserialize the bitstream as a string when it’s actually something else.
We have plans to add more useful debug information. In mean time, if you guys can repro this issue or have any information that you think might be helpful, such as last thing you were doing or stuff happening in the place right before disconnect, please let us know. [/quote]
This occurs at my place every time the :Kick() function is called.[/quote]
How sure are you of this? Have you tried not kicking anyone and the error no longer happen?
[quote] [quote=“RoboYZ” post=41852]This is a tricky issue, but rest assured we are trying to track it down.
The reason why it’s so tricky is because usually the error message, such as “bad string length”, is not accurate. This is because somehow reading of bitstream got out of order, and we are trying to deserialize the bitstream as a string when it’s actually something else.
We have plans to add more useful debug information. In mean time, if you guys can repro this issue or have any information that you think might be helpful, such as last thing you were doing or stuff happening in the place right before disconnect, please let us know. [/quote]
This occurs at my place every time the :Kick() function is called.[/quote]
How sure are you of this? Have you tried not kicking anyone and the error no longer happen?[/quote]
The error does not happen unless someone is kicked or banned using RyanDolan123’s admin or Person299’s admin calling :Kick().
Happened shortly after the :Kick() method was used on a player. As you can see, all non-coreguis were removed ( we use a custom playerlist and chat gui ) and everything pretty much just stops replicating. The server is instantly removed from the server list and we’re able to start another straight away. No “you have lost connection” or “this game has shutdown” message as you can see.
Happened shortly after the :Kick() method was used on a player. As you can see, all non-coreguis were removed ( we use a custom playerlist and chat gui ) and everything pretty much just stops replicating. The server is instantly removed from the server list and we’re able to start another straight away. No “you have lost connection” or “this game has shutdown” message as you can see. [/quote]
Perfect example. I believe it is an issue with the kick() method. Also, question, do you guys use savestring to save data when the kick is called?