Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b134834170 | |||
| 17dc31dd10 | |||
| 084d39ff57 | |||
| 33164f700a | |||
| f901257218 | |||
| 2769f7a0b2 |
@@ -51,6 +51,7 @@ namespace DevourClient
|
|||||||
public static float exp = 1000f;
|
public static float exp = 1000f;
|
||||||
public static bool _walkInLobby = false;
|
public static bool _walkInLobby = false;
|
||||||
public static bool infinite_mirrors = false;
|
public static bool infinite_mirrors = false;
|
||||||
|
static bool radialMenuEnabled = true;
|
||||||
static bool player_esp = false;
|
static bool player_esp = false;
|
||||||
static bool player_skel_esp = false;
|
static bool player_skel_esp = false;
|
||||||
static bool player_snapline = false;
|
static bool player_snapline = false;
|
||||||
@@ -65,6 +66,8 @@ namespace DevourClient
|
|||||||
static bool need_fly_reset = false;
|
static bool need_fly_reset = false;
|
||||||
static bool crosshair = false;
|
static bool crosshair = false;
|
||||||
static bool in_game_cache = 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 int ITEM_FARM_REPEAT_COUNT = 5;
|
||||||
private const float ITEM_FARM_DELAY = 0.15f;
|
private const float ITEM_FARM_DELAY = 0.15f;
|
||||||
private static bool autoItemFarm = false;
|
private static bool autoItemFarm = false;
|
||||||
@@ -113,6 +116,7 @@ namespace DevourClient
|
|||||||
Helpers.Entities.RegisterCoroutine(MelonCoroutines.Start(Helpers.Entities.GetAllPlayers()));
|
Helpers.Entities.RegisterCoroutine(MelonCoroutines.Start(Helpers.Entities.GetAllPlayers()));
|
||||||
Helpers.Entities.RegisterCoroutine(MelonCoroutines.Start(Helpers.Entities.GetMonkeys()));
|
Helpers.Entities.RegisterCoroutine(MelonCoroutines.Start(Helpers.Entities.GetMonkeys()));
|
||||||
Helpers.Entities.RegisterCoroutine(MelonCoroutines.Start(Helpers.Entities.GetDolls()));
|
Helpers.Entities.RegisterCoroutine(MelonCoroutines.Start(Helpers.Entities.GetDolls()));
|
||||||
|
Helpers.Entities.RegisterCoroutine(MelonCoroutines.Start(Helpers.Entities.GetCollectables()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Update()
|
public void Update()
|
||||||
@@ -185,6 +189,10 @@ namespace DevourClient
|
|||||||
fly = !fly;
|
fly = !fly;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Z-key radial menu logic is managed by RadialMenuManager
|
||||||
|
RadialMenuManager.Enabled = radialMenuEnabled;
|
||||||
|
RadialMenuManager.HandleUpdate();
|
||||||
|
|
||||||
if (Player.IsInGameOrLobby())
|
if (Player.IsInGameOrLobby())
|
||||||
{
|
{
|
||||||
if (fly && !need_fly_reset)
|
if (fly && !need_fly_reset)
|
||||||
@@ -385,6 +393,86 @@ namespace DevourClient
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Collectables ESP - render all collectable items with maxdistance check
|
||||||
|
// Note: Collectables ESP is independent of item_esp, check directly
|
||||||
|
if (Helpers.Entities.Collectables != null)
|
||||||
|
{
|
||||||
|
// Check if Collectables ESP is enabled
|
||||||
|
if (ESP.ItemESPConfig.GetESPState(ESP.ItemESPConfig.ESPType.Collectables))
|
||||||
|
{
|
||||||
|
// Get player position for distance calculation
|
||||||
|
Vector3 playerPosition = Vector3.zero;
|
||||||
|
if (Camera.main != null)
|
||||||
|
{
|
||||||
|
playerPosition = Camera.main.transform.position;
|
||||||
|
}
|
||||||
|
else if (Player.GetPlayer() != null)
|
||||||
|
{
|
||||||
|
playerPosition = Player.GetPlayer().transform.position;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (Il2Cpp.CollectableInteractable collectable in Helpers.Entities.Collectables)
|
||||||
|
{
|
||||||
|
if (collectable != null && collectable.gameObject != null)
|
||||||
|
{
|
||||||
|
string itemName = collectable.gameObject.name.Replace("Survival", "").Replace("(Clone)", "").Trim();
|
||||||
|
|
||||||
|
// Get display name based on collectable type
|
||||||
|
string displayName = "";
|
||||||
|
Color espColor = new Color(1.0f, 0.84f, 0.0f, 1.0f); // Gold color for all collectables
|
||||||
|
|
||||||
|
// Determine collectable type and set display name
|
||||||
|
string lowerName = itemName.ToLower();
|
||||||
|
if (lowerName.Contains("rose") || lowerName.Contains("collectable"))
|
||||||
|
{
|
||||||
|
displayName = MultiLanguageSystem.Translate("Rose");
|
||||||
|
}
|
||||||
|
else if (lowerName.Contains("patch"))
|
||||||
|
{
|
||||||
|
displayName = MultiLanguageSystem.Translate("Patch");
|
||||||
|
}
|
||||||
|
else if (lowerName.Contains("cherry") || lowerName.Contains("blossom"))
|
||||||
|
{
|
||||||
|
displayName = MultiLanguageSystem.Translate("Cherry Blossom");
|
||||||
|
}
|
||||||
|
else if (lowerName.Contains("horseshoe"))
|
||||||
|
{
|
||||||
|
displayName = MultiLanguageSystem.Translate("Horseshoe");
|
||||||
|
}
|
||||||
|
else if (lowerName.Contains("barbed") || lowerName.Contains("wire"))
|
||||||
|
{
|
||||||
|
displayName = MultiLanguageSystem.Translate("Barbed Wire");
|
||||||
|
}
|
||||||
|
else if (lowerName.Contains("feather"))
|
||||||
|
{
|
||||||
|
displayName = MultiLanguageSystem.Translate("Feather");
|
||||||
|
}
|
||||||
|
else if (lowerName.Contains("ticket"))
|
||||||
|
{
|
||||||
|
displayName = MultiLanguageSystem.Translate("Ticket");
|
||||||
|
}
|
||||||
|
else if (lowerName.Contains("pumpkin"))
|
||||||
|
{
|
||||||
|
displayName = MultiLanguageSystem.Translate("Pumpkin");
|
||||||
|
}
|
||||||
|
else if (lowerName.Contains("present"))
|
||||||
|
{
|
||||||
|
displayName = MultiLanguageSystem.Translate("Present");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
displayName = itemName;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(displayName))
|
||||||
|
{
|
||||||
|
Render.Render.DrawNameESP(collectable.transform.position, displayName, espColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Enemy ESP - now using separate ESP type filtering
|
// Enemy ESP - now using separate ESP type filtering
|
||||||
if (demon_esp)
|
if (demon_esp)
|
||||||
{
|
{
|
||||||
@@ -518,12 +606,15 @@ namespace DevourClient
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// End of EventType.Repaint branch
|
||||||
|
}
|
||||||
|
|
||||||
if (crosshair && in_game_cache)
|
if (crosshair && in_game_cache)
|
||||||
{
|
{
|
||||||
const float crosshairSize = 4;
|
const float crosshairSize = 4f;
|
||||||
|
|
||||||
float xMin = (Settings.Settings.width) - (crosshairSize / 2);
|
float xMin = Settings.Settings.width - (crosshairSize / 2f);
|
||||||
float yMin = (Settings.Settings.height) - (crosshairSize / 2);
|
float yMin = Settings.Settings.height - (crosshairSize / 2f);
|
||||||
|
|
||||||
if (crosshairTexture == null)
|
if (crosshairTexture == null)
|
||||||
{
|
{
|
||||||
@@ -532,7 +623,9 @@ namespace DevourClient
|
|||||||
|
|
||||||
GUI.DrawTexture(new Rect(xMin, yMin, crosshairSize, crosshairSize), crosshairTexture);
|
GUI.DrawTexture(new Rect(xMin, yMin, crosshairSize, crosshairSize), crosshairTexture);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
// Radial menu rendering
|
||||||
|
RadialMenuManager.HandleOnGUI();
|
||||||
|
|
||||||
if (Settings.Settings.menu_enable)
|
if (Settings.Settings.menu_enable)
|
||||||
{
|
{
|
||||||
@@ -1127,8 +1220,11 @@ namespace DevourClient
|
|||||||
List<ESP.ItemESPConfig.ESPType> espTypes = ESP.ItemESPConfig.GetMapESPTypes(currentScene);
|
List<ESP.ItemESPConfig.ESPType> espTypes = ESP.ItemESPConfig.GetMapESPTypes(currentScene);
|
||||||
|
|
||||||
// Don't display panel if in menu scene or no available ESP types
|
// Don't display panel if in menu scene or no available ESP types
|
||||||
if (espTypes.Count == 0)
|
if (espTypes.Count == 0 && currentScene != "Menu")
|
||||||
return;
|
{
|
||||||
|
// Even if no map-specific ESP types, show collectables
|
||||||
|
espTypes = new List<ESP.ItemESPConfig.ESPType>();
|
||||||
|
}
|
||||||
|
|
||||||
// Right side panel position
|
// Right side panel position
|
||||||
float panelX = Settings.Settings.x + 370;
|
float panelX = Settings.Settings.x + 370;
|
||||||
@@ -1142,8 +1238,10 @@ namespace DevourClient
|
|||||||
MultiLanguageSystem.Translate("ESP Settings"),
|
MultiLanguageSystem.Translate("ESP Settings"),
|
||||||
GUI.skin.box);
|
GUI.skin.box);
|
||||||
|
|
||||||
// Draw ESP toggle list
|
// Draw map-specific ESP toggle list
|
||||||
float yOffset = panelY + 30;
|
float yOffset = panelY + 30;
|
||||||
|
if (espTypes.Count > 0)
|
||||||
|
{
|
||||||
foreach (var espType in espTypes)
|
foreach (var espType in espTypes)
|
||||||
{
|
{
|
||||||
string displayName = ESP.ItemESPConfig.GetESPTypeName(espType);
|
string displayName = ESP.ItemESPConfig.GetESPTypeName(espType);
|
||||||
@@ -1164,7 +1262,31 @@ namespace DevourClient
|
|||||||
yOffset += itemHeight;
|
yOffset += itemHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add separator before collectables
|
||||||
|
yOffset += 5;
|
||||||
|
GUI.Label(new Rect(panelX + padding, yOffset, panelWidth - padding * 2, 20),
|
||||||
|
"─────────",
|
||||||
|
new GUIStyle(GUI.skin.label) { alignment = TextAnchor.MiddleCenter });
|
||||||
|
yOffset += 20;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Draw unified collectables ESP toggle (always available)
|
||||||
|
bool collectablesCurrentState = ESP.ItemESPConfig.GetESPState(ESP.ItemESPConfig.ESPType.Collectables);
|
||||||
|
bool collectablesNewState = GUI.Toggle(
|
||||||
|
new Rect(panelX + padding, yOffset, panelWidth - padding * 2, itemHeight - padding),
|
||||||
|
collectablesCurrentState,
|
||||||
|
MultiLanguageSystem.Translate("Collectables ESP")
|
||||||
|
);
|
||||||
|
|
||||||
|
if (collectablesNewState != collectablesCurrentState)
|
||||||
|
{
|
||||||
|
ESP.ItemESPConfig.SetESPState(ESP.ItemESPConfig.ESPType.Collectables, collectablesNewState);
|
||||||
|
}
|
||||||
|
yOffset += itemHeight;
|
||||||
|
|
||||||
// Display current map name (debug info)
|
// Display current map name (debug info)
|
||||||
|
if (currentScene != "Menu")
|
||||||
|
{
|
||||||
string mapDisplayName = Helpers.Map.GetMapName(currentScene);
|
string mapDisplayName = Helpers.Map.GetMapName(currentScene);
|
||||||
GUI.Label(
|
GUI.Label(
|
||||||
new Rect(panelX, yOffset + 10, panelWidth, 20),
|
new Rect(panelX, yOffset + 10, panelWidth, 20),
|
||||||
@@ -1172,6 +1294,7 @@ namespace DevourClient
|
|||||||
new GUIStyle(GUI.skin.label) { fontSize = 10, alignment = TextAnchor.MiddleCenter }
|
new GUIStyle(GUI.skin.label) { fontSize = 10, alignment = TextAnchor.MiddleCenter }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void ItemsTab()
|
private static void ItemsTab()
|
||||||
{
|
{
|
||||||
@@ -1845,6 +1968,7 @@ namespace DevourClient
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static void MiscTab()
|
private static void MiscTab()
|
||||||
{
|
{
|
||||||
GUI.Label(new Rect(Settings.Settings.x + 320, Settings.Settings.y + 70, 150, 20), "Language :");
|
GUI.Label(new Rect(Settings.Settings.x + 320, Settings.Settings.y + 70, 150, 20), "Language :");
|
||||||
@@ -1907,14 +2031,14 @@ namespace DevourClient
|
|||||||
_walkInLobby = GUI.Toggle(new Rect(Settings.Settings.x + 10, Settings.Settings.y + 155, 140, 20), _walkInLobby, MultiLanguageSystem.Translate("Walk In Lobby"));
|
_walkInLobby = GUI.Toggle(new Rect(Settings.Settings.x + 10, Settings.Settings.y + 155, 140, 20), _walkInLobby, MultiLanguageSystem.Translate("Walk In Lobby"));
|
||||||
_IsAutoRespawn = GUI.Toggle(new Rect(Settings.Settings.x + 160, Settings.Settings.y + 155, 140, 20), _IsAutoRespawn, MultiLanguageSystem.Translate("Auto Respawn"));
|
_IsAutoRespawn = GUI.Toggle(new Rect(Settings.Settings.x + 160, Settings.Settings.y + 155, 140, 20), _IsAutoRespawn, MultiLanguageSystem.Translate("Auto Respawn"));
|
||||||
|
|
||||||
fly = GUI.Toggle(new Rect(Settings.Settings.x + 10, Settings.Settings.y + 190, 100, 20), fly, MultiLanguageSystem.Translate("Fly"));
|
fly = GUI.Toggle(new Rect(Settings.Settings.x + 10, Settings.Settings.y + 180, 100, 20), fly, MultiLanguageSystem.Translate("Fly"));
|
||||||
if (GUI.Button(new Rect(Settings.Settings.x + 120, Settings.Settings.y + 190, 60, 20), Settings.Settings.flyKey.ToString()))
|
if (GUI.Button(new Rect(Settings.Settings.x + 120, Settings.Settings.y + 180, 60, 20), Settings.Settings.flyKey.ToString()))
|
||||||
{
|
{
|
||||||
Settings.Settings.flyKey = Settings.Settings.GetKey();
|
Settings.Settings.flyKey = Settings.Settings.GetKey();
|
||||||
}
|
}
|
||||||
GUI.Label(new Rect(Settings.Settings.x + 20, Settings.Settings.y + 215, 80, 20), MultiLanguageSystem.Translate("Fly Speed") + ":");
|
GUI.Label(new Rect(Settings.Settings.x + 20, Settings.Settings.y + 205, 80, 20), MultiLanguageSystem.Translate("Fly Speed") + ":");
|
||||||
fly_speed = GUI.HorizontalSlider(new Rect(Settings.Settings.x + 100, Settings.Settings.y + 220, 150, 10), fly_speed, 5f, 20f);
|
fly_speed = GUI.HorizontalSlider(new Rect(Settings.Settings.x + 100, Settings.Settings.y + 210, 150, 10), fly_speed, 5f, 20f);
|
||||||
GUI.Label(new Rect(Settings.Settings.x + 260, Settings.Settings.y + 215, 50, 20), ((int)fly_speed).ToString());
|
GUI.Label(new Rect(Settings.Settings.x + 260, Settings.Settings.y + 205, 50, 20), ((int)fly_speed).ToString());
|
||||||
|
|
||||||
spoofLevel = GUI.Toggle(new Rect(Settings.Settings.x + 10, Settings.Settings.y + 250, 200, 20), spoofLevel, MultiLanguageSystem.Translate("Spoof Level"));
|
spoofLevel = GUI.Toggle(new Rect(Settings.Settings.x + 10, Settings.Settings.y + 250, 200, 20), spoofLevel, MultiLanguageSystem.Translate("Spoof Level"));
|
||||||
GUI.Label(new Rect(Settings.Settings.x + 20, Settings.Settings.y + 275, 80, 20), MultiLanguageSystem.Translate("Level") + ":");
|
GUI.Label(new Rect(Settings.Settings.x + 20, Settings.Settings.y + 275, 80, 20), MultiLanguageSystem.Translate("Level") + ":");
|
||||||
@@ -1931,6 +2055,31 @@ namespace DevourClient
|
|||||||
_PlayerSpeedMultiplier = GUI.HorizontalSlider(new Rect(Settings.Settings.x + 130, Settings.Settings.y + 400, 120, 10), _PlayerSpeedMultiplier, (int)1f, (int)10f);
|
_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());
|
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"));
|
||||||
|
|
||||||
|
radialMenuEnabled = GUI.Toggle(new Rect(Settings.Settings.x + 10, Settings.Settings.y + 455, 200, 20), radialMenuEnabled, MultiLanguageSystem.Translate("Radial Menu (Z)"));
|
||||||
|
|
||||||
|
// 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()
|
private static void PlayersTab()
|
||||||
@@ -1949,45 +2098,62 @@ namespace DevourClient
|
|||||||
|
|
||||||
GUI.Label(new Rect(Settings.Settings.x + 10, Settings.Settings.y + 110 + i, 150, 30), bp.Name);
|
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();
|
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")))
|
||||||
{
|
{
|
||||||
bp.Revive();
|
if (bp.p_GameObject != null)
|
||||||
|
{
|
||||||
|
Il2Cpp.NolanBehaviour nb = bp.p_GameObject.GetComponent<Il2Cpp.NolanBehaviour>();
|
||||||
|
if (nb != null)
|
||||||
|
{
|
||||||
|
ReviveHelper.TryRevive(nb);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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();
|
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();
|
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();
|
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();
|
bp.TPAzazel();
|
||||||
}
|
}
|
||||||
|
buttonX += 100;
|
||||||
|
|
||||||
if (Helpers.Map.GetActiveScene() == "Town")
|
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();
|
bp.ShootPlayer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
i += 30;
|
i += 45;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -2,9 +2,7 @@ using System.Collections.Generic;
|
|||||||
|
|
||||||
namespace DevourClient.ESP
|
namespace DevourClient.ESP
|
||||||
{
|
{
|
||||||
/// <summary>
|
// Item ESP configuration management class - dynamically display different item types based on map
|
||||||
/// Item ESP configuration management class - dynamically display different item types based on map
|
|
||||||
/// </summary>
|
|
||||||
public static class ItemESPConfig
|
public static class ItemESPConfig
|
||||||
{
|
{
|
||||||
// ESP type enumeration
|
// ESP type enumeration
|
||||||
@@ -73,7 +71,10 @@ namespace DevourClient.ESP
|
|||||||
|
|
||||||
// Enemy ESP - Carnival
|
// Enemy ESP - Carnival
|
||||||
Monkey, // Monkey
|
Monkey, // Monkey
|
||||||
Doll // Doll
|
Doll, // Doll
|
||||||
|
|
||||||
|
// Collectables ESP - All maps (unified)
|
||||||
|
Collectables // All Collectables (Rose, Patch, CherryBlossom, Horseshoe, BarbedWire, Feather, Ticket, Pumpkin, Present)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ESP type configuration supported by each map
|
// ESP type configuration supported by each map
|
||||||
@@ -251,12 +252,12 @@ namespace DevourClient.ESP
|
|||||||
|
|
||||||
// Enemy - Carnival
|
// Enemy - Carnival
|
||||||
{ ESPType.Monkey, false },
|
{ ESPType.Monkey, false },
|
||||||
{ ESPType.Doll, false }
|
{ ESPType.Doll, false },
|
||||||
|
|
||||||
|
// Collectables - All maps (unified)
|
||||||
|
{ ESPType.Collectables, false }
|
||||||
};
|
};
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get list of ESP types supported by specified map
|
|
||||||
/// </summary>
|
|
||||||
public static List<ESPType> GetMapESPTypes(string sceneName)
|
public static List<ESPType> GetMapESPTypes(string sceneName)
|
||||||
{
|
{
|
||||||
// If in menu, return empty list
|
// If in menu, return empty list
|
||||||
@@ -278,35 +279,23 @@ namespace DevourClient.ESP
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get ESP type enable status
|
|
||||||
/// </summary>
|
|
||||||
public static bool GetESPState(ESPType type)
|
public static bool GetESPState(ESPType type)
|
||||||
{
|
{
|
||||||
return espStates.ContainsKey(type) ? espStates[type] : false;
|
return espStates.ContainsKey(type) ? espStates[type] : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Set ESP type enable status
|
|
||||||
/// </summary>
|
|
||||||
public static void SetESPState(ESPType type, bool enabled)
|
public static void SetESPState(ESPType type, bool enabled)
|
||||||
{
|
{
|
||||||
if (espStates.ContainsKey(type))
|
if (espStates.ContainsKey(type))
|
||||||
espStates[type] = enabled;
|
espStates[type] = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Toggle ESP type enable status
|
|
||||||
/// </summary>
|
|
||||||
public static void ToggleESPState(ESPType type)
|
public static void ToggleESPState(ESPType type)
|
||||||
{
|
{
|
||||||
if (espStates.ContainsKey(type))
|
if (espStates.ContainsKey(type))
|
||||||
espStates[type] = !espStates[type];
|
espStates[type] = !espStates[type];
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get ESP type display name (for translation key)
|
|
||||||
/// </summary>
|
|
||||||
public static string GetESPTypeName(ESPType type)
|
public static string GetESPTypeName(ESPType type)
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
@@ -405,18 +394,22 @@ namespace DevourClient.ESP
|
|||||||
case ESPType.Doll:
|
case ESPType.Doll:
|
||||||
return "Doll ESP";
|
return "Doll ESP";
|
||||||
|
|
||||||
|
// Collectables - All maps (unified)
|
||||||
|
case ESPType.Collectables:
|
||||||
|
return "Collectables ESP";
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return type.ToString();
|
return type.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get corresponding ESP type based on item name
|
|
||||||
/// </summary>
|
|
||||||
public static ESPType? GetESPTypeByItemName(string itemName)
|
public static ESPType? GetESPTypeByItemName(string itemName)
|
||||||
{
|
{
|
||||||
// Remove "Survival" and "(Clone)" prefix/suffix
|
if (string.IsNullOrEmpty(itemName))
|
||||||
itemName = itemName.Replace("Survival", "").Replace("(Clone)", "").Trim();
|
return null;
|
||||||
|
|
||||||
|
// Remove "Survival" and "(Clone)" prefix/suffix, handle both "Survival" and "Survival " (with space)
|
||||||
|
itemName = itemName.Replace("Survival ", "").Replace("Survival", "").Replace("(Clone)", "").Trim();
|
||||||
|
|
||||||
// Match item name to ESP type
|
// Match item name to ESP type
|
||||||
switch (itemName.ToLower())
|
switch (itemName.ToLower())
|
||||||
@@ -575,14 +568,35 @@ namespace DevourClient.ESP
|
|||||||
case "dollbehaviour":
|
case "dollbehaviour":
|
||||||
return ESPType.Doll;
|
return ESPType.Doll;
|
||||||
|
|
||||||
|
// Collectables - All maps (unified)
|
||||||
|
// Based on CollectablesJSON field names and gameObject names
|
||||||
|
case "rose":
|
||||||
|
case "collectables":
|
||||||
|
case "collectable":
|
||||||
|
case "patch":
|
||||||
|
case "patches":
|
||||||
|
case "cherryblossom":
|
||||||
|
case "cherry blossom":
|
||||||
|
case "horseshoe":
|
||||||
|
case "horseshoes":
|
||||||
|
case "barbedwire":
|
||||||
|
case "barbed wire":
|
||||||
|
case "barbedwires":
|
||||||
|
case "feather":
|
||||||
|
case "feathers":
|
||||||
|
case "ticket":
|
||||||
|
case "tickets":
|
||||||
|
case "pumpkin":
|
||||||
|
case "pumpkins":
|
||||||
|
case "present":
|
||||||
|
case "presents":
|
||||||
|
return ESPType.Collectables;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return null; // Unknown item type
|
return null; // Unknown item type
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Check if ESP should be shown for specified item
|
|
||||||
/// </summary>
|
|
||||||
public static bool ShouldShowESP(string itemName)
|
public static bool ShouldShowESP(string itemName)
|
||||||
{
|
{
|
||||||
ESPType? espType = GetESPTypeByItemName(itemName);
|
ESPType? espType = GetESPTypeByItemName(itemName);
|
||||||
@@ -592,9 +606,6 @@ namespace DevourClient.ESP
|
|||||||
return GetESPState(espType.Value);
|
return GetESPState(espType.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Reset all ESP states
|
|
||||||
/// </summary>
|
|
||||||
public static void ResetAllStates()
|
public static void ResetAllStates()
|
||||||
{
|
{
|
||||||
var keys = new List<ESPType>(espStates.Keys);
|
var keys = new List<ESPType>(espStates.Keys);
|
||||||
|
|||||||
@@ -191,11 +191,15 @@ namespace DevourClient.Hacks
|
|||||||
|
|
||||||
public static void AutoRespawn()
|
public static void AutoRespawn()
|
||||||
{
|
{
|
||||||
|
// Centralized revive logic: always go through ReviveHelper.
|
||||||
Il2Cpp.NolanBehaviour nb = Player.GetPlayer();
|
Il2Cpp.NolanBehaviour nb = Player.GetPlayer();
|
||||||
|
|
||||||
Il2Cpp.SurvivalReviveInteractable _reviveInteractable = UnityEngine.Object.FindObjectOfType<Il2Cpp.SurvivalReviveInteractable>(); //probably can't be null
|
if (nb == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
_reviveInteractable.Interact(nb.gameObject);
|
ReviveHelper.TryRevive(nb);
|
||||||
}
|
}
|
||||||
public static void TPItems()
|
public static void TPItems()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
{
|
{
|
||||||
switch (sceneName)
|
switch (sceneName)
|
||||||
{
|
{
|
||||||
|
case "Devour":
|
||||||
case "Anna":
|
case "Anna":
|
||||||
return "Farmhouse";
|
return "Farmhouse";
|
||||||
case "Molly":
|
case "Molly":
|
||||||
|
|||||||
104
DevourClient/Helpers/ReviveHelper.cs
Normal file
104
DevourClient/Helpers/ReviveHelper.cs
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
using System;
|
||||||
|
using DevourClient.Network;
|
||||||
|
using MelonLoader;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace DevourClient.Helpers
|
||||||
|
{
|
||||||
|
// Shared revive utilities. When running as host we mirror DevourX's revive flow.
|
||||||
|
public static class ReviveHelper
|
||||||
|
{
|
||||||
|
private static readonly Vector3 HostFallbackPosition = new Vector3(0f, -150f, 0f);
|
||||||
|
|
||||||
|
// Try to revive the provided NolanBehaviour using host-specific logic first,
|
||||||
|
// then fall back to the standard interactable flow.
|
||||||
|
public static bool TryRevive(Il2Cpp.NolanBehaviour target)
|
||||||
|
{
|
||||||
|
if (target == null || target.gameObject == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TryHostRevive(target))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TryInteractRevive(target);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool TryHostRevive(Il2Cpp.NolanBehaviour target)
|
||||||
|
{
|
||||||
|
if (!NetworkHelper.IsHost() || !Player.IsInGame())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!target.IsCrawling())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Il2Cpp.SurvivalReviveInteractable interactable = UnityEngine.Object.FindObjectOfType<Il2Cpp.SurvivalReviveInteractable>();
|
||||||
|
if (interactable == null)
|
||||||
|
{
|
||||||
|
target.TeleportTo(HostFallbackPosition, Quaternion.identity);
|
||||||
|
MelonLogger.Msg("[ReviveHelper] Host fallback teleport executed (no interactable found).");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
interactable.Interact(target.gameObject);
|
||||||
|
MelonLogger.Msg("[ReviveHelper] Host revive interactable triggered.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MelonLogger.Warning($"[ReviveHelper] Host revive flow failed: {ex.Message}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool TryInteractRevive(Il2Cpp.NolanBehaviour target)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Il2Cpp.SurvivalReviveInteractable interactable = UnityEngine.Object.FindObjectOfType<Il2Cpp.SurvivalReviveInteractable>();
|
||||||
|
if (interactable == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (interactable.CanInteract(target.gameObject))
|
||||||
|
{
|
||||||
|
interactable.Interact(target.gameObject);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MelonLogger.Warning($"[ReviveHelper] Interact revive failed: {ex.Message}");
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Legacy revive method migrated from StateHelper.BasePlayer.Revive().
|
||||||
|
// This method preserves the original implementation from StateHelper.
|
||||||
|
// targetGameObject: The GameObject of the player to revive.
|
||||||
|
public static void ReviveLegacy(GameObject targetGameObject)
|
||||||
|
{
|
||||||
|
if (targetGameObject == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Il2Cpp.NolanBehaviour nb = targetGameObject.GetComponent<Il2Cpp.NolanBehaviour>();
|
||||||
|
Il2Cpp.SurvivalReviveInteractable _reviveInteractable = UnityEngine.Object.FindObjectOfType<Il2Cpp.SurvivalReviveInteractable>();
|
||||||
|
|
||||||
|
if (_reviveInteractable.CanInteract(nb.gameObject) == true) { _reviveInteractable.Interact(nb.gameObject); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -30,20 +30,6 @@ namespace DevourClient.Helpers
|
|||||||
sab.OnKnockout(sab.gameObject, p_GameObject);
|
sab.OnKnockout(sab.gameObject, p_GameObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Revive()
|
|
||||||
{
|
|
||||||
if (p_GameObject == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Il2Cpp.NolanBehaviour nb = p_GameObject.GetComponent<Il2Cpp.NolanBehaviour>();
|
|
||||||
Il2Cpp.SurvivalReviveInteractable _reviveInteractable = UnityEngine.Object.FindObjectOfType<Il2Cpp.SurvivalReviveInteractable>();
|
|
||||||
|
|
||||||
if (_reviveInteractable.CanInteract(nb.gameObject) == true) { _reviveInteractable.Interact(nb.gameObject); }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Jumpscare() //TOFIX doesn't seem to be working
|
public void Jumpscare() //TOFIX doesn't seem to be working
|
||||||
{
|
{
|
||||||
if (!BoltNetwork.IsServer)
|
if (!BoltNetwork.IsServer)
|
||||||
@@ -135,6 +121,7 @@ namespace DevourClient.Helpers
|
|||||||
_azazelSam.OnShootPlayer(p_GameObject, true);
|
_azazelSam.OnShootPlayer(p_GameObject, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public class Player
|
public class Player
|
||||||
{
|
{
|
||||||
@@ -193,6 +180,7 @@ namespace DevourClient.Helpers
|
|||||||
public static Il2Cpp.GoatBehaviour[] DirtyHeads = default!;
|
public static Il2Cpp.GoatBehaviour[] DirtyHeads = default!;
|
||||||
public static Il2Cpp.MonkeyBehaviour[] Monkeys = default!;
|
public static Il2Cpp.MonkeyBehaviour[] Monkeys = default!;
|
||||||
public static Il2Cpp.GoatBehaviour[] Dolls = default!;
|
public static Il2Cpp.GoatBehaviour[] Dolls = default!;
|
||||||
|
public static Il2Cpp.CollectableInteractable[] Collectables = default!;
|
||||||
|
|
||||||
// Coroutine lifecycle management
|
// Coroutine lifecycle management
|
||||||
private static List<object> activeCoroutines = new List<object>();
|
private static List<object> activeCoroutines = new List<object>();
|
||||||
@@ -409,6 +397,17 @@ namespace DevourClient.Helpers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static IEnumerator GetCollectables()
|
||||||
|
{
|
||||||
|
while (isRunning)
|
||||||
|
{
|
||||||
|
Collectables = Il2Cpp.CollectableInteractable.FindObjectsOfType<Il2Cpp.CollectableInteractable>();
|
||||||
|
|
||||||
|
// Wait 5 seconds before caching objects again.
|
||||||
|
yield return new WaitForSeconds(5f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void StartAllCoroutines()
|
public static void StartAllCoroutines()
|
||||||
{
|
{
|
||||||
isRunning = true;
|
isRunning = true;
|
||||||
@@ -470,6 +469,7 @@ namespace DevourClient.Helpers
|
|||||||
DirtyHeads = null;
|
DirtyHeads = null;
|
||||||
Monkeys = null;
|
Monkeys = null;
|
||||||
Dolls = null;
|
Dolls = null;
|
||||||
|
Collectables = null;
|
||||||
|
|
||||||
if (LocalPlayer_ != null)
|
if (LocalPlayer_ != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,154 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace DevourClient.Localization
|
|
||||||
{
|
|
||||||
public static class TranslationDict
|
|
||||||
{
|
|
||||||
public static bool EnableChineseTranslation { get; set; } = true;
|
|
||||||
|
|
||||||
private static readonly Dictionary<string, string> ItemTranslations = new Dictionary<string, string>
|
|
||||||
{
|
|
||||||
{ "Key", "钥匙" },
|
|
||||||
{ "Hay", "干草" },
|
|
||||||
{ "FirstAid", "急救包" },
|
|
||||||
{ "Battery", "电池" },
|
|
||||||
{ "Gasoline", "汽油" },
|
|
||||||
{ "Fuse", "保险丝" },
|
|
||||||
{ "Food", "食物" },
|
|
||||||
{ "RottenFood", "腐烂食物" },
|
|
||||||
{ "Bone", "骨头" },
|
|
||||||
{ "Bleach", "漂白剂" },
|
|
||||||
{ "Matchbox", "火柴盒" },
|
|
||||||
{ "Spade", "铲子" },
|
|
||||||
{ "Cake", "蛋糕" },
|
|
||||||
{ "MusicBox", "音乐盒" },
|
|
||||||
{ "Coin", "硬币" },
|
|
||||||
|
|
||||||
{ "Egg", "鸡蛋" },
|
|
||||||
{ "Egg-Clean-1", "鸡蛋-1" },
|
|
||||||
{ "Egg-Clean-2", "鸡蛋-2" },
|
|
||||||
{ "Egg-Clean-3", "鸡蛋-3" },
|
|
||||||
{ "Egg-Clean-4", "鸡蛋-4" },
|
|
||||||
{ "Egg-Clean-5", "鸡蛋-5" },
|
|
||||||
{ "Egg-Clean-6", "鸡蛋-6" },
|
|
||||||
{ "Egg-Clean-7", "鸡蛋-7" },
|
|
||||||
{ "Egg-Clean-8", "鸡蛋-8" },
|
|
||||||
{ "Egg-Clean-9", "鸡蛋-9" },
|
|
||||||
{ "Egg-Clean-10", "鸡蛋-10" },
|
|
||||||
{ "RitualBook", "仪式书" },
|
|
||||||
{ "DollHead", "玩偶头" },
|
|
||||||
{ "Head", "头颅" },
|
|
||||||
{ "CleanHead", "干净的头颅" },
|
|
||||||
};
|
|
||||||
|
|
||||||
private static readonly Dictionary<string, string> AnimalTranslations = new Dictionary<string, string>
|
|
||||||
{
|
|
||||||
{ "Goat", "山羊" },
|
|
||||||
{ "Rat", "老鼠" },
|
|
||||||
{ "Pig", "猪" },
|
|
||||||
};
|
|
||||||
|
|
||||||
private static readonly Dictionary<string, string> EnemyTranslations = new Dictionary<string, string>
|
|
||||||
{
|
|
||||||
{ "Azazel", "阿撒泻勒" },
|
|
||||||
{ "Demon", "恶魔" },
|
|
||||||
{ "Spider", "蜘蛛" },
|
|
||||||
{ "Ghost", "鬼魂" },
|
|
||||||
{ "Boar", "野猪" },
|
|
||||||
{ "Corpse", "尸体" },
|
|
||||||
{ "Crow", "乌鸦" },
|
|
||||||
{ "Lump", "肿块" },
|
|
||||||
{ "Monkey", "猴子" },
|
|
||||||
{ "Inmate", "囚犯" },
|
|
||||||
|
|
||||||
{ "AzazelSam", "阿撒泻勒-萨姆" },
|
|
||||||
{ "AzazelMolly", "阿撒泻勒-莫莉" },
|
|
||||||
{ "AzazelAnna", "阿撒泻勒-安娜" },
|
|
||||||
{ "AzazelZara", "阿撒泻勒-扎拉" },
|
|
||||||
{ "AzazelNathan", "阿撒泻勒-内森" },
|
|
||||||
{ "AzazelApril", "阿撒泻勒-艾普尔" },
|
|
||||||
{ "AzazelKai", "阿撒泻勒-凯" },
|
|
||||||
};
|
|
||||||
|
|
||||||
private static readonly Dictionary<string, string> MapTranslations = new Dictionary<string, string>
|
|
||||||
{
|
|
||||||
{ "Devour", "农舍" },
|
|
||||||
{ "Farmhouse", "农舍" },
|
|
||||||
{ "Molly", "精神病院" },
|
|
||||||
{ "Asylum", "精神病院" },
|
|
||||||
{ "Inn", "旅馆" },
|
|
||||||
{ "Town", "小镇" },
|
|
||||||
{ "Slaughterhouse", "屠宰场" },
|
|
||||||
{ "Manor", "庄园" },
|
|
||||||
{ "Carnival", "嘉年华" },
|
|
||||||
{ "Menu", "菜单" },
|
|
||||||
};
|
|
||||||
|
|
||||||
private static readonly Dictionary<string, string> OtherTranslations = new Dictionary<string, string>
|
|
||||||
{
|
|
||||||
{ "Player", "玩家" },
|
|
||||||
{ "Door", "门" },
|
|
||||||
{ "Gate", "大门" },
|
|
||||||
{ "Altar", "祭坛" },
|
|
||||||
{ "Fountain", "喷泉" },
|
|
||||||
{ "Mirror", "镜子" },
|
|
||||||
{ "Cage", "笼子" },
|
|
||||||
};
|
|
||||||
|
|
||||||
public static string Translate(string englishName)
|
|
||||||
{
|
|
||||||
if (!EnableChineseTranslation || string.IsNullOrEmpty(englishName))
|
|
||||||
{
|
|
||||||
return englishName;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ItemTranslations.TryGetValue(englishName, out string itemTranslation))
|
|
||||||
{
|
|
||||||
return itemTranslation;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AnimalTranslations.TryGetValue(englishName, out string animalTranslation))
|
|
||||||
{
|
|
||||||
return animalTranslation;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (EnemyTranslations.TryGetValue(englishName, out string enemyTranslation))
|
|
||||||
{
|
|
||||||
return enemyTranslation;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (MapTranslations.TryGetValue(englishName, out string mapTranslation))
|
|
||||||
{
|
|
||||||
return mapTranslation;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (OtherTranslations.TryGetValue(englishName, out string otherTranslation))
|
|
||||||
{
|
|
||||||
return otherTranslation;
|
|
||||||
}
|
|
||||||
|
|
||||||
return englishName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void AddCustomTranslations(Dictionary<string, string> customTranslations)
|
|
||||||
{
|
|
||||||
if (customTranslations == null) return;
|
|
||||||
|
|
||||||
foreach (var kvp in customTranslations)
|
|
||||||
{
|
|
||||||
if (!ItemTranslations.ContainsKey(kvp.Key))
|
|
||||||
{
|
|
||||||
ItemTranslations.Add(kvp.Key, kvp.Value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int GetTotalTranslationCount()
|
|
||||||
{
|
|
||||||
return ItemTranslations.Count + AnimalTranslations.Count +
|
|
||||||
EnemyTranslations.Count + MapTranslations.Count +
|
|
||||||
OtherTranslations.Count;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -31,6 +31,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "AzazelNathan", "Azazel-Nathan" },
|
{ "AzazelNathan", "Azazel-Nathan" },
|
||||||
{ "AzazelSam", "Azazel-Sam" },
|
{ "AzazelSam", "Azazel-Sam" },
|
||||||
{ "AzazelZara", "Azazel-Zara" },
|
{ "AzazelZara", "Azazel-Zara" },
|
||||||
|
{ "Barbed Wire", "带刺铁丝网" },
|
||||||
{ "Battery", "电池" },
|
{ "Battery", "电池" },
|
||||||
{ "Battery ESP", "电池透视" },
|
{ "Battery ESP", "电池透视" },
|
||||||
{ "Big Flashlight", "大手电筒" },
|
{ "Big Flashlight", "大手电筒" },
|
||||||
@@ -45,7 +46,9 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Cake", "蛋糕" },
|
{ "Cake", "蛋糕" },
|
||||||
{ "Cake ESP", "蛋糕透视" },
|
{ "Cake ESP", "蛋糕透视" },
|
||||||
{ "Carnival", "嘉年华" },
|
{ "Carnival", "嘉年华" },
|
||||||
|
{ "Cherry Blossom", "樱花" },
|
||||||
{ "Clean Head ESP", "清洁头颅透视" },
|
{ "Clean Head ESP", "清洁头颅透视" },
|
||||||
|
{ "Collectables ESP", "收藏品透视" },
|
||||||
{ "Clean The Fountains", "清洁喷泉" },
|
{ "Clean The Fountains", "清洁喷泉" },
|
||||||
{ "CleanHead", "干净的头颅" },
|
{ "CleanHead", "干净的头颅" },
|
||||||
{ "Client", "客户端" },
|
{ "Client", "客户端" },
|
||||||
@@ -119,6 +122,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Flashlight Color", "手电筒颜色" },
|
{ "Flashlight Color", "手电筒颜色" },
|
||||||
{ "Fly", "飞行" },
|
{ "Fly", "飞行" },
|
||||||
{ "Fly Speed", "飞行速度" },
|
{ "Fly Speed", "飞行速度" },
|
||||||
|
{ "Feather", "羽毛" },
|
||||||
{ "Food", "食物" },
|
{ "Food", "食物" },
|
||||||
{ "Force Start Game", "强制开始游戏" },
|
{ "Force Start Game", "强制开始游戏" },
|
||||||
{ "Fountain", "喷泉" },
|
{ "Fountain", "喷泉" },
|
||||||
@@ -137,6 +141,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Hay", "干草" },
|
{ "Hay", "干草" },
|
||||||
{ "Hay ESP", "干草透视" },
|
{ "Hay ESP", "干草透视" },
|
||||||
{ "Head", "头颅" },
|
{ "Head", "头颅" },
|
||||||
|
{ "Horseshoe", "马蹄铁" },
|
||||||
{ "Host", "房主" },
|
{ "Host", "房主" },
|
||||||
{ "Host Only", "仅房主" },
|
{ "Host Only", "仅房主" },
|
||||||
{ "Infinite mirrors", "无限镜子" },
|
{ "Infinite mirrors", "无限镜子" },
|
||||||
@@ -183,6 +188,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Network Info", "网络信息" },
|
{ "Network Info", "网络信息" },
|
||||||
{ "Network Stats", "网络统计" },
|
{ "Network Stats", "网络统计" },
|
||||||
{ "Not connected", "未连接网络" },
|
{ "Not connected", "未连接网络" },
|
||||||
|
{ "Patch", "补丁" },
|
||||||
{ "Pig", "猪" },
|
{ "Pig", "猪" },
|
||||||
{ "Pig ESP", "猪透视" },
|
{ "Pig ESP", "猪透视" },
|
||||||
{ "PigExcrement", "猪粪" },
|
{ "PigExcrement", "猪粪" },
|
||||||
@@ -194,12 +200,16 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Player ESP Color", "玩家透视颜色" },
|
{ "Player ESP Color", "玩家透视颜色" },
|
||||||
{ "Player Snapline", "玩家连线" },
|
{ "Player Snapline", "玩家连线" },
|
||||||
{ "Players", "玩家" },
|
{ "Players", "玩家" },
|
||||||
|
{ "Present", "礼物" },
|
||||||
{ "Private Lobby", "私人房间" },
|
{ "Private Lobby", "私人房间" },
|
||||||
|
{ "Pumpkin", "南瓜" },
|
||||||
{ "Rat", "老鼠" },
|
{ "Rat", "老鼠" },
|
||||||
{ "Rat ESP", "老鼠透视" },
|
{ "Rat ESP", "老鼠透视" },
|
||||||
{ "Region", "区域" },
|
{ "Region", "区域" },
|
||||||
{ "Revive", "复活" },
|
{ "Revive", "复活" },
|
||||||
|
{ "Radial Menu (Z)", "轮盘菜单 (Z)" },
|
||||||
{ "Ritual Book", "仪式书" },
|
{ "Ritual Book", "仪式书" },
|
||||||
|
{ "Rose", "玫瑰" },
|
||||||
{ "Ritual Book ESP", "仪式书透视" },
|
{ "Ritual Book ESP", "仪式书透视" },
|
||||||
{ "Ritual Object ESP", "仪式物品透视" },
|
{ "Ritual Object ESP", "仪式物品透视" },
|
||||||
{ "Ritual Objects", "仪式物品" },
|
{ "Ritual Objects", "仪式物品" },
|
||||||
@@ -210,6 +220,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Rotton Food ESP", "腐烂食物透视" },
|
{ "Rotton Food ESP", "腐烂食物透视" },
|
||||||
{ "Sam", "萨姆" },
|
{ "Sam", "萨姆" },
|
||||||
{ "Shoot Player", "射击玩家" },
|
{ "Shoot Player", "射击玩家" },
|
||||||
|
{ "Show Coordinates", "显示坐标" },
|
||||||
{ "Skeleton ESP", "骨骼透视" },
|
{ "Skeleton ESP", "骨骼透视" },
|
||||||
{ "Slaughterhouse", "屠宰场" },
|
{ "Slaughterhouse", "屠宰场" },
|
||||||
{ "SlaughterhouseFireEscapeDoor", "屠宰场消防门" },
|
{ "SlaughterhouseFireEscapeDoor", "屠宰场消防门" },
|
||||||
@@ -244,6 +255,11 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "TV", "电视" },
|
{ "TV", "电视" },
|
||||||
{ "Teleport Keys", "传送钥匙" },
|
{ "Teleport Keys", "传送钥匙" },
|
||||||
{ "Teleport to", "传送至" },
|
{ "Teleport to", "传送至" },
|
||||||
|
{ "TP Base", "传送至基地" },
|
||||||
|
{ "TP Altar", "传送至祭坛" },
|
||||||
|
{ "TP Basin", "传送至水池" },
|
||||||
|
{ "TP Fountain", "传送至喷泉" },
|
||||||
|
{ "Ticket", "票券" },
|
||||||
{ "Town", "小镇" },
|
{ "Town", "小镇" },
|
||||||
{ "TownDoor", "小镇门" },
|
{ "TownDoor", "小镇门" },
|
||||||
{ "TownDoor2", "小镇门2" },
|
{ "TownDoor2", "小镇门2" },
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "AzazelNathan", "AzazelNathan" },
|
{ "AzazelNathan", "AzazelNathan" },
|
||||||
{ "AzazelSam", "AzazelSam" },
|
{ "AzazelSam", "AzazelSam" },
|
||||||
{ "AzazelZara", "AzazelZara" },
|
{ "AzazelZara", "AzazelZara" },
|
||||||
|
{ "Barbed Wire", "Barbed Wire" },
|
||||||
{ "Battery", "Battery" },
|
{ "Battery", "Battery" },
|
||||||
{ "Battery ESP", "Battery ESP" },
|
{ "Battery ESP", "Battery ESP" },
|
||||||
{ "Big Flashlight", "Big Flashlight" },
|
{ "Big Flashlight", "Big Flashlight" },
|
||||||
@@ -45,7 +46,9 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Cake", "Cake" },
|
{ "Cake", "Cake" },
|
||||||
{ "Cake ESP", "Cake ESP" },
|
{ "Cake ESP", "Cake ESP" },
|
||||||
{ "Carnival", "Carnival" },
|
{ "Carnival", "Carnival" },
|
||||||
|
{ "Cherry Blossom", "Cherry Blossom" },
|
||||||
{ "Clean Head ESP", "Clean Head ESP" },
|
{ "Clean Head ESP", "Clean Head ESP" },
|
||||||
|
{ "Collectables ESP", "Collectables ESP" },
|
||||||
{ "Clean The Fountains", "Clean The Fountains" },
|
{ "Clean The Fountains", "Clean The Fountains" },
|
||||||
{ "CleanHead", "CleanHead" },
|
{ "CleanHead", "CleanHead" },
|
||||||
{ "Client", "Client" },
|
{ "Client", "Client" },
|
||||||
@@ -119,6 +122,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Flashlight Color", "Flashlight Color" },
|
{ "Flashlight Color", "Flashlight Color" },
|
||||||
{ "Fly", "Fly" },
|
{ "Fly", "Fly" },
|
||||||
{ "Fly Speed", "Fly Speed" },
|
{ "Fly Speed", "Fly Speed" },
|
||||||
|
{ "Feather", "Feather" },
|
||||||
{ "Food", "Food" },
|
{ "Food", "Food" },
|
||||||
{ "Force Start Game", "Force Start Game" },
|
{ "Force Start Game", "Force Start Game" },
|
||||||
{ "Fountain", "Fountain" },
|
{ "Fountain", "Fountain" },
|
||||||
@@ -137,6 +141,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Hay", "Hay" },
|
{ "Hay", "Hay" },
|
||||||
{ "Hay ESP", "Hay ESP" },
|
{ "Hay ESP", "Hay ESP" },
|
||||||
{ "Head", "Head" },
|
{ "Head", "Head" },
|
||||||
|
{ "Horseshoe", "Horseshoe" },
|
||||||
{ "Host", "Host" },
|
{ "Host", "Host" },
|
||||||
{ "Host Only", "Host Only" },
|
{ "Host Only", "Host Only" },
|
||||||
{ "Infinite mirrors", "Infinite mirrors" },
|
{ "Infinite mirrors", "Infinite mirrors" },
|
||||||
@@ -183,6 +188,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Network Info", "Network Info" },
|
{ "Network Info", "Network Info" },
|
||||||
{ "Network Stats", "Network Stats" },
|
{ "Network Stats", "Network Stats" },
|
||||||
{ "Not connected", "Not connected" },
|
{ "Not connected", "Not connected" },
|
||||||
|
{ "Patch", "Patch" },
|
||||||
{ "Pig", "Pig" },
|
{ "Pig", "Pig" },
|
||||||
{ "Pig ESP", "Pig ESP" },
|
{ "Pig ESP", "Pig ESP" },
|
||||||
{ "PigExcrement", "PigExcrement" },
|
{ "PigExcrement", "PigExcrement" },
|
||||||
@@ -194,12 +200,16 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Player ESP Color", "Player ESP Color" },
|
{ "Player ESP Color", "Player ESP Color" },
|
||||||
{ "Player Snapline", "Player Snapline" },
|
{ "Player Snapline", "Player Snapline" },
|
||||||
{ "Players", "Players" },
|
{ "Players", "Players" },
|
||||||
|
{ "Present", "Present" },
|
||||||
{ "Private Lobby", "Private Lobby" },
|
{ "Private Lobby", "Private Lobby" },
|
||||||
|
{ "Pumpkin", "Pumpkin" },
|
||||||
{ "Rat", "Rat" },
|
{ "Rat", "Rat" },
|
||||||
{ "Rat ESP", "Rat ESP" },
|
{ "Rat ESP", "Rat ESP" },
|
||||||
{ "Region", "Region" },
|
{ "Region", "Region" },
|
||||||
{ "Revive", "Revive" },
|
{ "Revive", "Revive" },
|
||||||
|
{ "Radial Menu (Z)", "Radial Menu (Z)" },
|
||||||
{ "Ritual Book", "Ritual Book" },
|
{ "Ritual Book", "Ritual Book" },
|
||||||
|
{ "Rose", "Rose" },
|
||||||
{ "Ritual Book ESP", "Ritual Book ESP" },
|
{ "Ritual Book ESP", "Ritual Book ESP" },
|
||||||
{ "Ritual Object ESP", "Ritual Object ESP" },
|
{ "Ritual Object ESP", "Ritual Object ESP" },
|
||||||
{ "Ritual Objects", "Ritual Objects" },
|
{ "Ritual Objects", "Ritual Objects" },
|
||||||
@@ -210,6 +220,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Rotton Food ESP", "Rotton Food ESP" },
|
{ "Rotton Food ESP", "Rotton Food ESP" },
|
||||||
{ "Sam", "Sam" },
|
{ "Sam", "Sam" },
|
||||||
{ "Shoot Player", "Shoot Player" },
|
{ "Shoot Player", "Shoot Player" },
|
||||||
|
{ "Show Coordinates", "Show Coordinates" },
|
||||||
{ "Skeleton ESP", "Skeleton ESP" },
|
{ "Skeleton ESP", "Skeleton ESP" },
|
||||||
{ "Slaughterhouse", "Slaughterhouse" },
|
{ "Slaughterhouse", "Slaughterhouse" },
|
||||||
{ "SlaughterhouseFireEscapeDoor", "SlaughterhouseFireEscapeDoor" },
|
{ "SlaughterhouseFireEscapeDoor", "SlaughterhouseFireEscapeDoor" },
|
||||||
@@ -244,6 +255,11 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "TV", "TV" },
|
{ "TV", "TV" },
|
||||||
{ "Teleport Keys", "Teleport Keys" },
|
{ "Teleport Keys", "Teleport Keys" },
|
||||||
{ "Teleport to", "Teleport to" },
|
{ "Teleport to", "Teleport to" },
|
||||||
|
{ "TP Base", "TP Base" },
|
||||||
|
{ "TP Altar", "TP Altar" },
|
||||||
|
{ "TP Basin", "TP Basin" },
|
||||||
|
{ "TP Fountain", "TP Fountain" },
|
||||||
|
{ "Ticket", "Ticket" },
|
||||||
{ "Town", "Town" },
|
{ "Town", "Town" },
|
||||||
{ "TownDoor", "TownDoor" },
|
{ "TownDoor", "TownDoor" },
|
||||||
{ "TownDoor2", "TownDoor2" },
|
{ "TownDoor2", "TownDoor2" },
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "AzazelNathan", "Azazel-Nathan" },
|
{ "AzazelNathan", "Azazel-Nathan" },
|
||||||
{ "AzazelSam", "Azazel-Sam" },
|
{ "AzazelSam", "Azazel-Sam" },
|
||||||
{ "AzazelZara", "Azazel-Zara" },
|
{ "AzazelZara", "Azazel-Zara" },
|
||||||
|
{ "Barbed Wire", "Fil de fer barbelé" },
|
||||||
{ "Battery", "Batterie" },
|
{ "Battery", "Batterie" },
|
||||||
{ "Battery ESP", "ESP batterie" },
|
{ "Battery ESP", "ESP batterie" },
|
||||||
{ "Big Flashlight", "Grande lampe" },
|
{ "Big Flashlight", "Grande lampe" },
|
||||||
@@ -45,7 +46,9 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Cake", "Gâteau" },
|
{ "Cake", "Gâteau" },
|
||||||
{ "Cake ESP", "ESP gâteau" },
|
{ "Cake ESP", "ESP gâteau" },
|
||||||
{ "Carnival", "Carnaval" },
|
{ "Carnival", "Carnaval" },
|
||||||
|
{ "Cherry Blossom", "Fleur de cerisier" },
|
||||||
{ "Clean Head ESP", "ESP tête propre" },
|
{ "Clean Head ESP", "ESP tête propre" },
|
||||||
|
{ "Collectables ESP", "ESP objets de collection" },
|
||||||
{ "Clean The Fountains", "Nettoyer fontaines" },
|
{ "Clean The Fountains", "Nettoyer fontaines" },
|
||||||
{ "CleanHead", "Tête propre" },
|
{ "CleanHead", "Tête propre" },
|
||||||
{ "Client", "Client" },
|
{ "Client", "Client" },
|
||||||
@@ -119,6 +122,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Flashlight Color", "Couleur lampe" },
|
{ "Flashlight Color", "Couleur lampe" },
|
||||||
{ "Fly", "Voler" },
|
{ "Fly", "Voler" },
|
||||||
{ "Fly Speed", "Vitesse vol" },
|
{ "Fly Speed", "Vitesse vol" },
|
||||||
|
{ "Feather", "Plume" },
|
||||||
{ "Food", "Nourriture" },
|
{ "Food", "Nourriture" },
|
||||||
{ "Force Start Game", "Forcer le démarrage" },
|
{ "Force Start Game", "Forcer le démarrage" },
|
||||||
{ "Fountain", "Fontaine" },
|
{ "Fountain", "Fontaine" },
|
||||||
@@ -137,6 +141,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Hay", "Foin" },
|
{ "Hay", "Foin" },
|
||||||
{ "Hay ESP", "ESP foin" },
|
{ "Hay ESP", "ESP foin" },
|
||||||
{ "Head", "Tête" },
|
{ "Head", "Tête" },
|
||||||
|
{ "Horseshoe", "Fer à cheval" },
|
||||||
{ "Host", "Hôte" },
|
{ "Host", "Hôte" },
|
||||||
{ "Host Only", "Hôte seulement" },
|
{ "Host Only", "Hôte seulement" },
|
||||||
{ "Infinite mirrors", "Miroirs infinis" },
|
{ "Infinite mirrors", "Miroirs infinis" },
|
||||||
@@ -183,6 +188,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Network Info", "Infos réseau" },
|
{ "Network Info", "Infos réseau" },
|
||||||
{ "Network Stats", "Statistiques réseau" },
|
{ "Network Stats", "Statistiques réseau" },
|
||||||
{ "Not connected", "Non connecté" },
|
{ "Not connected", "Non connecté" },
|
||||||
|
{ "Patch", "Patch" },
|
||||||
{ "Pig", "Cochon" },
|
{ "Pig", "Cochon" },
|
||||||
{ "Pig ESP", "ESP cochon" },
|
{ "Pig ESP", "ESP cochon" },
|
||||||
{ "PigExcrement", "Excréments de porc" },
|
{ "PigExcrement", "Excréments de porc" },
|
||||||
@@ -194,12 +200,16 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Player ESP Color", "Couleur ESP joueur" },
|
{ "Player ESP Color", "Couleur ESP joueur" },
|
||||||
{ "Player Snapline", "Ligne joueur" },
|
{ "Player Snapline", "Ligne joueur" },
|
||||||
{ "Players", "Joueurs" },
|
{ "Players", "Joueurs" },
|
||||||
|
{ "Present", "Cadeau" },
|
||||||
{ "Private Lobby", "Lobby privé" },
|
{ "Private Lobby", "Lobby privé" },
|
||||||
|
{ "Pumpkin", "Citrouille" },
|
||||||
{ "Rat", "Rat" },
|
{ "Rat", "Rat" },
|
||||||
{ "Rat ESP", "ESP rat" },
|
{ "Rat ESP", "ESP rat" },
|
||||||
{ "Region", "Région" },
|
{ "Region", "Région" },
|
||||||
{ "Revive", "Réanimer" },
|
{ "Revive", "Réanimer" },
|
||||||
|
{ "Radial Menu (Z)", "Menu radial (Z)" },
|
||||||
{ "Ritual Book", "Livre rituel" },
|
{ "Ritual Book", "Livre rituel" },
|
||||||
|
{ "Rose", "Rose" },
|
||||||
{ "Ritual Book ESP", "ESP livre rituel" },
|
{ "Ritual Book ESP", "ESP livre rituel" },
|
||||||
{ "Ritual Object ESP", "ESP objet rituel" },
|
{ "Ritual Object ESP", "ESP objet rituel" },
|
||||||
{ "Ritual Objects", "Objets rituels" },
|
{ "Ritual Objects", "Objets rituels" },
|
||||||
@@ -210,6 +220,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Rotton Food ESP", "ESP nourriture pourrie" },
|
{ "Rotton Food ESP", "ESP nourriture pourrie" },
|
||||||
{ "Sam", "Sam" },
|
{ "Sam", "Sam" },
|
||||||
{ "Shoot Player", "Tirer sur le joueur" },
|
{ "Shoot Player", "Tirer sur le joueur" },
|
||||||
|
{ "Show Coordinates", "Afficher coordonnées" },
|
||||||
{ "Skeleton ESP", "ESP squelette" },
|
{ "Skeleton ESP", "ESP squelette" },
|
||||||
{ "Slaughterhouse", "Abattoir" },
|
{ "Slaughterhouse", "Abattoir" },
|
||||||
{ "SlaughterhouseFireEscapeDoor", "Porte de secours d'abattoir" },
|
{ "SlaughterhouseFireEscapeDoor", "Porte de secours d'abattoir" },
|
||||||
@@ -244,6 +255,11 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "TV", "Télévision" },
|
{ "TV", "Télévision" },
|
||||||
{ "Teleport Keys", "Téléporter clés" },
|
{ "Teleport Keys", "Téléporter clés" },
|
||||||
{ "Teleport to", "Téléporter" },
|
{ "Teleport to", "Téléporter" },
|
||||||
|
{ "TP Base", "TP base" },
|
||||||
|
{ "TP Altar", "TP autel" },
|
||||||
|
{ "TP Basin", "TP bassin" },
|
||||||
|
{ "TP Fountain", "TP fontaine" },
|
||||||
|
{ "Ticket", "Billet" },
|
||||||
{ "Town", "Ville" },
|
{ "Town", "Ville" },
|
||||||
{ "TownDoor", "Porte de ville" },
|
{ "TownDoor", "Porte de ville" },
|
||||||
{ "TownDoor2", "Porte de ville 2" },
|
{ "TownDoor2", "Porte de ville 2" },
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "AzazelNathan", "Azazel-Nathan" },
|
{ "AzazelNathan", "Azazel-Nathan" },
|
||||||
{ "AzazelSam", "Azazel-Sam" },
|
{ "AzazelSam", "Azazel-Sam" },
|
||||||
{ "AzazelZara", "Azazel-Zara" },
|
{ "AzazelZara", "Azazel-Zara" },
|
||||||
|
{ "Barbed Wire", "Stacheldraht" },
|
||||||
{ "Battery", "Batterie" },
|
{ "Battery", "Batterie" },
|
||||||
{ "Battery ESP", "Batterie-ESP" },
|
{ "Battery ESP", "Batterie-ESP" },
|
||||||
{ "Big Flashlight", "Große Taschenlampe" },
|
{ "Big Flashlight", "Große Taschenlampe" },
|
||||||
@@ -45,7 +46,9 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Cake", "Kuchen" },
|
{ "Cake", "Kuchen" },
|
||||||
{ "Cake ESP", "Kuchen-ESP" },
|
{ "Cake ESP", "Kuchen-ESP" },
|
||||||
{ "Carnival", "Karneval" },
|
{ "Carnival", "Karneval" },
|
||||||
|
{ "Cherry Blossom", "Kirschblüte" },
|
||||||
{ "Clean Head ESP", "Sauberer-Kopf-ESP" },
|
{ "Clean Head ESP", "Sauberer-Kopf-ESP" },
|
||||||
|
{ "Collectables ESP", "Sammlerobjekte-ESP" },
|
||||||
{ "Clean The Fountains", "Brunnen reinigen" },
|
{ "Clean The Fountains", "Brunnen reinigen" },
|
||||||
{ "CleanHead", "Sauberer Kopf" },
|
{ "CleanHead", "Sauberer Kopf" },
|
||||||
{ "Client", "Client" },
|
{ "Client", "Client" },
|
||||||
@@ -119,6 +122,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Flashlight Color", "Taschenlampenfarbe" },
|
{ "Flashlight Color", "Taschenlampenfarbe" },
|
||||||
{ "Fly", "Fliegen" },
|
{ "Fly", "Fliegen" },
|
||||||
{ "Fly Speed", "Fluggeschwindigkeit" },
|
{ "Fly Speed", "Fluggeschwindigkeit" },
|
||||||
|
{ "Feather", "Feder" },
|
||||||
{ "Food", "Essen" },
|
{ "Food", "Essen" },
|
||||||
{ "Force Start Game", "Spiel erzwingen" },
|
{ "Force Start Game", "Spiel erzwingen" },
|
||||||
{ "Fountain", "Brunnen" },
|
{ "Fountain", "Brunnen" },
|
||||||
@@ -137,6 +141,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Hay", "Heu" },
|
{ "Hay", "Heu" },
|
||||||
{ "Hay ESP", "Heu-ESP" },
|
{ "Hay ESP", "Heu-ESP" },
|
||||||
{ "Head", "Kopf" },
|
{ "Head", "Kopf" },
|
||||||
|
{ "Horseshoe", "Hufeisen" },
|
||||||
{ "Host", "Host" },
|
{ "Host", "Host" },
|
||||||
{ "Host Only", "Nur Host" },
|
{ "Host Only", "Nur Host" },
|
||||||
{ "Infinite mirrors", "Unendliche Spiegel" },
|
{ "Infinite mirrors", "Unendliche Spiegel" },
|
||||||
@@ -183,6 +188,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Network Info", "Netzwerk-Info" },
|
{ "Network Info", "Netzwerk-Info" },
|
||||||
{ "Network Stats", "Netzwerk-Statistiken" },
|
{ "Network Stats", "Netzwerk-Statistiken" },
|
||||||
{ "Not connected", "Nicht verbunden" },
|
{ "Not connected", "Nicht verbunden" },
|
||||||
|
{ "Patch", "Patch" },
|
||||||
{ "Pig", "Schwein" },
|
{ "Pig", "Schwein" },
|
||||||
{ "Pig ESP", "Schwein-ESP" },
|
{ "Pig ESP", "Schwein-ESP" },
|
||||||
{ "PigExcrement", "Schweinekot" },
|
{ "PigExcrement", "Schweinekot" },
|
||||||
@@ -194,12 +200,16 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Player ESP Color", "Spieler ESP Farbe" },
|
{ "Player ESP Color", "Spieler ESP Farbe" },
|
||||||
{ "Player Snapline", "Spieler-Linie" },
|
{ "Player Snapline", "Spieler-Linie" },
|
||||||
{ "Players", "Spieler" },
|
{ "Players", "Spieler" },
|
||||||
|
{ "Present", "Geschenk" },
|
||||||
{ "Private Lobby", "Privates Lobby" },
|
{ "Private Lobby", "Privates Lobby" },
|
||||||
|
{ "Pumpkin", "Kürbis" },
|
||||||
{ "Rat", "Ratte" },
|
{ "Rat", "Ratte" },
|
||||||
{ "Rat ESP", "Ratte-ESP" },
|
{ "Rat ESP", "Ratte-ESP" },
|
||||||
{ "Region", "Region" },
|
{ "Region", "Region" },
|
||||||
{ "Revive", "Wiederbeleben" },
|
{ "Revive", "Wiederbeleben" },
|
||||||
|
{ "Radial Menu (Z)", "Radiales Menü (Z)" },
|
||||||
{ "Ritual Book", "Ritualbuch" },
|
{ "Ritual Book", "Ritualbuch" },
|
||||||
|
{ "Rose", "Rose" },
|
||||||
{ "Ritual Book ESP", "Ritualbuch-ESP" },
|
{ "Ritual Book ESP", "Ritualbuch-ESP" },
|
||||||
{ "Ritual Object ESP", "Ritualobjekt ESP" },
|
{ "Ritual Object ESP", "Ritualobjekt ESP" },
|
||||||
{ "Ritual Objects", "Rituelle Objekte" },
|
{ "Ritual Objects", "Rituelle Objekte" },
|
||||||
@@ -210,6 +220,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Rotton Food ESP", "Verdorbenes-Essen-ESP" },
|
{ "Rotton Food ESP", "Verdorbenes-Essen-ESP" },
|
||||||
{ "Sam", "Sam" },
|
{ "Sam", "Sam" },
|
||||||
{ "Shoot Player", "Spieler erschießen" },
|
{ "Shoot Player", "Spieler erschießen" },
|
||||||
|
{ "Show Coordinates", "Koordinaten anzeigen" },
|
||||||
{ "Skeleton ESP", "Skelett ESP" },
|
{ "Skeleton ESP", "Skelett ESP" },
|
||||||
{ "Slaughterhouse", "Schlachthaus" },
|
{ "Slaughterhouse", "Schlachthaus" },
|
||||||
{ "SlaughterhouseFireEscapeDoor", "Schlachthof-Feuerschutztür" },
|
{ "SlaughterhouseFireEscapeDoor", "Schlachthof-Feuerschutztür" },
|
||||||
@@ -244,6 +255,11 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "TV", "Fernseher" },
|
{ "TV", "Fernseher" },
|
||||||
{ "Teleport Keys", "Schlüssel teleportieren" },
|
{ "Teleport Keys", "Schlüssel teleportieren" },
|
||||||
{ "Teleport to", "Teleportieren" },
|
{ "Teleport to", "Teleportieren" },
|
||||||
|
{ "TP Base", "TP Basis" },
|
||||||
|
{ "TP Altar", "TP Altar" },
|
||||||
|
{ "TP Basin", "TP Becken" },
|
||||||
|
{ "TP Fountain", "TP Brunnen" },
|
||||||
|
{ "Ticket", "Ticket" },
|
||||||
{ "Town", "Stadt" },
|
{ "Town", "Stadt" },
|
||||||
{ "TownDoor", "Stadttür" },
|
{ "TownDoor", "Stadttür" },
|
||||||
{ "TownDoor2", "Stadttür 2" },
|
{ "TownDoor2", "Stadttür 2" },
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "AzazelNathan", "Azazel-Nathan" },
|
{ "AzazelNathan", "Azazel-Nathan" },
|
||||||
{ "AzazelSam", "Azazel-Sam" },
|
{ "AzazelSam", "Azazel-Sam" },
|
||||||
{ "AzazelZara", "Azazel-Zara" },
|
{ "AzazelZara", "Azazel-Zara" },
|
||||||
|
{ "Barbed Wire", "Filo spinato" },
|
||||||
{ "Battery", "Batteria" },
|
{ "Battery", "Batteria" },
|
||||||
{ "Battery ESP", "ESP batteria" },
|
{ "Battery ESP", "ESP batteria" },
|
||||||
{ "Big Flashlight", "Grande torcia" },
|
{ "Big Flashlight", "Grande torcia" },
|
||||||
@@ -45,7 +46,9 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Cake", "Torta" },
|
{ "Cake", "Torta" },
|
||||||
{ "Cake ESP", "ESP torta" },
|
{ "Cake ESP", "ESP torta" },
|
||||||
{ "Carnival", "Carnevale" },
|
{ "Carnival", "Carnevale" },
|
||||||
|
{ "Cherry Blossom", "Fiore di ciliegio" },
|
||||||
{ "Clean Head ESP", "ESP testa pulita" },
|
{ "Clean Head ESP", "ESP testa pulita" },
|
||||||
|
{ "Collectables ESP", "ESP collezionabili" },
|
||||||
{ "Clean The Fountains", "Pulisci fontane" },
|
{ "Clean The Fountains", "Pulisci fontane" },
|
||||||
{ "CleanHead", "Testa pulita" },
|
{ "CleanHead", "Testa pulita" },
|
||||||
{ "Client", "Client" },
|
{ "Client", "Client" },
|
||||||
@@ -119,6 +122,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Flashlight Color", "Colore torcia" },
|
{ "Flashlight Color", "Colore torcia" },
|
||||||
{ "Fly", "Volare" },
|
{ "Fly", "Volare" },
|
||||||
{ "Fly Speed", "Velocità volo" },
|
{ "Fly Speed", "Velocità volo" },
|
||||||
|
{ "Feather", "Piuma" },
|
||||||
{ "Food", "Cibo" },
|
{ "Food", "Cibo" },
|
||||||
{ "Force Start Game", "Forza avvio" },
|
{ "Force Start Game", "Forza avvio" },
|
||||||
{ "Fountain", "Fontana" },
|
{ "Fountain", "Fontana" },
|
||||||
@@ -137,6 +141,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Hay", "Fieno" },
|
{ "Hay", "Fieno" },
|
||||||
{ "Hay ESP", "ESP fieno" },
|
{ "Hay ESP", "ESP fieno" },
|
||||||
{ "Head", "Testa" },
|
{ "Head", "Testa" },
|
||||||
|
{ "Horseshoe", "Ferro di cavallo" },
|
||||||
{ "Host", "Host" },
|
{ "Host", "Host" },
|
||||||
{ "Host Only", "Solo host" },
|
{ "Host Only", "Solo host" },
|
||||||
{ "Infinite mirrors", "Specchi infiniti" },
|
{ "Infinite mirrors", "Specchi infiniti" },
|
||||||
@@ -183,6 +188,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Network Info", "Info rete" },
|
{ "Network Info", "Info rete" },
|
||||||
{ "Network Stats", "Statistiche rete" },
|
{ "Network Stats", "Statistiche rete" },
|
||||||
{ "Not connected", "Non connesso" },
|
{ "Not connected", "Non connesso" },
|
||||||
|
{ "Patch", "Patch" },
|
||||||
{ "Pig", "Maiale" },
|
{ "Pig", "Maiale" },
|
||||||
{ "Pig ESP", "ESP maiale" },
|
{ "Pig ESP", "ESP maiale" },
|
||||||
{ "PigExcrement", "Escrementi di maiale" },
|
{ "PigExcrement", "Escrementi di maiale" },
|
||||||
@@ -194,12 +200,16 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Player ESP Color", "Colore ESP giocatore" },
|
{ "Player ESP Color", "Colore ESP giocatore" },
|
||||||
{ "Player Snapline", "Linea giocatore" },
|
{ "Player Snapline", "Linea giocatore" },
|
||||||
{ "Players", "Giocatori" },
|
{ "Players", "Giocatori" },
|
||||||
|
{ "Present", "Regalo" },
|
||||||
{ "Private Lobby", "Lobby privata" },
|
{ "Private Lobby", "Lobby privata" },
|
||||||
|
{ "Pumpkin", "Zucca" },
|
||||||
{ "Rat", "Ratto" },
|
{ "Rat", "Ratto" },
|
||||||
{ "Rat ESP", "ESP ratto" },
|
{ "Rat ESP", "ESP ratto" },
|
||||||
{ "Region", "Regione" },
|
{ "Region", "Regione" },
|
||||||
{ "Revive", "Rianima" },
|
{ "Revive", "Rianima" },
|
||||||
|
{ "Radial Menu (Z)", "Menu radiale (Z)" },
|
||||||
{ "Ritual Book", "Libro rituale" },
|
{ "Ritual Book", "Libro rituale" },
|
||||||
|
{ "Rose", "Rosa" },
|
||||||
{ "Ritual Book ESP", "ESP libro rituale" },
|
{ "Ritual Book ESP", "ESP libro rituale" },
|
||||||
{ "Ritual Object ESP", "ESP oggetto rituale" },
|
{ "Ritual Object ESP", "ESP oggetto rituale" },
|
||||||
{ "Ritual Objects", "Oggetti rituali" },
|
{ "Ritual Objects", "Oggetti rituali" },
|
||||||
@@ -210,6 +220,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Rotton Food ESP", "ESP cibo marcio" },
|
{ "Rotton Food ESP", "ESP cibo marcio" },
|
||||||
{ "Sam", "Sam" },
|
{ "Sam", "Sam" },
|
||||||
{ "Shoot Player", "Spara al giocatore" },
|
{ "Shoot Player", "Spara al giocatore" },
|
||||||
|
{ "Show Coordinates", "Mostra coordinate" },
|
||||||
{ "Skeleton ESP", "ESP scheletro" },
|
{ "Skeleton ESP", "ESP scheletro" },
|
||||||
{ "Slaughterhouse", "Macello" },
|
{ "Slaughterhouse", "Macello" },
|
||||||
{ "SlaughterhouseFireEscapeDoor", "Porta antincendio del mattatoio" },
|
{ "SlaughterhouseFireEscapeDoor", "Porta antincendio del mattatoio" },
|
||||||
@@ -244,6 +255,11 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "TV", "Televisione" },
|
{ "TV", "Televisione" },
|
||||||
{ "Teleport Keys", "Teletrasporta chiavi" },
|
{ "Teleport Keys", "Teletrasporta chiavi" },
|
||||||
{ "Teleport to", "Teletrasporta" },
|
{ "Teleport to", "Teletrasporta" },
|
||||||
|
{ "TP Base", "TP Base" },
|
||||||
|
{ "TP Altar", "TP Altare" },
|
||||||
|
{ "TP Basin", "TP Bacino" },
|
||||||
|
{ "TP Fountain", "TP Fontana" },
|
||||||
|
{ "Ticket", "Biglietto" },
|
||||||
{ "Town", "Città" },
|
{ "Town", "Città" },
|
||||||
{ "TownDoor", "Porta della città" },
|
{ "TownDoor", "Porta della città" },
|
||||||
{ "TownDoor2", "Porta della città 2" },
|
{ "TownDoor2", "Porta della città 2" },
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "AzazelNathan", "Azazel-Nathan" },
|
{ "AzazelNathan", "Azazel-Nathan" },
|
||||||
{ "AzazelSam", "Azazel-Sam" },
|
{ "AzazelSam", "Azazel-Sam" },
|
||||||
{ "AzazelZara", "Azazel-Zara" },
|
{ "AzazelZara", "Azazel-Zara" },
|
||||||
|
{ "Barbed Wire", "有刺鉄線" },
|
||||||
{ "Battery", "バッテリー" },
|
{ "Battery", "バッテリー" },
|
||||||
{ "Battery ESP", "バッテリーESP" },
|
{ "Battery ESP", "バッテリーESP" },
|
||||||
{ "Big Flashlight", "大型懐中電灯" },
|
{ "Big Flashlight", "大型懐中電灯" },
|
||||||
@@ -45,7 +46,9 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Cake", "ケーキ" },
|
{ "Cake", "ケーキ" },
|
||||||
{ "Cake ESP", "ケーキESP" },
|
{ "Cake ESP", "ケーキESP" },
|
||||||
{ "Carnival", "カーニバル" },
|
{ "Carnival", "カーニバル" },
|
||||||
|
{ "Cherry Blossom", "桜" },
|
||||||
{ "Clean Head ESP", "きれいな頭ESP" },
|
{ "Clean Head ESP", "きれいな頭ESP" },
|
||||||
|
{ "Collectables ESP", "コレクションESP" },
|
||||||
{ "Clean The Fountains", "噴水を掃除" },
|
{ "Clean The Fountains", "噴水を掃除" },
|
||||||
{ "CleanHead", "きれいな頭" },
|
{ "CleanHead", "きれいな頭" },
|
||||||
{ "Client", "クライアント" },
|
{ "Client", "クライアント" },
|
||||||
@@ -119,6 +122,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Flashlight Color", "懐中電灯の色" },
|
{ "Flashlight Color", "懐中電灯の色" },
|
||||||
{ "Fly", "飛行" },
|
{ "Fly", "飛行" },
|
||||||
{ "Fly Speed", "飛行速度" },
|
{ "Fly Speed", "飛行速度" },
|
||||||
|
{ "Feather", "羽" },
|
||||||
{ "Food", "食べ物" },
|
{ "Food", "食べ物" },
|
||||||
{ "Force Start Game", "強制開始" },
|
{ "Force Start Game", "強制開始" },
|
||||||
{ "Fountain", "噴水" },
|
{ "Fountain", "噴水" },
|
||||||
@@ -137,6 +141,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Hay", "干し草" },
|
{ "Hay", "干し草" },
|
||||||
{ "Hay ESP", "干し草ESP" },
|
{ "Hay ESP", "干し草ESP" },
|
||||||
{ "Head", "頭" },
|
{ "Head", "頭" },
|
||||||
|
{ "Horseshoe", "蹄鉄" },
|
||||||
{ "Host", "ホスト" },
|
{ "Host", "ホスト" },
|
||||||
{ "Host Only", "ホストのみ" },
|
{ "Host Only", "ホストのみ" },
|
||||||
{ "Infinite mirrors", "無限の鏡" },
|
{ "Infinite mirrors", "無限の鏡" },
|
||||||
@@ -183,6 +188,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Network Info", "ネットワーク情報" },
|
{ "Network Info", "ネットワーク情報" },
|
||||||
{ "Network Stats", "ネットワーク統計" },
|
{ "Network Stats", "ネットワーク統計" },
|
||||||
{ "Not connected", "未接続" },
|
{ "Not connected", "未接続" },
|
||||||
|
{ "Patch", "パッチ" },
|
||||||
{ "Pig", "豚" },
|
{ "Pig", "豚" },
|
||||||
{ "Pig ESP", "豚ESP" },
|
{ "Pig ESP", "豚ESP" },
|
||||||
{ "PigExcrement", "豚の排泄物" },
|
{ "PigExcrement", "豚の排泄物" },
|
||||||
@@ -194,12 +200,16 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Player ESP Color", "プレイヤーESP色" },
|
{ "Player ESP Color", "プレイヤーESP色" },
|
||||||
{ "Player Snapline", "プレイヤーライン" },
|
{ "Player Snapline", "プレイヤーライン" },
|
||||||
{ "Players", "プレイヤー" },
|
{ "Players", "プレイヤー" },
|
||||||
|
{ "Present", "プレゼント" },
|
||||||
{ "Private Lobby", "プライベートロビー" },
|
{ "Private Lobby", "プライベートロビー" },
|
||||||
|
{ "Pumpkin", "カボチャ" },
|
||||||
{ "Rat", "ネズミ" },
|
{ "Rat", "ネズミ" },
|
||||||
{ "Rat ESP", "ネズミESP" },
|
{ "Rat ESP", "ネズミESP" },
|
||||||
{ "Region", "地域" },
|
{ "Region", "地域" },
|
||||||
{ "Revive", "蘇生" },
|
{ "Revive", "蘇生" },
|
||||||
|
{ "Radial Menu (Z)", "ラジアルメニュー (Z)" },
|
||||||
{ "Ritual Book", "儀式の本" },
|
{ "Ritual Book", "儀式の本" },
|
||||||
|
{ "Rose", "バラ" },
|
||||||
{ "Ritual Book ESP", "儀式の本ESP" },
|
{ "Ritual Book ESP", "儀式の本ESP" },
|
||||||
{ "Ritual Object ESP", "儀式オブジェクトESP" },
|
{ "Ritual Object ESP", "儀式オブジェクトESP" },
|
||||||
{ "Ritual Objects", "儀式の品" },
|
{ "Ritual Objects", "儀式の品" },
|
||||||
@@ -210,6 +220,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Rotton Food ESP", "腐った食べ物ESP" },
|
{ "Rotton Food ESP", "腐った食べ物ESP" },
|
||||||
{ "Sam", "サム" },
|
{ "Sam", "サム" },
|
||||||
{ "Shoot Player", "プレイヤーを撃つ" },
|
{ "Shoot Player", "プレイヤーを撃つ" },
|
||||||
|
{ "Show Coordinates", "座標を表示" },
|
||||||
{ "Skeleton ESP", "スケルトンESP" },
|
{ "Skeleton ESP", "スケルトンESP" },
|
||||||
{ "Slaughterhouse", "屠殺場" },
|
{ "Slaughterhouse", "屠殺場" },
|
||||||
{ "SlaughterhouseFireEscapeDoor", "屠殺場の非常口" },
|
{ "SlaughterhouseFireEscapeDoor", "屠殺場の非常口" },
|
||||||
@@ -244,6 +255,11 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "TV", "テレビ" },
|
{ "TV", "テレビ" },
|
||||||
{ "Teleport Keys", "鍵をテレポート" },
|
{ "Teleport Keys", "鍵をテレポート" },
|
||||||
{ "Teleport to", "テレポート" },
|
{ "Teleport to", "テレポート" },
|
||||||
|
{ "TP Base", "ベースTP" },
|
||||||
|
{ "TP Altar", "祭壇TP" },
|
||||||
|
{ "TP Basin", "水盤TP" },
|
||||||
|
{ "TP Fountain", "噴水TP" },
|
||||||
|
{ "Ticket", "チケット" },
|
||||||
{ "Town", "町" },
|
{ "Town", "町" },
|
||||||
{ "TownDoor", "町のドア" },
|
{ "TownDoor", "町のドア" },
|
||||||
{ "TownDoor2", "町のドア2" },
|
{ "TownDoor2", "町のドア2" },
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "AzazelNathan", "Azazel-Nathan" },
|
{ "AzazelNathan", "Azazel-Nathan" },
|
||||||
{ "AzazelSam", "Azazel-Sam" },
|
{ "AzazelSam", "Azazel-Sam" },
|
||||||
{ "AzazelZara", "Azazel-Zara" },
|
{ "AzazelZara", "Azazel-Zara" },
|
||||||
|
{ "Barbed Wire", "철조망" },
|
||||||
{ "Battery", "배터리" },
|
{ "Battery", "배터리" },
|
||||||
{ "Battery ESP", "배터리 ESP" },
|
{ "Battery ESP", "배터리 ESP" },
|
||||||
{ "Big Flashlight", "큰 손전등" },
|
{ "Big Flashlight", "큰 손전등" },
|
||||||
@@ -45,7 +46,9 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Cake", "케이크" },
|
{ "Cake", "케이크" },
|
||||||
{ "Cake ESP", "케이크 ESP" },
|
{ "Cake ESP", "케이크 ESP" },
|
||||||
{ "Carnival", "카니발" },
|
{ "Carnival", "카니발" },
|
||||||
|
{ "Cherry Blossom", "벚꽃" },
|
||||||
{ "Clean Head ESP", "깨끗한 머리 ESP" },
|
{ "Clean Head ESP", "깨끗한 머리 ESP" },
|
||||||
|
{ "Collectables ESP", "수집품 ESP" },
|
||||||
{ "Clean The Fountains", "분수 청소" },
|
{ "Clean The Fountains", "분수 청소" },
|
||||||
{ "CleanHead", "깨끗한 머리" },
|
{ "CleanHead", "깨끗한 머리" },
|
||||||
{ "Client", "클라이언트" },
|
{ "Client", "클라이언트" },
|
||||||
@@ -119,6 +122,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Flashlight Color", "손전등 색상" },
|
{ "Flashlight Color", "손전등 색상" },
|
||||||
{ "Fly", "비행" },
|
{ "Fly", "비행" },
|
||||||
{ "Fly Speed", "비행 속도" },
|
{ "Fly Speed", "비행 속도" },
|
||||||
|
{ "Feather", "깃털" },
|
||||||
{ "Food", "음식" },
|
{ "Food", "음식" },
|
||||||
{ "Force Start Game", "강제 시작" },
|
{ "Force Start Game", "강제 시작" },
|
||||||
{ "Fountain", "분수" },
|
{ "Fountain", "분수" },
|
||||||
@@ -137,6 +141,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Hay", "건초" },
|
{ "Hay", "건초" },
|
||||||
{ "Hay ESP", "건초 ESP" },
|
{ "Hay ESP", "건초 ESP" },
|
||||||
{ "Head", "머리" },
|
{ "Head", "머리" },
|
||||||
|
{ "Horseshoe", "말굽" },
|
||||||
{ "Host", "호스트" },
|
{ "Host", "호스트" },
|
||||||
{ "Host Only", "호스트만" },
|
{ "Host Only", "호스트만" },
|
||||||
{ "Infinite mirrors", "무한 거울" },
|
{ "Infinite mirrors", "무한 거울" },
|
||||||
@@ -183,6 +188,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Network Info", "네트워크 정보" },
|
{ "Network Info", "네트워크 정보" },
|
||||||
{ "Network Stats", "네트워크 통계" },
|
{ "Network Stats", "네트워크 통계" },
|
||||||
{ "Not connected", "연결되지 않음" },
|
{ "Not connected", "연결되지 않음" },
|
||||||
|
{ "Patch", "패치" },
|
||||||
{ "Pig", "돼지" },
|
{ "Pig", "돼지" },
|
||||||
{ "Pig ESP", "돼지 ESP" },
|
{ "Pig ESP", "돼지 ESP" },
|
||||||
{ "PigExcrement", "돼지 배설물" },
|
{ "PigExcrement", "돼지 배설물" },
|
||||||
@@ -194,12 +200,16 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Player ESP Color", "플레이어 ESP 색상" },
|
{ "Player ESP Color", "플레이어 ESP 색상" },
|
||||||
{ "Player Snapline", "플레이어 라인" },
|
{ "Player Snapline", "플레이어 라인" },
|
||||||
{ "Players", "플레이어" },
|
{ "Players", "플레이어" },
|
||||||
|
{ "Present", "선물" },
|
||||||
{ "Private Lobby", "비공개 로비" },
|
{ "Private Lobby", "비공개 로비" },
|
||||||
|
{ "Pumpkin", "호박" },
|
||||||
{ "Rat", "쥐" },
|
{ "Rat", "쥐" },
|
||||||
{ "Rat ESP", "쥐 ESP" },
|
{ "Rat ESP", "쥐 ESP" },
|
||||||
{ "Region", "지역" },
|
{ "Region", "지역" },
|
||||||
{ "Revive", "부활" },
|
{ "Revive", "부활" },
|
||||||
|
{ "Radial Menu (Z)", "방사형 메뉴 (Z)" },
|
||||||
{ "Ritual Book", "의식서" },
|
{ "Ritual Book", "의식서" },
|
||||||
|
{ "Rose", "장미" },
|
||||||
{ "Ritual Book ESP", "의식서 ESP" },
|
{ "Ritual Book ESP", "의식서 ESP" },
|
||||||
{ "Ritual Object ESP", "의식 물체 ESP" },
|
{ "Ritual Object ESP", "의식 물체 ESP" },
|
||||||
{ "Ritual Objects", "의식 물품" },
|
{ "Ritual Objects", "의식 물품" },
|
||||||
@@ -210,6 +220,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Rotton Food ESP", "썩은 음식 ESP" },
|
{ "Rotton Food ESP", "썩은 음식 ESP" },
|
||||||
{ "Sam", "샘" },
|
{ "Sam", "샘" },
|
||||||
{ "Shoot Player", "플레이어 쏘기" },
|
{ "Shoot Player", "플레이어 쏘기" },
|
||||||
|
{ "Show Coordinates", "좌표 표시" },
|
||||||
{ "Skeleton ESP", "스켈레톤 ESP" },
|
{ "Skeleton ESP", "스켈레톤 ESP" },
|
||||||
{ "Slaughterhouse", "도살장" },
|
{ "Slaughterhouse", "도살장" },
|
||||||
{ "SlaughterhouseFireEscapeDoor", "도축장 비상구" },
|
{ "SlaughterhouseFireEscapeDoor", "도축장 비상구" },
|
||||||
@@ -244,6 +255,11 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "TV", "TV" },
|
{ "TV", "TV" },
|
||||||
{ "Teleport Keys", "열쇠 텔레포트" },
|
{ "Teleport Keys", "열쇠 텔레포트" },
|
||||||
{ "Teleport to", "텔레포트" },
|
{ "Teleport to", "텔레포트" },
|
||||||
|
{ "TP Base", "기지 TP" },
|
||||||
|
{ "TP Altar", "제단 TP" },
|
||||||
|
{ "TP Basin", "대야 TP" },
|
||||||
|
{ "TP Fountain", "분수 TP" },
|
||||||
|
{ "Ticket", "티켓" },
|
||||||
{ "Town", "마을" },
|
{ "Town", "마을" },
|
||||||
{ "TownDoor", "마을 문" },
|
{ "TownDoor", "마을 문" },
|
||||||
{ "TownDoor2", "마을 문2" },
|
{ "TownDoor2", "마을 문2" },
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "AzazelNathan", "Azazel-Nathan" },
|
{ "AzazelNathan", "Azazel-Nathan" },
|
||||||
{ "AzazelSam", "Azazel-Sam" },
|
{ "AzazelSam", "Azazel-Sam" },
|
||||||
{ "AzazelZara", "Azazel-Zara" },
|
{ "AzazelZara", "Azazel-Zara" },
|
||||||
|
{ "Barbed Wire", "Arame farpado" },
|
||||||
{ "Battery", "Bateria" },
|
{ "Battery", "Bateria" },
|
||||||
{ "Battery ESP", "ESP bateria" },
|
{ "Battery ESP", "ESP bateria" },
|
||||||
{ "Big Flashlight", "Lanterna grande" },
|
{ "Big Flashlight", "Lanterna grande" },
|
||||||
@@ -45,7 +46,9 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Cake", "Bolo" },
|
{ "Cake", "Bolo" },
|
||||||
{ "Cake ESP", "ESP bolo" },
|
{ "Cake ESP", "ESP bolo" },
|
||||||
{ "Carnival", "Carnaval" },
|
{ "Carnival", "Carnaval" },
|
||||||
|
{ "Cherry Blossom", "Flor de cerejeira" },
|
||||||
{ "Clean Head ESP", "ESP cabeça limpa" },
|
{ "Clean Head ESP", "ESP cabeça limpa" },
|
||||||
|
{ "Collectables ESP", "ESP colecionáveis" },
|
||||||
{ "Clean The Fountains", "Limpar fontes" },
|
{ "Clean The Fountains", "Limpar fontes" },
|
||||||
{ "CleanHead", "Cabeça limpa" },
|
{ "CleanHead", "Cabeça limpa" },
|
||||||
{ "Client", "Cliente" },
|
{ "Client", "Cliente" },
|
||||||
@@ -119,6 +122,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Flashlight Color", "Cor da lanterna" },
|
{ "Flashlight Color", "Cor da lanterna" },
|
||||||
{ "Fly", "Voar" },
|
{ "Fly", "Voar" },
|
||||||
{ "Fly Speed", "Velocidade voo" },
|
{ "Fly Speed", "Velocidade voo" },
|
||||||
|
{ "Feather", "Pena" },
|
||||||
{ "Food", "Comida" },
|
{ "Food", "Comida" },
|
||||||
{ "Force Start Game", "Forçar início" },
|
{ "Force Start Game", "Forçar início" },
|
||||||
{ "Fountain", "Fonte" },
|
{ "Fountain", "Fonte" },
|
||||||
@@ -137,6 +141,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Hay", "Feno" },
|
{ "Hay", "Feno" },
|
||||||
{ "Hay ESP", "ESP feno" },
|
{ "Hay ESP", "ESP feno" },
|
||||||
{ "Head", "Cabeça" },
|
{ "Head", "Cabeça" },
|
||||||
|
{ "Horseshoe", "Ferradura" },
|
||||||
{ "Host", "Anfitrião" },
|
{ "Host", "Anfitrião" },
|
||||||
{ "Host Only", "Apenas host" },
|
{ "Host Only", "Apenas host" },
|
||||||
{ "Infinite mirrors", "Espelhos infinitos" },
|
{ "Infinite mirrors", "Espelhos infinitos" },
|
||||||
@@ -183,6 +188,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Network Info", "Info de rede" },
|
{ "Network Info", "Info de rede" },
|
||||||
{ "Network Stats", "Estatísticas de rede" },
|
{ "Network Stats", "Estatísticas de rede" },
|
||||||
{ "Not connected", "Não conectado" },
|
{ "Not connected", "Não conectado" },
|
||||||
|
{ "Patch", "Patch" },
|
||||||
{ "Pig", "Porco" },
|
{ "Pig", "Porco" },
|
||||||
{ "Pig ESP", "ESP porco" },
|
{ "Pig ESP", "ESP porco" },
|
||||||
{ "PigExcrement", "Excremento de porco" },
|
{ "PigExcrement", "Excremento de porco" },
|
||||||
@@ -194,12 +200,16 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Player ESP Color", "Cor ESP jogador" },
|
{ "Player ESP Color", "Cor ESP jogador" },
|
||||||
{ "Player Snapline", "Linha jogador" },
|
{ "Player Snapline", "Linha jogador" },
|
||||||
{ "Players", "Jogadores" },
|
{ "Players", "Jogadores" },
|
||||||
|
{ "Present", "Presente" },
|
||||||
{ "Private Lobby", "Lobby privado" },
|
{ "Private Lobby", "Lobby privado" },
|
||||||
|
{ "Pumpkin", "Abóbora" },
|
||||||
{ "Rat", "Rato" },
|
{ "Rat", "Rato" },
|
||||||
{ "Rat ESP", "ESP rato" },
|
{ "Rat ESP", "ESP rato" },
|
||||||
{ "Region", "Região" },
|
{ "Region", "Região" },
|
||||||
{ "Revive", "Reviver" },
|
{ "Revive", "Reviver" },
|
||||||
|
{ "Radial Menu (Z)", "Menu radial (Z)" },
|
||||||
{ "Ritual Book", "Livro ritual" },
|
{ "Ritual Book", "Livro ritual" },
|
||||||
|
{ "Rose", "Rosa" },
|
||||||
{ "Ritual Book ESP", "ESP livro ritual" },
|
{ "Ritual Book ESP", "ESP livro ritual" },
|
||||||
{ "Ritual Object ESP", "ESP objeto ritual" },
|
{ "Ritual Object ESP", "ESP objeto ritual" },
|
||||||
{ "Ritual Objects", "Objetos rituais" },
|
{ "Ritual Objects", "Objetos rituais" },
|
||||||
@@ -210,6 +220,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Rotton Food ESP", "ESP comida podre" },
|
{ "Rotton Food ESP", "ESP comida podre" },
|
||||||
{ "Sam", "Sam" },
|
{ "Sam", "Sam" },
|
||||||
{ "Shoot Player", "Atirar no jogador" },
|
{ "Shoot Player", "Atirar no jogador" },
|
||||||
|
{ "Show Coordinates", "Mostrar coordenadas" },
|
||||||
{ "Skeleton ESP", "ESP esqueleto" },
|
{ "Skeleton ESP", "ESP esqueleto" },
|
||||||
{ "Slaughterhouse", "Matadouro" },
|
{ "Slaughterhouse", "Matadouro" },
|
||||||
{ "SlaughterhouseFireEscapeDoor", "Porta de incêndio do matadouro" },
|
{ "SlaughterhouseFireEscapeDoor", "Porta de incêndio do matadouro" },
|
||||||
@@ -244,6 +255,11 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "TV", "Televisão" },
|
{ "TV", "Televisão" },
|
||||||
{ "Teleport Keys", "Teletransportar chaves" },
|
{ "Teleport Keys", "Teletransportar chaves" },
|
||||||
{ "Teleport to", "Teletransportar" },
|
{ "Teleport to", "Teletransportar" },
|
||||||
|
{ "TP Base", "TP base" },
|
||||||
|
{ "TP Altar", "TP altar" },
|
||||||
|
{ "TP Basin", "TP bacia" },
|
||||||
|
{ "TP Fountain", "TP fonte" },
|
||||||
|
{ "Ticket", "Bilhete" },
|
||||||
{ "Town", "Cidade" },
|
{ "Town", "Cidade" },
|
||||||
{ "TownDoor", "Porta da cidade" },
|
{ "TownDoor", "Porta da cidade" },
|
||||||
{ "TownDoor2", "Porta da cidade 2" },
|
{ "TownDoor2", "Porta da cidade 2" },
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "AzazelNathan", "Azazel-Nathan" },
|
{ "AzazelNathan", "Azazel-Nathan" },
|
||||||
{ "AzazelSam", "Azazel-Sam" },
|
{ "AzazelSam", "Azazel-Sam" },
|
||||||
{ "AzazelZara", "Azazel-Zara" },
|
{ "AzazelZara", "Azazel-Zara" },
|
||||||
|
{ "Barbed Wire", "Колючая проволока" },
|
||||||
{ "Battery", "Батарея" },
|
{ "Battery", "Батарея" },
|
||||||
{ "Battery ESP", "ESP батареи" },
|
{ "Battery ESP", "ESP батареи" },
|
||||||
{ "Big Flashlight", "Большой фонарик" },
|
{ "Big Flashlight", "Большой фонарик" },
|
||||||
@@ -45,7 +46,9 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Cake", "Торт" },
|
{ "Cake", "Торт" },
|
||||||
{ "Cake ESP", "ESP торта" },
|
{ "Cake ESP", "ESP торта" },
|
||||||
{ "Carnival", "Карнавал" },
|
{ "Carnival", "Карнавал" },
|
||||||
|
{ "Cherry Blossom", "Вишнёвый цвет" },
|
||||||
{ "Clean Head ESP", "ESP чистой головы" },
|
{ "Clean Head ESP", "ESP чистой головы" },
|
||||||
|
{ "Collectables ESP", "ESP коллекционных предметов" },
|
||||||
{ "Clean The Fountains", "Очистить фонтаны" },
|
{ "Clean The Fountains", "Очистить фонтаны" },
|
||||||
{ "CleanHead", "Чистая голова" },
|
{ "CleanHead", "Чистая голова" },
|
||||||
{ "Client", "Клиент" },
|
{ "Client", "Клиент" },
|
||||||
@@ -119,6 +122,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Flashlight Color", "Цвет фонарика" },
|
{ "Flashlight Color", "Цвет фонарика" },
|
||||||
{ "Fly", "Полет" },
|
{ "Fly", "Полет" },
|
||||||
{ "Fly Speed", "Скорость полета" },
|
{ "Fly Speed", "Скорость полета" },
|
||||||
|
{ "Feather", "Перо" },
|
||||||
{ "Food", "Еда" },
|
{ "Food", "Еда" },
|
||||||
{ "Force Start Game", "Принудительный старт" },
|
{ "Force Start Game", "Принудительный старт" },
|
||||||
{ "Fountain", "Фонтан" },
|
{ "Fountain", "Фонтан" },
|
||||||
@@ -137,6 +141,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Hay", "Сено" },
|
{ "Hay", "Сено" },
|
||||||
{ "Hay ESP", "ESP сена" },
|
{ "Hay ESP", "ESP сена" },
|
||||||
{ "Head", "Голова" },
|
{ "Head", "Голова" },
|
||||||
|
{ "Horseshoe", "Подкова" },
|
||||||
{ "Host", "Хост" },
|
{ "Host", "Хост" },
|
||||||
{ "Host Only", "Только хост" },
|
{ "Host Only", "Только хост" },
|
||||||
{ "Infinite mirrors", "Бесконечные зеркала" },
|
{ "Infinite mirrors", "Бесконечные зеркала" },
|
||||||
@@ -183,6 +188,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Network Info", "Сетевая информация" },
|
{ "Network Info", "Сетевая информация" },
|
||||||
{ "Network Stats", "Сетевая статистика" },
|
{ "Network Stats", "Сетевая статистика" },
|
||||||
{ "Not connected", "Не подключено" },
|
{ "Not connected", "Не подключено" },
|
||||||
|
{ "Patch", "Патч" },
|
||||||
{ "Pig", "Свинья" },
|
{ "Pig", "Свинья" },
|
||||||
{ "Pig ESP", "ESP свиньи" },
|
{ "Pig ESP", "ESP свиньи" },
|
||||||
{ "PigExcrement", "Свиной навоз" },
|
{ "PigExcrement", "Свиной навоз" },
|
||||||
@@ -194,12 +200,16 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Player ESP Color", "Цвет ESP игрока" },
|
{ "Player ESP Color", "Цвет ESP игрока" },
|
||||||
{ "Player Snapline", "Линия к игроку" },
|
{ "Player Snapline", "Линия к игроку" },
|
||||||
{ "Players", "Игроки" },
|
{ "Players", "Игроки" },
|
||||||
|
{ "Present", "Подарок" },
|
||||||
{ "Private Lobby", "Приватное лобби" },
|
{ "Private Lobby", "Приватное лобби" },
|
||||||
|
{ "Pumpkin", "Тыква" },
|
||||||
{ "Rat", "Крыса" },
|
{ "Rat", "Крыса" },
|
||||||
{ "Rat ESP", "ESP крысы" },
|
{ "Rat ESP", "ESP крысы" },
|
||||||
{ "Region", "Регион" },
|
{ "Region", "Регион" },
|
||||||
{ "Revive", "Воскресить" },
|
{ "Revive", "Воскресить" },
|
||||||
|
{ "Radial Menu (Z)", "Радиальное меню (Z)" },
|
||||||
{ "Ritual Book", "Ритуальная книга" },
|
{ "Ritual Book", "Ритуальная книга" },
|
||||||
|
{ "Rose", "Роза" },
|
||||||
{ "Ritual Book ESP", "ESP ритуальной книги" },
|
{ "Ritual Book ESP", "ESP ритуальной книги" },
|
||||||
{ "Ritual Object ESP", "ESP ритуального предмета" },
|
{ "Ritual Object ESP", "ESP ритуального предмета" },
|
||||||
{ "Ritual Objects", "Ритуальные предметы" },
|
{ "Ritual Objects", "Ритуальные предметы" },
|
||||||
@@ -210,6 +220,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Rotton Food ESP", "ESP гнилой еды" },
|
{ "Rotton Food ESP", "ESP гнилой еды" },
|
||||||
{ "Sam", "Сэм" },
|
{ "Sam", "Сэм" },
|
||||||
{ "Shoot Player", "Стрелять в игрока" },
|
{ "Shoot Player", "Стрелять в игрока" },
|
||||||
|
{ "Show Coordinates", "Показать координаты" },
|
||||||
{ "Skeleton ESP", "ESP скелета" },
|
{ "Skeleton ESP", "ESP скелета" },
|
||||||
{ "Slaughterhouse", "Бойня" },
|
{ "Slaughterhouse", "Бойня" },
|
||||||
{ "SlaughterhouseFireEscapeDoor", "Пожарная дверь бойни" },
|
{ "SlaughterhouseFireEscapeDoor", "Пожарная дверь бойни" },
|
||||||
@@ -244,6 +255,11 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "TV", "Телевизор" },
|
{ "TV", "Телевизор" },
|
||||||
{ "Teleport Keys", "Телепорт ключей" },
|
{ "Teleport Keys", "Телепорт ключей" },
|
||||||
{ "Teleport to", "Телепорт" },
|
{ "Teleport to", "Телепорт" },
|
||||||
|
{ "TP Base", "ТП база" },
|
||||||
|
{ "TP Altar", "ТП алтарь" },
|
||||||
|
{ "TP Basin", "ТП чаша" },
|
||||||
|
{ "TP Fountain", "ТП фонтан" },
|
||||||
|
{ "Ticket", "Билет" },
|
||||||
{ "Town", "Город" },
|
{ "Town", "Город" },
|
||||||
{ "TownDoor", "Дверь города" },
|
{ "TownDoor", "Дверь города" },
|
||||||
{ "TownDoor2", "Дверь города 2" },
|
{ "TownDoor2", "Дверь города 2" },
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "AzazelNathan", "Azazel-Nathan" },
|
{ "AzazelNathan", "Azazel-Nathan" },
|
||||||
{ "AzazelSam", "Azazel-Sam" },
|
{ "AzazelSam", "Azazel-Sam" },
|
||||||
{ "AzazelZara", "Azazel-Zara" },
|
{ "AzazelZara", "Azazel-Zara" },
|
||||||
|
{ "Barbed Wire", "Alambre de púas" },
|
||||||
{ "Battery", "Batería" },
|
{ "Battery", "Batería" },
|
||||||
{ "Battery ESP", "ESP batería" },
|
{ "Battery ESP", "ESP batería" },
|
||||||
{ "Big Flashlight", "Linterna grande" },
|
{ "Big Flashlight", "Linterna grande" },
|
||||||
@@ -45,7 +46,9 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Cake", "Pastel" },
|
{ "Cake", "Pastel" },
|
||||||
{ "Cake ESP", "ESP pastel" },
|
{ "Cake ESP", "ESP pastel" },
|
||||||
{ "Carnival", "Carnaval" },
|
{ "Carnival", "Carnaval" },
|
||||||
|
{ "Cherry Blossom", "Flor de cerezo" },
|
||||||
{ "Clean Head ESP", "ESP cabeza limpia" },
|
{ "Clean Head ESP", "ESP cabeza limpia" },
|
||||||
|
{ "Collectables ESP", "ESP coleccionables" },
|
||||||
{ "Clean The Fountains", "Limpiar fuentes" },
|
{ "Clean The Fountains", "Limpiar fuentes" },
|
||||||
{ "CleanHead", "Cabeza limpia" },
|
{ "CleanHead", "Cabeza limpia" },
|
||||||
{ "Client", "Cliente" },
|
{ "Client", "Cliente" },
|
||||||
@@ -119,6 +122,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Flashlight Color", "Color linterna" },
|
{ "Flashlight Color", "Color linterna" },
|
||||||
{ "Fly", "Volar" },
|
{ "Fly", "Volar" },
|
||||||
{ "Fly Speed", "Velocidad vuelo" },
|
{ "Fly Speed", "Velocidad vuelo" },
|
||||||
|
{ "Feather", "Pluma" },
|
||||||
{ "Food", "Comida" },
|
{ "Food", "Comida" },
|
||||||
{ "Force Start Game", "Forzar inicio" },
|
{ "Force Start Game", "Forzar inicio" },
|
||||||
{ "Fountain", "Fuente" },
|
{ "Fountain", "Fuente" },
|
||||||
@@ -137,6 +141,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Hay", "Heno" },
|
{ "Hay", "Heno" },
|
||||||
{ "Hay ESP", "ESP heno" },
|
{ "Hay ESP", "ESP heno" },
|
||||||
{ "Head", "Cabeza" },
|
{ "Head", "Cabeza" },
|
||||||
|
{ "Horseshoe", "Herradura" },
|
||||||
{ "Host", "Anfitrión" },
|
{ "Host", "Anfitrión" },
|
||||||
{ "Host Only", "Solo anfitrión" },
|
{ "Host Only", "Solo anfitrión" },
|
||||||
{ "Infinite mirrors", "Espejos infinitos" },
|
{ "Infinite mirrors", "Espejos infinitos" },
|
||||||
@@ -183,6 +188,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Network Info", "Info de red" },
|
{ "Network Info", "Info de red" },
|
||||||
{ "Network Stats", "Estadísticas de red" },
|
{ "Network Stats", "Estadísticas de red" },
|
||||||
{ "Not connected", "No conectado" },
|
{ "Not connected", "No conectado" },
|
||||||
|
{ "Patch", "Parche" },
|
||||||
{ "Pig", "Cerdo" },
|
{ "Pig", "Cerdo" },
|
||||||
{ "Pig ESP", "ESP cerdo" },
|
{ "Pig ESP", "ESP cerdo" },
|
||||||
{ "PigExcrement", "Excremento de cerdo" },
|
{ "PigExcrement", "Excremento de cerdo" },
|
||||||
@@ -194,12 +200,16 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Player ESP Color", "Color ESP jugador" },
|
{ "Player ESP Color", "Color ESP jugador" },
|
||||||
{ "Player Snapline", "Línea jugador" },
|
{ "Player Snapline", "Línea jugador" },
|
||||||
{ "Players", "Jugadores" },
|
{ "Players", "Jugadores" },
|
||||||
|
{ "Present", "Regalo" },
|
||||||
{ "Private Lobby", "Lobby privado" },
|
{ "Private Lobby", "Lobby privado" },
|
||||||
|
{ "Pumpkin", "Calabaza" },
|
||||||
{ "Rat", "Rata" },
|
{ "Rat", "Rata" },
|
||||||
{ "Rat ESP", "ESP rata" },
|
{ "Rat ESP", "ESP rata" },
|
||||||
{ "Region", "Región" },
|
{ "Region", "Región" },
|
||||||
{ "Revive", "Revivir" },
|
{ "Revive", "Revivir" },
|
||||||
|
{ "Radial Menu (Z)", "Menú radial (Z)" },
|
||||||
{ "Ritual Book", "Libro ritual" },
|
{ "Ritual Book", "Libro ritual" },
|
||||||
|
{ "Rose", "Rosa" },
|
||||||
{ "Ritual Book ESP", "ESP libro ritual" },
|
{ "Ritual Book ESP", "ESP libro ritual" },
|
||||||
{ "Ritual Object ESP", "ESP objeto ritual" },
|
{ "Ritual Object ESP", "ESP objeto ritual" },
|
||||||
{ "Ritual Objects", "Objetos rituales" },
|
{ "Ritual Objects", "Objetos rituales" },
|
||||||
@@ -210,6 +220,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Rotton Food ESP", "ESP comida podrida" },
|
{ "Rotton Food ESP", "ESP comida podrida" },
|
||||||
{ "Sam", "Sam" },
|
{ "Sam", "Sam" },
|
||||||
{ "Shoot Player", "Disparar al jugador" },
|
{ "Shoot Player", "Disparar al jugador" },
|
||||||
|
{ "Show Coordinates", "Mostrar coordenadas" },
|
||||||
{ "Skeleton ESP", "ESP esqueleto" },
|
{ "Skeleton ESP", "ESP esqueleto" },
|
||||||
{ "Slaughterhouse", "Matadero" },
|
{ "Slaughterhouse", "Matadero" },
|
||||||
{ "SlaughterhouseFireEscapeDoor", "Puerta de escape de matadero" },
|
{ "SlaughterhouseFireEscapeDoor", "Puerta de escape de matadero" },
|
||||||
@@ -244,6 +255,11 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "TV", "Televisión" },
|
{ "TV", "Televisión" },
|
||||||
{ "Teleport Keys", "Teletransportar llaves" },
|
{ "Teleport Keys", "Teletransportar llaves" },
|
||||||
{ "Teleport to", "Teletransportar" },
|
{ "Teleport to", "Teletransportar" },
|
||||||
|
{ "TP Base", "TP base" },
|
||||||
|
{ "TP Altar", "TP altar" },
|
||||||
|
{ "TP Basin", "TP pila" },
|
||||||
|
{ "TP Fountain", "TP fuente" },
|
||||||
|
{ "Ticket", "Boleto" },
|
||||||
{ "Town", "Pueblo" },
|
{ "Town", "Pueblo" },
|
||||||
{ "TownDoor", "Puerta de pueblo" },
|
{ "TownDoor", "Puerta de pueblo" },
|
||||||
{ "TownDoor2", "Puerta de pueblo 2" },
|
{ "TownDoor2", "Puerta de pueblo 2" },
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "AzazelNathan", "AzazelNathan" },
|
{ "AzazelNathan", "AzazelNathan" },
|
||||||
{ "AzazelSam", "AzazelSam" },
|
{ "AzazelSam", "AzazelSam" },
|
||||||
{ "AzazelZara", "AzazelZara" },
|
{ "AzazelZara", "AzazelZara" },
|
||||||
|
{ "Barbed Wire", "Dây thép gai" },
|
||||||
{ "Battery", "Pin" },
|
{ "Battery", "Pin" },
|
||||||
{ "Battery ESP", "Pin ESP" },
|
{ "Battery ESP", "Pin ESP" },
|
||||||
{ "Big Flashlight", "Đèn pin lớn" },
|
{ "Big Flashlight", "Đèn pin lớn" },
|
||||||
@@ -45,7 +46,9 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Cake", "Bánh" },
|
{ "Cake", "Bánh" },
|
||||||
{ "Cake ESP", "Bánh ESP" },
|
{ "Cake ESP", "Bánh ESP" },
|
||||||
{ "Carnival", "Carnival" },
|
{ "Carnival", "Carnival" },
|
||||||
|
{ "Cherry Blossom", "Hoa anh đào" },
|
||||||
{ "Clean Head ESP", "Đầu sạch ESP" },
|
{ "Clean Head ESP", "Đầu sạch ESP" },
|
||||||
|
{ "Collectables ESP", "ESP đồ sưu tập" },
|
||||||
{ "Clean The Fountains", "Làm sạch đài phun nước" },
|
{ "Clean The Fountains", "Làm sạch đài phun nước" },
|
||||||
{ "CleanHead", "CleanHead" },
|
{ "CleanHead", "CleanHead" },
|
||||||
{ "Client", "Client" },
|
{ "Client", "Client" },
|
||||||
@@ -119,6 +122,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Flashlight Color", "Màu đèn pin" },
|
{ "Flashlight Color", "Màu đèn pin" },
|
||||||
{ "Fly", "Bay" },
|
{ "Fly", "Bay" },
|
||||||
{ "Fly Speed", "Tốc độ bay" },
|
{ "Fly Speed", "Tốc độ bay" },
|
||||||
|
{ "Feather", "Lông vũ" },
|
||||||
{ "Food", "Thức ăn" },
|
{ "Food", "Thức ăn" },
|
||||||
{ "Force Start Game", "Bắt buộc bắt đầu game" },
|
{ "Force Start Game", "Bắt buộc bắt đầu game" },
|
||||||
{ "Fountain", "Đài phun nước" },
|
{ "Fountain", "Đài phun nước" },
|
||||||
@@ -137,6 +141,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Hay", "Rơm" },
|
{ "Hay", "Rơm" },
|
||||||
{ "Hay ESP", "Rơm ESP" },
|
{ "Hay ESP", "Rơm ESP" },
|
||||||
{ "Head", "Đầu" },
|
{ "Head", "Đầu" },
|
||||||
|
{ "Horseshoe", "Móng ngựa" },
|
||||||
{ "Host", "Chủ phòng" },
|
{ "Host", "Chủ phòng" },
|
||||||
{ "Host Only", "Chỉ chủ phòng" },
|
{ "Host Only", "Chỉ chủ phòng" },
|
||||||
{ "Infinite mirrors", "Gương vô hạn" },
|
{ "Infinite mirrors", "Gương vô hạn" },
|
||||||
@@ -183,6 +188,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Network Info", "Thông tin mạng" },
|
{ "Network Info", "Thông tin mạng" },
|
||||||
{ "Network Stats", "Thống kê mạng" },
|
{ "Network Stats", "Thống kê mạng" },
|
||||||
{ "Not connected", "Chưa kết nối" },
|
{ "Not connected", "Chưa kết nối" },
|
||||||
|
{ "Patch", "Miếng vá" },
|
||||||
{ "Pig", "Lợn" },
|
{ "Pig", "Lợn" },
|
||||||
{ "Pig ESP", "Lợn ESP" },
|
{ "Pig ESP", "Lợn ESP" },
|
||||||
{ "PigExcrement", "PigExcrement" },
|
{ "PigExcrement", "PigExcrement" },
|
||||||
@@ -194,12 +200,16 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Player ESP Color", "Màu người chơi ESP" },
|
{ "Player ESP Color", "Màu người chơi ESP" },
|
||||||
{ "Player Snapline", "Đường kẻ người chơi" },
|
{ "Player Snapline", "Đường kẻ người chơi" },
|
||||||
{ "Players", "Người chơi" },
|
{ "Players", "Người chơi" },
|
||||||
|
{ "Present", "Quà tặng" },
|
||||||
{ "Private Lobby", "Phòng chờ riêng" },
|
{ "Private Lobby", "Phòng chờ riêng" },
|
||||||
|
{ "Pumpkin", "Bí ngô" },
|
||||||
{ "Rat", "Chuột" },
|
{ "Rat", "Chuột" },
|
||||||
{ "Rat ESP", "Chuột ESP" },
|
{ "Rat ESP", "Chuột ESP" },
|
||||||
{ "Region", "Khu vực" },
|
{ "Region", "Khu vực" },
|
||||||
{ "Revive", "Hồi sinh" },
|
{ "Revive", "Hồi sinh" },
|
||||||
|
{ "Radial Menu (Z)", "Menu vòng tròn (Z)" },
|
||||||
{ "Ritual Book", "Sách nghi lễ" },
|
{ "Ritual Book", "Sách nghi lễ" },
|
||||||
|
{ "Rose", "Hoa hồng" },
|
||||||
{ "Ritual Book ESP", "Sách nghi lễ ESP" },
|
{ "Ritual Book ESP", "Sách nghi lễ ESP" },
|
||||||
{ "Ritual Object ESP", "Vật phẩm nghi lễ ESP" },
|
{ "Ritual Object ESP", "Vật phẩm nghi lễ ESP" },
|
||||||
{ "Ritual Objects", "Vật phẩm nghi lễ" },
|
{ "Ritual Objects", "Vật phẩm nghi lễ" },
|
||||||
@@ -210,6 +220,7 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "Rotton Food ESP", "Thức ăn thối ESP" },
|
{ "Rotton Food ESP", "Thức ăn thối ESP" },
|
||||||
{ "Sam", "Sam" },
|
{ "Sam", "Sam" },
|
||||||
{ "Shoot Player", "Bắn người chơi" },
|
{ "Shoot Player", "Bắn người chơi" },
|
||||||
|
{ "Show Coordinates", "Hiển thị tọa độ" },
|
||||||
{ "Skeleton ESP", "Bộ xương ESP" },
|
{ "Skeleton ESP", "Bộ xương ESP" },
|
||||||
{ "Slaughterhouse", "Slaughterhouse" },
|
{ "Slaughterhouse", "Slaughterhouse" },
|
||||||
{ "SlaughterhouseFireEscapeDoor", "SlaughterhouseFireEscapeDoor" },
|
{ "SlaughterhouseFireEscapeDoor", "SlaughterhouseFireEscapeDoor" },
|
||||||
@@ -244,6 +255,11 @@ namespace DevourClient.Localization.Translations
|
|||||||
{ "TV", "TV" },
|
{ "TV", "TV" },
|
||||||
{ "Teleport Keys", "Phím dịch chuyển" },
|
{ "Teleport Keys", "Phím dịch chuyển" },
|
||||||
{ "Teleport to", "Dịch chuyển đến" },
|
{ "Teleport to", "Dịch chuyển đến" },
|
||||||
|
{ "TP Base", "TP căn cứ" },
|
||||||
|
{ "TP Altar", "TP bàn thờ" },
|
||||||
|
{ "TP Basin", "TP bể nước" },
|
||||||
|
{ "TP Fountain", "TP đài phun nước" },
|
||||||
|
{ "Ticket", "Vé" },
|
||||||
{ "Town", "Town" },
|
{ "Town", "Town" },
|
||||||
{ "TownDoor", "TownDoor" },
|
{ "TownDoor", "TownDoor" },
|
||||||
{ "TownDoor2", "TownDoor2" },
|
{ "TownDoor2", "TownDoor2" },
|
||||||
|
|||||||
@@ -8,17 +8,13 @@ using UnityEngine;
|
|||||||
|
|
||||||
namespace DevourClient.Network
|
namespace DevourClient.Network
|
||||||
{
|
{
|
||||||
/// <summary>
|
// Lobby creation and management class
|
||||||
/// Lobby creation and management class
|
|
||||||
/// </summary>
|
|
||||||
public static class LobbyManager
|
public static class LobbyManager
|
||||||
{
|
{
|
||||||
/// <summary>
|
// Create game lobby/room.
|
||||||
/// Create game lobby/room
|
// regionCode: Region code (e.g.: "eu", "us", "asia", "usw", "sa", "jp", "au", "ru", "in", "kr").
|
||||||
/// </summary>
|
// lobbyLimit: Maximum player limit (1-64).
|
||||||
/// <param name="regionCode">Region code (e.g.: "eu", "us", "asia", "usw", "sa", "jp", "au", "ru", "in", "kr")</param>
|
// isPrivate: Whether this is a private room.
|
||||||
/// <param name="lobbyLimit">Maximum player limit (1-64)</param>
|
|
||||||
/// <param name="isPrivate">Whether this is a private room</param>
|
|
||||||
public static void CreateLobby(string regionCode, int lobbyLimit, bool isPrivate)
|
public static void CreateLobby(string regionCode, int lobbyLimit, bool isPrivate)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -96,9 +92,6 @@ namespace DevourClient.Network
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get PhotonRegion object for specified region
|
|
||||||
/// </summary>
|
|
||||||
private static PhotonRegion GetPhotonRegion(string regionCode)
|
private static PhotonRegion GetPhotonRegion(string regionCode)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -113,9 +106,6 @@ namespace DevourClient.Network
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Find Menu controller
|
|
||||||
/// </summary>
|
|
||||||
private static Il2CppHorror.Menu FindMenuController()
|
private static Il2CppHorror.Menu FindMenuController()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -142,9 +132,6 @@ namespace DevourClient.Network
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Check if in game
|
|
||||||
/// </summary>
|
|
||||||
private static bool IsInGame()
|
private static bool IsInGame()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -159,9 +146,6 @@ namespace DevourClient.Network
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Force start lobby game (host only)
|
|
||||||
/// </summary>
|
|
||||||
public static void ForceLobbyStart()
|
public static void ForceLobbyStart()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -189,9 +173,6 @@ namespace DevourClient.Network
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Show message box
|
|
||||||
/// </summary>
|
|
||||||
public static void ShowMessageBox(string message)
|
public static void ShowMessageBox(string message)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|||||||
698
DevourClient/RadialMenuManager.cs
Normal file
698
DevourClient/RadialMenuManager.cs
Normal file
@@ -0,0 +1,698 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using MelonLoader;
|
||||||
|
using UnityEngine;
|
||||||
|
using DevourClient.Helpers;
|
||||||
|
using DevourClient.Localization;
|
||||||
|
using System.Globalization;
|
||||||
|
|
||||||
|
namespace DevourClient
|
||||||
|
{
|
||||||
|
// Manages the Z-key radial menu: building options, drawing the UI, and executing actions.
|
||||||
|
// Public static methods are called from the appropriate ClientMain lifecycle hooks.
|
||||||
|
internal static class RadialMenuManager
|
||||||
|
{
|
||||||
|
private static bool _active;
|
||||||
|
private static int _selectedIndex = -1;
|
||||||
|
private static readonly List<RadialOption> _options = new List<RadialOption>();
|
||||||
|
private static bool _cursorStateStored;
|
||||||
|
private static bool _prevCursorVisible;
|
||||||
|
private static CursorLockMode _prevCursorLockState;
|
||||||
|
private static bool _enabled = true; // Controls whether the radial menu is enabled
|
||||||
|
|
||||||
|
// Material used to draw radial arcs (GL immediate mode)
|
||||||
|
private static Material _radialMaterial;
|
||||||
|
|
||||||
|
// Public property to enable/disable the radial menu
|
||||||
|
public static bool Enabled
|
||||||
|
{
|
||||||
|
get => _enabled;
|
||||||
|
set => _enabled = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum RadialActionType
|
||||||
|
{
|
||||||
|
None,
|
||||||
|
SpawnItem,
|
||||||
|
TeleportBase,
|
||||||
|
TeleportFixedPoint
|
||||||
|
}
|
||||||
|
|
||||||
|
private class RadialOption
|
||||||
|
{
|
||||||
|
public string Label = string.Empty;
|
||||||
|
public RadialActionType ActionType = RadialActionType.None;
|
||||||
|
public string Payload = string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Called from Update: handles input, builds / closes the radial menu and executes actions.
|
||||||
|
public static void HandleUpdate()
|
||||||
|
{
|
||||||
|
if (!_enabled || !Player.IsInGameOrLobby())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (Input.GetKeyDown(KeyCode.Z))
|
||||||
|
{
|
||||||
|
BuildForCurrentScene();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Input.GetKeyUp(KeyCode.Z) && _active)
|
||||||
|
{
|
||||||
|
if (_selectedIndex >= 0 && _selectedIndex < _options.Count)
|
||||||
|
{
|
||||||
|
ExecuteOption(_options[_selectedIndex]);
|
||||||
|
}
|
||||||
|
|
||||||
|
_active = false;
|
||||||
|
_selectedIndex = -1;
|
||||||
|
_options.Clear();
|
||||||
|
|
||||||
|
RestoreCursorState();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Called from OnGUI: draws the radial menu if it is active.
|
||||||
|
public static void HandleOnGUI()
|
||||||
|
{
|
||||||
|
if (!_enabled || !_active || !Player.IsInGameOrLobby())
|
||||||
|
return;
|
||||||
|
|
||||||
|
Draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void BuildForCurrentScene()
|
||||||
|
{
|
||||||
|
_options.Clear();
|
||||||
|
_selectedIndex = -1;
|
||||||
|
|
||||||
|
string sceneName = Helpers.Map.GetActiveScene();
|
||||||
|
if (string.IsNullOrEmpty(sceneName) || sceneName == "Menu")
|
||||||
|
{
|
||||||
|
_active = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("First aid"),
|
||||||
|
ActionType = RadialActionType.SpawnItem,
|
||||||
|
Payload = "SurvivalFirstAid"
|
||||||
|
});
|
||||||
|
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("Battery"),
|
||||||
|
ActionType = RadialActionType.SpawnItem,
|
||||||
|
Payload = "SurvivalBattery"
|
||||||
|
});
|
||||||
|
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("TP Base"),
|
||||||
|
ActionType = RadialActionType.TeleportBase,
|
||||||
|
Payload = string.Empty
|
||||||
|
});
|
||||||
|
|
||||||
|
switch (sceneName)
|
||||||
|
{
|
||||||
|
case "Devour":
|
||||||
|
case "Anna":
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("TP Altar"),
|
||||||
|
ActionType = RadialActionType.TeleportFixedPoint,
|
||||||
|
Payload = "8.57 0.01 -65.19"
|
||||||
|
});
|
||||||
|
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("Hay"),
|
||||||
|
ActionType = RadialActionType.SpawnItem,
|
||||||
|
Payload = "SurvivalHay"
|
||||||
|
});
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("Gasoline"),
|
||||||
|
ActionType = RadialActionType.SpawnItem,
|
||||||
|
Payload = "SurvivalGasoline"
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "Molly":
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("TP Altar"),
|
||||||
|
ActionType = RadialActionType.TeleportFixedPoint,
|
||||||
|
Payload = "18.12 -8.80 21.06"
|
||||||
|
});
|
||||||
|
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("Fuse"),
|
||||||
|
ActionType = RadialActionType.SpawnItem,
|
||||||
|
Payload = "SurvivalFuse"
|
||||||
|
});
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("RottenFood"),
|
||||||
|
ActionType = RadialActionType.SpawnItem,
|
||||||
|
Payload = "SurvivalRottenFood"
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "Inn":
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("TP Fountain"),
|
||||||
|
ActionType = RadialActionType.TeleportFixedPoint,
|
||||||
|
Payload = "-3.43 0.06 24.31"
|
||||||
|
});
|
||||||
|
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("Bleach"),
|
||||||
|
ActionType = RadialActionType.SpawnItem,
|
||||||
|
Payload = "SurvivalBleach"
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "Town":
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("TP Altar"),
|
||||||
|
ActionType = RadialActionType.TeleportFixedPoint,
|
||||||
|
Payload = "-56.88 7.17 -34.51"
|
||||||
|
});
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("Matchbox"),
|
||||||
|
ActionType = RadialActionType.SpawnItem,
|
||||||
|
Payload = "Matchbox-3"
|
||||||
|
});
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("Gasoline"),
|
||||||
|
ActionType = RadialActionType.SpawnItem,
|
||||||
|
Payload = "SurvivalGasoline"
|
||||||
|
});
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "Slaughterhouse":
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("TP Altar"),
|
||||||
|
ActionType = RadialActionType.TeleportFixedPoint,
|
||||||
|
Payload = "26.68 4.01 -9.27"
|
||||||
|
});
|
||||||
|
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("Bone"),
|
||||||
|
ActionType = RadialActionType.SpawnItem,
|
||||||
|
Payload = "SurvivalBone"
|
||||||
|
});
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("Gasoline"),
|
||||||
|
ActionType = RadialActionType.SpawnItem,
|
||||||
|
Payload = "SurvivalGasoline"
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "Manor":
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("TP Basin"),
|
||||||
|
ActionType = RadialActionType.TeleportFixedPoint,
|
||||||
|
Payload = "38.93 -4.62 -3.86"
|
||||||
|
});
|
||||||
|
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("Bleach"),
|
||||||
|
ActionType = RadialActionType.SpawnItem,
|
||||||
|
Payload = "SurvivalBleach"
|
||||||
|
});
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("Cake"),
|
||||||
|
ActionType = RadialActionType.SpawnItem,
|
||||||
|
Payload = "SurvivalCake"
|
||||||
|
});
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("Spade"),
|
||||||
|
ActionType = RadialActionType.SpawnItem,
|
||||||
|
Payload = "SurvivalSpade"
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "Carnival":
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("TP Altar"),
|
||||||
|
ActionType = RadialActionType.TeleportFixedPoint,
|
||||||
|
Payload = "-114.65 4.07 -4.12"
|
||||||
|
});
|
||||||
|
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("Coin"),
|
||||||
|
ActionType = RadialActionType.SpawnItem,
|
||||||
|
Payload = "SurvivalCoin"
|
||||||
|
});
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("MusicBox"),
|
||||||
|
ActionType = RadialActionType.SpawnItem,
|
||||||
|
Payload = "MusicBox-Idle"
|
||||||
|
});
|
||||||
|
_options.Add(new RadialOption
|
||||||
|
{
|
||||||
|
Label = MultiLanguageSystem.Translate("DollHead"),
|
||||||
|
ActionType = RadialActionType.SpawnItem,
|
||||||
|
Payload = "SurvivalDollHead"
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_options.Count == 0)
|
||||||
|
{
|
||||||
|
_active = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_active = true;
|
||||||
|
HideCursorForRadial();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Draw()
|
||||||
|
{
|
||||||
|
Event e = Event.current;
|
||||||
|
if (e == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
bool isRepaint = e.type == EventType.Repaint;
|
||||||
|
|
||||||
|
float centerX = Screen.width / 2f;
|
||||||
|
float centerY = Screen.height / 2f;
|
||||||
|
Vector2 center = new Vector2(centerX, centerY);
|
||||||
|
|
||||||
|
float radiusOuter = 140f;
|
||||||
|
float radiusInner = 40f;
|
||||||
|
|
||||||
|
Vector2 mouse = e.mousePosition;
|
||||||
|
Vector2 dir = mouse - center;
|
||||||
|
float dist = dir.magnitude;
|
||||||
|
|
||||||
|
_selectedIndex = -1;
|
||||||
|
|
||||||
|
if (dist >= radiusInner && dist <= radiusOuter && _options.Count > 0)
|
||||||
|
{
|
||||||
|
// Normalize angles: convert GUI coordinates (y down) to math coordinates (y up)
|
||||||
|
// and treat "up" as 0° increasing clockwise.
|
||||||
|
Vector2 upDir = new Vector2(dir.x, -dir.y);
|
||||||
|
float mathAngle = Mathf.Atan2(upDir.y, upDir.x); // [-PI, PI], 0 is on the right, counterclockwise is positive
|
||||||
|
|
||||||
|
float logicalAngle = (Mathf.PI / 2f) - mathAngle;
|
||||||
|
if (logicalAngle < 0f)
|
||||||
|
{
|
||||||
|
logicalAngle += Mathf.PI * 2f;
|
||||||
|
}
|
||||||
|
|
||||||
|
float logicalSectorAngle = (Mathf.PI * 2f) / _options.Count;
|
||||||
|
int index = Mathf.Clamp(Mathf.FloorToInt(logicalAngle / logicalSectorAngle), 0, _options.Count - 1);
|
||||||
|
_selectedIndex = index;
|
||||||
|
}
|
||||||
|
|
||||||
|
int count = _options.Count;
|
||||||
|
if (count == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (isRepaint)
|
||||||
|
{
|
||||||
|
EnsureRadialMaterial();
|
||||||
|
DrawFilledCircle(center, radiusOuter + 6f, new Color(0f, 0f, 0f, 0.55f));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sector layout and label radius
|
||||||
|
float logicalAnglePerSector = (Mathf.PI * 2f) / count;
|
||||||
|
float radiusFactor;
|
||||||
|
if (count <= 6)
|
||||||
|
radiusFactor = 0.55f;
|
||||||
|
else if (count == 7)
|
||||||
|
radiusFactor = 0.48f;
|
||||||
|
else if (count <= 8)
|
||||||
|
radiusFactor = 0.5f;
|
||||||
|
else
|
||||||
|
radiusFactor = 0.45f;
|
||||||
|
float labelRadius = radiusInner + (radiusOuter - radiusInner) * radiusFactor;
|
||||||
|
|
||||||
|
if (isRepaint)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
float logicalStart = logicalAnglePerSector * i;
|
||||||
|
float logicalEnd = logicalAnglePerSector * (i + 1);
|
||||||
|
|
||||||
|
float displayStart = (Mathf.PI / 2f) - logicalStart;
|
||||||
|
float displayEnd = (Mathf.PI / 2f) - logicalEnd;
|
||||||
|
|
||||||
|
Color sectorColor = (i == _selectedIndex)
|
||||||
|
? new Color(0.15f, 0.7f, 0.3f, 0.8f)
|
||||||
|
: new Color(0.1f, 0.1f, 0.1f, 0.7f);
|
||||||
|
|
||||||
|
DrawFilledSector(center, radiusInner, radiusOuter, displayStart, displayEnd, sectorColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GUIStyle labelStyle = new GUIStyle(GUI.skin.label)
|
||||||
|
{
|
||||||
|
alignment = TextAnchor.MiddleCenter,
|
||||||
|
normal = { textColor = Color.white },
|
||||||
|
fontSize = (count <= 6) ? 14 : (count <= 8 ? 12 : 10),
|
||||||
|
wordWrap = true
|
||||||
|
};
|
||||||
|
|
||||||
|
for (int i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
float logicalMid = logicalAnglePerSector * (i + 0.5f);
|
||||||
|
float displayMid = (Mathf.PI / 2f) - logicalMid;
|
||||||
|
|
||||||
|
float lx = centerX + Mathf.Cos(displayMid) * labelRadius;
|
||||||
|
float ly = centerY - Mathf.Sin(displayMid) * labelRadius;
|
||||||
|
|
||||||
|
float arcLength = logicalAnglePerSector * labelRadius;
|
||||||
|
float arcFactor;
|
||||||
|
float minWidth;
|
||||||
|
float maxWidth;
|
||||||
|
|
||||||
|
if (count <= 6)
|
||||||
|
{
|
||||||
|
arcFactor = 0.8f;
|
||||||
|
minWidth = 60f;
|
||||||
|
maxWidth = 120f;
|
||||||
|
}
|
||||||
|
else if (count == 7)
|
||||||
|
{
|
||||||
|
arcFactor = 0.6f;
|
||||||
|
minWidth = 45f;
|
||||||
|
maxWidth = 75f;
|
||||||
|
}
|
||||||
|
else if (count <= 8)
|
||||||
|
{
|
||||||
|
arcFactor = 0.65f;
|
||||||
|
minWidth = 45f;
|
||||||
|
maxWidth = 80f;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
arcFactor = 0.55f;
|
||||||
|
minWidth = 40f;
|
||||||
|
maxWidth = 70f;
|
||||||
|
}
|
||||||
|
|
||||||
|
float baseWidth = arcLength * arcFactor;
|
||||||
|
|
||||||
|
float labelWidth = Mathf.Clamp(baseWidth, minWidth, maxWidth);
|
||||||
|
float labelHeight = 32f;
|
||||||
|
|
||||||
|
Rect labelRect = new Rect(lx - labelWidth / 2f, ly - labelHeight / 2f, labelWidth, labelHeight);
|
||||||
|
GUI.Label(labelRect, _options[i].Label, labelStyle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void EnsureRadialMaterial()
|
||||||
|
{
|
||||||
|
if (_radialMaterial != null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Shader shader = Shader.Find("Hidden/Internal-Colored");
|
||||||
|
if (shader == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_radialMaterial = new Material(shader)
|
||||||
|
{
|
||||||
|
hideFlags = HideFlags.HideAndDontSave
|
||||||
|
};
|
||||||
|
_radialMaterial.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
|
||||||
|
_radialMaterial.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
|
||||||
|
_radialMaterial.SetInt("_Cull", (int)UnityEngine.Rendering.CullMode.Off);
|
||||||
|
_radialMaterial.SetInt("_ZWrite", 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void DrawFilledCircle(Vector2 center, float radius, Color color)
|
||||||
|
{
|
||||||
|
if (_radialMaterial == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_radialMaterial.SetPass(0);
|
||||||
|
GL.PushMatrix();
|
||||||
|
GL.LoadPixelMatrix(0, Screen.width, Screen.height, 0);
|
||||||
|
|
||||||
|
GL.Begin(GL.TRIANGLES);
|
||||||
|
GL.Color(color);
|
||||||
|
|
||||||
|
const int steps = 64;
|
||||||
|
for (int i = 0; i < steps; i++)
|
||||||
|
{
|
||||||
|
float t0 = (float)i / steps;
|
||||||
|
float t1 = (float)(i + 1) / steps;
|
||||||
|
|
||||||
|
float ang0 = t0 * Mathf.PI * 2f;
|
||||||
|
float ang1 = t1 * Mathf.PI * 2f;
|
||||||
|
|
||||||
|
float x0 = center.x + Mathf.Cos(ang0) * radius;
|
||||||
|
float y0 = center.y - Mathf.Sin(ang0) * radius;
|
||||||
|
float x1 = center.x + Mathf.Cos(ang1) * radius;
|
||||||
|
float y1 = center.y - Mathf.Sin(ang1) * radius;
|
||||||
|
|
||||||
|
GL.Vertex3(center.x, center.y, 0f);
|
||||||
|
GL.Vertex3(x0, y0, 0f);
|
||||||
|
GL.Vertex3(x1, y1, 0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
GL.End();
|
||||||
|
GL.PopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void DrawFilledSector(Vector2 center, float innerRadius, float outerRadius,
|
||||||
|
float startAngle, float endAngle, Color color)
|
||||||
|
{
|
||||||
|
if (_radialMaterial == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_radialMaterial.SetPass(0);
|
||||||
|
GL.PushMatrix();
|
||||||
|
GL.LoadPixelMatrix(0, Screen.width, Screen.height, 0);
|
||||||
|
|
||||||
|
GL.Begin(GL.TRIANGLES);
|
||||||
|
GL.Color(color);
|
||||||
|
|
||||||
|
int steps = Mathf.Max(8, Mathf.CeilToInt(Mathf.Abs(endAngle - startAngle) / (Mathf.PI / 24f)));
|
||||||
|
float delta = (endAngle - startAngle) / steps;
|
||||||
|
|
||||||
|
for (int i = 0; i < steps; i++)
|
||||||
|
{
|
||||||
|
float a0 = startAngle + delta * i;
|
||||||
|
float a1 = startAngle + delta * (i + 1);
|
||||||
|
|
||||||
|
Vector2 o0 = new Vector2(
|
||||||
|
center.x + Mathf.Cos(a0) * outerRadius,
|
||||||
|
center.y - Mathf.Sin(a0) * outerRadius);
|
||||||
|
Vector2 o1 = new Vector2(
|
||||||
|
center.x + Mathf.Cos(a1) * outerRadius,
|
||||||
|
center.y - Mathf.Sin(a1) * outerRadius);
|
||||||
|
|
||||||
|
Vector2 i0 = new Vector2(
|
||||||
|
center.x + Mathf.Cos(a0) * innerRadius,
|
||||||
|
center.y - Mathf.Sin(a0) * innerRadius);
|
||||||
|
Vector2 i1 = new Vector2(
|
||||||
|
center.x + Mathf.Cos(a1) * innerRadius,
|
||||||
|
center.y - Mathf.Sin(a1) * innerRadius);
|
||||||
|
|
||||||
|
GL.Vertex3(o0.x, o0.y, 0f);
|
||||||
|
GL.Vertex3(o1.x, o1.y, 0f);
|
||||||
|
GL.Vertex3(i1.x, i1.y, 0f);
|
||||||
|
|
||||||
|
GL.Vertex3(o0.x, o0.y, 0f);
|
||||||
|
GL.Vertex3(i1.x, i1.y, 0f);
|
||||||
|
GL.Vertex3(i0.x, i0.y, 0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
GL.End();
|
||||||
|
GL.PopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ExecuteOption(RadialOption option)
|
||||||
|
{
|
||||||
|
if (option == null || option.ActionType == RadialActionType.None)
|
||||||
|
return;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
switch (option.ActionType)
|
||||||
|
{
|
||||||
|
case RadialActionType.SpawnItem:
|
||||||
|
if (string.IsNullOrEmpty(option.Payload))
|
||||||
|
return;
|
||||||
|
|
||||||
|
ClientMain_HandleItemCarry(option.Payload);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RadialActionType.TeleportBase:
|
||||||
|
TeleportToBase();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RadialActionType.TeleportFixedPoint:
|
||||||
|
TeleportToFixedPoint(option.Payload);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MelonLogger.Error($"Radial option execution failed: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void HideCursorForRadial()
|
||||||
|
{
|
||||||
|
if (!_cursorStateStored)
|
||||||
|
{
|
||||||
|
_prevCursorVisible = Cursor.visible;
|
||||||
|
_prevCursorLockState = Cursor.lockState;
|
||||||
|
_cursorStateStored = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Cursor.lockState = CursorLockMode.None;
|
||||||
|
Cursor.visible = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void RestoreCursorState()
|
||||||
|
{
|
||||||
|
if (!_cursorStateStored)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Cursor.lockState = _prevCursorLockState;
|
||||||
|
Cursor.visible = _prevCursorVisible;
|
||||||
|
_cursorStateStored = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calls ClientMain.HandleItemCarry via reflection to avoid tight coupling,
|
||||||
|
// and falls back to Hacks.Misc.CarryObject if that fails.
|
||||||
|
private static void ClientMain_HandleItemCarry(string payload)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var type = typeof(ClientMain);
|
||||||
|
var method = type.GetMethod("HandleItemCarry",
|
||||||
|
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
|
||||||
|
if (method != null)
|
||||||
|
{
|
||||||
|
method.Invoke(null, new object[] { payload });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// ignore and fallback
|
||||||
|
}
|
||||||
|
|
||||||
|
Hacks.Misc.CarryObject(payload);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Teleports the player to a fixed world position.
|
||||||
|
// Payload format: "x y z" using '.' as decimal separator.
|
||||||
|
private static void TeleportToFixedPoint(string payload)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(payload))
|
||||||
|
return;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string[] parts = payload.Split(new[] { ' ', '\t', ',' }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
if (parts.Length < 3)
|
||||||
|
return;
|
||||||
|
|
||||||
|
float x = float.Parse(parts[0], CultureInfo.InvariantCulture);
|
||||||
|
float y = float.Parse(parts[1], CultureInfo.InvariantCulture);
|
||||||
|
float z = float.Parse(parts[2], CultureInfo.InvariantCulture);
|
||||||
|
|
||||||
|
Il2Cpp.NolanBehaviour nb = Player.GetPlayer();
|
||||||
|
if (nb == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Vector3 target = new Vector3(x, y, z);
|
||||||
|
nb.TeleportTo(target, Quaternion.identity);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MelonLogger.Error($"TeleportToFixedPoint failed: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Teleports the player to the map-specific base coordinates (former RecallToBase logic).
|
||||||
|
private static void TeleportToBase()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Il2Cpp.NolanBehaviour nb = Player.GetPlayer();
|
||||||
|
if (nb == null)
|
||||||
|
{
|
||||||
|
MelonLogger.Warning("Player not found!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
string sceneName = Helpers.Map.GetActiveScene();
|
||||||
|
Vector3 targetPos = Vector3.zero;
|
||||||
|
string mapName = "";
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
nb.locomotion.SetPosition(targetPos, false);
|
||||||
|
MelonLogger.Msg($"Teleported to {mapName} coordinates: X:{targetPos.x:F2} Y:{targetPos.y:F2} Z:{targetPos.z:F2}");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MelonLogger.Error($"Failed to teleport to base: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -15,6 +15,7 @@ namespace DevourClient.Settings
|
|||||||
public static Color azazel_esp_color = new Color(1.00f, 0.00f, 0.00f, 1);
|
public static Color azazel_esp_color = new Color(1.00f, 0.00f, 0.00f, 1);
|
||||||
public static float speed = 1f;
|
public static float speed = 1f;
|
||||||
public static KeyCode flyKey = KeyCode.None;
|
public static KeyCode flyKey = KeyCode.None;
|
||||||
|
public static KeyCode teleportKey = KeyCode.B;
|
||||||
public static Vector2 itemsScrollPosition = Vector2.zero;
|
public static Vector2 itemsScrollPosition = Vector2.zero;
|
||||||
public static Vector2 rituelObjectsScrollPosition = Vector2.zero;
|
public static Vector2 rituelObjectsScrollPosition = Vector2.zero;
|
||||||
public static Vector2 stuffsScrollPosition = Vector2.zero;
|
public static Vector2 stuffsScrollPosition = Vector2.zero;
|
||||||
|
|||||||
41
README.md
41
README.md
@@ -42,10 +42,10 @@ Everything about spoofing ehre (steam name, server name, level...) will persist
|
|||||||
* Azazel ESP (with a home made color picker)
|
* Azazel ESP (with a home made color picker)
|
||||||
* Azazel Skeleton ESP
|
* Azazel Skeleton ESP
|
||||||
* Azazel snapline (with a home made color picker)
|
* Azazel snapline (with a home made color picker)
|
||||||
* 10 languages supported (English, 简体中文, Français, Deutsch, Español, 日本語, 한국어, Русский, Português, Italiano) with in-game language switcher in Misc tab. Check it in misc table!
|
* Item ESP (with multi-language translation) (Now you can specify the display of a single item)
|
||||||
* Item ESP (with multi-language translation)
|
|
||||||
* Demon ESP (with multi-language translation)
|
* Demon ESP (with multi-language translation)
|
||||||
* Goat/Rat ESP (with multi-language translation)
|
* Goat/Rat ESP (with multi-language translation)
|
||||||
|
* Collection ESP (Collected items of 25 per map, similar to roses, horseshoes, etc)
|
||||||
* TP all the items to your position ! (thanks to [@jadis0x](https://github.com/jadis0x))
|
* TP all the items to your position ! (thanks to [@jadis0x](https://github.com/jadis0x))
|
||||||
* Spawn any item/entity to your position
|
* Spawn any item/entity to your position
|
||||||
* Walk in the lobby
|
* Walk in the lobby
|
||||||
@@ -53,6 +53,10 @@ Everything about spoofing ehre (steam name, server name, level...) will persist
|
|||||||
* Fullbright
|
* Fullbright
|
||||||
* Infinite mirrors (Manor update)
|
* Infinite mirrors (Manor update)
|
||||||
* Switch between realms (Manor update)
|
* Switch between realms (Manor update)
|
||||||
|
* Farm Items x5 (host only)
|
||||||
|
* recall function (Inspired by League of Legends, now you can use button B to teleport to the hidden place)
|
||||||
|
* Customize Lobby (Public or Private, 1-64 room size, but when the number of players exceeds four, the game will have bugs)
|
||||||
|
* 11 languages supported (English, 简体中文, Français, Deutsch, Español, 日本語, 한국어, Русский, Português, Italiano, Tiếng Việt) with in-game language switcher in Misc tab. Check it in misc table!
|
||||||
* Due to the game update, I deleted "Steam name spoofer" and "Server name spoofer" these two functions.For "steam name spoofer", even changed your name by this function, your teamates can still see your name by steam profile, escape button, and your message in game.(by manafeng)
|
* Due to the game update, I deleted "Steam name spoofer" and "Server name spoofer" these two functions.For "steam name spoofer", even changed your name by this function, your teamates can still see your name by steam profile, escape button, and your message in game.(by manafeng)
|
||||||
|
|
||||||
## English Installation Tutorial
|
## English Installation Tutorial
|
||||||
@@ -67,28 +71,43 @@ For my French fellas out there, 1tap2times made a French video tutorial for the
|
|||||||
|
|
||||||
For my German friends, KiwiJuice02 made a german video tutorial right here : [link](https://www.youtube.com/watch?v=Ntablvo6y-I)<br>
|
For my German friends, KiwiJuice02 made a german video tutorial right here : [link](https://www.youtube.com/watch?v=Ntablvo6y-I)<br>
|
||||||
|
|
||||||
In order to get all of this working you need to generate the DevourClient.dll file by building the source code.<br>
|
|
||||||
|
|
||||||
0. Install [.NET 6 SDK and runtime](https://dotnet.microsoft.com/en-us/download/dotnet/6.0).
|
|
||||||
1. [Build the cheat from source](https://github.com/ALittlePatate/DevourClient#building-from-source).
|
## English Installation Guide
|
||||||
2. Put the DevourClient.dll file located in `DevourClient\bin\Release\net6.0` inside `C:\Program Files (x86)\Steam\steamapps\common\Devour\Mods` folder.
|
If you just want to install this plugin and use it directly in the game:
|
||||||
3. Start the game, now you have successfully installed DevourClient. Use INSERT to open the menu
|
|
||||||
|
1. Install the [.NET 6](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) runtime environment
|
||||||
|
|
||||||
|
2. Install [MelonLoader](https://github.com/LavaGang/MelonLoader/releases)
|
||||||
|
There are no version restrictions, just try to choose the latest version. After opening the MelonLoader page, click on Devour to enter the installation interface. Keep all default settings, no need to check or modify any other options, then click Install to proceed
|
||||||
|
|
||||||
|
3. Install the DLL file → Download the latest DLL file from the releases section of this project, then add this file to the Mods folder in your Devour installation directory (If you don't know the directory location, you can right-click Devour in Steam, select "Manage" → "Browse local files")
|
||||||
|
|
||||||
|
4. Run Devour → If the installation is successful, you will see a Windows window showing various installation prompts, then the game will automatically launch. Press the 'INSERT' or 'INS' key to open and close the DevourClient window
|
||||||
|
|
||||||
|
**Note:** Some computers may show a "fatal error" message after installing MelonLoader. I haven't encountered this issue myself, but the main cause is usually that files extracted to the MelonLoader folder in the Devour root directory during the MelonLoader installation process have problems. Simple solutions include: (1) Copy the MelonLoader folder from another computer with the same system and bit-width (x86, x32), then paste it directly into your computer. (2) Completely delete the MelonLoader folder and reinstall.
|
||||||
|
|
||||||
|
**Note:** Some computers may display "0 mod" when loading. Please check if your DLL file is working correctly and ensure that you have placed the DLL file in the Devour "Mods" folder.
|
||||||
|
|
||||||
|
If you want to modify and develop the code, please follow the [Building from source](#building-from-source) steps below.
|
||||||
|
|
||||||
## 中文安装指南
|
## 中文安装指南
|
||||||
如果你只是想要安装这个插件,直接在游戏里使用的话
|
如果你只是想要安装这个插件,直接在游戏里使用的话
|
||||||
|
|
||||||
1、安装 .net 6 的运行环境 → (https://dotnet.microsoft.com/en-us/download/dotnet/6.0)
|
1、安装 [.net 6](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) 的运行环境
|
||||||
|
|
||||||
2、安装melonloader → (https://github.com/LavaGang/MelonLoader/releases)
|
2、安装 [melonloader](https://github.com/LavaGang/MelonLoader/releases)
|
||||||
版本无限制,尽量选择新版即可。打开melonloader页面后,点击devour进入安装界面,全部默认即可,无需勾选或修改其他选项,点击install进行安装(安装过程中可能需要vpn支持)
|
版本无限制,尽量选择新版即可。打开melonloader页面后,点击devour进入安装界面,全部默认即可,无需勾选或修改其他选项,点击install进行安装(安装过程中可能需要vpn支持)
|
||||||
|
|
||||||
3、安装dll文件 → 从本项目的release中下载最新的dll文件,然后将此文件添加到你的devour的安装目录中的mods文件夹里(不知道目录的情况下,可以在steam中右键devour,选择“管理”-“浏览本地文件”即可)
|
3、安装dll文件 → 从本项目的release中下载最新的dll文件,然后将此文件添加到你的devour的安装目录中的mods文件夹里(不知道目录的情况下,可以在steam中右键devour,选择“管理”-“浏览本地文件”即可)
|
||||||
|
|
||||||
4、运行devour → 如果安装成功,你会看到一个windows窗口进行各类安装提示后,自动进入游戏。点击insert键即可打开和关闭devourclient窗口
|
4、运行devour → 如果安装成功,你会看到一个windows窗口进行各类安装提示后,自动进入游戏。点击insert键即可打开和关闭devourclient窗口
|
||||||
|
|
||||||
ps:有些电脑在安装melonloader之后,会出现fatal error的提示,这个我目前并没有碰到过。但是出现这个提示的主要原因,基本是melonloader安装过程中,提取到devour根目录的melonloader文件夹里的文件出现了问题,比较简单的解决办法就是(1)在别人的同系统同位宽(x86,x32)的电脑里拷贝出来他的melonloader文件夹,然后直接粘贴到自己的电脑里。(2)将melonloader文件夹完全删除,然后重装。(3)在直到游戏完全运行,菜单正常工作之前,保持VPN线路通畅。
|
注意:有些电脑在安装melonloader之后,会出现fatal error的提示,这个我目前并没有碰到过。但是出现这个提示的主要原因,基本是melonloader安装过程中,提取到devour根目录的melonloader文件夹里的文件出现了问题,比较简单的解决办法就是(1)在别人的同系统同位宽(x86,x32)的电脑里拷贝出来他的melonloader文件夹,然后直接粘贴到自己的电脑里。(2)将melonloader文件夹完全删除,然后重装。(3)在直到游戏完全运行,菜单正常工作之前,保持VPN线路通畅。
|
||||||
|
|
||||||
如果你想要对代码进行修改和开发,请按照下面的”building from source“的步骤,逐步进行
|
注意:如果在加载时提示 “0 mod”,请检查你的dll文件是否正常,是否已经将dll文件放置到devour的“mods”文件夹中。
|
||||||
|
|
||||||
|
如果你想要对代码进行修改和开发,请按照下面的 [building from source](#building-from-source) 的步骤,逐步进行
|
||||||
|
|
||||||
|
|
||||||
## Uninstallation
|
## Uninstallation
|
||||||
|
|||||||
Reference in New Issue
Block a user