0
0
mirror of https://github.com/sp-tarkov/modules.git synced 2025-02-13 03:30:44 -05:00

310 Commits

Author SHA1 Message Date
Merijn Hendriks
4b401e7449 async-bundles (!117)
This patch contains the following:

- Initial async VFS code (for reading / writing files)
- Simplified Http Client code
- Added async support to Http Client, RequestHandler
- Improved RequestHandler logging
- Deferred bundle loading to EasyAssetPatch
- Make GetManifestJson run async

This comes with a number of benefits:

- When downloading bundles, it will mention which files succeeded or failed to download
- Bundle loading happens in the initial screen, not the white screen
- Fixed the issue where bundle loading could break bepinex loading (too long load time)
- Modders can now make async http request and read/write files async

I removed logging of sessionid inside the RequestHandler for each request, sessionid is already visible from bepinex log startup parameters.

At last, sorry for the amount of commits it took. I initially wanted to target the 3.9.0 branch, but decided to use 3.8.1 instead as async request can really help out some mods.

Reviewed-on: SPT-AKI/Modules#117
Co-authored-by: Merijn Hendriks <merijn.d.hendriks@gmail.com>
Co-committed-by: Merijn Hendriks <merijn.d.hendriks@gmail.com>
2024-05-06 10:28:51 +00:00
ed5428ed88 3.8.1-DEV (!121)
Reviewed-on: SPT-AKI/Modules#121
2024-05-05 08:57:18 +00:00
d6845c4337 If SPT is started by directly running EscapeFromTarkov.exe, exit (!116)
Inform user via messagebox that they need to run Aki.Launcher.exe
Refactored a bit of the validation code in Aki.Prepatch

Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Reviewed-on: SPT-AKI/Modules#116
Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
3.8.1
2024-04-29 07:00:32 +00:00
84cc152e17 Exit if the user has deleted the BepInEx/plugins/spt folder (!109)
Added as a check in the PrePatch, because while users delete `BepInEx/plugins/spt` often, it would be uncommon for them to also delete the prepatcher

No idea why there's a second commit in this PR, it doesn't actually change anything. Just Git Things™

Co-authored-by: Terkoiz <terkoiz@spt.dev>
Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Reviewed-on: SPT-AKI/Modules#109
Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
2024-04-17 07:49:49 +00:00
Dev
6041bea712 made AddLoot() async Task so it can be awaited 2024-04-11 16:20:15 +01:00
Dev
558d5a3f6e Added money to non-FiR list for PMCs 2024-04-08 10:07:11 +01:00
42d2ac37dd
increase the ragdoll limits to hopefully prevent bodys falling into themselves 2024-04-05 00:17:23 -04:00
688ff6f334
Merge tag '3.8.0'
# Conflicts:
#	project/Aki.Core/AkiCorePlugin.cs
#	project/Aki.Core/Utils/ValidationUtil.cs
#	project/Aki.Custom/Aki.Custom.csproj
#	project/Aki.Custom/Patches/CustomAiPatch.cs
#	project/Aki.Debugging/AkiDebuggingPlugin.cs
#	project/Aki.SinglePlayer/AkiSingleplayerPlugin.cs
#	project/Aki.SinglePlayer/Patches/Progression/OfflineSaveProfilePatch.cs
#	project/Aki.SinglePlayer/Patches/RaidFix/LabsKeycardRemovalPatch.cs
#	project/Aki.SinglePlayer/Patches/ScavMode/ScavLateStartPatch.cs
3.8.0
2024-04-05 00:14:52 -04:00
2fbaef5eff Clamp the Y velocity so bots dont go flying into the air. 2024-04-01 14:03:10 +01:00
Merijn Hendriks
9c89c31c68 Modernize HTTP v2 (!104)
This PR won't affect modders who have already updated their mods to 3.8.0. They just need to re-compile.

This is a resubmission of my previous PR (SPT-AKI/Modules#99) with additional code cleanup and fixes.
Instead of outright removing the functionality, this time I deprecate it instead (marked for removal in next release).

Requires SPT-AKI/Server#274 to function.

## Overview

- HTTP modernization
  - Adds `Aki.Common.Http.Client`, a replacement for `Aki.Common.Http.Request` and builds on top of `System.Net.Http.HttpClient`
  - Implements failsafe retries when requesting during busy connections
  - Improved debugging
  - Improved performance
  - Deprecades old request code
- Bundle system
  - Fixes remote downloaded bundles using external IP
  - Implements functional bundle caching from remote sources
  - Implements multi-threaded bundle downloads
  - Implements Unity-compatible bundle format support
  - Extensive cleanup
  - Deprecated unneccecary models

## Why?

In it's current state, the bundle system is ducktaped together in 2021, fundumentally broken and in desperate need of a cleanup and fixes.
The HTTP code hasn't been updated since 2021, and `HttpWebRequest` has been deprecated by Microsoft for a while now.
There was also a lot of opportunity left for simple performance gains that even reduces the complexity of the code.

As for why not two separate PRs (HTTP modernization, bundle rework): both were deeply interconnected. A change in one requires modification in the other. Hence the current approach.

## Testing

The code has been validated and tested by @TheSparta and me.
A large section of the code has been implemented and tested extensively by modders.

### Local

1. Start the game from 127.0.0.1
2. The game starts loading bundles from the mods path

### Remote, full re-aquire

1. Start the server from LAN IP (http.json, set host to `cmd > ipconfig` address, example: `192.168.178.32`)
2. Start the game from LAN IP
3. A folder named `user/cache/bundles` is created

### Remote, partial-aquire (deleted)

1. Ensure all bundles are cached
2. Delete one of the aquired bundles from cache
3. Start the server from LAN IP (http.json, set host to `cmd > ipconfig` address, example: `192.168.178.32`)
4. Start the game from LAN IP
5. The bundle is redownloaded

### Remote, partial-aquire (invalid crc)

1. Ensure all bundles are cached
2. Update a bundle mod with a new bundle on the same path
3. Start the server from LAN IP (http.json, set host to `cmd > ipconfig` address, example: `192.168.178.32`)
4. Start the game from LAN IP
5. The bundle is redownloaded

### Remote, use cache

1. Ensure all bundles are cached
2. Start the server from LAN IP (http.json, set host to `cmd > ipconfig` address, example: `192.168.178.32`)
3. Start the game from LAN IP
4. The game starts loading bundles from the cache path

## Risk assessment

In order to reduce friction between releases, this PR introduces a deprecation system.
Obsolete classes and methods have been marked deprecated.
These will remain available for the current release and continue to function as normal for this release.
A warning will be displayed during build when a modder relies on the deprecated functionality.
The marked classes and methods are to be removed in the next release.

The server-side changes have no impact on modders.

## Deprecation

The following classes are affected:

- `Aki.Common.Http.Request`: Replaced by `Aki.Common.Http.Request`
- `Aki.Common.Http.WebConstants`: Replaced by functionality from `System.Net.Http`
- `Aki.Custom.Models.BundleInfo`: Replaced by `Aki.Custom.Models.BundleItem`

The following methods are affected:

- `Aki.Common.Http.RequestHandler.GetData(path, hasHost)`: `hasHost` enables connection outside intended host.
- `Aki.Common.Http.RequestHandler.GetJson(path, hasHost)`: `hasHost` enables connection outside intended host.
- `Aki.Common.Http.RequestHandler.PostJson(path, json, hasHost)`: `hasHost` enables connection outside intended host.
- `Aki.Common.Http.RequestHandler.PutJson(path, json, hasHost)`: `hasHost` enables connection outside intended host.

The deprecated methods and `Aki.Custom.Models.BundleInfo` are self-contained and can be removed independently.
The deprecated classes require removal of all deprecated code at once.

Reviewed-on: SPT-AKI/Modules#104
Reviewed-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
Co-authored-by: Merijn Hendriks <merijn.d.hendriks@gmail.com>
Co-committed-by: Merijn Hendriks <merijn.d.hendriks@gmail.com>
2024-03-29 18:43:46 +00:00
f0c18a5135
Updates build trigger email address 2024-03-28 20:25:43 -04:00
Dev
a4669f9c1e Remove bad remapping:
"GStruct419": "AchievementModelClass"
2024-03-28 15:14:06 +00:00
979fb693c5 Modules Build Trigger (!103)
This is a workflow that triggers the build workflow of the Build project whenever this project has a tag pushed to it.

Reviewed-on: SPT-AKI/Modules#103
Co-authored-by: Refringe <me@refringe.com>
Co-committed-by: Refringe <me@refringe.com>
2024-03-28 14:55:47 +00:00
Dev
39483b13c3 Rename bad remapping of IBallisticsCalculator to ISubInteractions 2024-03-26 22:48:55 +00:00
Merijn Hendriks
245f21c3d8 Improve bundle documentation (!101)
Most of this code was (re-)written in 0.12.9, almost 3 years ago.
Current understanding of how it worked was limited, so I went back and broke it until I understood it properly.

I added comments where I could and slightly altered the logic of `GetManifestJson` to make it easier to read.

Regarding removal of `GetManifestBundle`: you can't. While `Windows.json` contains most of the bundle info, some info (like `Doge`) resides outside of this. Removing `GetManifestBundle` results in the game failing to load.

Reviewed-on: SPT-AKI/Modules#101
Co-authored-by: Merijn Hendriks <merijn.d.hendriks@gmail.com>
Co-committed-by: Merijn Hendriks <merijn.d.hendriks@gmail.com>
2024-03-25 09:53:20 +00:00
Dev
f3df1e319c Update mappings 2024-03-24 17:40:52 +00:00
701f676085 Decapitalize BepInEx sub-directories (!100)
This reverts changes to the directory paths made in commit: c7bc0b05143c7062a0c70150cb872b5070f4859c

fixes [SPT-AKI/Issues#588](SPT-AKI/Issues#588)

Co-authored-by: MadByte <madbyte@tuta.io>
Reviewed-on: SPT-AKI/Modules#100
Co-authored-by: MadByte <madbyte@noreply.dev.sp-tarkov.com>
Co-committed-by: MadByte <madbyte@noreply.dev.sp-tarkov.com>
2024-03-24 09:09:43 +00:00
b327096980 Ensure we only alter Playerscavs IsAi Data 2024-03-23 12:48:51 +00:00
44748dc0a6 Fix mounted Turrets causing errors 2024-03-23 11:29:42 +00:00
3aa514a5e8 Reworked ArmorDamageCounterPatch 2024-03-22 20:25:38 +00:00
a77fc7f036 Changed the way we count shot ammo. Fixed NRE when player is null when trying to calculate armor damage 2024-03-22 18:45:49 +00:00
c29589768d Add Patches to add extra data to end of raid screen 2024-03-21 15:21:57 +00:00
3885b9e585 Fix ref 2024-03-21 11:10:37 +00:00
df2df290f4 Update refs with updated remapping 2024-03-21 11:09:00 +00:00
Dev
831bf36327 Add additional remappings 2024-03-21 11:05:48 +00:00
37ae603982 Start of adding missing stats 2024-03-21 11:04:53 +00:00
Dev
065c446e83 Update patch to skip doing changes if group owner is player - same as client 2024-03-20 17:38:32 +00:00
497e581c1e Create an exfil dumper patch for aki-debugging (!98)
This patch can be used to dump the data contained in the `allExtracts.json` files in the server locations database. When enabled, load into each map sequentially, and the extract data will be dumped to `ExfilDumps/{mapName}/allExtracts.json`, ready to be copy/pasted into the server `database/locations` directory

Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Reviewed-on: SPT-AKI/Modules#98
Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
2024-03-20 09:45:46 +00:00
8443e6b5d3 Update Description of command 2024-03-19 12:54:17 +00:00
f43e907193 Fix patch looking for wrong Wildspawntype enum 2024-03-19 12:15:56 +00:00
b769a87b89 Add comment to explain expected behavior. 2024-03-19 11:18:34 +00:00
9d8c285094 Add a console command to reload client/profile 2024-03-19 09:43:17 +00:00
Dev
00f0d786f9 Add additional class remappings
Update readme to include additional info on powershell install
2024-03-18 16:37:54 +00:00
7650b751ae Last small optimization. 2024-03-17 18:18:03 +00:00
aa786f44a0 Optimization of getting mines and filtering them to only enable/disable lightkeepers mines. 2024-03-17 16:43:44 +00:00
b1e1841311 Small optimization 2024-03-17 16:00:40 +00:00
de325c8b0d remove CulistsPriestEvent and RavangeZryachiyEvent from running IsEnemyPatch Letting them use BSG logic instead.
Added a patch to handle Closing all extracts but 1 for when cultist ritual succeeds in halloween event.
Halloween Event doesnt seem to work well when map has newspawn system enabled. I think bots are getting stuck getting loaded. causing delayed spawns of cultists.
2024-03-17 12:47:59 +00:00
0afc0dd93b Fix nlog string formatting removing useful information, and throwing an exception in certain situations (!97)
Fixes exception thrown when trace logging is enabled and you accept a quest

Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Reviewed-on: SPT-AKI/Modules#97
Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
2024-03-17 08:56:30 +00:00
Cj
293fa8d90c Enable BSG logging (!96)
Needs merged with: SPT-AKI/Server#262

Short story first: Last night I was poking around the code as I always do looking for the cause of an exception and got sick and tired of the generic bad exceptions we always work off of. So I fixed it.

This allows us access to BSG's internal logging using Nlog. This is useful for everybody. Not just SPT dev's, but mod dev's alike. It can be enabled from `core.json` with the option to send the output to the server.

Here's an example of the improvement, its huge. Bepinex console is the gerneric logging we always use, the editor behind it is the improved logging from Nlog. Its night and day.

![image](/attachments/491dd8b6-e89a-4809-b19e-c5906ab6989e)

The levels are based off of Nlog ordinals where low is more logging, high is less. (Stupid I know, but what can you do)

Verbosity is as follows:
 * In all cases, except off, better exceptions will be logged.
 * to see the logging output in your bepinex logs, make sure you have debug logging enabled in bepinex.
 * WARNING: trace-info logging will quickly create log files in the megabytes.
 * 0 - trace
 * 1 - debug
 * 2 - info
 * 3 - warn
 * 4 - error
 * 5 - fatal
 * 6 - off

Co-authored-by: Cj <161484149+CJ-SPT@users.noreply.github.com>
Reviewed-on: SPT-AKI/Modules#96
Co-authored-by: Cj <cj@noreply.dev.sp-tarkov.com>
Co-committed-by: Cj <cj@noreply.dev.sp-tarkov.com>
2024-03-16 21:04:00 +00:00
Dev
540bf9fb59 Fix mapping error 2024-03-15 21:46:58 +00:00
Dev
690ad0faa6 Fix mapping issue 2024-03-15 16:47:11 +00:00
Dev
4877939224 Update mappings 2024-03-15 15:17:04 +00:00
Dev
eec51e84f1 Exit application when a patch fails 2024-03-14 17:18:42 +00:00
99313c9cc0 Update RagfairFeePatch 2024-03-14 17:13:35 +00:00
Dev
27c0d3f0ae Added patch failure handling, thanks to Drakia 2024-03-14 17:08:20 +00:00
Dev
fa423cb9be Update for 29197 2024-03-14 11:23:51 +00:00
Cj
73db17ea78 Show mods loaded in cool debug message (!95)
needs merged with: SPT-AKI/Server#258

Shows if mods are loaded in the cool debug message, will show if either server mods or client mods are present.

Co-authored-by: Cj <161484149+CJ-SPT@users.noreply.github.com>
Reviewed-on: SPT-AKI/Modules#95
Co-authored-by: Cj <cj@noreply.dev.sp-tarkov.com>
Co-committed-by: Cj <cj@noreply.dev.sp-tarkov.com>
2024-03-11 22:02:45 +00:00
6a77131249 Resolve an issue where Release builds of the server caused exceptions in the client (!94)
Some code cleanup and refactoring

Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Reviewed-on: SPT-AKI/Modules#94
Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
2024-03-11 08:44:50 +00:00
059334d0cd Fix the BTR turretview bot being visible (!92)
Rewrite the BTRTurretView attach patch, so we no longer need the BotInit patch

Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Reviewed-on: SPT-AKI/Modules#92
Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
2024-03-10 09:43:15 +00:00
f1a7a0cb99 Fix LightKeeper tasks not progressing correctly (!91)
To handle in-raid LK task unlocking, when a task is switched from AvailableAfter to Locked, instead switch it to AvailableForStart

This handles the lack of `status` values for tasks, where the target state would normally be read from, without risking breaking non-LK tasks by adding that data.

Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Reviewed-on: SPT-AKI/Modules#91
Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
2024-03-09 22:44:56 +00:00