Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 697bff9752 | |||
| 0fa2e0540b | |||
| a1a123054f | |||
| 76d581c419 | |||
| 4f91ab9cff | |||
| e6111f8dbd | |||
| 7ec6e385a0 | |||
| 7427357bc5 | |||
| 6b63d54eb8 | |||
| a3df782245 | |||
| d4650aac84 | |||
| 73b1c95257 | |||
| 93fe999249 | |||
| 393a591485 | |||
| 2b8cbafa19 |
+22
-20
@@ -22,36 +22,31 @@ jobs:
|
|||||||
if: ${{ github.event_name == 'push' }}
|
if: ${{ github.event_name == 'push' }}
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
git fetch --tags || true
|
git fetch --tags --force
|
||||||
|
|
||||||
# Determine last tag and log range
|
if LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null); then
|
||||||
if git describe --tags --abbrev=0 >/dev/null 2>&1; then
|
|
||||||
LAST_TAG=$(git describe --tags --abbrev=0)
|
|
||||||
RANGE="${LAST_TAG}..HEAD"
|
RANGE="${LAST_TAG}..HEAD"
|
||||||
else
|
else
|
||||||
LAST_TAG="v0.1.9"
|
LAST_TAG="v0.1.9"
|
||||||
RANGE="HEAD"
|
RANGE="HEAD"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Calculate next version
|
|
||||||
IFS='.' read -r major minor patch <<< "${LAST_TAG#v}"
|
IFS='.' read -r major minor patch <<< "${LAST_TAG#v}"
|
||||||
NEW_VERSION="$major.$minor.$((patch + 1))"
|
NEW_VERSION="$major.$minor.$((patch + 1))"
|
||||||
NEW_TAG="v$NEW_VERSION"
|
|
||||||
|
|
||||||
# Log commits
|
|
||||||
CHANGELOG=$(git log $RANGE --oneline | sed 's/^/* /')
|
CHANGELOG=$(git log $RANGE --oneline | sed 's/^/* /')
|
||||||
[ -z "$CHANGELOG" ] && CHANGELOG="Maintenance build."
|
if [ -z "$CHANGELOG" ]; then
|
||||||
|
CHANGELOG="Re-run of version $NEW_VERSION or maintenance build."
|
||||||
|
fi
|
||||||
|
|
||||||
# Tag and push back to Gitea
|
|
||||||
git tag $NEW_TAG
|
|
||||||
git push origin $NEW_TAG
|
|
||||||
|
|
||||||
# Set outputs for next steps
|
|
||||||
echo "version-string=$NEW_VERSION" >> $GITHUB_OUTPUT
|
echo "version-string=$NEW_VERSION" >> $GITHUB_OUTPUT
|
||||||
echo "changelog<<EOF" >> $GITHUB_OUTPUT
|
echo "new-tag=v$NEW_VERSION" >> $GITHUB_OUTPUT
|
||||||
echo "## What's Changed" >> $GITHUB_OUTPUT
|
{
|
||||||
echo "$CHANGELOG" >> $GITHUB_OUTPUT
|
echo "changelog<<EOF"
|
||||||
echo "EOF" >> $GITHUB_OUTPUT
|
echo "## What's Changed"
|
||||||
|
echo "$CHANGELOG"
|
||||||
|
echo "EOF"
|
||||||
|
} >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Setup Tools Cache
|
- name: Setup Tools Cache
|
||||||
id: tools-cache
|
id: tools-cache
|
||||||
@@ -124,11 +119,18 @@ jobs:
|
|||||||
name: unlocker-build
|
name: unlocker-build
|
||||||
path: unlocker.zip
|
path: unlocker.zip
|
||||||
|
|
||||||
|
- name: Finalize Version and Push Tag
|
||||||
|
if: ${{ github.event_name == 'push' && success() }}
|
||||||
|
run: |
|
||||||
|
git tag ${{ steps.calculate-version.outputs.new-tag }}
|
||||||
|
git push origin ${{ steps.calculate-version.outputs.new-tag }}
|
||||||
|
|
||||||
- name: Create Gitea Release
|
- name: Create Gitea Release
|
||||||
if: ${{ github.event_name == 'push' }}
|
if: ${{ github.event_name == 'push' && success() }}
|
||||||
uses: akkuman/gitea-release-action@v1
|
uses: akkuman/gitea-release-action@v1
|
||||||
with:
|
with:
|
||||||
files: unlocker.zip
|
files: unlocker.zip
|
||||||
tag_name: v${{ steps.calculate-version.outputs.version-string }}
|
tag_name: ${{ steps.calculate-version.outputs.new-tag }}
|
||||||
name: Release v${{ steps.calculate-version.outputs.version-string }}
|
name: Release ${{ steps.calculate-version.outputs.new-tag }}
|
||||||
body: ${{ steps.calculate-version.outputs.changelog }}
|
body: ${{ steps.calculate-version.outputs.changelog }}
|
||||||
|
|
||||||
@@ -8,3 +8,4 @@ for /r "src" %%f in (*.cpp *.h *.cs) do (
|
|||||||
|
|
||||||
echo done
|
echo done
|
||||||
pause
|
pause
|
||||||
|
|
||||||
+105
-109
@@ -1,111 +1,107 @@
|
|||||||
{
|
{
|
||||||
"Camper": {
|
"Campers": [
|
||||||
"Items": [
|
"Father_Key_Card",
|
||||||
"Father_Key_Card",
|
"FireflyLantern",
|
||||||
"FireflyLantern",
|
"Item_Camper_AlexsToolbox",
|
||||||
"Item_Camper_AlexsToolbox",
|
"Item_Camper_AnniversaryToolbox",
|
||||||
"Item_Camper_AnniversaryToolbox",
|
"Item_Camper_BeigeMap",
|
||||||
"Item_Camper_BeigeMap",
|
"Item_Camper_BrokenKey",
|
||||||
"Item_Camper_BrokenKey",
|
"Item_Camper_CommodiousToolbox",
|
||||||
"Item_Camper_CommodiousToolbox",
|
"Item_Camper_ContaminationSerum",
|
||||||
"Item_Camper_ContaminationSerum",
|
"Item_Camper_DullKey",
|
||||||
"Item_Camper_DullKey",
|
"Item_Camper_EngineerToolbox",
|
||||||
"Item_Camper_EngineerToolbox",
|
"Item_Camper_FadedMap",
|
||||||
"Item_Camper_FadedMap",
|
"Item_Camper_Firecracker_Anniversary2019",
|
||||||
"Item_Camper_Firecracker_Anniversary2019",
|
"Item_Camper_Firecracker_Chinese",
|
||||||
"Item_Camper_Firecracker_Chinese",
|
"Item_Camper_Firecracker_Flashbang",
|
||||||
"Item_Camper_Firecracker_Flashbang",
|
"Item_Camper_Firecracker_WinterEvent",
|
||||||
"Item_Camper_Firecracker_WinterEvent",
|
"Item_Camper_Flashlight",
|
||||||
"Item_Camper_Flashlight",
|
"Item_Camper_Flashlight_Anniversary2020",
|
||||||
"Item_Camper_Flashlight_Anniversary2020",
|
"Item_Camper_Flashlight_Anniversary2022",
|
||||||
"Item_Camper_Flashlight_Anniversary2022",
|
"Item_Camper_Flashlight_Random",
|
||||||
"Item_Camper_Flashlight_Random",
|
"Item_Camper_Flashlight02",
|
||||||
"Item_Camper_Flashlight02",
|
"Item_Camper_Flashlight03",
|
||||||
"Item_Camper_Flashlight03",
|
"Item_Camper_Flashlight04",
|
||||||
"Item_Camper_Flashlight04",
|
"Item_Camper_JerryCan_Spring2025",
|
||||||
"Item_Camper_JerryCan_Spring2025",
|
"Item_Camper_K29InfectionRemover",
|
||||||
"Item_Camper_K29InfectionRemover",
|
"Item_Camper_K32Emp",
|
||||||
"Item_Camper_K32Emp",
|
"Item_Camper_K33Turret",
|
||||||
"Item_Camper_K33Turret",
|
"Item_Camper_K36MagicItem_Boots",
|
||||||
"Item_Camper_K36MagicItem_Boots",
|
"Item_Camper_K36MagicItem_Bracers",
|
||||||
"Item_Camper_K36MagicItem_Bracers",
|
"Item_Camper_K36MagicItem_VecnaEye",
|
||||||
"Item_Camper_K36MagicItem_VecnaEye",
|
"Item_Camper_K36MagicItem_VecnaHand",
|
||||||
"Item_Camper_K36MagicItem_VecnaHand",
|
"Item_Camper_Key",
|
||||||
"Item_Camper_Key",
|
"Item_Camper_Key_Random",
|
||||||
"Item_Camper_Key_Random",
|
"Item_Camper_LunarToolbox",
|
||||||
"Item_Camper_LunarToolbox",
|
"Item_Camper_Map_Random",
|
||||||
"Item_Camper_Map_Random",
|
"Item_Camper_Map_Spring2024",
|
||||||
"Item_Camper_Map_Spring2024",
|
"Item_Camper_MechanicsToolbox",
|
||||||
"Item_Camper_MechanicsToolbox",
|
"Item_Camper_MedKit",
|
||||||
"Item_Camper_MedKit",
|
"Item_Camper_Medkit_Anniversary2020",
|
||||||
"Item_Camper_Medkit_Anniversary2020",
|
"Item_Camper_Medkit_Anniversary2022",
|
||||||
"Item_Camper_Medkit_Anniversary2022",
|
"Item_Camper_MedKit_Random",
|
||||||
"Item_Camper_MedKit_Random",
|
"Item_Camper_MedKit02",
|
||||||
"Item_Camper_MedKit02",
|
"Item_Camper_MedKit03",
|
||||||
"Item_Camper_MedKit03",
|
"Item_Camper_MedKit04",
|
||||||
"Item_Camper_MedKit04",
|
"Item_Camper_Medkit05",
|
||||||
"Item_Camper_Medkit05",
|
"Item_Camper_OnryoTape",
|
||||||
"Item_Camper_OnryoTape",
|
"Item_Camper_RainbowMap",
|
||||||
"Item_Camper_RainbowMap",
|
"Item_Camper_Toolbox",
|
||||||
"Item_Camper_Toolbox",
|
"Item_Camper_Toolbox_Anniversary2022",
|
||||||
"Item_Camper_Toolbox_Anniversary2022",
|
"Item_Camper_Toolbox_Random",
|
||||||
"Item_Camper_Toolbox_Random",
|
"Item_Camper_VoidBomb_Halloween2024",
|
||||||
"Item_Camper_VoidBomb_Halloween2024",
|
"Item_Camper_WornoutToolbox",
|
||||||
"Item_Camper_WornoutToolbox",
|
"Item_FragileObject",
|
||||||
"Item_FragileObject",
|
"Item_LamentConfiguration",
|
||||||
"Item_LamentConfiguration",
|
"Item_Survivor_CalamariContaminationAntidote",
|
||||||
"Item_Survivor_CalamariContaminationAntidote",
|
"Item_Survivor_K41Mushroom",
|
||||||
"Item_Survivor_K41Mushroom",
|
"Item_Survivor_MakeshiftFogVial",
|
||||||
"Item_Survivor_MakeshiftFogVial",
|
"Item_Survivor_PrototypeFogVial",
|
||||||
"Item_Survivor_PrototypeFogVial",
|
"Item_Survivor_VigosFogVial"
|
||||||
"Item_Survivor_VigosFogVial"
|
],
|
||||||
]
|
"Slashers": [
|
||||||
},
|
"Item_Blighted_Serum",
|
||||||
"Slasher": {
|
"Item_Slasher_Beartrap",
|
||||||
"Powers": [
|
"Item_Slasher_Blinker",
|
||||||
"Item_Blighted_Serum",
|
"Item_Slasher_Chainsaw",
|
||||||
"Item_Slasher_Beartrap",
|
"Item_Slasher_CloakBell",
|
||||||
"Item_Slasher_Blinker",
|
"Item_Slasher_DreamInducer",
|
||||||
"Item_Slasher_Chainsaw",
|
"Item_Slasher_Frenzy",
|
||||||
"Item_Slasher_CloakBell",
|
"Item_Slasher_GasBomb",
|
||||||
"Item_Slasher_DreamInducer",
|
"Item_Slasher_GhostPower",
|
||||||
"Item_Slasher_Frenzy",
|
"Item_Slasher_HarpoonRifle",
|
||||||
"Item_Slasher_GasBomb",
|
"Item_Slasher_Hatchet",
|
||||||
"Item_Slasher_GhostPower",
|
"Item_Slasher_K21Power",
|
||||||
"Item_Slasher_HarpoonRifle",
|
"Item_Slasher_K22Power",
|
||||||
"Item_Slasher_Hatchet",
|
"Item_Slasher_K24Power",
|
||||||
"Item_Slasher_K21Power",
|
"Item_Slasher_K25Power",
|
||||||
"Item_Slasher_K22Power",
|
"Item_Slasher_K26Power",
|
||||||
"Item_Slasher_K24Power",
|
"Item_Slasher_K27Power",
|
||||||
"Item_Slasher_K25Power",
|
"Item_Slasher_K28Power",
|
||||||
"Item_Slasher_K26Power",
|
"Item_Slasher_K29Power",
|
||||||
"Item_Slasher_K27Power",
|
"Item_Slasher_K30Power",
|
||||||
"Item_Slasher_K28Power",
|
"Item_Slasher_K31Power",
|
||||||
"Item_Slasher_K29Power",
|
"Item_Slasher_K32Power",
|
||||||
"Item_Slasher_K30Power",
|
"Item_Slasher_K33Power",
|
||||||
"Item_Slasher_K31Power",
|
"Item_Slasher_K34Power",
|
||||||
"Item_Slasher_K32Power",
|
"Item_Slasher_K35Power",
|
||||||
"Item_Slasher_K33Power",
|
"Item_Slasher_K36Power",
|
||||||
"Item_Slasher_K34Power",
|
"Item_Slasher_K37Power",
|
||||||
"Item_Slasher_K35Power",
|
"Item_Slasher_K38Power",
|
||||||
"Item_Slasher_K36Power",
|
"Item_Slasher_K39Power",
|
||||||
"Item_Slasher_K37Power",
|
"Item_Slasher_K40Power",
|
||||||
"Item_Slasher_K38Power",
|
"Item_Slasher_K41Power",
|
||||||
"Item_Slasher_K39Power",
|
"Item_Slasher_K42Power",
|
||||||
"Item_Slasher_K40Power",
|
"Item_Slasher_Kanobo",
|
||||||
"Item_Slasher_K41Power",
|
"Item_Slasher_Killer07Item",
|
||||||
"Item_Slasher_K42Power",
|
"Item_Slasher_LFChainsaw",
|
||||||
"Item_Slasher_Kanobo",
|
"Item_Slasher_PhantomTrap",
|
||||||
"Item_Slasher_Killer07Item",
|
"Item_Slasher_PhaseWalker",
|
||||||
"Item_Slasher_LFChainsaw",
|
"Item_Slasher_PlaguePower",
|
||||||
"Item_Slasher_PhantomTrap",
|
"Item_Slasher_QatarKillerPower",
|
||||||
"Item_Slasher_PhaseWalker",
|
"Item_Slasher_ReverseBearTrap",
|
||||||
"Item_Slasher_PlaguePower",
|
"Item_Slasher_Stalker",
|
||||||
"Item_Slasher_QatarKillerPower",
|
"Item_Slasher_ThrowingKnives",
|
||||||
"Item_Slasher_ReverseBearTrap",
|
"Item_Slasher_TormentMode"
|
||||||
"Item_Slasher_Stalker",
|
]
|
||||||
"Item_Slasher_ThrowingKnives",
|
|
||||||
"Item_Slasher_TormentMode"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+2
-2
@@ -104,8 +104,8 @@ class DumpByDaylight
|
|||||||
|
|
||||||
var itemsSerialized = new
|
var itemsSerialized = new
|
||||||
{
|
{
|
||||||
Camper = new { Items = camperItems.OrderBy(x => x).ToList() },
|
Campers = camperItems.OrderBy(x => x).ToList(),
|
||||||
Slasher = new { Powers = slasherPowers.OrderBy(x => x).ToList() }
|
Slashers = slasherPowers.OrderBy(x => x).ToList()
|
||||||
};
|
};
|
||||||
File.WriteAllText("items.json", JsonConvert.SerializeObject(itemsSerialized, Formatting.Indented));
|
File.WriteAllText("items.json", JsonConvert.SerializeObject(itemsSerialized, Formatting.Indented));
|
||||||
|
|
||||||
|
|||||||
+483
-501
File diff suppressed because it is too large
Load Diff
+20
-4
@@ -5,6 +5,8 @@
|
|||||||
#include <unordered_set>
|
#include <unordered_set>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
#include <mutex>
|
||||||
|
|
||||||
#include <nlohmann/json_fwd.hpp>
|
#include <nlohmann/json_fwd.hpp>
|
||||||
|
|
||||||
class Spoofer
|
class Spoofer
|
||||||
@@ -16,11 +18,22 @@ class Spoofer
|
|||||||
void registerListeners(Proxy* proxy);
|
void registerListeners(Proxy* proxy);
|
||||||
void loadData();
|
void loadData();
|
||||||
|
|
||||||
void parseCatalog(std::string data);
|
bool parseCatalog(std::string data);
|
||||||
|
bool parseStackable(std::string data, std::unordered_set<std::string>& camperSet,
|
||||||
|
std::unordered_set<std::string>& slasherSet);
|
||||||
|
|
||||||
void parseAndDumpCatalog(std::string& data);
|
std::string getRandomItem();
|
||||||
|
int getRandomQuantity();
|
||||||
|
|
||||||
|
void generateBloodweb(nlohmann::json& data);
|
||||||
void modifyCharacterData(nlohmann::json& js);
|
void modifyCharacterData(nlohmann::json& js);
|
||||||
|
|
||||||
|
void onGetCatalogItems(std::string& body);
|
||||||
|
void onGetAll(std::string& body);
|
||||||
|
void onInventoryAll(std::string& body);
|
||||||
|
void onMessageList(std::string& body);
|
||||||
|
void onBloodweb(std::string& body, std::string& respHeaders);
|
||||||
|
|
||||||
void serverResponseHandler(const std::string& url, std::string& body, std::string& respHeaders);
|
void serverResponseHandler(const std::string& url, std::string& body, std::string& respHeaders);
|
||||||
void clientRequestHandler(std::string& url, const std::string& body, std::string& reqHeaders);
|
void clientRequestHandler(std::string& url, const std::string& body, std::string& reqHeaders);
|
||||||
|
|
||||||
@@ -33,11 +46,14 @@ class Spoofer
|
|||||||
std::unordered_set<std::string> _camperAddonIds;
|
std::unordered_set<std::string> _camperAddonIds;
|
||||||
std::unordered_set<std::string> _slasherAddonIds;
|
std::unordered_set<std::string> _slasherAddonIds;
|
||||||
|
|
||||||
std::unordered_set<std::string> _slasherPerkIds;
|
|
||||||
std::unordered_set<std::string> _camperPerkIds;
|
std::unordered_set<std::string> _camperPerkIds;
|
||||||
|
std::unordered_set<std::string> _slasherPerkIds;
|
||||||
|
|
||||||
std::unordered_set<std::string> _catalogOutfitIds;
|
std::unordered_set<std::string> _catalogOutfitIds;
|
||||||
std::unordered_set<std::string> _catalogItemIds;
|
std::unordered_set<std::string> _catalogItemIds;
|
||||||
|
|
||||||
std::string _lastBloodWebChar = "Ace";
|
std::unordered_set<std::string> _unownedCharacters;
|
||||||
|
|
||||||
|
std::string _lastBloodWebChar = "";
|
||||||
|
std::mutex _mtx;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
#include "utils.h"
|
||||||
|
|
||||||
|
#include <minwindef.h>
|
||||||
|
#include <libloaderapi.h>
|
||||||
|
|
||||||
|
std::string utils::getExePath()
|
||||||
|
{
|
||||||
|
char buffer[MAX_PATH];
|
||||||
|
GetModuleFileNameA(NULL, buffer, MAX_PATH);
|
||||||
|
std::string path(buffer);
|
||||||
|
size_t pos = path.find_last_of("\\/");
|
||||||
|
if (pos != std::string::npos) return path.substr(0, pos + 1);
|
||||||
|
return "";
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace utils
|
||||||
|
{
|
||||||
|
std::string getExePath();
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user