diff --git a/DevourClient/Helpers/StateHelper.cs b/DevourClient/Helpers/StateHelper.cs index 76e329b..5942fbc 100644 --- a/DevourClient/Helpers/StateHelper.cs +++ b/DevourClient/Helpers/StateHelper.cs @@ -2,7 +2,7 @@ using Il2CppOpsive.UltimateCharacterController.Character; using System.Collections.Generic; using System.Collections; -using MelonLoader; +using MelonLoader; namespace DevourClient.Helpers { @@ -56,9 +56,11 @@ namespace DevourClient.Helpers public class Entities { + public const int MAX_PLAYERS = 4; //can change with new updates/new hacks + public static BasePlayer LocalPlayer_ = new BasePlayer(); - //public static BasePlayer[] Players = new BasePlayer[4]; - public static GameObject[] Players = default!; + public static BasePlayer[] Players = new BasePlayer[MAX_PLAYERS]; + //public static GameObject[] Players = default!; public static Il2Cpp.GoatBehaviour[] GoatsAndRats = default!; public static Il2Cpp.SurvivalInteractable[] SurvivalInteractables = default!; public static Il2Cpp.KeyBehaviour[] Keys = default!; @@ -91,10 +93,10 @@ namespace DevourClient.Helpers { for (;;) { - Players = GameObject.FindGameObjectsWithTag("Player"); - /* + GameObject[] players = GameObject.FindGameObjectsWithTag("Player"); + int i = 0; - foreach (GameObject p in GameObject.FindGameObjectsWithTag("Player")) + foreach (GameObject p in players) { string player_name = ""; string player_id = "-1"; @@ -106,13 +108,18 @@ namespace DevourClient.Helpers player_id = dpt.state.PlayerId; } + if (Players[i] == null) + { + Players[i] = new BasePlayer(); + } + Players[i].Id = player_id; Players[i].Name = player_name; Players[i].p_GameObject = p; i++; } - */ + // Wait 5 seconds before caching objects again. yield return new WaitForSeconds(5f); diff --git a/DevourClient/MelonMain.cs b/DevourClient/MelonMain.cs index 240631c..05e24fe 100644 --- a/DevourClient/MelonMain.cs +++ b/DevourClient/MelonMain.cs @@ -155,9 +155,14 @@ namespace DevourClient { if (this.player_esp || this.player_snapline) { - foreach (GameObject player in Helpers.Entities.Players) + foreach (Helpers.BasePlayer p in Helpers.Entities.Players) { - //GameObject player = Bplayer.p_GameObject; + if (p == null) + { + continue; + } + + GameObject player = p.p_GameObject; if (player != null) { @@ -632,18 +637,22 @@ namespace DevourClient if (Helpers.Map.GetActiveScene() != "") { GUI.Label(new Rect(Settings.Settings.x + 10, Settings.Settings.y + 400, 200, 30), $"Functions for the map: {Helpers.Map.GetMapName(Helpers.Map.GetActiveScene())}"); - /* + if (Helpers.Map.GetActiveScene() != "Menu") { GUI.Label(new Rect(Settings.Settings.x + 580, Settings.Settings.y + 400, 150, 30), "Player list:"); int i = 0; foreach (BasePlayer bp in Entities.Players) { + if (bp == null) + { + continue; + } + GUI.Label(new Rect(Settings.Settings.x + 580, Settings.Settings.y + 430 + i, 150, 30), bp.Name); i += 30; } } - */ switch (Helpers.Map.GetActiveScene()) { case "Menu":