About Limit FPS
About Limit FPS
LimitFPS is a plugin with almost no performance impact meant for administration (and maybe trolling). It has 2 very powerful features
- You can limit the FPS of other players
- You can see the FPS and RAM usage of other players
Demo
Requirement
LimitFPS uses Harmony so you need to disable the Oxide sandbox [see how to do it]
Permissions
There are 2 oxide permissions that LimitFPS uses
- limitfps.limit.use - Allows the use of /limitfps command
- limitfps.fps.use - Allows the use of /playerfps command
Add the permissions with the console command: oxide.grant <group|user> <name|id> <permission>
Commands
There are 2 commands that LimitFPS has
- /limitfps <playername or steamid> <target fps> - Limit the FPS of a player, set target fps to 0 to remove the limit
- /playerfps <playername or steamid> - See the player's FPS and RAM usage
All of these 2 commands can be used from the server console (or RCON) and they work exactly the same just without the forward slash. If you are an admin in the server you can use them from the Rust console too.
Config
- FPS Query interval - How often will the plugin check the player's FPS in order to adjust it
- PD Controller P value - How fast to jump to the target FPS, if this is too high it can overshoot
- PD Controller D value - How much to respect the error difference from the FPS measurement, if higher it can overshoot the target FPS
- Non linear control - If set to true it will be more responsive (reaching target FPS faster) at low FPS values (30 and below)
- FPS Limit dampening - If set to true it will stop adjusting the player's FPS once it reaches the target, if this is false, when the player presses ESCAPE or ALT+TAB's and then come back their FPS will be way lower/higher than the target
- FPS Limit dampening range - When the FPS is within this value to the target FPS it will stop adjusting the FPS
I recommend leaving everything to default except maybe FPS Query interval, if you want to get the user's FPS faster/slower.
For developers
LimitFPS exposes everything you need to control other player's performance with hooks & API calls
I strongly recommend if you want to use the API or the Hooks see the demo plugin that uses all of them, its extremely detailed and everything is within 1 file, you can find it here:
Hooks:
object OnFPSQueryStart(BasePlayer command_initiatior, BasePlayer target, int request_id) { return null; // allow the query } void OnFPSQueryTimeout(BasePlayer command_initiatior, BasePlayer target, int request_id) { } void OnFPSQueryFinished(BasePlayer command_initiatior, BasePlayer target, ClientPerformanceReport report) { } object OnLimitFPSStart(BasePlayer command_initiatior, BasePlayer target, float targetFps) { return null; // allow the limitting } object OnLimitFPSTick(BasePlayer command_initiatior, BasePlayer target, float targetFps, ClientPerformanceReport report) { return null; // allow the tick }
API:
Interface.Oxide.CallHook("API_PlayerFPSCommand", ulong_steamid); Interface.Oxide.CallHook("API_LimitFPSCommand", ulong_steamid, float_targetFps);
Contact
If you have any suggestions, want to report a bug or need help, you can contact me on Discord: turner#7777