Commit graph

3696 commits

Author SHA1 Message Date
Dennis Felsing 78b70ebcf8
Merge pull request #7282 from furo321/tele-cursor
Teleport the player to their cursor if they aren't in pause
2023-10-02 16:12:00 +00:00
furo 7e045d4f32 Teleport the player to their cursor if no argument is specified.
Check for `NumArguments()`
2023-10-02 13:26:34 +02:00
Dennis Felsing 624f4aef21
Merge pull request #7280 from furo321/move-lasttelepos
Don't reset `/lasttp` position on death
2023-10-01 22:21:34 +00:00
furo 6dd43fb086 Don't reset LastTelePos on death 2023-10-01 18:34:07 +02:00
furo 0661eafb49 Send the player's latency if a menu is open 2023-10-01 17:32:51 +02:00
Learath fcffac6fa8 Fix the fix to dead reckoning 2023-09-30 01:29:33 +02:00
Steinchen99 7b58b77c5e QoL ; Made it so f2 cmd 'tele' resets speed and unfreezes the tee upon teleporting 2023-09-29 14:53:24 +02:00
Robert Müller 06948ddecd Remove remains of dbg_stress from server
Using `dbg_stress 1` on a server made clients always auto-join team 0 and nothing else, which is not useful on its own for stress testing.
2023-09-28 20:14:23 +02:00
Dennis Felsing 6a030e1a2b
Merge pull request #7262 from furo321/expire-server-info-afk
Expire server info when changing `m_Afk`
2023-09-27 10:44:55 +00:00
furo 4f0552a8df Expire server info when changing m_Afk 2023-09-27 12:12:12 +02:00
furo eabe59b413 Change format of votes 2023-09-26 12:13:49 +02:00
furo d165f9e8a9 Add votes command to rcon 2023-09-26 02:24:00 +02:00
Dennis Felsing 60046c7e18
Merge pull request #7247 from Learath2/pr_reckon
Fix dead reckoning
2023-09-24 18:38:53 +00:00
Learath ecaded8cce Fix dead reckoning 2023-09-24 18:14:09 +02:00
furo 436c977f7e Remove unused config, sv_suicide_penalty 2023-09-23 23:51:16 +02:00
Robert Müller 774d32713d
Merge pull request #7227 from furo321/swap-without-name
Add ability to swap without a name when team only has 2 players.
2023-09-22 14:33:48 +00:00
Dennis Felsing cc2bdbd0ed
Merge pull request #7232 from furo321/initial-chat-delay-message
Use a different message when muted by sv_chat_initial_delay
2023-09-22 11:06:56 +00:00
furo 5793891d91 Add a message when using sv_chat_initial_delay 2023-09-22 12:43:36 +02:00
furo f23e5ceb6f Correct value of TeamSize. 2023-09-21 23:15:42 +02:00
furo a7ef9c7c6f Add /lasttp 2023-09-21 21:02:55 +02:00
furo 992a26c7ca Add ability to swap without a name when team only has 2 players. 2023-09-21 19:40:37 +02:00
Robert Müller 2c7df07fd7
Merge pull request #7196 from furo321/add-optional-arguments
Add optional argument to movement commands
2023-09-20 15:04:54 +00:00
trml b62754915a Add flag to ddnetlaser for enabling prediction, let server control starttick 2023-09-19 23:22:15 +02:00
Robert Müller ce8e47ee63 Increase maximum number of mutes and vote mutes 2023-09-18 16:22:51 +02:00
furo 107af9c902 Add optional argument tiles to movement commands
Add optional argument to movement and console page commands

Remove optional argument to console page commands
2023-09-17 17:19:40 +02:00
furo 77840a9c97 Fix everyones swap getting reset when someone swaps 2023-09-17 13:49:52 +02:00
heinrich5991 286104cf08
Merge pull request #7181 from furo321/color-vote
Color vote if you have voted f3 or f4.
2023-09-16 10:40:15 +00:00
furo b423ee59af Color text if you have voted f3 or f4
Add Sv_YourVote packet
2023-09-16 12:17:11 +02:00
Robert Müller 643a23aad3 Add unninja, solo and deep testing commands
Closes #7161.
2023-09-16 11:59:21 +02:00
Alexander Akulich f58eef45b9 Server: Use the tuning params via GameWorld (like in prediction)
The world tuning is a part of the world. This way the entities implementation
use the same API as available on the client side.

This change is a step toward unified/shared world logic for client and server.
2023-09-15 18:04:29 +03:00
Alexander Akulich 77fc14f251 Server: Move player (ID) mapping update to GameContext
This way the GameWorld does not deal with CPlayer.
2023-09-15 18:04:29 +03:00
Alexander Akulich a1b7e0c37c Move alloc.h to game/ and use it in client/prediction/entity.h 2023-09-15 18:04:29 +03:00
Alexander Akulich 7dab9e430d CCharacterCore: Break the friendship with CCharacter 2023-09-15 18:04:29 +03:00
Alexander Akulich 4c55e83d91 Character (cli and srv): Access WorldCore via GameWorld() 2023-09-15 18:04:29 +03:00
Alexander Akulich 9eb4cf7508 CCoreCharacter: Add and use HookedPlayer() 2023-09-15 18:04:23 +03:00
Alexander Akulich 41c83da699 CGameContext::OnMessage: Replace if-else with switch() 2023-09-09 14:49:52 +03:00
Alexander Akulich e6c7d0c96d GameContext: Extract all other messages 2023-09-09 14:49:10 +03:00
Alexander Akulich 3be79f568a GameContext: Extract OnStartInfoNetMessage() 2023-09-09 14:45:15 +03:00
Alexander Akulich 763541af5a GameContext: Extract OnEmoticonNetMessage() 2023-09-09 14:45:15 +03:00
Alexander Akulich 0a2cc3d84c GameContext: Extract OnChangeInfoNetMessage() 2023-09-09 14:45:15 +03:00
Alexander Akulich 9f668e20db GameContext::OnMessage: Move the check for World.Paused into OnSetTeam
1. Regardless of the pause the message is CL_SETTEAM and there is no
   reason to match it against other messages.
2. Another implementation can save the wanted team and apply it later.
2023-09-09 14:45:11 +03:00
Alexander Akulich ce5371b038 GameContext: Extract OnSetTeamNetMessage() 2023-09-09 14:45:04 +03:00
Alexander Akulich a1ec904596 GameContext: Extract OnSayNetMessage() 2023-09-09 14:45:02 +03:00
Alexander Akulich 88fc275d85 GameContext: Extract OnCallVote() and OnVote() from OnMessage() 2023-09-08 19:19:28 +03:00
heinrich5991 2bf2850b20
Merge pull request #7128 from ChillerDragon/pr_sixup_slot_info
Fix 0.7 clients not being able to join after slot change
2023-09-06 23:15:43 +00:00
ChillerDragon 5a8e67b323 Fix 0.7 clients not being able to join after slot change
If the player slots update the 0.7 clients have to be informed
about it. Otherwise the client can block the join button
if the outdated playerslots are filled already.
2023-09-06 12:50:16 +02:00
Harri Nieminen 4d9ff1d904 Fix typos
Found by codespell
2023-09-05 22:32:09 +03:00
Dennis Felsing baffa8d817
Merge pull request #7080 from heinrich5991/pr_ddnet_teehistorian_prev_game_uuid
Record previous game ID in teehistorian
2023-08-28 11:28:00 +00:00
heinrich5991 70bf739b6f Notify antibot of round start after initializing teehistorian
This allows the antibot to start pushing data into teehistorian
immediately.
2023-08-27 17:35:13 +02:00
heinrich5991 a48d14fac0 teehistorian: Omit "prev_game_uuid" instead of setting it to null 2023-08-27 16:11:45 +02:00
heinrich5991 cbdb3b1d2e Record previous game ID in teehistorian
This allows to trace a complete server execution.
2023-08-27 16:11:45 +02:00
heinrich5991 330d1ebaf6 Add possibility to persist game data past map changes 2023-08-27 16:11:45 +02:00
Dennis Felsing 48d0228428
Merge pull request #7077 from infclass/ddnet-fix-pause
CGameClient::Predict: Disable prediction if the game is paused
2023-08-26 18:35:17 +00:00
Dennis Felsing 5ba1834eed
Merge pull request #7067 from Marmare314/vscpp-issue
fix CScorePlayerResult for visual c++ compiler
2023-08-25 17:57:40 +00:00
Marek B 5815f8c6c0 fix CScorePlayerResult for visual c++ compiler 2023-08-25 18:17:01 +02:00
heinrich5991 84948adad1 Allow antibot to record data into teehistorian 2023-08-25 14:26:09 +02:00
heinrich5991 b739c18a86
Merge pull request #7056 from Robyt3/Base-Number-Format-Optimization
Add `str_from_int` function
2023-08-25 11:16:00 +00:00
Zwelf 3c2d8afff6 Create new teehistorian event for player rejoin 2023-08-25 00:42:54 +02:00
Robert Müller d2c9750c65 Add str_from_int function
Add more efficient function for formatting integer values as strings.

A benchmark shows that using this function is significantly faster than using `str_format`. It is faster by a factor of 220 with Clang 15.0 O2 (https://quick-bench.com/q/BlNoLnlyqxipf4jvsFTUxKMHDJU) and by a factor of 11 with GCC 12.2 O2 (https://quick-bench.com/q/Fxf9lDCTqXBF4pIa_IyZ5R0IqYg).

This increases FPS in the editor by ~25% when many numbers are rendered for switch/tele/speedup/tune layers or with "Show Info" being enabled.

The additional static analysis for `std::to_chars` revealed that the wrong size was used in `CHud` for `aScoreTeam[TEAM_RED]` and `aScoreTeam[TEAM_BLUE]`.

This requires incrementing the macOS deployment target from 10.13 to 10.15.
2023-08-24 20:54:17 +02:00
Zwelf d7164211e6 Rename OnClientEngineJoin and OnClientEngineDrop to make the name fit its usage 2023-08-15 22:22:42 +02:00
Zwelf b9458150e0 Fix JoinVer and Join teehistorian chunks missing in some conditions
vanilla 0.6 joins weren't recorded. Also after map change, for the
existing players these Join chunks were missing.  Just add these
message for existing players now and add OnClientEngineJoin in all
code paths with clients connecting.
2023-08-15 22:22:42 +02:00
Alexander Akulich 6555799e85 Cleanup declarations 2023-08-15 19:02:17 +03:00
Robert Müller defd8f7c96 Increase another SQL query buffer size
The `INSERT INTO` query could be truncated when using a longer table name prefix.
2023-08-12 19:42:05 +02:00
Robert Müller 0196470e01 Fix SQL query buffer sizes being too small
In `LoadPlayerData` exactly the `LIMIT 1` clause was getting truncated from the query due to the buffer size being insufficient. Depending on the length of the table name prefix the query could have been truncated at any other position resulting in syntax errors.

In `ShowTeamTop5` the buffer size is increased because it could cause truncation with a longer than default table name prefix.
2023-08-11 17:20:45 +02:00
Robert Müller 29871fd5f6 Fix scoreboard time being reset when using /timecp
Using `/timecp` with a player name that has no time on the current map incorrectly cleared the player score/time causing it to not be shown in the scoreboard anymore.
2023-08-11 16:41:42 +02:00
Zwelf 18dff9ef46 Fix /load from backup database
Saves were deleted without the team getting its state when /load and
/save both happened during mysql server not reachable.

Before this fix, the saves were only in the DDNet log output for
recovery, not in any database anymore.

`Write::BACKUP_FIRST` is 0 so always false, so the previous code
didn't harm other code paths (especially `Write::NORMAL`).
The saves were tried to retrieve two times from the database, therefore
at the second time it didn't exist anymore. One time erroneously in
`Write::BACKUP_FIRST` and the second time in `Write::NORMAL_FAILED`.

Fixes #6924
2023-08-07 15:35:39 +02:00
Robert Müller 92dc3d4a0f Fix emotes sometimes being shown for others tees
The `Translate` function modifies the first argument, so the client ID keeps changing when the function is being used in a loop. Additionally, calling `Translate` manually is not necessary for messages, as client IDs in messages are already automatically translated when using `SendPackMsg`. Both faults can cause emoticons to appear on the wrong players when the emote spamprotection limits emotes to nearby players.
2023-08-05 15:54:04 +02:00
Edgar 27e846f8db
Merge pull request #5434 from heinrich5991/pr_ddnet_loglevels
Add separate log levels for each output
2023-08-01 09:20:06 +00:00
Robert Müller 3b273500c5
Merge pull request #6942 from heinrich5991/pr_ddnet_game_settings_cleanup
ResetServerGameSettings → ResetGameSettings, remove flag argument
2023-07-29 08:48:05 +00:00
heinrich5991 a94b5c35bf ResetServerGameSettings → ResetGameSettings, remove flag argument
The old code looked pretty weird. It checked for `CFGFLAG_SERVER |
CFGFLAG_GAME` being set above, and then used the passed-in parameter to
find the command. I think it'd be better to just look for `CFGFLAG_GAME`
and then find the command using `CFGFLAG_GAME`.
2023-07-28 16:12:21 +02:00
heinrich5991 03fd1b440b
Merge pull request #5398 from AssassinTee/feature/elasticity-tuning
implement tuning values for elasticity
2023-07-28 13:58:42 +00:00
Marvin Winkens e1ba77d3dc implement tuning values for elasticity
implement tuning values for elasticity

add grounded check to movebox and give jump back when bouncing

fix styling issues

fix jumps being given back at ceilings
2023-07-28 15:35:45 +02:00
Tater 6bb2696c8b Fix crash in ResetServerGameSettings 2023-07-27 13:26:11 -05:00
heinrich5991 4f103d5a4c Revert "Allow server to redirect clients"
Discussion wasn't finished:
https://github.com/ddnet/ddnet/pull/6757#issuecomment-1648565562.

This reverts commit 9d2f4318d5.
2023-07-24 22:51:27 +02:00
heinrich5991 85566fbe92 Add separate log levels for each output
`stdout_output_level` for printing to stdout, `console_output_level` for
printing to local console and remote console and `loglevel` for the log
file.

Keep the old log level filters 0 for info and more severe, 1 for debug
and more severe and 2 for trace and more severe, introducing -1 for
warn, and -2 for error. -3 will show no log messages at all.
2023-07-24 22:43:05 +02:00
heinrich5991 e432dbb750
Merge pull request #6757 from ChillerDragon/pr_redirect
Allow server to redirect clients
2023-07-24 20:21:21 +00:00
devdenn 7f100e2620 Fix bug, increase dump_log max seconds to 10min 2023-07-15 14:57:12 +00:00
VoxelDoesCode 36d8dd587c Send KillMsg for started + unlocked teams 2023-07-13 11:39:07 -04:00
Alexander Akulich 0a657225ce CDataFileWriter: Make it clear that Add methods do not modify the data 2023-07-08 02:44:53 +03:00
ChillerDragon 9d2f4318d5 Allow server to redirect clients
This is a preperation for #6754 (redirect players on map vote)
And an implementation of #5662 (redirect players)
2023-07-02 14:05:11 +02:00
bors[bot] 4bd14933b8
Merge #6790 #6793
6790: Prevent /swap with paused players r=def- a=Robyt3

Prevent swapping if either of the players is paused (i.e. their character is not in the gameworld), as this can cause them to be stuck in midair after swapping, which can be exploited to skip parts.

## Checklist

- [X] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [X] Tested in combination with possibly related configuration options (servers with `sv_pauseable 0` were and are unaffected)
- [ ] Written a unit test (especially base/) or added coverage to integration test
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


6793: Use `std::vector` and `std::deque` instead of most `std::list`s r=def- a=Robyt3

Use `std::vector` in cases where elements are only inserted at the end of the collection.

Use `std::deque` in cases where elements are only inserted/deleted at the beginning/end of the collection.

Use `std::list` in the remaining single case where elements are being removed from arbitrary positions and added at either the beginning or the end of the collection.

Adjust variables names. Don't use separate prefix for `std::deque`s and `std::list`s, as they are only used very rarely. Closes #6779.

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test (especially base/) or added coverage to integration test
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Robert Müller <robytemueller@gmail.com>
2023-07-01 16:04:13 +00:00
Robert Müller bc73ea30c7 Use std::vector and std::deque instead of most std::lists
Use `std::vector` in cases where elements are only inserted at the end of the collection.

Use `std::deque` in cases where elements are only inserted/deleted at the beginning/end of the collection.

Use `std::list` in the remaining single case where elements are being removed from arbitrary positions and added at either the beginning or the end of the collection.

Adjust variables names. Don't use separate prefix for `std::deque`s and `std::list`s, as they are only used very rarely. Closes #6779.
2023-07-01 15:44:35 +02:00
Robert Müller c6b4302b21 Prevent /swap with paused players
Prevent swapping if either of the players is paused (i.e. their character is not in the gameworld), as this can cause them to be stuck in midair after swapping, which can be exploited to skip parts.
2023-07-01 11:01:18 +02:00
Dennis Felsing 9ea16f660b Add new contributors for 17.1 2023-07-01 09:43:00 +02:00
Robert Müller 9a57def5a6 Add templated str_append function for arrays with fixed size 2023-06-14 00:04:01 +02:00
Jupeyy 845ba50842 Split emoticon sending into nearby and global players 2023-06-11 13:31:50 +02:00
Robert Müller 1172be1f80 Fix undefined player vote/team change time
The time of the last kick vote and the time of the last team change are initially in an undefined state, which causes the kick vote and team change to fail due to the delay incorrectly being applied.

Closes #6723.
2023-06-10 10:23:27 +02:00
Jupeyy e3d825f119 Disallow multiple emotes in the same tick, respect high bandwidth setting 2023-06-06 19:05:31 +02:00
Robert Müller 4c80af7bd9 Fix crash when enabling dbg_dummies on running server
The server normally needs to be reloaded to spawn the debug dummies, so this code was not checking if a debug dummy player exists. Decreasing the number of debug dummies while the server is running also causes them to simply not be snapped instead of completely destroying them.
2023-06-05 22:30:52 +02:00
trml 49c0bf95bd Slightly broader condition for snapping dragger id 2023-06-03 20:39:11 +02:00
trml 71d45b6926 Send dragger target (as owner), use original dragger id when sending dragger beam for a team 2023-06-01 23:29:51 +02:00
trml 348748f444 Fix snapping of dragger target pos 2023-06-01 23:29:46 +02:00
Robert Müller 5963a7ae42 Remove unnecessary usage of preprocessor
Using the preprocessor here doesn't reduce any duplicate code and it adds false positives for the unused config variable check.
2023-06-01 20:25:41 +02:00
trml ed89ba543a Send team 0 for switchers as well on solo server 2023-05-29 16:05:53 +02:00
Robert Müller ff51edec2d Fix incorrect swapping with draggers
There is another member variable `CDragger::m_aTargetIdInTeam` that contains for every team the client ID of the team member currently being dragged by this dragger.

The client IDs in this array also need to be swapped accordingly or the dragger will not switch target correctly when swapping.

Closes #5865.
2023-05-24 17:47:09 +02:00
bors[bot] 422ff844b8
Merge #6656
6656: Fix crash with super (fixes #6654) r=Learath2 a=def-

CClientMask has size MAX_CLIENTS, so it can't be used for super team

<!-- What is the motivation for the changes of this pull request? -->

<!-- Note that builds and other checks will be run for your change. Don't feel intimidated by failures in some of the checks. If you can't resolve them yourself, experienced devs can also resolve them before merging your pull request. -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test (especially base/) or added coverage to integration test
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2023-05-24 12:04:25 +00:00
Dennis Felsing 3dd1d784d6 Fix crash with super (fixes #6654)
CClientMask has size MAX_CLIENTS, so it can't be used for super team
2023-05-24 13:34:38 +02:00
Dennis Felsing bdc916faa9 Fix swapping with dragger beams (fixes #6597) 2023-05-23 00:42:04 +02:00
Edgar a4abc1fdd9
factor out scorekind backwards compat gametype check 2023-05-22 17:22:52 +02:00
Edgar 1d30462e50
clean time score handling, with positive time values 2023-05-22 16:36:46 +02:00