43 Commits

Author SHA1 Message Date
Kawe Mazidjatari
5adaf48d33 Add 'ShutdownHostGame()' to all VM's
Calling this before connecting to a different (remote or local) server avoids crashing in the VM's during shutdown.
2022-05-28 17:27:52 +02:00
Kawe Mazidjatari
e6ef3d71f1 Rename variable 'g_pIConsole' to 'g_pConsole' 2022-05-27 02:46:13 +02:00
Kawe Mazidjatari
47d2e4c915 See description
* Added new function 'GetAvailablePlaylists' to all VM's.
* Moved function 'GetAvailableMaps' from UI VM to all VM's.
* Improved logic behind 'GetAvailableMaps'.
* Server browser and SQVM now rely on 'MOD_GetAllInstalledMaps'. This new function populates the global vector 'g_vAllMaps' with all installed maps.
* Improved 'KeyValues' structure to use union for shared members.
2022-05-27 02:08:51 +02:00
Kawe Mazidjatari
4b72afb74f Light refactor for logging
Moved logging functions to dbg.h (tier0) and export them from the dll.
Added additional functions for checking bad pointers (debug only!).
Reduced output code size.
2022-05-25 14:18:29 +02:00
Kawe Mazidjatari
8bf6c196cd Improved SQVM structure
* Added more fields to the existing structure.
* Removed redundant C string casts.
Note: The global context objects appear to be a different class containing a pointer (0x8 in) to the VM objects.
2022-05-21 18:15:48 +02:00
Amos
d46db531a0 Use of v->GetContext() 2022-05-21 11:15:36 +02:00
rexx
e5880fe590 rename SQFuncRegistration to ScriptFunctionBinding_t 2022-05-20 20:33:37 +01:00
Kawe Mazidjatari
efb7c36408 Light project restructure
Moved server/client headers and implementations into dedicated subfolder.
Renamed Some classes to match the game binary (e.g. CBaseClient is now CClient).
Removed redundant files.
2022-05-20 11:52:19 +02:00
Kawe Mazidjatari
9f8ff78a8d Color logging improvements
Check local variable for overriding colors instead of relying on the global one set from 'sqstd_aux_printerror()'. This should make it render properly in the in-game console.
2022-05-20 02:14:54 +02:00
Kawe Mazidjatari
1fb89c35c8 Rename to more appropriate name 2022-05-20 01:16:30 +02:00
Kawe Mazidjatari
8c76283ba1 Color log game logic errors 2022-05-20 01:07:42 +02:00
Kawe Mazidjatari
8816a28372 SQVM cleanup
The SDK could now obtain context index for builds before S3
2022-05-19 02:19:43 +02:00
Kawe Mazidjatari
ddfdb4ffd8 See description
Add '-nodiscord' and '-nobakedparticles' to launch params for dedicated.
Add hook for 'MemAlloc_Internal()'.
Rename loggers to be more consistent with naming.
Revert omitting frame pointers.
2022-05-17 23:00:30 +02:00
Kawe Mazidjatari
452c8afcf3 Display '%' symbol properly in console 2022-05-10 23:32:44 +02:00
Kawe Mazidjatari
868d6ea14a Extraneous string array 2022-05-10 18:09:31 +02:00
Kawe Mazidjatari
46134434a9 Show script error callstacks and context in colors in the external console
Show colors on console and use color constant to determine color instead of comparing strings in the console render loop. removed 5 string compares which should once again bump the performance quite a bit. The last string compares will be removed soon
2022-05-09 21:21:05 +02:00
Kawe Mazidjatari
611ea6447a Console performance improvements and bug fixes
* Heavily reduced string compares for coloring logs (the left overs require a dedicated hook, this is for the future)
The new method uses a ImVec 4 constant containing the color obtained via a switch case by context, this is then out into the new CConLog structure where the loop in the console will now gather the colors directly from.
Error/Warning use a single constant.

* Fixed bugs in several log locations where the ostringstream was cleared before the emission causing double logs.

* Added global log mutex to log wrappers that lacked those.
2022-05-09 02:20:07 +02:00
PixieCore
a874d086cb Some defines for clientsdk compilation. 2022-04-27 16:48:18 +02:00
Kawe Mazidjatari
3ad668e37a Fix script command
Fixed problem where in certain cases input doesn't get compiled at all.
Fixed problem where quote marks don't get passed correctly to the execute wrapper function.

problems:
passing non-string object as reference to constructor.
using CCommand::Arg(index) seems to 'strip' quote marks from the actual buffer.
2022-04-22 02:27:35 +02:00
Kawe Mazidjatari
3d32346b39 Fix patterns for S1 and removed redundant code 2022-04-19 00:00:45 +02:00
Kawe Mazidjatari
8c1dfb50f4 Address class cleanup/improvements
* Move most definitions to implementation file to avoid recompiling whole program for small changes
* Pass strings by reference for where possible.
* Split Module class to dedicated file.
* Add const qualifiers to all eligible methods for address/module class
* Some renaming
2022-04-10 19:59:34 +02:00
Kawe Mazidjatari
2dcbf59041 Move ConVar/ConCommand stuff to tier1 instead and cleanup KeyValues/KeyValuesSystem 2022-04-09 16:16:40 +02:00
Kawe Mazidjatari
b4485f1d23 Add extra SQVM features
Added 'GetNumHumanPlayers' and 'GetNumFakeClients' to SERVER vm
Changed hardcoded strings in UI 'GetPromoData' to localization keys

TODO: add localization files to SDK
2022-04-02 13:03:11 +02:00
Kawe Mazidjatari
5d69d7284e Slight project cleanup 2022-04-02 12:27:35 +02:00
Kawe Mazidjatari
a6b92f8713 Strip server vm reference from client dll 2022-03-31 17:23:14 +02:00
Kawe Mazidjatari
66146f6590 Adapt majority of SQVM to SQ types 2022-03-31 02:26:05 +02:00
Kawe Mazidjatari
79f99970c6 Implemented SERVER, CLIENT and UI script commands
User can now execute script on the SERVER, CLIENT and UI vm's through the SDK
2022-03-30 22:54:33 +02:00
Kawe Mazidjatari
446f13680f Improve SQVM function registration and add SERVER and CLIENT logic
SERVER and CLIENT functions can now be registered as well.
For checking whether to register for CLIENT or UI, we now check its context instead of comparing pointers. For server, a dedicated function was build.
2022-03-28 19:34:51 +02:00
Kawe Mazidjatari
bccd936040 Add 'SQVM_CreateServerVM()', 'g_pServerVM', and 'SQVM_CreateClientVM()', g_pClientVM
TODO: Get and hook DestroyVM
2022-03-28 12:09:40 +02:00
Amos
6e4a4bde2f Implement SQVM error rebuild in engine with new Warning and Error loggers 2022-03-04 15:34:09 +01:00
Amos
8079e0ed4c Heavy cleanup for CHostState methods and signatures
* Add Cbuf_AddText and Cbuf_Execute signatures.
* Remove additional VGui stuff from dedicated statemachine.
* Move signatures to their respective headers.
* De-inline 'CHostState::FrameUpdate()'
* Ported al new patters to GAMEDLL_S1, CEngine still recreation needs extra work
2022-02-19 02:31:16 +01:00
Amos
5d60324a2e Add more color logging + RCON color logging 2022-02-17 18:00:29 +01:00
Amos
a5da2e81bf RCON improvements (see description)
** SERVER **
* Close redundant connections if max sockets have been reached.
* Ban if client keeps spamming without authing first (ignoring message).
* Check for whitelisted address before issuing bans (whitelisted address in ConVar 'sv_rcon_whitelist_address' will never get banned or get its connection terminated.
* Transmit SQVM and DevMsg logs over the wire to the net console.

** NETCON **
* IPv6 support.
* Close connection properly after FIN request.
* Prompt user to reconnect after connection has been terminated instead of closing the application.
* Add proper quit command.

** SDKLAUNCHER **
* Rename to 'launcher.exe' to describe its purpose better. Our logo gets printed nice and large on the console during startup.

** SDK **
* Cleanup.
2022-02-08 16:32:00 +01:00
Amos
087a1487ec Fix SQVM warning 2022-01-22 15:41:30 +01:00
Amos
998de21d73 Implement new FileSystem hooks
The hooks will check if the file in question exist on the disk first before falling back to VPK or obtaining it from the cache.
2022-01-19 19:03:11 +01:00
Amos
381b97eb65 Remove unnecessary include
basetypes.h is now precompiled
2022-01-16 01:40:27 +01:00
Amos
f909635526 Separate SQVM function namespaces per VM type
* Separate based on VM type instead.
* Allow compilation for DEDICATED.
2022-01-16 00:35:39 +01:00
r-ex
b366e4ce82
sq server browser clean up (#63)
* sq server browser clean up

* Properly loop through std::vector on GetAvailableMaps.

Co-authored-by: IcePixelx <41352111+PixieCore@users.noreply.github.com>
2022-01-15 18:57:18 +01:00
IcePixelx
829e122cea SQ Serverbrowser V1 push. Clean-up following after @r-ex fixed SQ things. 2022-01-15 15:25:19 +01:00
Amos
1c5df4e178 Ansi terminal color support + big optimizations on all log systems + 'Warning()' hook
* Ansi colors can now be enabled with the '-ansiclr- flag.
* All loggers have been optimized and are all initialized only once at process startup.
* New hook for 'Warning()' print function with warning level.
2022-01-14 20:48:16 +01:00
Amos
de3b3f53bd Optimizations + QoL improvements/cleanup
* IConsole overlay now clears the oldest log entries to stay under the vector limit instead of clearing the whole vector.
* IConsole code cleanup.
* IBrowser code cleanup, reordered class methods.
* Use ConVar utilities to get/set values for strings in IBrowser and IConsole.
* New ConVar's for RUI console overlay to tweak colors.
2022-01-12 02:56:17 +01:00
Amos
64c07af6e0 Cleanup to use new ConVar utilities 2022-01-09 17:17:05 +01:00
Amos
d5b2e58dae Code base refactor + major performance and readability improvement. Read description for details.
* Codebase restructured to SourceSDK codebase style and .cpp/.h assertion paths in the game executable.
* Document most functions with valve style 'Purpose' blocks.
* Rename variables to match the rest of the codebase and Valve's naming convention.
* Dedicated DLL and the SDKLauncher now share the same codebase as the DevSDK.

* Obtain globals or pointers directly instead of waiting for runtime initialized data.
* Dynamically search for all functions and globals (this doesn't count for dedicated yet!).
* Initialize most in-SDK variables.

* Move certain prints and other utilities under ConVars to reduce verbosity and increase performance.
* Print all pattern scan results through a virtual function to make it easier to add and debug new patterns in the future.
* Type global var pointers appropriately if class or type is known and implemented.
* Forward declare 'CClient' class to avoid having 2 'g_pClient' copies.
* Add IDA's pseudo definitions for easier prototyping with decompiled assembly code.

* RPAK decompress Command callback implementation.
* Load decompressed RPaks from 'paks\Win32\' overriding the ones in 'paks\Win64\' (the decompress callback will automatically fix the header and write it to 'paks\Win32\').

* VPK decompress Command callback implementation.
* Move CRC32 ands Adler32 to implementation files.

* Server will print out more details about the connecting client.

* Upgrade ImGui lib to v1.86.
* Don't compile id3dx.h for dedicated.
* Don't compile id3dx.cpp for dedicated
* Implement DevMsg print function allowing to print information to the in-game VGUI/RUI console overlay, ImGui console overlay and the external windows console

* Fixed bug where the Error function would not properly terminate the process when an error is called. This caused access violations for critical/non-recoverable errors.
* Fixed bug where the game would crash if the console or server browser was enabled while the game was still starting up.
* Several bug fixes for the dedicated server (warning: dedicated is still considered work-in-progress!).
2021-12-25 22:36:38 +01:00