Addon Entry

Now supporting the newest garrysmods.org

New : UserScript to add a search button to any garrysmod.org download page Script Page Install It!

Mirrors

There are no mirrors, request one in the comment section below.
File: AntiAFK 2.3
Version: 0
Garrysmod.org URL: http://www.garrysmod.org/downloads/?a=view&id=30277
Description: The way this script works is:
It takes the time you have set in the config (top lines of the .lua file) or if you used aafk_time to set your own in game... and every amount of seconds as defined it checks the players entity angle.. (this is basically where the mouse is pointed) and stores it into a variable for your specific client.
If it finds that you have not changed angles since the last time it checked, and you are not flagged as afk, it will flag you as afk.
If it finds that you have not moved since it last checked and you are already flagged as afk, it will kick you from the server (assuming you have kick enabled)

The default time is 150 seconds.. this allows for around 5-7 minutes of complete afk before being kicked.. depending on how soon after a check you stop moving.


Suggestions for a future version are welcome.. I will try to implement anything that seems worth implementing.


ChangeLog:
v1.0
-Release

v1.1
-Hooks and Timers are client side now, the client checks its own angles instead of the server checking every players angle
-Added in name change support. Whan a player goes afk, their name changes to <AFK>Name and back when they return.
-Added functions to have the client and server side of the script communicate properly with each other.

v1.2
-went partially back to serverside. It was possible to use lua_run_cl to mess up the checks and circumvent the system. Now it is not =)
-Fixed other various bugs.

v1.3
-Fixed issues in 1.2 that were causing certain variables not to load on dedicated servers at runtime.

v2.0
-Major Release
-Added a new variable, aafk_kicknumber will set the server to only kick AFk clients if there are more clients connected to the server than you have the number set to. If there are fewer, it will not kick them.
-Added Names over afk players heads.
-Typing !afk will now flag yourself as afk. Not advised if kick is enabled for you =)
-Chatting as well as view angle will prevent being flagged as afk. Chatting will now bring you out of afk as well.
-Changed: In the notification, if kick is disabled, it will no longer tell the player he/she will be kicked.

v2.1
-Cleaned up some errors caused by the new GMod updates.

v2.2
-Added Access String in the adminimmunity checks. This allows you to give additional groups/users immunity on the fly. See the topic below for how to use.

v2.3
-Now checks keyPresses and keyReleases.


Immunity Access String Usage.
If you are running ULX (this addon REQUIRES ULib) you can do the following to give an user immunity to the kick if aafk_adminimmunity is on.
ulx userallow <username> "aafk_immune"
This will add the access string "aafk_immune" to their user file and will keep them from being kicked
Also you can edit your data/ULib/groups.txt file and add "aafk_immune" to any groups allow list to give everyone in the group immunity from being kicked.
Please keep in mind that all of this requires aafk_adminimmunity console variable to be set to 1 (on)


Console Commands:
aafk_enabled <1/0> - Turns aafk on or off (Default On)
aafk_time <integer> - sets the time (in seconds) on the afk check. How often the script checks angles. (Default 150 seconds.. which is 2.5 minutes)
aafk_adminimmune <1/0> - This sets whether or not admins are immune to being kicked for being afk. (Default Off)
aafk_kickenabled <1/0> - If set to 0 (off) clients will still be afk and their name will change to show that, but they will not be kicked from the server
aafk_kicknumber <int> - Set this to how many players you want to have to be connected before the script starts kicking players who are afk. Setting this to 0 will always kick afk players. This does not override admin immunity and requires aafk_kickenabled to be set to 1, otherwise no one will ever be kicked. =)

All of these defaults can be changed in the top of the aafk.lua file

Image: AntiAFK