Stable1.5.0
Features:
- Migration tool for importing configurations from gProtect (gmt_migrate_gprotect console command)
- bLogs support fully functional
- 1-tick constraint unfreeze detection with configurable weights per constraint type
- Auto-cancel config options for Duplicator, AdvDupe2, and Stacker if consecutive entity spawns fail
- Config option to suppress default sandbox "model creation blocked" notification popups
- Maximum entity density check per area (MaxEntsInArea) to prevent clustered entity lag
- Multiple UI windows can now be open and resized at the same time
- Visual divider lines in some config menus to separate related settings (to be fine tuned)
Changes:
- Reworked 1-tick unfreeze detection using spatial clustering and volumetric bounding box density
- Added total mesh convex counts to 1-tick unfreeze notifications and logs
- Optimized GetObstructingEnts performance
- Switched GetFriends calls to standard CPPIGetFriends
- Duplicator override now respects the ShouldOverrideDuplicator config setting
- Internal database reference renamed to GMT._db to prevent global namespace collisions
- Adjusted default configuration values for collision and unfreeze detection
Fixes:
- Netban lifting prematurely whenever a player sent any GMT network string
- False positive SQL injection detections caused by Lua hexadecimal memory pointers
- SQL injection netstring whitelist check not evaluating correctly
- Duplicator progress bar visual inaccuracies and missing percentage clamping
- Duplicator pasted entities not being registered to player cleanup
- Duplicated advballsocket constraint limit check failing due to casing typo
- Default Half-Life 2 scripted entities not being listed in SENTs config options
- EntsCanDamage permission check incorrectly checking non-SENT physics props and ragdolls
- Ghosted entity counter being off by 1 during obstruction checks
- Removing entries in dynamic table config items not saving properly
- Physgun obstructions not notifying players when entities were ghosted
- Window resizing bug causing strange behavior when resizing frames
- Invalid entity ghost check referencing the wrong entity in player collision handling
- Rate limit action translation strings showing incorrect actions for kicks and bans
- Precision tool freeze/unfreeze oddities when moving entities near map boundaries
- Accidental global variable in players menu
- Potential client error in string formatting utility
Files affected:
- lua/autorun/sh_gmtoolbox_autorun.lua
- lua/gmodadminsuite/modules/logging/modules/gmtoolbox.lua
- lua/gmtoolbox/languages/de/sh_translations.lua
- lua/gmtoolbox/languages/de/sv_translations.lua
- lua/gmtoolbox/languages/en/sh_translations.lua
- lua/gmtoolbox/languages/en/sv_translations.lua
- lua/gmtoolbox/languages/es/sh_translations.lua
- lua/gmtoolbox/languages/es/sv_translations.lua
- lua/gmtoolbox/languages/fr/sh_translations.lua
- lua/gmtoolbox/languages/fr/sv_translations.lua
- lua/gmtoolbox/languages/pl/sh_translations.lua
- lua/gmtoolbox/languages/pl/sv_translations.lua
- lua/gmtoolbox/languages/pt-br/sh_translations.lua
- lua/gmtoolbox/languages/pt-br/sv_translations.lua
- lua/gmtoolbox/languages/ru/sh_translations.lua
- lua/gmtoolbox/languages/ru/sv_translations.lua
- lua/gmtoolbox/languages/tr/sh_translations.lua
- lua/gmtoolbox/languages/tr/sv_translations.lua
- lua/gmtoolbox/languages/zh/sh_translations.lua
- lua/gmtoolbox/languages/zh/sv_translations.lua
- lua/gmtoolbox/modules/advdupe2/sv_override.lua
- lua/gmtoolbox/modules/cfg/sh_schema.lua
- lua/gmtoolbox/modules/cfg/sv_cfghandler.lua
- lua/gmtoolbox/modules/cfg/sv_gprotect_migration.lua
- lua/gmtoolbox/modules/collisions/sv_collisionplayers.lua
- lua/gmtoolbox/modules/collisions/sv_detection.lua
- lua/gmtoolbox/modules/collisions/sv_maxobstructs.lua
- lua/gmtoolbox/modules/duplicator/cl_override.lua
- lua/gmtoolbox/modules/duplicator/sv_gmtadvdupe2.lua
- lua/gmtoolbox/modules/duplicator/sv_override.lua
- lua/gmtoolbox/modules/exploits/sv_exploitprotection.lua
- lua/gmtoolbox/modules/exploits/sv_ipidentities.lua
- lua/gmtoolbox/modules/exploits/sv_sqlinjections.lua
- lua/gmtoolbox/modules/net/sv_netratelimit.lua
- lua/gmtoolbox/modules/perms/sv_qmenuspawns.lua
- lua/gmtoolbox/modules/physgun/sv_physgunghosting.lua
- lua/gmtoolbox/modules/physgun/sv_reload.lua
- lua/gmtoolbox/modules/stacker/sv_override.lua
- lua/gmtoolbox/modules/vgui/elements/config_divider.lua
- lua/gmtoolbox/modules/vgui/elements/config_inputs/dynconfigitem.lua
- lua/gmtoolbox/modules/vgui/elements/header.lua
- lua/gmtoolbox/modules/vgui/elements/page.lua
- lua/gmtoolbox/modules/vgui/elements/subcategory.lua
- lua/gmtoolbox/modules/vgui/elements/table_initor.lua
- lua/gmtoolbox/modules/vgui/elements/window.lua
- lua/gmtoolbox/modules/vgui/pages/configpages.lua
- lua/gmtoolbox/modules/vgui/pages/filebrowser.lua
- lua/gmtoolbox/modules/vgui/pages/players.lua
- lua/gmtoolbox/modules/vgui/sh_bootstrapper.lua
- lua/gmtoolbox/modules/vgui/sv_networking.lua
- lua/gmtoolbox/sv_config.lua
- lua/gmtoolbox/utils/sh_misc.lua
- lua/gmtoolbox/utils/sh_plymeta.lua
- lua/gmtoolbox/utils/sv_entmeta.lua
- lua/gmtoolbox/utils/sv_plymeta.lua
- lua/gmtoolbox/utils/sv_sqloo.lua