Fixed InitOrGetGroup Completely and removed BLACK SCREEN bug with that.

This commit is contained in:
ZKWolf 2024-02-05 22:53:48 +01:00
parent 6887f8272d
commit 805231dd67

View File

@ -44,6 +44,109 @@ def steam_login_function():
logger.graylog_logger(level="error", handler="steam_login", message=e)
def get_init_or_get_groups(userid, request_data):
data = {}
skip_progression_groups = request_data["data"]["skipProgressionGroups"]
skip_metadata_groups = request_data["data"]["skipMetadataGroups"]
if not skip_progression_groups:
data["ProgressionGroups"] = [
{
"ObjectId": "RunnerProgression",
"Version": 1,
"SchemaVersion": 1.1,
"Data": {
"Experience": {
"Level": 1,
"CurrentExperience": 2,
"ExperienceToReach": 30
}
}
},
{
"ObjectId": "HunterProgression",
"Version": 1,
"SchemaVersion": 1.1,
"Data": {
"Experience": {
"Level": 1,
"CurrentExperience": 12,
"ExperienceToReach": 30
}
}
},
{
"ObjectId": "PlayerProgression",
"Version": 1,
"SchemaVersion": 1.1,
"Data": {
"Experience": {
"Level": 1,
"CurrentExperience": 12,
"ExperienceToReach": 30
}
}
}
]
if not skip_metadata_groups:
last_played_faction = mongo.get_data_with_list(login=userid, login_steam=False, items={"last_played_faction"})
tutorial_completed = mongo.get_data_with_list(login=userid, login_steam=False, items={"tutorial_completed"})
last_runner = mongo.get_data_with_list(login=userid, login_steam=False, items={"last_runner"})
last_hunter = mongo.get_data_with_list(login=userid, login_steam=False, items={"last_hunter"})
hasPlayedDeathGarden1 = mongo.get_data_with_list(login=userid, login_steam=False,
items={"hasPlayedDeathGarden1"})
print(last_played_faction, tutorial_completed, last_runner, last_hunter)
# {'last_played_faction': 'Runner'} {'tutorial_completed': False} {'last_runner': 'Runner.Fog'} {'last_hunter': 'Hunter.Inquisitor'}
runner_name = last_runner["last_runner"][7:]
hunter_name = last_hunter["last_hunter"][7:]
runner_equipment = mongo.get_data_with_list(login=userid, login_steam=False, items={runner_name})
hunter_equipment = mongo.get_data_with_list(login=userid, login_steam=False, items={hunter_name})
logger.graylog_logger(level="info", handler="logging_initOrGetGroups", message=request.get_json())
# print(runner_equipment, hunter_equipment)
runner_data = {"CharacterId": {"TagName": last_runner["last_runner"]},
"Equipment": runner_equipment[runner_name]["Equipment"],
"EquippedPerks": runner_equipment[runner_name]["EquippedPerks"],
"EquippedPowers": runner_equipment[runner_name]["EquippedPowers"],
"EquippedWeapons": runner_equipment[runner_name]["EquippedWeapons"],
"EquippedBonuses": runner_equipment[runner_name]["EquippedBonuses"]}
hunter_data = {"CharacterId": {"TagName": last_hunter["last_hunter"]},
"Equipment": hunter_equipment[hunter_name]["Equipment"],
"EquippedPerks": hunter_equipment[hunter_name]["EquippedPerks"],
"EquippedPowers": hunter_equipment[hunter_name]["EquippedPowers"],
"EquippedWeapons": hunter_equipment[hunter_name]["EquippedWeapons"],
"EquippedBonuses": hunter_equipment[hunter_name]["EquippedBonuses"]}
print(runner_equipment)
print(runner_equipment[runner_name])
player_data = {"LastPlayedFaction": last_played_faction["last_played_faction"],
"LastPlayedRunnerId": {"tagName": last_runner["last_runner"]},
"LastPlayedHunterId": {"tagName": last_hunter["last_hunter"]},
"shouldPlayWithoutContextualHelp": tutorial_completed["tutorial_completed"],
"hasPlayedDeathGarden1": hasPlayedDeathGarden1["hasPlayedDeathGarden1"]}
data["MetadataGroups"] = [
{
"ObjectId": "RunnerMetadata",
"Version": 1,
"SchemaVersion": 1.1,
"Data": runner_data
},
{
"ObjectId": "HunterMetadata",
"Version": 1,
"SchemaVersion": 1.1,
"Data": hunter_data
},
{
"ObjectId": "PlayerMetadata",
"Version": 1,
"SchemaVersion": 1.1,
"Data": player_data
}
]
return data
# This works
@app.route("/api/v1/auth/provider/steam/login", methods=["POST"])
def steam_login():
@ -108,6 +211,22 @@ def modifiers():
except Exception as e:
logger.graylog_logger(level="error", handler="modifiers_me", message=e)
@app.route("/api/v1/modifierCenter/modifiers/<userid>", methods=["GET"])
def modifiers_userid(userid):
check_for_game_client("strict")
session_cookie = sanitize_input(request.cookies.get("bhvrSession"))
userid = session_manager.get_user_id(session_cookie)
steamid, token = mongo.get_data_with_list(login=userid, login_steam=False,
items={"token", "steamid"})
try:
return jsonify({"TokenId": token, "UserId": userid, "RoleIds": ["755D4DFE-40DA1512-B01E3D8C-FF3C8D4D",
"C50FFFBF-46866131-82F45890-651797CE"]})
except TimeoutError:
return jsonify({"status": "error"})
except Exception as e:
logger.graylog_logger(level="error", handler="modifiers_me", message=e)
# This works
@app.route("/moderation/check/username", methods=["POST"])
@ -611,82 +730,12 @@ def extension_progression_init_or_get_groups():
userid = session_manager.get_user_id(session_cookie)
try:
logger.graylog_logger(level="info", handler="logging_initOrGetGroups", message=request.get_json())
# Client sends: {"data":{"skipProgressionGroups":false,"skipMetadataGroups":false,"playerName":"Steam-Name-Here"}}
# The client cant understand CharacterId for some reason??? But if this is removed the game doesn't load the
# "Choose Hunter or Runner" screen.
return jsonify({
"ProgressionGroups":[
{
"ObjectId":"EGMGroupTypeEnum::RunnerProgression",
"Version":1,
"SchemaVersion":1.1,
"Data":{
"Experience":{
"Level":1,
"CurrentExperience":2,
"ExperienceToReach":30
}
}
},
{
"ObjectId":"EGMGroupTypeEnum::HunterProgression",
"Version":1,
"SchemaVersion":1.1,
"Data":{
"Experience":{
"Level":1,
"CurrentExperience":12,
"ExperienceToReach":30
}
}
},
{
"ObjectId": "EGMGroupTypeEnum::PlayerProgression",
"Version": 1,
"SchemaVersion": 1.1,
"Data": {
"Experience": {
"Level": 1,
"CurrentExperience": 12,
"ExperienceToReach": 30
}
}
}
],
"MetadataGroups":[
{
"ObjectId": "EGMGroupTypeEnum::RunnerMetadata",
"Version": 1,
"SchemaVersion": 1.1,
"Data": {"CharacterId": {"TagName": "Runner.Ink"},
"Equipment": [],
"EquippedPerks": ["1E08AFFA-485E92BA-FF2C1BB8-5CEFB81E"],
"EquippedPowers": [],
"EquippedWeapons": ["C8AF3D53-4973F82F-ADBB40BD-A96F9DCD"],
"EquippedBonuses": []
}
},
{
"ObjectId": "EGMGroupTypeEnum::HunterMetadata",
"Version": 1,
"SchemaVersion": 1.1,
"Data": {"CharacterId": {"TagName": "Hunter.Inquisitor"},
"Equipment": [],
"EquippedPerks": ["791F12E0-47DA9E26-E246E385-9C3F587E"],
"EquippedPowers": ["08DC38B6-470A7A5B-0BA025B9-6279DAA8"],
"EquippedWeapons": ["307A0B13-417737DE-D675309F-8B978AB8"],
"EquippedBonuses": []
}
},
{
"ObjectId": "EGMGroupTypeEnum::PlayerMetadata",
"Version": 1,
"SchemaVersion": 1.1,
"Data": {
}
}
]})
request_data = request.get_json()
data = get_init_or_get_groups(userid, request_data)
return jsonify(data)
except TimeoutError:
return jsonify({"status": "error"})
@ -700,6 +749,7 @@ def update_metadata_group():
session_cookie = sanitize_input(request.cookies.get("bhvrSession"))
userid = session_manager.get_user_id(session_cookie)
try:
fake_request = {"data": {"skipProgressionGroups": False, "skipMetadataGroups": False}}
data = request.get_json()
object_id = data["data"]["objectId"]
version = data["data"]["version"]
@ -713,92 +763,97 @@ def update_metadata_group():
logger.graylog_logger(level="info", handler="logging_updateMetadataGroup", message=data)
# return jsonify({"status": "success"})
mongo.write_data_with_list(login=userid, login_steam=False,
items_dict={"last_played_faction": last_played_faction})
return jsonify({
"ProgressionGroups":[
{
"ObjectId":"EGMGroupTypeEnum::RunnerProgression",
"Version":1,
"SchemaVersion":1.1,
"Data":{
"Experience":{
"Level":1,
"CurrentExperience":2,
"ExperienceToReach":30
}
}
},
{
"ObjectId":"EGMGroupTypeEnum::HunterProgression",
"Version":1,
"SchemaVersion":1.1,
"Data":{
"Experience":{
"Level":1,
"CurrentExperience":12,
"ExperienceToReach":30
}
}
},
{
"ObjectId": "EGMGroupTypeEnum::PlayerProgression",
"Version": 1,
"SchemaVersion": 1.1,
"Data": {
"Experience": {
"Level": 1,
"CurrentExperience": 12,
"ExperienceToReach": 30
"ProgressionGroups": [
{
"ObjectId": "RunnerProgression",
"Version": 1,
"SchemaVersion": 1.1,
"Data": {
"Experience": {
"Level": 1,
"CurrentExperience": 2,
"ExperienceToReach": 30
}
}
},
{
"ObjectId": "HunterProgression",
"Version": 1,
"SchemaVersion": 1.1,
"Data": {
"Experience": {
"Level": 1,
"CurrentExperience": 12,
"ExperienceToReach": 30
}
}
},
{
"ObjectId": "PlayerProgression",
"Version": 1,
"SchemaVersion": 1.1,
"Data": {
"Experience": {
"Level": 1,
"CurrentExperience": 12,
"ExperienceToReach": 30
}
}
}
}
],
"MetadataGroups":[
{
"ObjectId": "EGMGroupTypeEnum::RunnerMetadata",
"Version": 1,
"SchemaVersion": 1.1,
"Data": {"CharacterId": {"TagName": last_played_runner_id},
"Equipment": [],
"EquippedPerks": ["1E08AFFA-485E92BA-FF2C1BB8-5CEFB81E"],
"EquippedPowers": [],
"EquippedWeapons": ["C8AF3D53-4973F82F-ADBB40BD-A96F9DCD"],
"EquippedBonuses": []
}
},
{
"ObjectId": "EGMGroupTypeEnum::HunterMetadata",
"Version": 1,
"SchemaVersion": 1.1,
"Data": {"CharacterId": {"TagName": last_played_hunter_id},
"Equipment": [],
"EquippedPerks": ["791F12E0-47DA9E26-E246E385-9C3F587E"],
"EquippedPowers": ["08DC38B6-470A7A5B-0BA025B9-6279DAA8"],
"EquippedWeapons": ["307A0B13-417737DE-D675309F-8B978AB8"],
"EquippedBonuses": []
}
},
{
"ObjectId": "EGMGroupTypeEnum::PlayerMetadata",
"Version": 1,
"SchemaVersion": 1.1,
"Data": {
"LastPlayedFaction": last_played_faction, "LastPlayedRunnerId": {"tagName": last_played_runner_id},
"LastPlayedHunterId": {"tagName": last_played_hunter_id},
"shouldPlayWithoutContextualHelp":should_play_without_contextual_help,"hasPlayedDeathGarden1":True
],
"MetadataGroups": [
{
"ObjectId": "RunnerMetadata",
"Version": 1,
"SchemaVersion": 1.1,
"Data": {"CharacterId": {"TagName": last_played_runner_id},
"Equipment": [],
"EquippedPerks": ["1E08AFFA-485E92BA-FF2C1BB8-5CEFB81E"],
"EquippedPowers": [],
"EquippedWeapons": ["C8AF3D53-4973F82F-ADBB40BD-A96F9DCD"],
"EquippedBonuses": []
}
},
{
"ObjectId": "HunterMetadata",
"Version": 1,
"SchemaVersion": 1.1,
"Data": {"CharacterId": {"TagName": last_played_hunter_id},
"Equipment": [],
"EquippedPerks": ["791F12E0-47DA9E26-E246E385-9C3F587E"],
"EquippedPowers": ["08DC38B6-470A7A5B-0BA025B9-6279DAA8"],
"EquippedWeapons": ["307A0B13-417737DE-D675309F-8B978AB8"],
"EquippedBonuses": []
}
},
{
"ObjectId": "PlayerMetadata",
"Version": 1,
"SchemaVersion": 1.1,
"Data": {
"LastPlayedFaction": last_played_faction,
"LastPlayedRunnerId": {"tagName": last_played_runner_id},
"LastPlayedHunterId": {"tagName": last_played_hunter_id},
"shouldPlayWithoutContextualHelp": should_play_without_contextual_help,
"hasPlayedDeathGarden1": True
}
}
}
]})
]})
except TimeoutError:
return jsonify({"status": "error"})
except Exception as e:
logger.graylog_logger(level="error", handler="logging_updateMetadataGroup", message=e)
# POST https://api.zkwolf.com/api/v1/extensions/progression/updateMetadataGroup HTTP/1.1
# {"data":{"objectId":"PlayerMetadata","version":2,"metadata":{
# "lastPlayedFaction":"Runner","lastPlayedRunnerId":{"tagName":"Runner.Ink"},"lastPlayedHunterId":{"tagName":"None"},
# "shouldPlayWithoutContextualHelp":false,"hasPlayedDeathGarden1":false},"reason":"SetLastPlayedCharacterId"}}
# dont know if this works. Hope it does.
@app.route("/api/v1/extensions/inventory/unlockSpecialItems", methods=["POST"])
def inventory_unlock_special_items():
@ -815,7 +870,6 @@ def inventory_unlock_special_items():
logger.graylog_logger(level="error", handler="unknown_unlockSpecialItems", message=e)
# POST https://api.zkwolf.com//api/v1/extensions/progression/resetCharacterProgressionForPrestige HTTP/1.1
# {"data":{"characterId":"755D4DFE40DA1512B01E3D8CFF3C8D4D"}}
@app.route("/api/v1/extensions/progression/resetCharacterProgressionForPrestige", methods=["POST"])
@ -833,6 +887,7 @@ def reset_prestige():
except Exception as e:
logger.graylog_logger(level="error", handler="resetCharacterProgressionForPrestige", message=e)
@app.route("/api/v1/extensions/challenges/getChallengeProgressionBatch", methods=["POST"])
def challenges_get_challenge_progression_batch():
check_for_game_client("strict")
@ -956,7 +1011,7 @@ def challenges_get_challenge_progression_batch():
}})
elif challenge == "24CE65364362CB2A90C0E08876176937":
challenge_list.append({"challengeId": "24CE65364362CB2A90C0E08876176937",
"operationName":"complete"
"operationName": "complete"
})
else:
logger.graylog_logger(level="error", handler="logging_missing_challenge",