3847 Commits

Author SHA1 Message Date
Kawe Mazidjatari
11f6ec7633 Ebisu: allow overriding global game language setting
The code originally fetches available and selected languages from Origin/EADesktop. The issue however is that its hard to change the language through the Origin/EADesktop app. The second issue is that the languages returned by Origin/EADesktop isn't necvesarily supported by our version of the game, for example, the original implementation of EbisuSDK_GetLanguage() also returns ar_SA, which is supported by the retail version of the game, but our version doesn't have the code to render this language. The code has been rewritten to allow the user to easily change the language using the command line '-language' parameter. The miles code has also been slightly adjusted to fetch the language directly from HEbisuSDK_GetLanguage() instead of miles_language since otherwise we would still error out in engine code as miles_language will be out of sync.
2024-05-07 16:05:57 +02:00
Kawe Mazidjatari
36824629fe Localize: add language codes
Newly added g_LanguageCodes maps directly with g_LanguageNames.
2024-05-07 16:00:20 +02:00
Kawe Mazidjatari
f0fe2bf58f Engine: fix client dll compile error
This code should not compile for client.dll.
2024-05-07 15:02:36 +02:00
Kawe Mazidjatari
44b5db29ff Resource: additional dedicated build patches to improve runtime performance
Disabled additional unnecessary DX code from patched dedicated server executable, this allows the dedicated server to run RPaks containing models without any material or texture data. This also allows us to fully rebuild all RPaks for dedicated while also omitting material/texture data to further reduce memory usage during the parsing thereof, and overall disk size.
2024-05-07 14:47:09 +02:00
Kawe Mazidjatari
5b0303357f Engine: fix stack smash in client side UserMessage processor
Unclamped CBitRead::ReadBits() call on stack buffer of MAX_USER_MSG_DATA bytes. Function has been rebuilt with additional clamping to mitigate the problem.
2024-05-07 14:44:12 +02:00
Kawe Mazidjatari
56011c5d50 Tier1: fix ctor bug in class bf_read
Parameter 'nBytes' was unused while it should've been, causing invalid buffer sizes being set. Bug was found after careful inspection of generation assembly code.
2024-05-07 14:36:05 +02:00
Kawe Mazidjatari
a61c475379 Engine: fix numerous exploitable bugs in voice protocol
- Fixed stack smash in CClient:ProcessVoiceData (oob read on bitbuf).
- Fixed stack smash in CClient:ProcessDurangoVoiceData (oob read on bitbuf).
- Fixed ability to bypass team check on Durango voice packets if forced as reliable from the sender (client).
- Incorporated the following missing checks in the durango version of voice broadcasting:
  - Enforce chat between multiple teams using cvar 'sv_alltalk'.
  - Ability to also disable Durango voice data with cvar 'sv_voiceenable'.
  - Ability to echo voice with Durango voice data using cvar 'sv_voiceEcho'.
2024-05-07 14:05:11 +02:00
Kawe Mazidjatari
cd78ee6654 Launcher: parse maps and playlists on surface setup
This allows you to scroll through the combo list with the scroll wheel without uncollapsing it.
2024-05-05 11:32:32 +02:00
Kawe Mazidjatari
3e8cda22b3 Common: unmark "set" command from FCVAR_DEVELOPMENTONLY from dedicated
"set" is already marked as FCVAR_CHEATS, and typically used when sv_cheats 1; remove FCVAR_DEVELOPMENTONLY from dedi builds as well.
2024-05-05 11:31:03 +02:00
Kawe Mazidjatari
1bdc3b893e Game: remove game dll flag from "script" cmd
Prevent remote execution, should be done through RCON instead for security.
2024-04-24 22:32:50 +02:00
Kawe Mazidjatari
874f2aebae Resource: update vpk build list and remove old build scripts
2 new maps added, which will be includes in the next release. The dedi could still be used to build the vpk's, but ReVPK is prefered. Removed old build scripts.
2024-04-23 00:41:44 +02:00
Kawe Mazidjatari
1d36f0aa89 Miles: refer to 'MILES_DEFAULT_LANGUAGE' instead of 'english'
Enforce 'MILES_DEFAULT_LANGUAGE' as the default rather than "english", even though "english" will always be the default. Also marked cvar 'miles_debug' as FCVAR_DEVELOPMENTONLY.
2024-04-23 00:27:01 +02:00
Kawe Mazidjatari
065f86391e Miles: put event queue warnings behind a cvar
These warnings can get verbose, especially if events from the map itself are missing. Put behind a cvar and enabled it by default in development configurations.
2024-04-23 00:15:02 +02:00
Kawe Mazidjatari
8ef05a8f43 Launcher: several fixes and improvements
- Reload map list each time the combo box is opened (needs to refresh if user installed a new map while launcher is still open).
- Reload playlists each time the combo box is opened (makes sure that the list is up-to-date if user modified it in any way).
- Use global VPK dir regex to parse out map names.
2024-04-23 00:06:11 +02:00
Kawe Mazidjatari
29fd9e3ed7 VpkLib: make regex available to other code and utilize those instead
Prevent copies or similar patterns that might not work as good.
2024-04-23 00:03:31 +02:00
Kawe Mazidjatari
f4797d920c CppKore: add callback for drop down opened event 2024-04-23 00:01:50 +02:00
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