Skip to content

Releases: MinoMino/minqlx

v0.4.0

16 Dec 18:22
Compare
Choose a tag to compare

A small release, primarily for the sake of updating it to work with server build 1065. Update your plugins too.

v0.3.1 - Small Hotfix

06 Dec 05:00
Compare
Choose a tag to compare

There was a small bug preventing plugin_manager's !loadall command from working that was fixed.

v0.3.0

04 Dec 17:49
Compare
Choose a tag to compare

NOTE: This release requires the latest plugins. Update your plugins by changing the directory to qlds/minqlx-plugins and doing git pull.

  • Added boolean flags to the abstract database class and the Redis implementation. (by @carmethene)
  • Changed new_game and map event to go off slightly later when changing maps to allow instantiating minqlx.Game without it throwing an exception due to configstring 0 not being set.
  • Added possibility to reference custom workshop items. This can be done by hooking map and doing for instance self.game.steamworks_items += [workshop_id1, workshop_id2]. Note that the server is not aware of the reference, so it can't be used to add maps and such while running, but it can be used to add custom sounds.
  • Added new event userinfo which passes the player and a dictionary containing the changes made to their current userinfo cvars (which can be accessed with player.cvars). You can modify the dictionary and return it in the handler to modify the changes or add your own before passing it on to the engine.
  • Added setters for a lot of player cvars set using userinfo. For instance, it's now possible to do player.handicap = 50 or player.country = "jp". Note that the client still believes it has the older cvars, so any change to a userinfo cvar by the client will try to revert the changes made server-side. To avoid this, hook userinfo and check for those changes. See names plugin for an example.
  • Removed the net_port from player.ip.
  • Fixed a bug where modifying client commands in client_command event could cause the engine to process a gibberish string due to it being deallocated before use. Preemptively did the same fix to other events as well.
  • Made the minqlx map subtitles append instead of replace the map's subtitle to avoid overwriting map credits.
  • Added player.is_alive property with a setter that allows killing and respawning a player.
  • Made it possible to use the special keyword DEFAULT in the qlx_plugins list to load all the default plugins. Useful if you want to load default plugins and some other ones, but don't want to manually add new default ones.
  • Simplified version setting when compiling C module. Will no longer leave common.h dirty if you for instance were to interrupt it mid-compile.
  • Added branch name to versions.
  • Made commands execute before the chat event instead of the other way around. This prevents plugins like irc and log from logging commands as if typed in chat that don't actually show up in-game.
  • Changed minqlx.console_command() to execute immediately instead of the next frame.
  • Added a way to redirect output from minqlx.console_command() to a channel.
    • Example: with minqlx.redirect_print(channel): minqlx.console_command("echo Hello world!")
  • Added player.channel property that is a TellChannel instance for that player.
  • Various smaller changes and bug fixes you can read about in commit messages.

v0.2.0

26 Nov 19:05
Compare
Choose a tag to compare
  • Renamed Player.state to Player.connection_state
  • Added stats attribute to Player containing some player stats in the form of a named tuple.
  • Added state attribute to Player containing information about the state of the player in the form of a named tuple.
  • Added Vector3 struct sequence.
  • Added velocity() and position() methods to Player.
  • Added armor, health, and noclip properties to Player, with setters.
  • Allow passing a custom name to AbstractDummyPlayer's constructor.
  • Added weapons(), weapon(), and ammo() methods to Player.
  • Fixed pyrestart console command to not require a new game before pyminqlx works again.
  • Added player_spawn event and hooked ClientSpawn to make it work. Useful especially for setting weapons and ammo.
  • Added callvote() method to Plugin.
  • Added holdable property to Player, with a setter.
  • Added powerups() method to Player.
  • Added flight() method to Player.
  • Changed behavior of how it sends very long messages to be way more efficient and greatly reduce the chances of overflowing the command buffer and booting a player.
  • Added allow_single_player() function to minqlx module to allow games to continue with less than two players. This can allow a race server to start a game with just one player. See the solorace plugin.

v0.1.2 - Potential Crash Fix

19 Nov 17:07
Compare
Choose a tag to compare

Fixed bug where I wasn't increasing the reference count of None when I should have, potentially causing it to try to deallocate None and crash. It's a pretty rare crash.

v0.1.1 - Critical Bug Fix

17 Nov 23:12
Compare
Choose a tag to compare

Fixed a bug that would cause the server to crash due to long unicode names getting truncated by QLDS, often creating invalid UTF-8 sequences. The invalid UTF-8 would make PyUnicode_FromString() cause a segfault. Errors are now ignored, just like the font rendering in QL seems to do.

This should also fix some UnicodeDecodeError exceptions being thrown occasionally due to something similar happening with server commands or client commands.

v0.1.0

12 Nov 21:43
Compare
Choose a tag to compare
  • Fixed a bug that would throw exceptions when people would type stuff prefixed with spaces.
  • Removed reliance on configstrings for player info stuff to fix #13.
  • Massive update to game structures.
  • Small improvement to the hooking library.
  • New event console_print added, and logging of console output to the log file.
  • Debug build no longer prints debug level logging to stdout/stderr.
  • Fixed a bug where music could be played as a sound and vice versa. It would cause a mass disconnect.
  • Fixed a rare bug caused by multiple consecutive delimiters in weird userinfos.
  • Allow editing of client and server commands using their respective events, just like set_configstring works.
  • Fixed a bug where votes with vote 2 would trigger the vote event as if the player voted yes, when it really should be no.
  • Small optimization to minqlx.player_info() and minqlx.Plugin.player().
  • Fixed a bug where kicks were not triggering player_disconnect due to using the original function instead of our own hook.
  • Changed logging behavior yet again. It now uses logging.handlers.RotatingFileHandler which will automatically make sure log files don't surpass a certain size and instead back them up and start on a fresh file when the threshold is hit.
    • qlx_logs and qlx_logsSize cvars added to configure above logging behavior.
  • Allow player_disconnect to get the player in question even if connection state is set to CS_FREE.
  • Fixed a bug where getting player info in player_connect would allow any CS_FREE client to be fetched instead of just the client in question.
  • minqlx.send_server_command() and - minqlx.client_command() now also trigger their respective events
  • Fixed a bug where the player voting wasn't being passed with the vote event.

v0.0.4a - Mostly just a hotfix

07 Nov 02:59
Compare
Choose a tag to compare

v0.0.4 introduced a nasty crash when a player would disconnect while in the loading screen caused by a stupid way of getting the client number. I've preemptively also fixed it in a couple of other places.

I also sneaked in a small change that adds a new event new_game that goes off for map changes, game starts, and for aborts. This can be used to set configstring 3, since it's reset in all these cases, meaning map alone won't do it.

v0.0.4

06 Nov 19:33
Compare
Choose a tag to compare

NOTE: This release requires the latest plugins (v0.0.3).

  • Added new rcon command qlx that executes a command as if the owner did it. This makes it possible to interact with the Python part of minqlx over rcon.
  • Cvars to override permissions were prefixed with qlx_, and client command overriding cvar was renamed. They are not qlx_perm_<command> and qlx_ccmd_perm_<command>.
  • team_switch event changed behavior. It now fires off after an actual team switch and not just whenever someone tries to change teams. Cancelling the event puts the player back to the old team. Old behavior moved to team_switch_attempt.
  • The last minqlx.log is renamed to minqlx.log.bak to make sure it doesn't get wiped if you run the server using supervisor or something similar.
  • Fixed slap and slay commands having the whole announcement string colored if someone's name was colored.
  • Channels based on ChatChannel can pass delimiter and limit keywords to prevent messed up output when replying with long messages with newlines. (e.g. !id and !mappool)
  • Attempt addressing #11 by changing to SV_DropClient instead of a ClientDisconnect hook for the player_disconnect event. A positive side-effect of this is that we now also get the reason for a disconnect, so the event was changed to pass that argument too.
  • pyminqlx initialization happens a bit earlier in the launch process.
  • Added methods to stop sounds and music for all players.
  • Added names plugin to the default plugin list.

v0.0.3

03 Nov 17:37
Compare
Choose a tag to compare

A small release to fix some bugs.

  • Commands that execute two or more console commands in the same frame fixed (e.g. !switch).
  • Fixed bug where changes to existing cvars using minqlx.set_cvar() were not working (e.g !teamsize).
  • Made the player's name be fetched from the client_t structure's "name" field instead of userinfo or configstring to try to get rid of a rare bug where the name for some reason disappears.
  • Cleaned C code a bit from old unused code.
  • Fixed the run_server scripts not being executable by default.