private List <PlayerDataHelper> processPlayers() { List <PlayerDataHelper> playerData = new List <PlayerDataHelper>(); //Make sure we are in a game. if (m.readBytes(GameHelper.PLAYER_POINTER_ADDRESS, 4) != new byte[] { 0x00, 0x00, 0x00, 0x00 }) { string objectPtr = ByteConverstionHelper.byteArrayHexToAddressString(m.readBytes(GameHelper.ENTITY_OBJECT_LIST_POINTER, 4)); do { PlayerDataHelper PD = new PlayerDataHelper(); string playerPointerAddress = ByteConverstionHelper.byteArrayHexToAddressString(m.readBytes((int.Parse(objectPtr, System.Globalization.NumberStyles.HexNumber) + 8).ToString("X4"), 4)); string playerNamePointerAddress = ByteConverstionHelper.byteArrayHexToAddressString(m.readBytes((int.Parse(playerPointerAddress, System.Globalization.NumberStyles.HexNumber) + 20).ToString("X4"), 4)); PD._PlayerName = ByteConverstionHelper.convertBytesToString(m.readBytes(playerNamePointerAddress, 20)); int livingStatus = m.readByte((int.Parse(playerPointerAddress, System.Globalization.NumberStyles.HexNumber) + GameHelper.ENTITY_ALIVE_OFFSET).ToString("X4")); if (livingStatus == 1) { PD._LivingStatus = "ALIVE"; } else { PD._LivingStatus = "DEAD"; } string teamID = ByteConverstionHelper.byteArrayHexToHexString(m.readBytes((int.Parse(playerPointerAddress, System.Globalization.NumberStyles.HexNumber) + GameHelper.ENTITY_TEAM_ID_OFFSET).ToString("X4"), 4)); PD._Team = GameHelper.GetTeamName(teamID); if (PD._Team == "SEALS" || PD._Team == "TERRORISTS") { PD._PlayerHealth = ByteConverstionHelper.byteHexFloatToDecimal(m.readBytes((int.Parse(playerPointerAddress, System.Globalization.NumberStyles.HexNumber) + GameHelper.ENTITY_HEALTH_OFFSET).ToString("X4"), 4)); } playerData.Add(PD); objectPtr = ByteConverstionHelper.byteArrayHexToAddressString(m.readBytes(objectPtr, 4)); // Get the next pointer in the list } while (objectPtr.ToUpper() != "204362E4"); } return(playerData); }
private void tmr_Update_Tick(object sender, EventArgs e) { if (pcsx2Running) { m.OpenProcess("pcsx2.exe"); //Get the current patch version lbl_Version.Text = ByteConverstionHelper.convertBytesToString(m.readBytes(GameHelper.SOCOM_PATCH_ADDRESS, 20)); //Check to make sure that the user is even in a game to begin with if ((m.readBytes(GameHelper.PLAYER_POINTER_ADDRESS, 4) != null) && (!m.readBytes(GameHelper.PLAYER_POINTER_ADDRESS, 4).SequenceEqual(new byte[] { 0, 0, 0, 0 }))) { //Check if the player is a spectator. The FPS Checkbox is only available to them if (m.readByte(GameHelper.IS_SPECTATOR_ADDRESS) == 0 && m.readByte(GameHelper.R0005_PATCHED_ROOM_BOOL_ADDRESS) == 0) { m.writeBytes(GameHelper.CURRENT_FPS_ADDRESS, new byte[] { 0x1E }); m.writeBytes(GameHelper.LOBBYSET_FPS_ADDRESS, new byte[] { 0x1E }); chk_FPS.Checked = false; chk_FPS.Enabled = false; } else { chk_FPS.Enabled = true; } // Get the user's current Team ID string usersPlayerLocationAddress = ByteConverstionHelper.byteArrayHexToAddressString(m.readBytes(GameHelper.PLAYER_POINTER_ADDRESS, 4)); string usersTeam = GameHelper.GetTeamName(ByteConverstionHelper.byteArrayHexToHexString(m.readBytes((int.Parse(usersPlayerLocationAddress, System.Globalization.NumberStyles.HexNumber) + GameHelper.ENTITY_TEAM_ID_OFFSET).ToString("X4"), 4))); //HUD Bool check if (m.readByte(GameHelper.HUD_BOOL_ADDRESS) == 0) { chk_HUD.Checked = false; } else { chk_HUD.Checked = true; } //Deal with the game stats int sealsRoundsWon = m.readByte(GameHelper.SEAL_WIN_COUNTER_ADDRESS); int terroristRoundsWon = m.readByte(GameHelper.TERRORIST_WIN_COUNTER_ADDRESS); int sealsAlive = m.readByte(GameHelper.CURRENT_SEALS_ALIVE_COUNT_ADDRESS); int terroristsAlive = m.readByte(GameHelper.CURRENT_TERRORISTS_ALIVE_COUNT_ADDRESS); string roundTime = ByteConverstionHelper.convertBytesToString(m.readBytes(GameHelper.CURRENT_ROUND_TIMER_ADDRESS, 5)); List <PlayerDataHelper> playerData = processPlayers(); List <PlayerDataHelper> sealPlayersData = playerData.Where(item => item._Team == "SEALS").ToList(); List <PlayerDataHelper> terroristPlayersData = playerData.Where(item => item._Team == "TERRORISTS").ToList(); statsGUI.sealWins = sealsRoundsWon.ToString(); statsGUI.terroristWins = terroristRoundsWon.ToString(); statsGUI.sealsAlive = sealsAlive.ToString(); statsGUI.terroristAlive = terroristsAlive.ToString(); statsGUI.roundTime = roundTime; statsGUI.playerData = playerData; sealPlayersGUI.PlayerTeam = usersTeam; sealPlayersGUI.playerData = sealPlayersData; terroristPlayersGUI.PlayerTeam = usersTeam; terroristPlayersGUI.playerData = terroristPlayersData; } else { statsGUI.sealWins = 0.ToString(); statsGUI.terroristWins = 0.ToString(); statsGUI.sealsAlive = 0.ToString(); statsGUI.terroristAlive = 0.ToString(); statsGUI.roundTime = "00:00"; statsGUI.playerData = null; terroristPlayersGUI.playerData = null; sealPlayersGUI.playerData = null; } } else { m.closeProcess(); } }