AntiSerenity - Fixed up for GMod 13.

Hello all. I am here today to present to you a new fixed and improved version of AntiSerenity. I would first of all like to give credit to Python1320 for his work on GXML, which made all of this possible. To Zeh Matt, who made the gm_glsock module, and permitted me to follow redirects when doing a http query. and to the creators of ArbitraryPrecision, and the original creator of AntiSerenity. Without further ado, let’s get on with the presentation.

What is serenity?

Firstly, how was this broken in the first place?

Since the creation of this, now redirects to a users profile, if he has a custom URL. for example, if I were to access the page of a user with a custom URL, I wouldn’t get anything because the current HTTP module does not support redirection. To fix this, I have used the HTTP2 module ( slightly modified ) with the gm_glsocks module ( both by Zeh Matt ). And the automatic IP retriever was broken, but that was a quick fix.

Secondly, what did you add?

I added the use of GXML ( by Python1320 ). This permitted me to make it slightly faster. It also let me add support for VAC. We all know that VAC is “enabled” in GMod, but even if you are vac’ed , you can still play. This module adds an opt-in function that will ban a player if he or she is already vac banned. I do want to add on this subject though, not all vac banned players are cheaters, which is why I made it opt-in.

In other words you used other peoples modules to get credit?

Not at all. I claim credit only for what I did. As for everything else, they original creators are credited for that.


The download links can be found here, along with some basic documentation. I warn you, the code is messy.

I would love to have some feed back, if there are any features you guys think I should add/change. Anything that can be obtained from a steam users profile can be used (example : )

I thought Serenity was long gone and dead?

I’ve given a short explanation on the page where the download link is. I will put it in the OP though.

And to reply to your first statement : I started work on this when a player joined my server under a diffrent steamID. I don’t know whether it is main stream or not, but I think it’s still a precaution we can take.


For Devs, you might want to add an extra arg to CheckPlayer(ply), so they can return information to say… their own function.

I would most probably use this to detect and pass information back to my anti-cheat, which has a centralised Detection parser.

So do you mean I should create some enumerations and return those when a certain argument is true, or just return the XML data?

Returning enumerations would be better than XML data IMHO.

[editline]14th June 2012[/editline]

My Server hangs right after:

NOT GMod 13 server, gm_glsock crashes?

Done. I’ll update op soon


Enums = {

Success = -1,

VacBanned = 1,
NoProfile = 2,
PrivateProfile = 3,
Offline = 4,
NotInGame = 5,
NotInGMod = 6,
NotInServer = 7,

Dupe = 8,
Malformed = 9



These what you needed?
[editline]14th June 2012[/editline]

the gm_glsocks I provided is built for GM13

Forget it, I downloaded the one for GMod12, from Mat’s thread, and it works like a charm.


You broke my automerge :v:

How many times did that player join your server with another steamid?
What if the player had the same name on another steam account?


[lua\includes\modules\http2.lua:76] attempt to call method ‘Destroy’ (a nil value)
[@lua\includes\modules\antiserenity.lua:219] Tried to use a NULL entity!


[lua]Msg("Verifying " … ply:Nick() … "'s SteamID… Failed! (Profile Private)
is MY line 219.

Caused when the player disconnects as they spawn, normally Buffer Overflow, or RSO. (I have a check running on PlayerInitialSpawn)

Two errors for you.

Thank you. I will add an IsValid check at the start of the callback.

For the error in HTTP2 though, I will have to look into a bit further

– Edit

Updated. The errors shouldn’t happen anymore normally. I haven’t had the time to test this though.

I thought serenity didn’t work anymore? And this is rather intrusive, too.

Could you elaborate on that please? I don’t quite get what you mean.

People have to make their profile public if they don’t want to, if they get kicked for something like that they will probably just leave and find another server.

Isn’t that the whole fucking point of having a PUBLIC profile? It is Publicly viewable by anyone. This is not intrusive…

It was a typo and if you had common sense you could notice it. Edited. Also, reread my post.

This library pivots around a steam user’s profile. If a user can’t make his profile public, he could he hiding something? And on this note, it only kicks them, not bans them like the rest of the exceptions. This gives the user a chance to make his or her profile public. If they can’t, it might be because they are using someone else’s profile, and thus someone else’s steam ID. Isn’t that what this library is blocking?

The point I am trying to get through though, is that if a player wants to play multiplayer, he should at least make his information public.

Serenity never existed.

wait so what’s the point in creating an addon to kick people for exploits that were fixed in like September

Then learn to write clear, grammatically correct sentences. If you had common sense you could do this, and then people wont think you have the IQ of 2. Goes both ways dipshit. :v:

(User was banned for this post ("Flaming" - PLing))