**Changelog:** **v0.1 WIP** - WIP1: Updated database name - WIP1.1: Downgraded SM version for compile on git - WIP2: Fixed fail to start the vote first time - WIP2: Changed lobby redirect command to client command - WIP3: Added auto redirect when some of the candidate servers meet l_minplayers - WIP4: Reworked automated joining to populated servers - WIP5: Added command l_redirect 'Redirect all the players manually one time. Use IP:PORT as argument.' - WIP5: Added ConVar l_backupserver 'IP of the server to get redirected into, in case of failing to connect to DB, or if no servers are found (IP:PORT)' - WIP5: Added ConVar l_forceredirect 'If this is not Zero, players will be immediately redirected to this server and will keep redirecting (IP:PORT)' - WIP5: Added failsafe measures in case of connecting to DB fail, or if no servers are found while the vote wants to start - WIP6: Bugfix of l_forceredirect - WIP7: Quickadd on not redirecting players to a full server. Still needs work - WIP8: Adjust query to not include full servers for the vote - WIP9: Small adjustment to redirecting the current lobby players, where it needed one more slot too much than needed to redirect them - WIP10: Added faster refreshing with socket extension, which is now a requirement for this plugin to work - WIP10: Added l_refreshservers ConVar to adjust how often will socket refresh - WIP10: A lot of small tweaks - WIP10: Added preferred server. If server was chosen by a vote, it will become preferred until l_preferredservertimer expires or until there is less than l_preferredservermp players on chosen server - WIP11: Readded Vanilla server in case there are players on it, however it is excluded from the server vote - WIP12: Fixed Vanilla server not getting fast refreshed - WIP13: Bugfix for Vanilla fast refresh - WIP14: Added l_minplayersext for how many players needed on external server / active server - WIP15: Remove showing current players from voting server list - WIP16: Show maps in server vote choices - WIP17: Apply Vanilla server IP fix only on backup lobby server - WIP17: Added more messages showing in server console when l_debug is 1 - WIP18: Fix lobby trying to redirect sourceTV - WIP19: Fixed fast refresh for Europires as it is a local server on main lobby - WIP20: Revert Europires fast refresh for main lobby back to public IP - WIP21: Changed Europires fast refresh for main lobby to a different local IP - WIP22: Added some debug messages related to Fast refresh local ip - WIP23: Fixed cleaning of sockets - WIP23: Fixed sockets not timing out, timeout takes half of the l_refreshservers value - WIP24: Attempt to fix an issue with local server fix sometimes not applying on main lobby - WIP25: Bugfix to prevent cleaning up invalid socket handles - WIP26: Fixed lobby trying to query if db is down resulting in error - WIP26: Improved reconnecting to db on fail - WIP27: Sort servers without players above servers with seeding players - WIP28: Lobby plugin now has a new dependency, cURL: https://forums.alliedmods.net/showthread.php?t=152216 - WIP28: Added showing XP support of servers when voting - WIP29: Fix for WIP27 - WIP30: Vote menu is now paginated with 6 items maximum per page - WIP31: Add fast refreshing for the lobby itself - WIP32: Fixed numerous of end of the map issues - WIP32: Fixed server preferring feature - WIP32: Reduced the number of times it checks for XP (once per 20 times of l_refreshtime) - WIP32: Many small fixes - WIP33: Fix for XP detection - WIP33: Fixed some SQL UPDATE queries trying to update DB when it has no new data to update - WIP34: Redirect connecting players after they are already connected to Lobby, instead of while they are connecting - WIP35: Add fast refreshing for the backup lobby itself - WIP36: Fix XP detection not creating new entries in the DB (related to WIP33) **v0.1** - Switch versioning from WIP - Added HUD messages **v0.1.1** - Small bugfix **v0.2** - Extended default vote duration from 15 to 30 seconds - Extended preferred server duration from 5 to 10 minutes (to 600 seconds) - Adjusted default minplayers needed for preferred server from 1 to 4 - Added sound before the vote starts - Reduce number of characters in vote menu by only showing max players number - Added Vote Status with HUD message - Few bugfixes **v0.3** - Built on SourceMod 1.11 (Server must have 1.10.0 or higher) - Updated forked Socket extension (for SM 1.10.0 compatibility) https://github.com/JoinedSenses/sm-ext-socket - Updated cURL include files for SM 1.10.0 https://github.com/JoinedSenses/SourceMod-IncludeLibrary/ - Some small bugfixes **v0.3.1** - Added chat command !discord to join Discord over MOTD - Added chat command !charts to show steamcharts over MOTD - Added message about joining discord upon player join - Added message about joining discord every 5 minutes - Added message about steamcharts every 7 minutes **v0.4** - Adjusted Discord announce message slightly - Added option to disable/enable bots for current map when half of l_minplayers type !botsoff / !botson - There must be at least half of l_minplayers in a team to be able to vote to disable bots - Bots will be reenabled if players in a team is less than half of l_minplayers - Added return Plugin_Handled to commands **v0.4.1** - Added SteamWorks, to be able to detect server public ip - Some changes for upcoming change of hosting - Small bugfix **v0.4.2** - Switch steamcharts link to steamdb, as steamcharts seems unavailable for empires right now **v0.4.3** - Small bugfix to botsoff/on queue **v0.5** - Update License - Add cvar l_botsenabled to enable/disable bots and also bots on/off vote management - Add appid/game detection to allow detecting UE4 server, which discord bot can use to separate the servers in !srv - Also excluded UE4 servers in srcPires Lobby voting - Add fast refreshing for maps and bots - Added Hint box for vote status instead of HUD message, as HUD message was ugly - Added sound when server was selected by vote - Rework some SQL to work with multiple row results in single query, instead of SQL query per each server - This improves performance and makes SQL data less prone to errors - Servers are now sorted randomly in the vote menu - Many small bugfixes - Many small improvements **v0.5.1** - Fixed lobby going into backup redirect on vote start **v0.5.2** - Lobby will no longer redirect to servers with different version than Lobby server **v0.6.0** - Added handling of Source Query A2S_INFO challenge - Reworked querying of IP addresses from masterserver into Lobby plugin, instead of external tool, this also makes it more accurate - Slightly adjusted discord and charts chat message frequency - Some small fixes and improvements - Adjusted some default values for cvars - Slightly improved re-checking of servers which Lobby lost connection to **v0.6.1** - Fix escape character issue with SQL update **v0.6.2** - Add updating of servertype, os, password and vac, as that was forgotten to be added after reworking the way of checking servers **v0.6.3** - Adjust MasterServer IP **v0.6.4** - Switch charts command back to steamcharts, as steamDB does not work with ingame browser **v0.6.5** - Adjust the timeout for master server query, as master server is having some issues right now and being slow to respond **v0.7** - Added voice sounds to certain Lobby events **v0.7.1** - Fix lobby removing future records in db after db migration to faster host - Update steamworks and include files **v0.8** - Adjusted some logging - Added Steam Web API method for querying servers (new cvars l_steamapikey and l_querymethod) - Fix servers staying passworded forever in lobby db after being passworded once (SQL query was ignoring passworded servers) **v0.9** - Refactored Lobby into modular SourceMod 1.12 code - Moved Steam Web API discovery and XP checks to SteamWorks HTTP - Removed hard dependency on the cURL extension - Hardened reload lifecycle and delayed DB-dependent startup until the database is ready - Added structured daily logging with console and file output controls - Expanded server refresh coverage, added paginated vote server caps, and made vote start wait for candidate data - Added solo simulation test mode and admin/server test commands for one-client vote and redirect testing - Added close-result runoff votes with fresh finalist A2S revalidation and dedicated runoff cvars - Reworked the in-vote status display with smarter server labels, sorted standings, and clearer vote feedback - Fixed redirect timing, tied-vote handling, force-redirect parsing, and dynamic SQL escaping edge cases - Improved Lobby sound playback with reliable local UI cues and better atmospheric thunder positioning - Removed old environment-specific rewrites, switched to self-address exclusion, and made Discord/Charts links and announce timers configurable - Added live redirect-target revalidation with hold-and-retry handling for flaky vote, preferred, populated, and forced redirects - Reworked README.md into a fuller operator-focused Markdown guide - Clarified Lobby licensing and bundled third-party license texts with the package