* Adminslot: Trim spaces
* Adminslot: Use semicolon everywhere
* Adminslot: Use brackets everywhere
* Adminslot: Hook cvars change and make sure max visible players is set right away
* Adminslot: Rename g_sv_visiblemaxplayers
* Adminslot: Move free slot calculation in its own function
* Adminslot: Use create_cvar and define appropriate bounds
* Adminslot: Use get_playersnum_ex with flag for clarity
* Adminslot: Move all the logic inside setVisibleSlots
Looks like the commit should have been split for clarity.
The initial purpose is to avoid code duplication and regroup checks.
The logic is the same with a little improvement to handle situations where a cvar is changed on-the-fly and sv_visiblemaxplayers needs to be reset.
Ultimately, the logic is the following:
- At player's connection:
-- Do nothing if amx_reservation == 0 and sv_visiblemaxplayers <= 0. If sv_visiblemaxplayers is set, we reset it directly.
-- Check if player needs to be kicked. If not, and amx_hideslots == 0, then do nothing.
-- Otherwise we update sv_visiblemaxplayers
- Others events:
-- Do nothing if either amx_reservation == 0 or amx_hideslots == 0, and if sv_visiblemaxplayers <= 0. If sv_visiblemaxplayers is set, we reset it directly.
-- Otherwise we update sv_visiblemaxplayers
* Adminslot: Rename variables and adjust constantness
* Adminslot: Add a description to the cvars
* Adjust CVAR_HIDESLOTS english sentence
* Add the Deutsch translations
* Add public vars for plugin data and small refactoring get_xvar_id native
* Add new command to display info about the plugin and add url to amxx plugins command
* Add optional args to register_plugin native (url, description)
* Add enum of args for register_plugin native
* Creating a variable inside an if statement (C++17)
* Displaying the URL of the plugin if it is present
* Getting an ID only with more than three arguments
* Creating a variable inside an if statement (C++17)
* Fix typo
* Revert "Creating a variable inside an if statement (C++17)"
This reverts commit 835e0bc6c4.
* Revert "Creating a variable inside an if statement (C++17)"
This reverts commit b2c1e7c775.
* Revert "Displaying the URL of the plugin if it is present"
This reverts commit 9e31230368.
* Binary compatibility for previously compiled plugins
* Displaying the URL of the plugin if it is present
* Quotation marks replaced by square brackets and change arg name to id
* Fix getting url
* The 'atoi' function replaced to 'stoi'
* Add likely/unlikely defines for using built-in function provided by GCC
* Small fixes with auto and inconsistent var name
* Replace stoi to strtol function
* Removed explicit buffer id
* Revert "Add likely/unlikely defines for using built-in function provided by GCC"
This reverts commit 94cee479ed.
* Add url and description params to get_plugin function
* [admincmd.sma] Fix typo in isCommandArgSafe
'
* [admincmd.sma] Update amx_cvar command handler
- Fix exploiting of "mapchangecfgfile" cvar to execute potentially dangerous console commands
- Add newline delimiter check and restrict for ****cfgfile cvars values
* Restrict having ".." character sequence in amx_map command argument
Fixes exploit on Windows servers that allows executing potentially dangerous console commands
* Do not allow admins to change cvars with FCVAR_SPONLY flag when not in singleplayer via amx_cvar
1. Make amx_cvar command obey FCVAR_SPONLY flag.
2. Fix exploiting of amx_nextmap cvar value which is used in nextmap plugin.
* Restrict having ".." character sequence in amx_votemap command arguments
Fixes exploit on Windows servers that allows executing potentially dangerous console commands
* Fix typo
containi -> contain