private static void Main() { try { AutoUpdater.HttpUserAgent = "AutoUpdater"; AutoUpdater.ParseUpdateInfoEvent += OnParseUpdateInfo; AutoUpdater.Start("https://api.github.com/repos/LelouBil/AmongUsMumbleLink/releases/latest"); Console.WriteLine("Starting"); AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; // Cheat Init Console.WriteLine("try init cheese"); if (Cheese.Init()) { Console.WriteLine("Initialized cheese"); // Update Player Data When Every Game Cheese.ObserveShipStatus((shipStat) => { try { ShipStatus status = Cheese.GetShipStatus(); if (status.OwnerId == 0 && !_saidWait) { foreach (var player in _playerDataList) { player.StopObserveState(); } Console.WriteLine("Not in game, waiting...."); _x = 0; _y = 0; _z = 0; _localPlayer = null; _playerDataList = new List <PlayerData>(); _saidWait = true; return; } if (status.OwnerId != 0 && _saidWait) { _saidWait = false; } _playerDataList = Cheese.GetAllPlayers(); foreach (var player in _playerDataList) { if (player.IsLocalPlayer) { player.StartObserveState(); } } } catch (Exception e) { if (!_saidWait) { foreach (var player in _playerDataList) { player.StopObserveState(); } Console.WriteLine("Not in game, waiting...."); _localPlayer = null; _saidWait = true; _x = 0; _y = 0; _z = 0; } return; } }); Console.WriteLine("Starting Thread"); CancellationTokenSource cts = new CancellationTokenSource(); Task.Factory.StartNew( UpdateCheat, cts.Token).Wait(cts.Token); } else { Console.WriteLine("Failed init cheese, game is not running or app is not running as admin"); } } catch (Exception e) { Console.WriteLine(e.ToString()); } Console.WriteLine("Press any key to stop..."); Console.ReadKey(); }
private static void UpdateCheat() { _saidWait = false; try { Console.WriteLine("Initializing mumble"); init_mumble(); Console.WriteLine("finished initializing mumble"); int dir = 0; ShipStatus status = Cheese.GetShipStatus(); if (status.OwnerId == 0 && !_saidWait) { foreach (var player in _playerDataList) { player.StopObserveState(); } Console.WriteLine("Not in game, waiting...."); _x = 0; _y = 0; _z = 0; _localPlayer = null; _saidWait = true; } else { _playerDataList = Cheese.GetAllPlayers(); foreach (var player in _playerDataList) { if (player.IsLocalPlayer) { player.StartObserveState(); } } } while (true) { update_mumble(_x, _y, _z, _direction, _name, _context); Thread.Sleep(UpdateTime); //Console.WriteLine("hey"); _localPlayer = _playerDataList.Find(s => s.IsLocalPlayer); if (_localPlayer == null) { _x = 0; _y = 0; _z = 0; Console.WriteLine("Not in game, waiting...."); _localPlayer = null; _saidWait = true; continue; } if (!_localPlayer.PlayerInfo.HasValue) { _x = 0; _y = 0; _z = 0; _localPlayer = null; Console.WriteLine("Not in game, waiting...."); _x = 0; _y = 0; _z = 0; _localPlayer = null; _saidWait = true; continue; } _name = Utils.ReadString(_localPlayer.PlayerInfo.Value.PlayerName); if (_lastX > _localPlayer.Position.x) { dir = 0; } else if (_lastX < _localPlayer.Position.x) { dir = 1; } _x = _localPlayer.Position.x; _y = 0; _z = _localPlayer.Position.y; _direction = dir; _context = "main"; _lastX = _localPlayer.Position.x; Console.WriteLine( $"Name : {_name}, x : {_localPlayer.Position.x} , y: {_localPlayer.Position.y}, direction: " + (dir == 0 ? "left" : "right") + $" , context: {_context}"); } } catch (Exception e) { Console.WriteLine(e.ToString()); } }
private void SetPlayerInfo() { while (!IsCanceled) { Thread.Sleep(INFORMATION_UPDATE_RATE); List <PlayerData> playerDatas = null; try { playerDatas = Cheese.GetAllPlayers(); } catch (Exception) { ErrorCount++; if (ErrorCount > MAX_ERRORS) { Caller.CloseApplication(); //Close program } else { continue; } } Players.Clear(); foreach (PlayerData playerData in playerDatas) { if (playerData.PlayerInfo == null) //If data is garbage, skip { continue; } PlayerInfo playerInfo = playerData.PlayerInfo.Value; PlayerControl playerControl = playerData.Instance; Player newPlayer = new Player() { PlayerID = playerInfo.PlayerId, Name = Utils.ReadString(playerInfo.PlayerName), Color = new PlayerColor() { Name = Player.COLOR_NAMES[playerInfo.ColorId], Color = Player.COLORS[playerInfo.ColorId] }, IsImposter = playerInfo.IsImpostor != 0, IsDead = playerInfo.IsDead != 0, InVent = playerControl.inVent != 0 }; if (playerData.IsLocalPlayer) { newPlayer.Position = playerData.GetMyPosition(); } else { newPlayer.Position = playerData.GetSyncPosition(); } Players.Add(newPlayer); } UserDispatcher.Invoke(Caller.UpdateInformationDelegate, Players); } }