Skip to content

Releases: MrDave1999/Capture-The-Flag

v9.0.0 Release Candidate 1 (RC1)

20 Oct 16:49
01bf3ad
Compare
Choose a tag to compare
Pre-release

What's Changed

  • test: Create a single persistence test project that includes testing against repositories by @MrDave1999 in #166
  • test: Add integration tests for repositories using MariaDB by @MrDave1999 in #167
  • test: Add integration tests for repositories using SQLite by @MrDave1999 in #168
  • test: Organize code by use cases in persistence project by @MrDave1999 in #169
  • ci: Import database once MariaDB service is ready by @MrDave1999 in #170
  • refactor: Remove 'PlayerInfo' type parameter in ShowSignupDialog by @MrDave1999 in #171
  • feat: Add kick system after 4 incorrect password attempts by @MrDave1999 in #172
  • fix: Year 2038 problem by @MrDave1999 in #174
  • feat: Allow players to view the top players via commands by @MrDave1999 in #175
  • ci: Use 'setup-mariadb' action instead of docker container by @MrDave1999 in #176
  • refactor: Add 'STRICT' keyword to ensure strict typing rules by @MrDave1999 in #177
  • ci: Implement health check for MariaDB in docker container by @MrDave1999 in #178
  • db: Add CHECK constraints on 'players' to ensure data consistency by @MrDave1999 in #179
  • fix: Enable REGEXP function to fix 'unknown function: REGEXP()' by @MrDave1999 in #180
  • feat: Allow players to become VIP when reaching Legendary rank by @MrDave1999 in #181
  • db: Allow the 'skin_id' column to accept the value '-1' by @MrDave1999 in #182
  • fix!: Start at level 1 (noob rank) instead of 0 by @MrDave1999 in #183
  • feat: Allow admins to set total kills to other players by @MrDave1999 in #184
  • refactor: Update variable and macro names to improve code readability by @MrDave1999 in #185

Full Changelog: v9.0.0-preview.5...v9.0.0-rc.1

v9.0.0-preview.5

13 Oct 13:00
ef018aa
Compare
Choose a tag to compare
v9.0.0-preview.5 Pre-release
Pre-release

What's Changed

Full Changelog: v9.0.0-preview.4...v9.0.0-preview.5

v9.0.0-preview.4

10 Oct 21:07
d401015
Compare
Choose a tag to compare
v9.0.0-preview.4 Pre-release
Pre-release

What's Changed

  • feat: Add welcome message when player connects to the server by @MrDave1999 in #157
  • refactor: Create the 'WelcomeSystem' class to welcome players by @MrDave1999 in #158
  • feat!: Implement team balancer based on players' scores by @MrDave1999 in #159
  • feat: Make the color visible on the radar for the player who captures the flag by @MrDave1999 in #160

Full Changelog: v9.0.0-preview.3...v9.0.0-preview.4

v9.0.0-preview.3

09 Oct 19:58
0a71485
Compare
Choose a tag to compare
v9.0.0-preview.3 Pre-release
Pre-release

What's Changed

Full Changelog: v9.0.0-preview.2...v9.0.0-preview.3

v9.0.0-preview.2

03 Oct 18:08
8196899
Compare
Choose a tag to compare
v9.0.0-preview.2 Pre-release
Pre-release

What's Changed

  • refactor!: Use 'Exterior Marker' terminology instead of 'Pickup Info' by @MrDave1999 in #109
  • feat: Allow players to view statistics of both teams (Alpha and Beta) by @MrDave1999 in #110
  • feat: Allow players to change teams by @MrDave1999 in #111
  • feat: Allow to view the members of both teams (Alpha and Beta) by @MrDave1999 in #112
  • feat: Implement chat system by @MrDave1999 in #113
  • feat: Implement command locking mechanism for player inputs by @MrDave1999 in #114
  • feat: Allow players to change skins by @MrDave1999 in #115
  • refactor: Rename 'SkinSystem' class to 'ChangeSkinSystem' by @MrDave1999 in #116
  • refactor: Ammo balancing and item adjustments by @MrDave1999 in #117
  • feat: Set the player's score by @MrDave1999 in #118
  • feat: Include 'Score' column in the scoreboard by @MrDave1999 in #119
  • feat: Show current team and score in the stats by @MrDave1999 in #120
  • refactor!: Add 'OnPlayerDeath' method to 'PlayerStatsSystem' by @MrDave1999 in #121
  • feat: Allow players to view others' stats by @MrDave1999 in #122
  • fix: An exception is thrown when executing a command with the argument [playerId] by @MrDave1999 in #124
  • fix: Avoid throwing an exception when an unauthenticated player disconnects by @MrDave1999 in #125

Full Changelog: v9.0.0-preview.1...v9.0.0-preview.2

v9.0.0-preview.1

22 Sep 18:20
3268b4d
Compare
Choose a tag to compare
v9.0.0-preview.1 Pre-release
Pre-release

What's Changed

  • Refactor (globals namespaces and file scoped namespaces) by @Ts-Pytham in #11
  • restruct: Create new project structure by @MrDave1999 in #12
  • cleanup: Remove Domain Project by @MrDave1999 in #13
  • Implement the Result pattern by @MrDave1999 in #14
  • Create resource file to save messages by @MrDave1999 in #15
  • feat: Create the rank module by @MrDave1999 in #16
  • ci: Create workflow by @MrDave1999 in #17
  • feat: Create the weapon module by @MrDave1999 in #18
  • feat: Create the account module by @MrDave1999 in #19
  • feat: Get rank by required kills by @MrDave1999 in #20
  • feat: Verify if a player has a lower role than X by @MrDave1999 in #21
  • feat: Create the flag module by @MrDave1999 in #22
  • refactor: Use ShowAsync instead of Show by @MrDave1999 in #23
  • test: Use FakeCarrier in the tests by @MrDave1999 in #24
  • feat: Create the Teams module by @MrDave1999 in #25
  • test: Add missing tests to PlayerStatsPerRound type by @MrDave1999 in #26
  • feat: Allow to set the team from the PlayerInfo type by @MrDave1999 in #27
  • refactor: Convert types to public from the application layer by @MrDave1999 in #28
  • feat: Check if the player has captured the opposing team's flag by @MrDave1999 in #29
  • feat: Check if the player has not been assigned to a team by @MrDave1999 in #30
  • BREAKING CHANGE: Remove AccountStatus type by @MrDave1999 in #31
  • BREAKING CHANGE: Rename the property that gets the number of elements in a collection by @MrDave1999 in #32
  • test: Use parameterized tests on types such as RankCollection and GtaWeaponsTests by @MrDave1999 in #33
  • feat: Create the Maps module by @MrDave1999 in #34
  • feat: Set the flag location of both teams (Alpha and Beta) by @MrDave1999 in #35
  • feat: Create IPlayerRepository interface by @MrDave1999 in #36
  • feat: Create a project called Persistence.InMemory by @MrDave1999 in #37
  • feat: Choose database provider from a configuration file by @MrDave1999 in #38
  • feat: Add service to encrypt passwords with bcrypt by @MrDave1999 in #39
  • feat: Add support for streamer by @MrDave1999 in #40
  • feat: Inject IPasswordHasher to encrypt passwords from FakePlayerRepository by @MrDave1999 in #41
  • refactor: Rename property to PasswordHash in FakePlayer class by @MrDave1999 in #42
  • test: Create unit tests for the SetValue method by @MrDave1999 in #43
  • feat: Add login and signup system by @MrDave1999 in #44
  • fix: Remove private field called _connectedPlayer from AccountSystem by @MrDave1999 in #45
  • feat: Validate whether the player can move up in rank when killing a player by @MrDave1999 in #46
  • feat: Add team sounds via OpenDrive to generate mp3 links by @MrDave1999 in #47
  • feat: Execute the native function gettime from C# code by @MrDave1999 in #48
  • feat: Add a command to show player statistics by @MrDave1999 in #49
  • feat: Allow the player to change their name by @MrDave1999 in #50
  • feat: Add support for auto-increment IDs in InMemoryDb provider by @MrDave1999 in #51
  • feat: Allow the player to change their password by @MrDave1999 in #52
  • BREAKING CHANGE: Remove 'EntityId' property from 'PlayerInfo' class by @MrDave1999 in #53
  • feat: Add combos system by @MrDave1999 in #54
  • refactor: Use GetInfo method instead of GetComponent by @MrDave1999 in #55
  • fix!: Fix misspelling of SatchelChargesAmour and MolotovAmour by @MrDave1999 in #56
  • refactor: Initialize dialog object in constructor to reduce memory allocations by @MrDave1999 in #57
  • BREAKING CHANGE: Use ICombo interface instead of IBenefit by @MrDave1999 in #58
  • feat!: Add new combos that improve the player's health and armour by @MrDave1999 in #60
  • fix: Set new ammo to FlameThrower by @MrDave1999 in #61
  • refactor: Improve test names by @MrDave1999 in #62
  • feat: Implement class for upgrading player's rank by @MrDave1999 in #63
  • feat: Implement killing spree system by @MrDave1999 in #64
  • feat!: Update player's rank from the accounts module by @MrDave1999 in #65
  • feat: Implement a service to create pickups for each team (Alpha and Beta) by @MrDave1999 in #66
  • feat: Implement a service to create icons for each team (Alpha and Beta) by @MrDave1999 in #67
  • feat: Enable team selection in class selection screen by @MrDave1999 in #68
  • feat: Implement player spawn system by @MrDave1999 in #69
  • BREAKING CHANGE: Rename class to PlayerDeathSystem by @MrDave1999 in #70
  • fix: Add/remove players when spawned or disconnected by @MrDave1999 in #71
  • fix: Verify if the entered password is null by @MrDave1999 in #72
  • fix: Prevent the player from returning to class selection after death by @MrDave1999 in #73
  • BREAKING CHANGE: Rename method to EnableClassSelection by @MrDave1999 in #74
  • BREAKING CHANGE: Rename method to DisableClassSelection by @MrDave1999 in #75
  • test: Add tests for flag counters by @MrDave1999 in #76
  • Update team icons to Colored Square/Triangle by @MrDave1999 in #77
  • feat: Load SA-MP server info from configuration file by @MrDave1999 in #78
  • feat: Add textdraws to class selection screen by @MrDave1999 in #79
  • feat: Create class selection module by @MrDave1999 in #80
  • fix: Fix bug with outdated map information due to singleton registration by @MrDave1999 in #81
  • feat: Update player's last connection when disconnected by @MrDave1999 in #82
  • feat: Implement headshot system by @MrDave1999 in #83
  • feat: Implement team text draw renderer by @MrDave1999 in #84
  • feat: Implement map text draw renderer by @MrDave1999 in #85
  • BREAKING CHANGE: Add “Renderer” suffix to follow project convention by @MrDave1999 in #86
  • restruct: Move 'ClassSelection' submodule to 'Teams' for better organization by @MrDave1999 in #87
  • refactor: Create 'ServiceCollectionExtensions' for Players and Maps modules by @MrDave1999 in #88
  • BREAKING CHANGE: Minimize GameModeInit class dependencies by @MrDave1999 in #89
  • feat: Implement a map rotation system by @MrDave1999 in #90
    ...
Read more

v8.0.1

12 Apr 21:48
4e48c6b
Compare
Choose a tag to compare
  • Fixed the problem with the language not loading on the SA-MP server. (#9, #10)

v8.0.0

11 Apr 22:37
e762687
Compare
Choose a tag to compare
  • Fixed the problem of some accents not appearing in the game. (#7, #8)
  • Added support for .NET 6
  • Added a pawn.json file for sampctl (with this tool you can download the samp server and plugins).
  • Added a Dockerfile and docker-compose.yml to deploy with Docker.
  • Added two scripts (for both Windows and Linux) to build all filterscripts with sampctl. (#6)
  • This version makes use of .env files for game-mode configuration.
  • Added a new map: fy_iceworld2.
  • Added a time limit in seconds that the flag will remain on the ground after being released.

v7.19.6-RC1

17 Jul 02:42
Compare
Choose a tag to compare

Main features:

  • The /changemap command was modified to show in color which is the current map or the next map. Also added a confirmation dialog so that the player can choose if he wants to force the map at that moment or not.

    An optional parameter was also added to the command so that the player can select maps by a value. For example, if the player types /changemap fy, he will be shown maps starting with the word fy.

  • A /nextmap command has been added to know which is the next map on the server.

  • New maps have been added:

    • cs_assault
    • TheWild
    • GateToHell
    • TheBunker
    • cs_deagle5
    • cs_rockwar
    • de_aztec
    • mp_jetdoor
    • Simpson
    • ZM_Italy
    • zone_paintball
    • mp_island
  • Two new administrative commands have been added for level 1: /setallweather and /setalltime.

  • The MAX_MAPS constant was removed from the config.ini file, the reason is because it is tedious to manually add the value, so now it is obtained automatically.

  • Added a default value to the variables: Interior, Weather and WorldTime. This configuration can be done in the config.ini file.

Fixed Bugs:

  • When the map finishes loading and if a player is paused, his color will remain blue or red depending on the team he is on. So in this version this has been changed, his color will be changed to white (the color is not visible on the radar map).
  • The map de_dust2_x1 has been modified because it left an open path through which the player could leave the map and this should not happen because the map should be completely closed.

v7.13.4-RC1

24 Apr 03:16
6bb9582
Compare
Choose a tag to compare

Fixed Bugs

  • In the previous version, the connection to the database was left open until the application finished its execution. According to the official MySQL documentation, the connection can remain inactive for up to 8 hours, after that time, the connection is automatically closed. This caused that the SA-MP server can no longer perform any operation to the database, since the connection it had created was already "expired".
    The solution was simple, we created a global instance of type MySqlConnection and every time we need to perform an operation on the database, we open and close the connection.
    Although opening and closing the connection is an expensive operation, Connector/.NET uses internally pool connections, so we would be reusing the same connection.

  • A second error encountered was the following:
    Imagine that the remaining time of the game is 1 second but just in that moment, a player could die, so the player could appear in the new loaded map and play as if nothing.
    The solution was simple, if this scenario happens, the player will be automatically redirected to the class selection.