3078 Commits

Author SHA1 Message Date
Kawe Mazidjatari
de55d84795 Rebuild CNetChan::ProcessMessages()
Full rebuild for future 'proper' rate limit implementation.
2023-08-21 16:29:28 +02:00
Kawe Mazidjatari
905ae5a202 Add netmsg type defines
These 2 are used in CNetChan::ProcessMessages.
2023-08-21 16:28:37 +02:00
Kawe Mazidjatari
d528ec69f1 Add wrapper for reading netmsg types 2023-08-21 16:28:04 +02:00
Kawe Mazidjatari
8c87ad219f Add more bitbuf inlines
Added:
- Tell()
- GetNumBitsLeft()
- GetNumBytesLeft()
2023-08-21 16:14:54 +02:00
Kawe Mazidjatari
0066b82da7 Light cleanup 2023-08-21 11:35:24 +02:00
Kawe Mazidjatari
c344dde672 Add bitbuf getters 2023-08-21 11:28:55 +02:00
Kawe Mazidjatari
650f961fb0 Add float platform macro's 2023-08-21 11:28:04 +02:00
Kawe Mazidjatari
a5d1de8ead Rename local variable 2023-08-20 13:50:59 +02:00
Kawe Mazidjatari
c7c4672b27 Make it a discrete function
Cheaper for runtime.
2023-08-20 13:44:06 +02:00
Amos
320ff7fb0f Assert equal or above 0
Code bug because cannot go below.
2023-08-18 22:21:36 +02:00
Amos
fe1cc93cff CNetChan::FlowNewPacket(): Add a comment and also check the other loop
Added 2 comments that speaks for them self's, and 2 additional checks for the second loop as I had triggered several cases where it would loop indefinitely still, as we break out of the parallel loop and continue into the old school loop for the remainder of the outSeqNr - currentIndex frames. This should fix all problems related to this function. After numerous of tests with varying arbitrary outSeqNr values that were vastly larger than the current packet flow index, the bug was no longer triggered. A similar test had also be performed were multiple clients would do this at the same time, and even then; the server frame time(s) remained identical and the whole thing never hung.
2023-08-18 21:24:35 +02:00
Amos
26da5fd503 Increment by 4, since loop does 4 frames at a time
Compensate for compiler optimizations performed on CNetChan::FlowNewPacket().
2023-08-18 15:03:56 +02:00
Amos
2caccf6c91 Fix bug in CNetChan::FlowNewPacket()
Loop runs for 'CNetChan::m_nOutSequenceNr' frames, with no bounds. A corrupt or invalid packet will hang the engine for several seconds.
2023-08-18 13:06:00 +02:00
Amos
4f2a9601b4 Rebuild CNetChan::FlowNewPacket()
Rebuild for a future bug fix.
2023-08-18 12:47:16 +02:00
Amos
174f9b46f3 Fully map out net frame and flow structures
Mapped out 'netframe_header_s', 'netframe_s', and 'netflow_s' entirely.
2023-08-18 02:33:41 +02:00
Amos
6e292359d9 CBaseEntity::m_rgflCoordinateFrame is a matrix3x4_t
Change type and add static assert to prevent mistakes made by accidentally making the struct bigger (which will create many bugs).
2023-08-18 00:44:52 +02:00
Amos
bacfff184c Fix clock correction subtraction bug
Must be converted to actual msecs in floats since 'sv_clockcorrection_msecs' uses msec as base to store the cvar value.
2023-08-18 00:43:44 +02:00
rexx
abf6c33c45 Update global.cpp 2023-08-17 20:26:10 +01:00
rexx
1c179434d3 fix dedi compile
sets pylon language in a cvar change callback instead of accessing directly, as networksystem does not have a DEDICATED define
2023-08-17 20:22:28 +01:00
rexx
356f0ce7c0 send language to MS 2023-08-17 20:02:42 +01:00
Amos
4601c65bc6 Fix bots stuck in air
Make sure we set a frame time and command time.
2023-08-17 02:00:50 +02:00
Amos
5e47e45d83 Take clock drift into account during lag compensation clamp
Client's clock could be behind or ahead of the server's, take this into account. Note that this code has been tested over night and only had a few hits when new baseline snapshots were applied on the server, or when there was a clock drift. It still requires an actual playtest with several players on low and high latency to determine if this is even needed.
2023-08-17 01:59:54 +02:00
Amos
e66680881b Add 'sv_clockcorrection_msecs' cvar to SDK 2023-08-17 01:56:42 +02:00
Amos
3c36b606f0 Add function for checking if there's still pending data in reliable waiting buffers 2023-08-16 00:15:01 +02:00
Amos
2ff35a94cd Add inline for getting server time 2023-08-16 00:06:03 +02:00
Amos
c7f1cfbaaa Improve unlag exploit fix
- Check and clamp if commandTime is above serverTime (too far in future).
- Check commandTime delta before checking if above serverTime or below lastCommandTime.
2023-08-15 22:53:42 +02:00
Amos
ebe7a997ac Fixup comments 2023-08-15 20:20:29 +02:00
Amos
75e327e447 Normalize pitch angles
Prob not needed, but other unclamped angles/vectors were able to crash games in the past, so just normalize this too.
2023-08-15 20:19:38 +02:00
Amos
3ff85c174a Finish unlag exploit fix
- Make sure cmdTime is never lower than last.
- Make sure delta doesn't exceed maxUnlag.
- Make sure latency gets clamped to maxUnlag (clamp appears to be missing in the engine).
- Only check for cmdTime if we are not discarding the cmd; previously, already processed queued cmd's got checked before being discarded.
2023-08-15 00:45:58 +02:00
Amos
631e6d9e17 Work in progress unlag exploit fix
Temporary lag compensation exploit fix by clamping the difference. Exploiter could carefully control the detonation time of a grenade, or alter the ability cool downs by altering the 'CUserCmd::command_time' field before sending it up.
2023-08-14 20:47:02 +02:00
Amos
00f7415380 Fixup CClient types 2023-08-14 00:30:20 +02:00
Amos
2768b925b0 Make assert better
Check if not below zero.
2023-08-13 20:26:52 +02:00
Amos
abb9f30753 Add inlines for getting edict and names 2023-08-13 20:26:08 +02:00
Amos
8136374693 Make inline
Make inline.
2023-08-13 20:20:01 +02:00
Amos
cf41004f74 Cleanup 'CServerGameClients::ProcessUserCmds'
Client gets dropped if buffer overflow flag is set, remove old code and just print the warning.
2023-08-13 18:08:14 +02:00
rexx
25bd407b39 add ScriptError script func 2023-08-12 22:41:48 +01:00
Kawe Mazidjatari
fa4325eda0 Change more to errors
Should never happen, and be shown in release builds.
2023-08-09 15:31:22 +02:00
Kawe Mazidjatari
298bab630e Change to error
Should never happen, and be shown in release builds.
2023-08-09 15:05:08 +02:00
Kawe Mazidjatari
5f64cd83d8 Fix FileSystem size integer truncation
The implementation in the engine always took/returned signed 64bit size types, but I made a mistake when reversing the virtual function table. All types have been changed to what they should be (mostly signed 64bit, very few unsigned), and usage in-SDK has been adjusted accordingly.
2023-08-09 14:43:54 +02:00
Kawe Mazidjatari
d59a320d69 Remove 'Error(EXIT_FAILURE)' call from 'CreateWeaponBolt()'
The bug has been fixed in the engine.
2023-08-09 02:56:58 +02:00
Kawe Mazidjatari
30031e3275 Don't allow stringcmd's if client isn't active
Potential exploit vector, executing stringcmd's during signon states where it shouldn't be used.
2023-08-08 19:25:12 +02:00
Kawe Mazidjatari
9a9d6b290a Fix typo 2023-08-08 19:05:12 +02:00
Kawe Mazidjatari
d0544a3bc7 Remove development only flags for some cvars
Removed for:
* base_tickinterval_sp
* base_tickinterval_mp
* sv_updaterate_sp
* sv_updaterate_mp
* cl_updaterate_mp

Cvar 'cl_cmdrate' is deprecated in the engine and SDK since the CL_Move rebuild, and therefore has been removed entirely.
2023-08-08 13:05:33 +02:00
Kawe Mazidjatari
849372d68e Show server CPU, frame time and current tick as well 2023-08-08 12:55:17 +02:00
Kawe Mazidjatari
9d5eb5ba23 Remove redundant CEngine stuff
No longer required, the vftable has been reversed.
2023-08-08 09:28:11 +02:00
Kawe Mazidjatari
aa569173c9 Remove useless copy constructions
A string was constructed, but only for checking if its empty. This can be done on the char pointer itself. Made a inline helper func to reduce duplicate code.
2023-08-08 02:21:33 +02:00
Kawe Mazidjatari
71652f02c7 Don't index into it again
If the string has a value, then we can just use that since it will be equal to that of the vector.
2023-08-08 02:19:45 +02:00
Kawe Mazidjatari
822d9f2b19 CTextOverlay cleanup
Slightly improved performance, reduced number of copy constructions, reduced number of integral type casts by just using the CUtlVector class.
2023-08-07 22:10:06 +02:00
Kawe Mazidjatari
704900e2cd Don't index into it again
Use the already cached reference.
2023-08-07 21:23:42 +02:00
Kawe Mazidjatari
a840fd1493 Remove devonly flag from 'discord_updatePresence'
Allow user to enable it, seems to work perfectly fine.
2023-08-07 17:54:57 +02:00