4031 Commits

Author SHA1 Message Date
Kawe Mazidjatari
6e373b1428 VpkLib: light cleanup
Improve global names, initialize VPKDirHeader_t structure, make inlines for checking if language or target exists.
2024-04-22 02:38:48 +02:00
Kawe Mazidjatari
266dc56b36 NetCon: rename to 'netcon'; remove platform suffix
Netcon is no longer 32bits. Previously it was made 32bits to maximize system compatibility, but this was unfortunately too hard to maintain after the migration to CMake, it was also no longer worth it as the tool never got used on 32bit platforms. Renamed to avoid confusion.
2024-04-21 01:54:58 +02:00
Kawe Mazidjatari
f3ca070868 Resource: use default protoc instead of custom one
No need to use the custom one.
2024-04-21 01:50:32 +02:00
Kawe Mazidjatari
e0f24d3313 Launcher: initialize all member vars
Suppress IntelliSense warnings.
2024-04-20 23:28:35 +02:00
Kawe Mazidjatari
b5616999ab PluginSystem: add callback for chatroom receiver
Allow plugins to block chat msg's based on their text.
2024-04-20 23:27:00 +02:00
Kawe Mazidjatari
425f1dc5da Server: add getter for net name in CBaseCombatCharacter 2024-04-20 23:11:13 +02:00
Kawe Mazidjatari
d6644eff89 Server: add getter for Nucleus ID in CPlayer 2024-04-20 23:10:45 +02:00
Kawe Mazidjatari
bf0cef130d Launcher: fix use after free (ASAN)
The launcher would regularly throw the PSA (Program Compatibility Assistance) notification upon exit. Running the program with address sanitizer revealed 'CSurface::GetControlValue()' returned a pointer to a temporary buffer, this is destroyed as 'Forms::Control::Text()' returns class String by value. 'CSurface::GetControlValue()' is no longer necessary since we moved to the official KeyValues class, so this function has been removed all together and the issue has therefore been fixed.
2024-04-20 23:08:31 +02:00
Kawe Mazidjatari
7bc7c9d2f4 Engine: simplify "script" command callback for server
Code actually doesn't need to be ran in the server frame thread. All the code really does is preparation work. Run it in the main thread but do join the server frame thread (FCVAR_SERVER_FRAME_THREAD) as we can't do concurrent work on the server VM.
2024-04-20 01:33:34 +02:00
Kawe Mazidjatari
84daa21cfd Engine: don't broadcast voice data on training dedi
Training dedi doesn't support broadcasting voice data, return out.
2024-04-20 01:00:49 +02:00
Kawe Mazidjatari
85b7f84d47 Engine: add command line statics for dedicated server and light cleanup
CGameServer::SpawnServer() pointer to engine/server/server.h, and renamed it to CServer::SpawnServer().
2024-04-20 00:59:39 +02:00
Kawe Mazidjatari
50d38af63a RTech: fix bitwise order in define
Put in parentheses.
2024-04-19 17:06:11 +02:00
Kawe Mazidjatari
e7fd19cdf3 VScript: fix method order
More logical order of newly added methods.
2024-04-19 13:14:35 +02:00
Kawe Mazidjatari
f8f8be9870 Squirrel: fix struct name
bufCopy is actually bufPos as this indicated the current pos in the text buffer as it gets parsed out.
2024-04-19 13:13:17 +02:00
Kawe Mazidjatari
f70cc90eb9 VScript: move script run code to dedicated method 2024-04-19 13:12:35 +02:00
Kawe Mazidjatari
1455017419 VScript: properly implement script command callback
Previously we did sq_pushroottable() and a subsequent sq_call() after compiling the text buffer, but this didn't work for code that was threaded, or using Get/SetNetVar* functions.

The second issue was that the callback for the "script" command was ran in the main thread. Server script should always run in the server frame thread, the Set/GetNetVar* functions check thread id to retrieve the correct VM context, so running server script from the main thread ended up with Set/GetNetVar* functions retrieving the client VM context rather than server's, causing undefined behavior.

Script commands are now queued to the server frame thread, ultimately fixing this bug.

Also fixed a small bug with function 'sq_compilebuffer()'; it takes an extra argument but this wasn't taken into account in the SDK.
2024-04-19 12:56:10 +02:00
Kawe Mazidjatari
183a6e9c35 VScript: add CSquirrelVM::ExecuteFunction()
Executes script code by function handle.
2024-04-19 12:56:10 +02:00
Kawe Mazidjatari
42a8edc4cd Squirrel: add multiple SQ API functions
Added:
- sq_getstackobj
- sq_pop
- sq_addref
- sq_release
- SQVM::Pop
- RefTable::Get
- RefTable::AddRef
- RefTable::Release
2024-04-19 12:56:09 +02:00
Kawe Mazidjatari
8c6b937114 VScript: add ScriptStatus_t enum
Enum values are correct based on 'CSquirrelVM::ExecuteFunction()'.
2024-04-19 12:18:09 +02:00
Kawe Mazidjatari
9281bffad8 Launcher: fix compiler error
Prototype changed in commit c261db243e7de0a57445ed9bb036238a7171e572.
2024-04-17 22:07:00 +02:00
Kawe Mazidjatari
e197b7d12e Resource: add LiveAPI documentation 2024-04-17 21:34:51 +02:00
Kawe Mazidjatari
cc248abc59 ImGui: increase base64 key buf size
Make buffer size as large as that of the engine itself (used to represent the string in class CNetKey).
2024-04-17 21:22:13 +02:00
Kawe Mazidjatari
5c3f06f192 ImGui: improve browser modal QOL
Hitting enter will now also submit the request.
2024-04-17 21:19:53 +02:00
Kawe Mazidjatari
20c8bf6a0c ImGui: fix server modal token input bug
The string buffer was moved to the stack on a recent refactor, but the data must persist even outside the function scope. Moved back to class in form of a buffer.
2024-04-17 21:18:51 +02:00
Kawe Mazidjatari
58d7c8f7a5 ImGui: update default server browser width
As of the recent layout changes, buttons and widgets looks the sharpest on this width; default to this width instead.
2024-04-17 20:53:50 +02:00
Kawe Mazidjatari
a1d48efec6 NetConsole: log header/version as soon as possible
Logged right after console and terminal is initialized.
2024-04-17 20:52:06 +02:00
Kawe Mazidjatari
1932cd2e11 Resource: add missing command line parameter client configs
Since the implementation of the loader system, client's need '-noserverdll' to work properly when launched from the SDK launcher.
2024-04-17 20:51:04 +02:00
Kawe Mazidjatari
9f01ff0ea7 Launcher: surface and launcher code overhaul
- SDK Launcher is now a proper GUI app (no longer defaults to terminal, but can of course still be used in the terminal).
- Set uniform font on all controls (GetStockObject sometimes returns fonts that isn't currently supported on the UI layout causing text to clip; we don't show in other languages or character encodings so we should just default to Microsoft Sans Serif).
- Make anchors uniform for all controls (resize not yet supported).
- Don't attempt to send commands to game instances if command string is null or empty.
- Clamp surface console list size to window size.
- Remove surface console logger boilerplate (surface logging is now a dedicated function).
- Use actual SDK logging system for console prints/warnings/errors.
- Fixed bug where the use of a shared stack buffer caused truncated parts of the file name to end up in the command line text.
2024-04-17 20:49:22 +02:00
Kawe Mazidjatari
c261db243e Windows: fix prototype mismatch
Mismatched since commit acaf3fdfad319cea142ba58ce9214aec14715ff0.
2024-04-17 20:47:02 +02:00
Kawe Mazidjatari
acaf3fdfad Windows: move console color init code to separate function
Reserve Console_Init() for actual console init, if code only needs colors (e.g. a console application that already has a console), then they should call Console_ColorInit().
2024-04-17 20:44:54 +02:00
Kawe Mazidjatari
7e722dd68f CppKore: fix potential font resource leak
As of commit 168ad9aabd624510045d56aabcbfeff6f4aaad6f, we can assign uniform fonts to all child controls, but only 1 control can own the font resource. This is by default false since we do not want to free the resource when destroying the child controls, but we do want to free it once the parent window gets destroyed.
2024-04-17 20:29:33 +02:00
Kawe Mazidjatari
649c0ee241 CppKore: add getter for child control count 2024-04-17 20:26:42 +02:00
Kawe Mazidjatari
168ad9aabd CppKore: try parent font if current is absent
This allows for setting uniform fonts on all controls, by only assigning the font once to the parent control. Else each control needs to have its own set.
2024-04-17 20:26:03 +02:00
Kawe Mazidjatari
f059202ff2 NetConsole: fix command line bug
Recently, encryption was implemented in the RCON system, but the command line initialization code wasn't adapted to this new logic. Code has now been adapted.
2024-04-16 16:51:51 +02:00
Kawe Mazidjatari
917b3c2d5b Tier1: fix typo in byteswap.h 2024-04-16 16:48:17 +02:00
Kawe Mazidjatari
ddf10fc4ac Server: use correct type for hull data used for AI Network
System uses a CVarBitVec for this hull block data.
2024-04-16 16:47:58 +02:00
Kawe Mazidjatari
3f01894bfa RTech: fixed streamed pak decoding progression bug
During beta tests on a Linux system, we encountered an issue where the I/O could be slower and thus result in not enough bytes being streamed by the time we invoke the decoder (lenStreamed == bufSizeNeeded at this point), after 16 calls with lenStreamed == bufSizeNeeded, the engine errors as ZSTD_NO_FORWARD_PROGRESS_MAX would be reached. Added value of 'ZSTD_nextSrcSizeToDecompress()' to 'PakDecoder_s::bufferSizeNeeded' to make sure we never call the decoder without any new streamed bytes. Also increased the value of ZSTD_NO_FORWARD_PROGRESS_MAX to 1024 since this fixed the issue without applying the aforementioned patch, this was increased as a hardening measure.
2024-04-16 02:17:41 +02:00
Kawe Mazidjatari
ded6d06eb1 Server: removed unreferenced local variable
Unused variable as current time calculation ended up being unnecessary, removed to suppress compiler warning.
2024-04-16 02:10:08 +02:00
Kawe Mazidjatari
fdbd9a6452 Engine: fix incorrect assignment on rcon socket bind
The assignment on the ternary operator should be flipped, bug was spotted during beta testing.
2024-04-15 23:58:16 +02:00
Kawe Mazidjatari
28d8dc25e5 Engine: move unrestricted command exec code to separate function 2024-04-14 23:25:36 +02:00
Kawe Mazidjatari
dacc4ac8f5 Core: allow launching dedicated server without terminal window
The terminal window isn't always necessary, especially on Linux systems. In fact, it causes issues on some Wine environments. Allow user to disable it with -noconsole. This option only exists on the dedicated server. The client builds have the console disabled by default, and can enable them with -wconsole.
2024-04-14 19:39:52 +02:00
Kawe Mazidjatari
7791daef87 Engine: enforce rcon convar name consistency
Removed extra '_' from sv_rcon_whitelist_address, its now sv_rcon_whitelistaddress.
2024-04-14 16:14:19 +02:00
Kawe Mazidjatari
b8bde9ad0e Engine: use dedicated convar to determine rcon server socket bind
Decoupled from net_usesocketforloopback since we actually don't want this to be tied with that of the game. Now it by default does not bind to the loopback socket unlike the game.
2024-04-14 16:11:58 +02:00
Kawe Mazidjatari
62e6f11b34 Server: simplify lagcomp clamping code and add technical notes
Clamp to +- sv_maxunlag delta from server time base. Also added notes to possibly rework the system in the future.
2024-04-14 14:23:14 +02:00
Kawe Mazidjatari
2da7006e79 Server: add script function 'GetServerID()'
Allows one to get the current session uuid (will be used for LiveAPI's Init event for session identification).
2024-04-14 14:22:32 +02:00
Kawe Mazidjatari
4867f5da74 Launcher: untoggle windowed mode by default and rename field
Untoggled by default due to popular demand (most wanted to launch full screen). Also renamed maxFPS field to fpsMax to remain consistency with the actual cvar name.
2024-04-14 14:21:03 +02:00
Kawe Mazidjatari
edecbb06d5 Resource: add new LiveAPI configuration file
Executed on server launch.
2024-04-13 15:55:01 +02:00
Kawe Mazidjatari
b4db5cd5af Resource: add new parallel VPK build script
Build script to build VPK files in parallel with use of the new tool 'ReVPK'.
2024-04-13 15:54:27 +02:00
Kawe Mazidjatari
5b7f120ccc Resource: update cleaner script
Added new LiveAPI log directory, and several files that were renamed.
2024-04-13 15:53:11 +02:00
Kawe Mazidjatari
6bb70fb2ed Resource: update configuration files
Slightly adjusted RCON configuration files, recent changes implemented RCON encryption (users can specify their own AES keys).
2024-04-13 15:52:33 +02:00