void OnGUI() { if (showPanBorder) { Color color = new Color(1f, 0, 0, 0.5f); EditorGUITools.DrawRect(_panBorders, color); } }
public void OnGUI() { #if DEBUG DisplayUnityLogs(460f, 25f, 420f, 505f); #endif if (Singleton <TrainerOptions> .Instance.DisplayTrainerMenu && Singleton <TrainerOptions> .Instance.CheatsEnabled) { var containerWidth = 420f; var containerHeight = 505f; var containerStyle = new GUIStyle(GUI.skin.box) { padding = new RectOffset(10, 10, 10, 5) }; var horizontalToggleGroupStyle = new GUIStyle(GUI.skin.box) { padding = new RectOffset(5, 5, 0, 0), fixedHeight = 25f }; var horizontalSliderGroupStyle = new GUIStyle(GUI.skin.box) { padding = new RectOffset(0, 0, 0, 0), }; var toggleStyle = new GUIStyle(GUI.skin.toggle) { margin = new RectOffset(0, 0, 2, 0), padding = new RectOffset(15, 0, 3, 2) }; var buttonStyle = new GUIStyle(GUI.skin.button) { padding = new RectOffset(5, 5, 5, 5) }; var sliderStyle = new GUIStyle() { padding = new RectOffset(8, 8, 0, 0) }; // Calculate / format frame-rate var deltaTimeMs = this._deltaTime * 1000f; var fps = 1f / this._deltaTime; var formattedMsFps = string.Format(" {0:0.0} ms ({1:0} fps)", deltaTimeMs, fps); GUILayout.BeginArea(new Rect(25f, 25f, containerWidth, containerHeight), containerStyle); GUILayout.BeginHorizontal(); GUILayout.Label("<color=silver><b>Stick Fight The Game</b></color>", new GUIStyle { alignment = TextAnchor.MiddleLeft }); GUILayout.Label("<color=maroon><b>" + formattedMsFps + "</b></color>", new GUIStyle { alignment = TextAnchor.MiddleRight }); GUILayout.EndHorizontal(); GUILayout.Label("<color=silver><b>+12 Trainer v{Application.ProductVersion} - Made by loxa</b></color>"); GUILayout.Space(5); GUILayout.Label("<color=grey><b>Toggle Options</b></color>"); GUILayout.BeginHorizontal(); GUILayout.BeginVertical(); // Toggle between 'Public (no-cheats)' and 'Modders-only (cheats)' mode if (GUILayout.Toggle(Singleton <TrainerOptions> .Instance.TrainerActive, "<color=green> " + (Singleton <TrainerOptions> .Instance.TrainerActive ? "Modders Mode" : "Public Mode") + "</color>", GUILayout.Width(140)) != Singleton <TrainerOptions> .Instance.TrainerActive) { // Announce restart due to online mode change MultiplayerManager.mGameManager.winText.fontSize = 140f; MultiplayerManager.mGameManager.winText.color = Color.white; MultiplayerManager.mGameManager.winText.text = (!Singleton <TrainerOptions> .Instance.TrainerActive ? "MODDERS ONLY - CHEATS ENABLED\r\nRestarting in 2 seconds..." : "PUBLIC - CHEATS DISABLED\r\nRestarting in 2 seconds..."); MultiplayerManager.mGameManager.winText.gameObject.SetActive(true); // Toggle trainer active state Singleton <TrainerOptions> .Instance.TrainerActive = !Singleton <TrainerOptions> .Instance.TrainerActive; // Provide time for the announcement text to appear and be read StartCoroutine(Wait(2f)); // Restart game and switch lobby type MultiplayerManager.mGameManager.RestartGame(); MatchmakingHandler.SetNewLobbyType(ELobbyType.k_ELobbyTypePrivate); } // Toggle flying mode for all players if (GUILayout.Toggle(Singleton <TrainerOptions> .Instance.FlightMode, " Flying Mode", GUILayout.Width(140)) != Singleton <TrainerOptions> .Instance.FlightMode) { Singleton <TrainerOptions> .Instance.FlightMode = !Singleton <TrainerOptions> .Instance.FlightMode; ToggleFlyingMode(); } // Toggle uncapped fire-rate if (GUILayout.Toggle(Singleton <TrainerOptions> .Instance.UncappedFirerate, " Uncapped Fire-rate", GUILayout.Width(140)) != Singleton <TrainerOptions> .Instance.UncappedFirerate) { Singleton <TrainerOptions> .Instance.UncappedFirerate = !Singleton <TrainerOptions> .Instance.UncappedFirerate; ToggleUncappedFirerate(); } GUILayout.EndVertical(); GUILayout.BeginVertical(); // Toggle display of health bars if (GUILayout.Toggle(Singleton <TrainerOptions> .Instance.DisplayHealthBars, " Health Bars", GUILayout.Width(130)) != Singleton <TrainerOptions> .Instance.DisplayHealthBars) { Singleton <TrainerOptions> .Instance.DisplayHealthBars = !Singleton <TrainerOptions> .Instance.DisplayHealthBars; } // Toggle full automatic weapons if (GUILayout.Toggle(Singleton <TrainerOptions> .Instance.FullAuto, " Full Auto", GUILayout.Width(130)) != Singleton <TrainerOptions> .Instance.FullAuto) { Singleton <TrainerOptions> .Instance.FullAuto = !Singleton <TrainerOptions> .Instance.FullAuto; ToggleFullAuto(); } // Toggle unlimited ammunition if (GUILayout.Toggle(Singleton <TrainerOptions> .Instance.UnlimitedAmmo, " Unlimited Ammo", GUILayout.Width(130)) != Singleton <TrainerOptions> .Instance.UnlimitedAmmo) { Singleton <TrainerOptions> .Instance.UnlimitedAmmo = !Singleton <TrainerOptions> .Instance.UnlimitedAmmo; ToggleUnlimitedAmmo(); } GUILayout.EndVertical(); GUILayout.BeginVertical(); // Toggle display of scoreboard if (GUILayout.Toggle(Singleton <TrainerOptions> .Instance.DisplayScore, " Scoreboard", GUILayout.Width(150)) != Singleton <TrainerOptions> .Instance.DisplayScore) { Singleton <TrainerOptions> .Instance.DisplayScore = !Singleton <TrainerOptions> .Instance.DisplayScore; } // Toggle no recoil if (GUILayout.Toggle(Singleton <TrainerOptions> .Instance.NoRecoil, " No Recoil", GUILayout.Width(150)) != Singleton <TrainerOptions> .Instance.NoRecoil) { Singleton <TrainerOptions> .Instance.NoRecoil = !Singleton <TrainerOptions> .Instance.NoRecoil; ToggleNoRecoil(); } // Toggle unlimited health if (GUILayout.Toggle(Singleton <TrainerOptions> .Instance.UnlimitedHealth, " Unlimited Health", GUILayout.Width(150)) != Singleton <TrainerOptions> .Instance.UnlimitedHealth) { // Handled in the patched TakeDamage method Singleton <TrainerOptions> .Instance.UnlimitedHealth = !Singleton <TrainerOptions> .Instance.UnlimitedHealth; } GUILayout.EndVertical(); GUILayout.EndHorizontal(); GUILayout.Space(10); GUILayout.Label("<color=grey><b>Spawn Bots</b></color>"); GUILayout.BeginHorizontal(); GUILayout.BeginHorizontal(horizontalToggleGroupStyle, GUILayout.Width(100)); if (GUILayout.Toggle(Singleton <TrainerOptions> .Instance.SpawnPcEnabled, " PC", toggleStyle, GUILayout.Width(50)) != Singleton <TrainerOptions> .Instance.SpawnPcEnabled) { Singleton <TrainerOptions> .Instance.SpawnPcEnabled = !Singleton <TrainerOptions> .Instance.SpawnPcEnabled; } if (GUILayout.Toggle(Singleton <TrainerOptions> .Instance.SpawnNpcEnabled, " NPC", toggleStyle, GUILayout.Width(50)) != Singleton <TrainerOptions> .Instance.SpawnNpcEnabled) { Singleton <TrainerOptions> .Instance.SpawnNpcEnabled = !Singleton <TrainerOptions> .Instance.SpawnNpcEnabled; } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(horizontalToggleGroupStyle, GUILayout.Width(170)); if (GUILayout.Toggle(Singleton <TrainerOptions> .Instance.AiAggressiveEnabled, " Aggressive", toggleStyle, GUILayout.Width(95)) != Singleton <TrainerOptions> .Instance.AiAggressiveEnabled) { Singleton <TrainerOptions> .Instance.AiAggressiveEnabled = !Singleton <TrainerOptions> .Instance.AiAggressiveEnabled; } if (GUILayout.Toggle(Singleton <TrainerOptions> .Instance.AiNormalEnabled, " Normal", toggleStyle, GUILayout.Width(60)) != Singleton <TrainerOptions> .Instance.AiNormalEnabled) { Singleton <TrainerOptions> .Instance.AiNormalEnabled = !Singleton <TrainerOptions> .Instance.AiNormalEnabled; } GUILayout.EndHorizontal(); GUILayout.EndHorizontal(); GUILayout.Space(3); GUILayout.BeginHorizontal(horizontalSliderGroupStyle); GUILayout.BeginVertical(sliderStyle); GUILayout.Label("Damage"); var aiDamageMultiplier = GUILayout.HorizontalSlider(Singleton <TrainerOptions> .Instance.AiDamageMultiplier, 1f, 5f); if (aiDamageMultiplier != Singleton <TrainerOptions> .Instance.AiDamageMultiplier) { Singleton <TrainerOptions> .Instance.AiDamageMultiplier = aiDamageMultiplier; SetBotStats(); } GUILayout.EndVertical(); GUILayout.BeginVertical(sliderStyle); GUILayout.Label("Punch Force"); var aiPunchForce = GUILayout.HorizontalSlider(Singleton <TrainerOptions> .Instance.AiPunchForce, 120000f, 800000f); if (aiPunchForce != Singleton <TrainerOptions> .Instance.AiPunchForce) { Singleton <TrainerOptions> .Instance.AiPunchForce = aiPunchForce; SetBotStats(); } GUILayout.EndVertical(); GUILayout.BeginVertical(sliderStyle); GUILayout.Label("Punch Time"); var aiPunchTime = GUILayout.HorizontalSlider(Singleton <TrainerOptions> .Instance.AiPunchTime, 0.1f, 0.50f); if (aiPunchTime != Singleton <TrainerOptions> .Instance.AiPunchTime) { Singleton <TrainerOptions> .Instance.AiPunchTime = aiPunchTime; SetBotStats(); } GUILayout.EndVertical(); GUILayout.BeginVertical(sliderStyle); GUILayout.Label("Speed"); var aiMovementForceMultiplier = GUILayout.HorizontalSlider(Singleton <TrainerOptions> .Instance.AiMovementForceMultiplier, 2000f, 6000f); if (aiMovementForceMultiplier != Singleton <TrainerOptions> .Instance.AiMovementForceMultiplier) { Singleton <TrainerOptions> .Instance.AiMovementForceMultiplier = aiMovementForceMultiplier; SetBotStats(); } GUILayout.EndVertical(); GUILayout.BeginVertical(sliderStyle); GUILayout.Label("Jump Height"); var aiMovementJumpForceMultiplier = GUILayout.HorizontalSlider(Singleton <TrainerOptions> .Instance.AiMovementJumpForceMultiplier, 25f, 100f); if (aiMovementJumpForceMultiplier != Singleton <TrainerOptions> .Instance.AiMovementJumpForceMultiplier) { Singleton <TrainerOptions> .Instance.AiMovementJumpForceMultiplier = aiMovementJumpForceMultiplier; SetBotStats(); } GUILayout.EndVertical(); GUILayout.EndHorizontal(); GUILayout.Space(3); GUILayout.BeginHorizontal(); if (GUILayout.Button("Player", buttonStyle, GUILayout.Width(75))) { SpawnBotEnemyPlayer(); } if (GUILayout.Button("Zombie", buttonStyle, GUILayout.Width(75))) { SpawnBotEnemyZombie(); } if (GUILayout.Button("Bolt", buttonStyle, GUILayout.Width(75))) { SpawnBotEnemyBrat(); } GUILayout.EndHorizontal(); // Display available shortcuts GUILayout.Space(10); GUILayout.Label("<color=grey><b>PC Keyboard Shortcuts</b></color>"); GUILayout.Label("- Toggle Menu:\t[SHIFT] + [M]\r\n" + "- Skip Map:\t[SHIFT] + [S]\r\n" + "- Spawn Weapon:\t[R] or [P]\r\n" + "- Browse Weapons:\t[Q] for previous or [E] for next"); GUILayout.Space(5); GUILayout.Label("<color=grey><b>Xbox 360 Controller Shortcuts</b></color>"); GUILayout.Label("- Toggle Menu:\t[RB] + [A]\r\n" + "- Skip Map:\t[RB] + [B]\r\n" + "- Spawn Weapon:\t[DPadUp] or [DPadDown]\r\n" + "- Browse Weapons:\t[DPadLeft] or [DPadRight]"); GUILayout.EndArea(); } if (Singleton <TrainerOptions> .Instance.CheatsEnabled) { if (MultiplayerManager.mGameManager != null && MultiplayerManager.mGameManager.controllerHandler != null && MultiplayerManager.mGameManager.controllerHandler.players != null) { // Display healthbars and scores for all players foreach (var player in MultiplayerManager.mGameManager.controllerHandler.players) { if (player != null && player.fighting != null) { if (Singleton <TrainerOptions> .Instance.DisplayHealthBars) { var health = 0f; var healthHandler = player.fighting.GetComponent <HealthHandler>(); if (healthHandler != null) { health = healthHandler.health; } EditorGUITools.DrawRect(new Rect(Screen.width - 125, 30f * player.playerID + 10f, Math.Max(0f, health), 20f), GetPlayerColorByIndex(player.playerID), null); GUI.Label(new Rect(Screen.width - 160, 30f * player.playerID + 10f, 250f, 25f), Math.Max(0.0, Math.Round(health)).ToString()); } if (Singleton <TrainerOptions> .Instance.DisplayScore && player.fighting.stats != null) { GUI.Label(new Rect(Screen.width - 180, 30f * (float)player.playerID + 10f, 250f, 25f), "<b>" + player.fighting.stats.wins.ToString() + "</b>"); } } } } } }