Releases: MrDave1999/Capture-The-Flag
Releases · MrDave1999/Capture-The-Flag
v9.0.0 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
...
v9.0.0 Release Candidate 4 (RC4)
What's Changed
- feat: Implement global exception handler to prevent server crashes by @MrDave1999 in #217
- chore: Allow to set docker container time zone from .env file by @MrDave1999 in #218
- chore: Add workflow to upload artifacts when a release is published by @MrDave1999 in #219
- chore: Remove platform-specific conditions from Copy task by @MrDave1999 in #220
Full Changelog: v9.0.0-rc.3...v9.0.0-rc.4
v9.0.0 Release Candidate 3 (RC3)
What's Changed
- chore: Update SampSharp version by @MrDave1999 in #204
- chore: Add support for .NET 6.0 to run game mode on Linux by @MrDave1999 in #205
- build: Create Docker image using .NET 6.0 SDK by @MrDave1999 in #207
- chore: Add volume to store the gamemode.db file in docker container by @MrDave1999 in #208
- refactor: Throw .env file not found exception only in DEBUG mode by @MrDave1999 in #209
- deploy: Add workflow to perform the deployment by @MrDave1999 in #210
- feat: Allow the server owner to give themselves admin by @MrDave1999 in #211
- chore: Specify container memory limit from .env file by @MrDave1999 in #212
- feat: Prevent player from logging in as RCON, even with correct password by @MrDave1999 in #213
- refactor: Use primary constructors to simplify code by @MrDave1999 in #215
- chore: Redirect the console output to the server by @MrDave1999 in #216
Full Changelog: v9.0.0-rc.2...v9.0.0-rc.3
v9.0.0 Release Candidate 2 (RC2)
What's Changed
- chore: Remove all sampctl-related files by @MrDave1999 in #186
- build: Update Dockerfile by @MrDave1999 in #187
- cleanup: Remove unused bash script wait-for-it by @MrDave1999 in #188
- refactor: Load top players system settings from .env file by @MrDave1999 in #189
- refactor: Add extension method for application settings management by @MrDave1999 in #190
- refactor: Update maximum value of top players by @MrDave1999 in #191
- refactor: Load team sounds from .env file by @MrDave1999 in #192
- chore: Add launch.json for vscode by @MrDave1999 in #193
- docs: Update README.md by @MrDave1999 in #194
- docs: Add installation instructions to the README.md by @MrDave1999 in #195
- restruct: Move codepages folder to the root directory by @MrDave1999 in #196
- feat: Allow indicating the type of code page encoding from .env file by @MrDave1999 in #197
- chore: Add runtime identifier to use only native 32-bit libraries by @MrDave1999 in #198
- Revert "chore: Add runtime identifier to use only native 32-bit libraries (#198)" by @MrDave1999 in #199
- fix(sqlite): Remove 'REGEXP' operator from CHECK constraint by @MrDave1999 in #200
- fix: Display load time as a text draw in game UI by @MrDave1999 in #201
- feat: Format and send message when a player is added to a team by @MrDave1999 in #202
- feat: Send notification message to player when assigned to a team by @MrDave1999 in #203
Full Changelog: v9.0.0-rc.1...v9.0.0-rc.2
v9.0.0 Release Candidate 1 (RC1)
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
What's Changed
- feat: Add SQLite support by @MrDave1999 in #161
- chore: Move 'IPlayerRepository' to the 'Accounts' subdomain by @MrDave1999 in #162
- feat: Add MariaDB support by @MrDave1999 in #163
- chore: Update sample .env file by @MrDave1999 in #164
- fix: Copy sqlite library to the output and publish directory by @MrDave1999 in #165
Full Changelog: v9.0.0-preview.4...v9.0.0-preview.5
v9.0.0-preview.4
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
What's Changed
- feat: Allow the administrator to change a player's role by @MrDave1999 in #126
- feat: Allow the administrator to give points to players by @MrDave1999 in #127
- feat(improve): Ensure that the player cannot select the current skin by @MrDave1999 in #128
- refactor!: Rename AddPoints and SubtractPoints resources for clarity by @MrDave1999 in #129
- feat: Allow administrators to give scores to players by @MrDave1999 in #130
- feat: Add admin commands by @MrDave1999 in #131
- feat: Add module to manage player health and armour vitality by @MrDave1999 in #132
- refactor!: Rename methods to use 'AddPoints' prefix instead of 'GivePoints' by @MrDave1999 in #133
- feat: Add moderator commands by @MrDave1999 in #134
- feat: Allow VIP players to self-assign points every 4 minutes by @MrDave1999 in #135
- feat: Allow VIP players to restore their health and armour by @MrDave1999 in #136
- feat: Add VIP commands by @MrDave1999 in #137
- feat: Add Cooldowns to VIP Commands by @MrDave1999 in #138
- BREAKING CHANGE: Replace 'Points' with 'Coins' for clarity by @MrDave1999 in #139
- fix: Update player's stat bar after acquiring a combo by @MrDave1999 in #140
- chore: Update namespace to 'Results' by @MrDave1999 in #141
- chore: Update namespace to 'Settings' by @MrDave1999 in #142
- feat: Add public commands by @MrDave1999 in #143
- feat: Allow players to report another player from a command by @MrDave1999 in #144
- feat: Allow players to be in AFK mode from a command by @MrDave1999 in #145
- refactor!: Move the player stats reset method to the 'PlayerStatsSystem' by @MrDave1999 in #146
- feat: Allow players to be in spectator mode by @MrDave1999 in #147
- fix: Check if the target player is in spectator mode by @MrDave1999 in #148
- feat: Add command to show VIP commands in-game by @MrDave1999 in #149
- feat: Add command to show moderator commands in-game by @MrDave1999 in #150
- feat: Add command to show admin commands in-game by @MrDave1999 in #151
- feat: Add command to show public commands in-game by @MrDave1999 in #152
- feat: Add help command for players by @MrDave1999 in #153
- feat: Add credits command for players by @MrDave1999 in #154
- feat: Add resource file for general commands module to manage strings by @MrDave1999 in #155
- fix: Set the interior to the current player when in spectator mode by @MrDave1999 in #156
Full Changelog: v9.0.0-preview.2...v9.0.0-preview.3
v9.0.0-preview.2
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
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
...