diff --git a/DevourClient/ClientMain.cs b/DevourClient/ClientMain.cs index c60628f..0640e32 100644 --- a/DevourClient/ClientMain.cs +++ b/DevourClient/ClientMain.cs @@ -65,6 +65,8 @@ namespace DevourClient static bool need_fly_reset = false; static bool crosshair = false; static bool in_game_cache = false; + static bool showCoordinates = false; + static bool recallEnabled = false; private const int ITEM_FARM_REPEAT_COUNT = 5; private const float ITEM_FARM_DELAY = 0.15f; private static bool autoItemFarm = false; @@ -186,6 +188,12 @@ namespace DevourClient fly = !fly; } + // Recall to base position (B key, only if enabled) + if (recallEnabled && Input.GetKeyDown(KeyCode.B) && Player.IsInGameOrLobby()) + { + Helpers.RecallHelper.RecallToBase(); + } + if (Player.IsInGameOrLobby()) { if (fly && !need_fly_reset) @@ -613,6 +621,7 @@ namespace DevourClient GUI.DrawTexture(new Rect(xMin, yMin, crosshairSize, crosshairSize), crosshairTexture); } + } if (Settings.Settings.menu_enable) @@ -1956,6 +1965,7 @@ namespace DevourClient } } + private static void MiscTab() { GUI.Label(new Rect(Settings.Settings.x + 320, Settings.Settings.y + 70, 150, 20), "Language :"); @@ -2042,6 +2052,31 @@ namespace DevourClient _PlayerSpeedMultiplier = GUI.HorizontalSlider(new Rect(Settings.Settings.x + 130, Settings.Settings.y + 400, 120, 10), _PlayerSpeedMultiplier, (int)1f, (int)10f); GUI.Label(new Rect(Settings.Settings.x + 260, Settings.Settings.y + 395, 50, 20), ((int)_PlayerSpeedMultiplier).ToString()); + showCoordinates = GUI.Toggle(new Rect(Settings.Settings.x + 10, Settings.Settings.y + 430, 200, 20), showCoordinates, MultiLanguageSystem.Translate("Show Coordinates")); + + recallEnabled = GUI.Toggle(new Rect(Settings.Settings.x + 10, Settings.Settings.y + 455, 200, 20), recallEnabled, MultiLanguageSystem.Translate("Recall (B)")); + + // Display player coordinates at the bottom of Misc tab + if (showCoordinates && Player.IsInGameOrLobby()) + { + try + { + Il2Cpp.NolanBehaviour nb = Player.GetPlayer(); + if (nb != null && nb.transform != null) + { + Vector3 pos = nb.transform.position; + string coordText = $"Position: X:{pos.x:F2} Y:{pos.y:F2} Z:{pos.z:F2}"; + + // Display at the bottom of Misc tab + GUI.Label(new Rect(Settings.Settings.x + 10, Settings.Settings.y + 485, 400, 30), coordText); + } + } + catch (System.Exception ex) + { + // Silently handle errors to avoid spam + } + } + } private static void PlayersTab() @@ -2060,12 +2095,17 @@ namespace DevourClient GUI.Label(new Rect(Settings.Settings.x + 10, Settings.Settings.y + 110 + i, 150, 30), bp.Name); - if (GUI.Button(new Rect(Settings.Settings.x + 70, Settings.Settings.y + 105 + i, 60, 30), MultiLanguageSystem.Translate("Kill"))) + // All buttons in one row + int buttonX = (int)Settings.Settings.x + 70; + int buttonY = (int)Settings.Settings.y + 105 + i; + + if (GUI.Button(new Rect(buttonX, buttonY, 70, 30), MultiLanguageSystem.Translate("Kill"))) { bp.Kill(); } + buttonX += 80; - if (GUI.Button(new Rect(Settings.Settings.x + 140, Settings.Settings.y + 105 + i, 60, 30), MultiLanguageSystem.Translate("Revive"))) + if (GUI.Button(new Rect(buttonX, buttonY, 70, 30), MultiLanguageSystem.Translate("Revive"))) { if (bp.p_GameObject != null) { @@ -2076,36 +2116,41 @@ namespace DevourClient } } } + buttonX += 80; - if (GUI.Button(new Rect(Settings.Settings.x + 210, Settings.Settings.y + 105 + i, 90, 30), MultiLanguageSystem.Translate("Jumpscare"))) + if (GUI.Button(new Rect(buttonX, buttonY, 90, 30), MultiLanguageSystem.Translate("Jumpscare"))) { bp.Jumpscare(); } + buttonX += 100; - if (GUI.Button(new Rect(Settings.Settings.x + 310, Settings.Settings.y + 105 + i, 60, 30), MultiLanguageSystem.Translate("Teleport to"))) + if (GUI.Button(new Rect(buttonX, buttonY, 80, 30), MultiLanguageSystem.Translate("Teleport to"))) { bp.TP(); } + buttonX += 90; - if (GUI.Button(new Rect(Settings.Settings.x + 380, Settings.Settings.y + 105 + i, 100, 30), MultiLanguageSystem.Translate("Lock in cage"))) + if (GUI.Button(new Rect(buttonX, buttonY, 100, 30), MultiLanguageSystem.Translate("Lock in cage"))) { bp.LockInCage(); } + buttonX += 110; - if (GUI.Button(new Rect(Settings.Settings.x + 490, Settings.Settings.y + 105 + i, 90, 30), MultiLanguageSystem.Translate("TP Azazel"))) + if (GUI.Button(new Rect(buttonX, buttonY, 90, 30), MultiLanguageSystem.Translate("TP Azazel"))) { bp.TPAzazel(); } + buttonX += 100; if (Helpers.Map.GetActiveScene() == "Town") { - if (GUI.Button(new Rect(Settings.Settings.x + 590, Settings.Settings.y + 105 + i, 90, 30), MultiLanguageSystem.Translate("Shoot Player"))) + if (GUI.Button(new Rect(buttonX, buttonY, 90, 30), MultiLanguageSystem.Translate("Shoot Player"))) { bp.ShootPlayer(); } } - i += 30; + i += 45; } } else diff --git a/DevourClient/Helpers/Map.cs b/DevourClient/Helpers/Map.cs index 76bc7db..400d81c 100644 --- a/DevourClient/Helpers/Map.cs +++ b/DevourClient/Helpers/Map.cs @@ -11,6 +11,7 @@ { switch (sceneName) { + case "Devour": case "Anna": return "Farmhouse"; case "Molly": diff --git a/DevourClient/Helpers/RecallHelper.cs b/DevourClient/Helpers/RecallHelper.cs new file mode 100644 index 0000000..a46aa93 --- /dev/null +++ b/DevourClient/Helpers/RecallHelper.cs @@ -0,0 +1,74 @@ +using UnityEngine; +using MelonLoader; + +namespace DevourClient.Helpers +{ + public static class RecallHelper + { + /// + /// Teleports the local player to the base coordinates of the current map + /// + public static void RecallToBase() + { + try + { + Il2Cpp.NolanBehaviour nb = Player.GetPlayer(); + if (nb == null) + { + MelonLogger.Warning("Player not found!"); + return; + } + + string sceneName = Map.GetActiveScene(); + Vector3 targetPos = Vector3.zero; + string mapName = ""; + + // Map coordinates based on scene name + switch (sceneName) + { + case "Devour": + case "Anna": // Farmhouse + targetPos = new Vector3(5.03f, 4.20f, -50.02f); + mapName = "Farm"; + break; + case "Molly": // Asylum + targetPos = new Vector3(17.52f, 1.38f, 7.04f); + mapName = "Asylum"; + break; + case "Inn": + targetPos = new Vector3(3.53f, 0.84f, 2.47f); + mapName = "Inn"; + break; + case "Town": + targetPos = new Vector3(-63.51f, 10.88f, -12.32f); + mapName = "Town"; + break; + case "Slaughterhouse": + targetPos = new Vector3(6.09f, 0.70f, -17.58f); + mapName = "Slaughterhouse"; + break; + case "Manor": + targetPos = new Vector3(3.67f, 1.32f, -23.34f); + mapName = "Manor"; + break; + case "Carnival": + targetPos = new Vector3(-91.46f, 8.13f, -24.51f); + mapName = "Carnival"; + break; + default: + MelonLogger.Warning($"Teleport not available for scene: {sceneName}"); + return; + } + + // Teleport player to target position + nb.locomotion.SetPosition(targetPos, false); + MelonLogger.Msg($"Teleported to {mapName} coordinates: X:{targetPos.x:F2} Y:{targetPos.y:F2} Z:{targetPos.z:F2}"); + } + catch (System.Exception ex) + { + MelonLogger.Error($"Failed to teleport: {ex.Message}"); + } + } + } +} + diff --git a/DevourClient/Helpers/StateHelper.cs b/DevourClient/Helpers/StateHelper.cs index f82ca78..226232f 100644 --- a/DevourClient/Helpers/StateHelper.cs +++ b/DevourClient/Helpers/StateHelper.cs @@ -121,6 +121,7 @@ namespace DevourClient.Helpers _azazelSam.OnShootPlayer(p_GameObject, true); } } + } public class Player { diff --git a/DevourClient/Localization/Translations/ChineseTranslations.cs b/DevourClient/Localization/Translations/ChineseTranslations.cs index 523b131..171264e 100644 --- a/DevourClient/Localization/Translations/ChineseTranslations.cs +++ b/DevourClient/Localization/Translations/ChineseTranslations.cs @@ -219,6 +219,7 @@ namespace DevourClient.Localization.Translations { "Rotton Food ESP", "腐烂食物透视" }, { "Sam", "萨姆" }, { "Shoot Player", "射击玩家" }, + { "Show Coordinates", "显示坐标" }, { "Skeleton ESP", "骨骼透视" }, { "Slaughterhouse", "屠宰场" }, { "SlaughterhouseFireEscapeDoor", "屠宰场消防门" }, @@ -252,6 +253,7 @@ namespace DevourClient.Localization.Translations { "TP to Azazel", "传送到 Azazel" }, { "TV", "电视" }, { "Teleport Keys", "传送钥匙" }, + { "Recall (B)", "回城 (B)" }, { "Teleport to", "传送至" }, { "Ticket", "票券" }, { "Town", "小镇" }, diff --git a/DevourClient/Localization/Translations/EnglishTranslations.cs b/DevourClient/Localization/Translations/EnglishTranslations.cs index 967f982..81e2652 100644 --- a/DevourClient/Localization/Translations/EnglishTranslations.cs +++ b/DevourClient/Localization/Translations/EnglishTranslations.cs @@ -219,6 +219,7 @@ namespace DevourClient.Localization.Translations { "Rotton Food ESP", "Rotton Food ESP" }, { "Sam", "Sam" }, { "Shoot Player", "Shoot Player" }, + { "Show Coordinates", "Show Coordinates" }, { "Skeleton ESP", "Skeleton ESP" }, { "Slaughterhouse", "Slaughterhouse" }, { "SlaughterhouseFireEscapeDoor", "SlaughterhouseFireEscapeDoor" }, @@ -252,6 +253,7 @@ namespace DevourClient.Localization.Translations { "TP to Azazel", "TP to Azazel" }, { "TV", "TV" }, { "Teleport Keys", "Teleport Keys" }, + { "Recall (B)", "Recall (B)" }, { "Teleport to", "Teleport to" }, { "Ticket", "Ticket" }, { "Town", "Town" }, diff --git a/DevourClient/Localization/Translations/FrenchTranslations.cs b/DevourClient/Localization/Translations/FrenchTranslations.cs index 0c17796..7cd018d 100644 --- a/DevourClient/Localization/Translations/FrenchTranslations.cs +++ b/DevourClient/Localization/Translations/FrenchTranslations.cs @@ -219,6 +219,7 @@ namespace DevourClient.Localization.Translations { "Rotton Food ESP", "ESP nourriture pourrie" }, { "Sam", "Sam" }, { "Shoot Player", "Tirer sur le joueur" }, + { "Show Coordinates", "Afficher coordonnées" }, { "Skeleton ESP", "ESP squelette" }, { "Slaughterhouse", "Abattoir" }, { "SlaughterhouseFireEscapeDoor", "Porte de secours d'abattoir" }, @@ -252,6 +253,7 @@ namespace DevourClient.Localization.Translations { "TP to Azazel", "TP vers Azazel" }, { "TV", "Télévision" }, { "Teleport Keys", "Téléporter clés" }, + { "Recall (B)", "Retour (B)" }, { "Teleport to", "Téléporter" }, { "Ticket", "Billet" }, { "Town", "Ville" }, diff --git a/DevourClient/Localization/Translations/GermanTranslations.cs b/DevourClient/Localization/Translations/GermanTranslations.cs index c3a49e9..ce92af4 100644 --- a/DevourClient/Localization/Translations/GermanTranslations.cs +++ b/DevourClient/Localization/Translations/GermanTranslations.cs @@ -219,6 +219,7 @@ namespace DevourClient.Localization.Translations { "Rotton Food ESP", "Verdorbenes-Essen-ESP" }, { "Sam", "Sam" }, { "Shoot Player", "Spieler erschießen" }, + { "Show Coordinates", "Koordinaten anzeigen" }, { "Skeleton ESP", "Skelett ESP" }, { "Slaughterhouse", "Schlachthaus" }, { "SlaughterhouseFireEscapeDoor", "Schlachthof-Feuerschutztür" }, @@ -252,6 +253,7 @@ namespace DevourClient.Localization.Translations { "TP to Azazel", "TP zu Azazel" }, { "TV", "Fernseher" }, { "Teleport Keys", "Schlüssel teleportieren" }, + { "Recall (B)", "Zurückrufen (B)" }, { "Teleport to", "Teleportieren" }, { "Ticket", "Ticket" }, { "Town", "Stadt" }, diff --git a/DevourClient/Localization/Translations/ItalianTranslations.cs b/DevourClient/Localization/Translations/ItalianTranslations.cs index 84fac47..0fc98d0 100644 --- a/DevourClient/Localization/Translations/ItalianTranslations.cs +++ b/DevourClient/Localization/Translations/ItalianTranslations.cs @@ -219,6 +219,7 @@ namespace DevourClient.Localization.Translations { "Rotton Food ESP", "ESP cibo marcio" }, { "Sam", "Sam" }, { "Shoot Player", "Spara al giocatore" }, + { "Show Coordinates", "Mostra coordinate" }, { "Skeleton ESP", "ESP scheletro" }, { "Slaughterhouse", "Macello" }, { "SlaughterhouseFireEscapeDoor", "Porta antincendio del mattatoio" }, @@ -252,6 +253,7 @@ namespace DevourClient.Localization.Translations { "TP to Azazel", "TP ad Azazel" }, { "TV", "Televisione" }, { "Teleport Keys", "Teletrasporta chiavi" }, + { "Recall (B)", "Richiama (B)" }, { "Teleport to", "Teletrasporta" }, { "Ticket", "Biglietto" }, { "Town", "Città" }, diff --git a/DevourClient/Localization/Translations/JapaneseTranslations.cs b/DevourClient/Localization/Translations/JapaneseTranslations.cs index 6551144..549f423 100644 --- a/DevourClient/Localization/Translations/JapaneseTranslations.cs +++ b/DevourClient/Localization/Translations/JapaneseTranslations.cs @@ -219,6 +219,7 @@ namespace DevourClient.Localization.Translations { "Rotton Food ESP", "腐った食べ物ESP" }, { "Sam", "サム" }, { "Shoot Player", "プレイヤーを撃つ" }, + { "Show Coordinates", "座標を表示" }, { "Skeleton ESP", "スケルトンESP" }, { "Slaughterhouse", "屠殺場" }, { "SlaughterhouseFireEscapeDoor", "屠殺場の非常口" }, @@ -252,6 +253,7 @@ namespace DevourClient.Localization.Translations { "TP to Azazel", "Azazelへテレポート" }, { "TV", "テレビ" }, { "Teleport Keys", "鍵をテレポート" }, + { "Recall (B)", "リコール (B)" }, { "Teleport to", "テレポート" }, { "Ticket", "チケット" }, { "Town", "町" }, diff --git a/DevourClient/Localization/Translations/KoreanTranslations.cs b/DevourClient/Localization/Translations/KoreanTranslations.cs index bbf16d0..c540ead 100644 --- a/DevourClient/Localization/Translations/KoreanTranslations.cs +++ b/DevourClient/Localization/Translations/KoreanTranslations.cs @@ -219,6 +219,7 @@ namespace DevourClient.Localization.Translations { "Rotton Food ESP", "썩은 음식 ESP" }, { "Sam", "샘" }, { "Shoot Player", "플레이어 쏘기" }, + { "Show Coordinates", "좌표 표시" }, { "Skeleton ESP", "스켈레톤 ESP" }, { "Slaughterhouse", "도살장" }, { "SlaughterhouseFireEscapeDoor", "도축장 비상구" }, @@ -252,6 +253,7 @@ namespace DevourClient.Localization.Translations { "TP to Azazel", "Azazel로 텔레포트" }, { "TV", "TV" }, { "Teleport Keys", "열쇠 텔레포트" }, + { "Recall (B)", "리콜 (B)" }, { "Teleport to", "텔레포트" }, { "Ticket", "티켓" }, { "Town", "마을" }, diff --git a/DevourClient/Localization/Translations/PortugueseTranslations.cs b/DevourClient/Localization/Translations/PortugueseTranslations.cs index b5b68bb..bd32b53 100644 --- a/DevourClient/Localization/Translations/PortugueseTranslations.cs +++ b/DevourClient/Localization/Translations/PortugueseTranslations.cs @@ -219,6 +219,7 @@ namespace DevourClient.Localization.Translations { "Rotton Food ESP", "ESP comida podre" }, { "Sam", "Sam" }, { "Shoot Player", "Atirar no jogador" }, + { "Show Coordinates", "Mostrar coordenadas" }, { "Skeleton ESP", "ESP esqueleto" }, { "Slaughterhouse", "Matadouro" }, { "SlaughterhouseFireEscapeDoor", "Porta de incêndio do matadouro" }, @@ -252,6 +253,7 @@ namespace DevourClient.Localization.Translations { "TP to Azazel", "TP para Azazel" }, { "TV", "Televisão" }, { "Teleport Keys", "Teletransportar chaves" }, + { "Recall (B)", "Recuar (B)" }, { "Teleport to", "Teletransportar" }, { "Ticket", "Bilhete" }, { "Town", "Cidade" }, diff --git a/DevourClient/Localization/Translations/RussianTranslations.cs b/DevourClient/Localization/Translations/RussianTranslations.cs index acbea9d..4ffcf38 100644 --- a/DevourClient/Localization/Translations/RussianTranslations.cs +++ b/DevourClient/Localization/Translations/RussianTranslations.cs @@ -219,6 +219,7 @@ namespace DevourClient.Localization.Translations { "Rotton Food ESP", "ESP гнилой еды" }, { "Sam", "Сэм" }, { "Shoot Player", "Стрелять в игрока" }, + { "Show Coordinates", "Показать координаты" }, { "Skeleton ESP", "ESP скелета" }, { "Slaughterhouse", "Бойня" }, { "SlaughterhouseFireEscapeDoor", "Пожарная дверь бойни" }, @@ -252,6 +253,7 @@ namespace DevourClient.Localization.Translations { "TP to Azazel", "ТП к Azazel" }, { "TV", "Телевизор" }, { "Teleport Keys", "Телепорт ключей" }, + { "Recall (B)", "Возврат (B)" }, { "Teleport to", "Телепорт" }, { "Ticket", "Билет" }, { "Town", "Город" }, diff --git a/DevourClient/Localization/Translations/SpanishTranslations.cs b/DevourClient/Localization/Translations/SpanishTranslations.cs index 9020c9a..2592a09 100644 --- a/DevourClient/Localization/Translations/SpanishTranslations.cs +++ b/DevourClient/Localization/Translations/SpanishTranslations.cs @@ -219,6 +219,7 @@ namespace DevourClient.Localization.Translations { "Rotton Food ESP", "ESP comida podrida" }, { "Sam", "Sam" }, { "Shoot Player", "Disparar al jugador" }, + { "Show Coordinates", "Mostrar coordenadas" }, { "Skeleton ESP", "ESP esqueleto" }, { "Slaughterhouse", "Matadero" }, { "SlaughterhouseFireEscapeDoor", "Puerta de escape de matadero" }, @@ -252,6 +253,7 @@ namespace DevourClient.Localization.Translations { "TP to Azazel", "TP a Azazel" }, { "TV", "Televisión" }, { "Teleport Keys", "Teletransportar llaves" }, + { "Recall (B)", "Regresar (B)" }, { "Teleport to", "Teletransportar" }, { "Ticket", "Boleto" }, { "Town", "Pueblo" }, diff --git a/DevourClient/Localization/Translations/VietnameseTranslations.cs b/DevourClient/Localization/Translations/VietnameseTranslations.cs index da7d6d3..1ad95d5 100644 --- a/DevourClient/Localization/Translations/VietnameseTranslations.cs +++ b/DevourClient/Localization/Translations/VietnameseTranslations.cs @@ -219,6 +219,7 @@ namespace DevourClient.Localization.Translations { "Rotton Food ESP", "Thức ăn thối ESP" }, { "Sam", "Sam" }, { "Shoot Player", "Bắn người chơi" }, + { "Show Coordinates", "Hiển thị tọa độ" }, { "Skeleton ESP", "Bộ xương ESP" }, { "Slaughterhouse", "Slaughterhouse" }, { "SlaughterhouseFireEscapeDoor", "SlaughterhouseFireEscapeDoor" }, @@ -252,6 +253,7 @@ namespace DevourClient.Localization.Translations { "TP to Azazel", "TP đến Azazel" }, { "TV", "TV" }, { "Teleport Keys", "Phím dịch chuyển" }, + { "Recall (B)", "Triệu hồi (B)" }, { "Teleport to", "Dịch chuyển đến" }, { "Ticket", "Vé" }, { "Town", "Town" }, diff --git a/DevourClient/Settings/Settings.cs b/DevourClient/Settings/Settings.cs index b75a526..7d554d7 100644 --- a/DevourClient/Settings/Settings.cs +++ b/DevourClient/Settings/Settings.cs @@ -15,6 +15,7 @@ namespace DevourClient.Settings public static Color azazel_esp_color = new Color(1.00f, 0.00f, 0.00f, 1); public static float speed = 1f; public static KeyCode flyKey = KeyCode.None; + public static KeyCode teleportKey = KeyCode.B; public static Vector2 itemsScrollPosition = Vector2.zero; public static Vector2 rituelObjectsScrollPosition = Vector2.zero; public static Vector2 stuffsScrollPosition = Vector2.zero;