private void AddPlayer(string[] split) { bool alreadyAdded = false; Character newPlayer = new Character(); newPlayer.id = int.Parse(split[3]); newPlayer.posX = int.Parse(split[4]); newPlayer.posY = int.Parse(split[5]); newPlayer.name = split[11]; newPlayer.faction = int.Parse(split[12]); foreach (var item in charactersListInMap) { if (item.id == newPlayer.id && item.name == newPlayer.name) { alreadyAdded = true; } } if (!alreadyAdded) { charactersListInMap.Add(newPlayer); } }
internal string AnalizeRecvPackets(string packetString) { bool returnPacket = true; // Return always starts as true; if (packetString.StartsWith("PAIN")) //If the GameMaster is taking a screenshot of you hideCheat = true; if (packetString.StartsWith("V3")) //If the players throws Invisibilidad { string[] split = packetString.Split(new Char[] { ',' }); string playerId = split[0].Substring(2); int Invisible = int.Parse(split[1]); Character foundPlayer = charactersListInMap.Find(x => x.id == int.Parse(playerId)); if (foundPlayer != null) { Character foundPlayerAutoAim = charactersListInAutoAim.Find(x => x.id == foundPlayer.id); if (Invisible == 1) { foundPlayer.isInvi = true; if (foundPlayerAutoAim != null) foundPlayerAutoAim.isInvi = true; if (!hideCheat) { if (Configuration.verInvisOn) { string packetFakeQDL = "QDL" + foundPlayer.id; string packetFakeSX = string.Empty; if (foundPlayer.id != Character.cheaterId) packetFakeSX = "RM,,," + foundPlayer.id + "," + foundPlayer.posX + "," + foundPlayer.posY + ",10,1,0,999,3," + foundPlayer.name + " [INVI]" + "," + foundPlayer.faction + ",0,0"; if (!string.IsNullOrEmpty(packetFakeSX)) { PortListener.SendToClient(packetFakeQDL); PortListener.SendToClient(packetFakeSX); returnPacket = false; } } } } else if (Invisible == 0) { foundPlayer.isInvi = false; if (foundPlayerAutoAim != null) foundPlayerAutoAim.isInvi = false; if (foundPlayer.id == selectedCharacter) { string packetFakeQDL = "QDL" + foundPlayer.id; string packetFakeSX = ""; packetFakeSX = "RM,,," + foundPlayer.id + "," + foundPlayer.posX + "," + foundPlayer.posY + ",10,1,0,999,3," + foundPlayer.name + " [TARGET]" + "," + "1" + ",0,0"; PortListener.SendToClient(packetFakeQDL); PortListener.SendToClient(packetFakeSX); } } } } if (packetString.StartsWith("HO")) //Checks if there is any Chest in the map { string[] split = packetString.Split(new Char[] { ',' }); string itemID = split[0]; itemID = itemID.Substring(2); if (itemID.Contains("24078")) { DataManagment.ConsoleInterface("Cofre encontrado en x:" + split[1] + " y: " + split[2]); } } if (packetString.StartsWith("SHS")) //Gets the spells positions { string[] split = packetString.Split(new Char[] { ',' }); string spellPosition = split[0]; string spellName = split[2]; spellPosition = spellPosition.Substring(3); if (spellName.Contains("Apocalipsis")) { Configuration.positionApocalipsis = "LH" + spellPosition; } if (spellName.Contains("Inmovilizar")) { Configuration.positionInmovilizar = "LH" + spellPosition; } if (spellName.Contains("Remover paralisis")) { Configuration.positionRemover = "LH" + spellPosition; } if (spellName.Contains("Descarga")) { Configuration.positionDescarga = "LH" + spellPosition; } if (spellName.Contains("Tormenta")) { Configuration.positionTormenta = "LH" + spellPosition; } if (spellName.Contains("Maldicion Fúriosa")) { Configuration.positionMaldicion = "LH" + spellPosition; } } if (packetString.Contains("P9")) //If you Get Inmovilizado { Character.cheaterParalizado = true; } if (packetString.Contains("P8")) //If you Get Removed from inmo spell { Character.cheaterParalizado = false; } if (packetString.StartsWith("PU")) // If the player Gets paralized, Cast Remover Paralisis. { if (Character.cheaterParalizado) { string[] split = packetString.Split(new Char[] { ',' }); int posX = int.Parse(split[0].Substring(2)); int posY = int.Parse(split[1]); Character.cheaterPosX = int.Parse(split[0].Substring(2)); Character.cheaterPosY = int.Parse(split[1]); if (Configuration.autoRemoOn) { BasicForm.CastRemo(posX, posY); } Character.cheaterParalizado = false; } } if (packetString.StartsWith("RM")) //Players enter the map { string[] split = packetString.Split(new Char[] { ',' }); if (split.Count() > 11) { int idSX = int.Parse(split[3]); if (VerifyAdmins(packetString)) //Game master is in the Map { DataManagment.ConsoleInterface("GeneiAO>GM -> " + split[11] + " en X:" + split[4] + " Y:" + split[5]); } if (!VerifyAdmins(packetString) && idSX != Character.cheaterId) AddPlayer(split); if (split[13] == "1") //If the player is invisible { int playerId = int.Parse(split[3]); Character foundPlayer = charactersListInMap.Find(x => x.id == playerId); if (foundPlayer != null) { foundPlayer.isInvi = true; if (Configuration.verInvisOn) { if (!hideCheat) { //string packetFakeQDL = "QDL" + foundPlayer.id; //string packetFakeSX = "SX,,," + foundPlayer.id + "," + foundPlayer.posX + "," + foundPlayer.posY + ",10,1,0,999,3," + foundPlayer.name + " [INVI]" + "," + foundPlayer.faction + ",0,0"; //PortListener.SendToClient(packetFakeQDL); //PortListener.SendToClient(packetFakeSX); //returnPacket = false; packetString = string.Empty; //packetString = "RM,,," + foundPlayer.id + "," + foundPlayer.posX + "," + foundPlayer.posY + ",10,1,0,999,3," + foundPlayer.name + " [INVI]" + "," + foundPlayer.faction + ",0,0"; packetString = split[0] + "," + split[1] + "," + split[2] + "," + foundPlayer.id + "," + foundPlayer.posX + "," + foundPlayer.posY + "," + split[6] + "," + split[7] + "," + split[8] + "," + split[9] + "," + split[10] + "," + foundPlayer.name + " [INVI]" + "," + foundPlayer.faction + "," + "0" + "," + split[14]; } } } } else if (split[13] == "0") { int playerId = int.Parse(split[3]); Character foundPlayer = charactersListInMap.Find(x => x.id == playerId); if (foundPlayer != null) foundPlayer.isInvi = false; } if (split[11].Contains(Character.cheaterName)) //Cheaters DATA based on his name { Character.cheaterId = int.Parse(split[3]); Character.cheaterPosX = int.Parse(split[4]); Character.cheaterPosY = int.Parse(split[5]); Character.cheaterFaction = int.Parse(split[12]); if (Character.cheaterFaction == 3) // If he is Criminal then asociatedFaccion is Elite Criminal Character.cheaterAsociatedFaction = 18; else if (Character.cheaterFaction == 18) Character.cheaterAsociatedFaction = 3; if (Character.cheaterFaction == 2) // If he is Ciudadano then asociatedFaccion is Elite Real Character.cheaterAsociatedFaction = 15; else if (Character.cheaterFaction == 15) Character.cheaterAsociatedFaction = 2; } } //else if (split.Count() < 11) //{ // Monster newMonster = new Monster(); // newMonster.ID = int.Parse(split[3]); // newMonster.type = "Monster"; // newMonster.posX = int.Parse(split[4]); // newMonster.posY = int.Parse(split[5]); // monstersListInMap.Add(newMonster); //} } if (packetString.StartsWith("QDL")) //Players exit the map { string[] split = packetString.Split(new Char[] { 'L' }); if (split[0] == "QD") { Character foundPlayerInAutoAim = charactersListInAutoAim.Find(x => x.id == int.Parse(split[1])); Character foundPlayerInMap = charactersListInMap.Find(x => x.id == int.Parse(split[1])); //Monster foundMonster = monstersListInMap.Find(x => x.ID == int.Parse(split[1])); charactersListInAutoAim.Remove(foundPlayerInAutoAim); charactersListInMap.Remove(foundPlayerInMap); //monstersListInMap.Remove(foundMonster); } } if (packetString.StartsWith("CM")) //Cheater changes map { charactersListInAutoAim.Clear(); charactersListInMap.Clear(); //monstersListInMap.Clear(); selectedCharacter = 0; selectedName = string.Empty; } if (packetString.StartsWith("MP")) //Players Movement { string[] split = packetString.Split(new Char[] { ',' }); string idPlayerString = split[0]; idPlayerString = idPlayerString.Substring(2); int idPlayer = int.Parse(idPlayerString); Character foundPlayerMap = charactersListInMap.Find(x => x.id == idPlayer); if (foundPlayerMap != null) { if (!VerifyAdmins(foundPlayerMap.name)) { if (charactersListInAutoAim.Count != 0) { Character foundPlayerAutoAim = charactersListInAutoAim.Find(x => x.id == foundPlayerMap.id); if (foundPlayerAutoAim != null) { foundPlayerAutoAim.posX = int.Parse(split[1]); foundPlayerAutoAim.posY = int.Parse(split[2]); } else if (foundPlayerAutoAim == null) { if ((foundPlayerMap.faction != Character.cheaterFaction && foundPlayerMap.faction != Character.cheaterAsociatedFaction) || Character.cheaterFaction == 5) //If the faction is diferent from the cheater Add it to AutoAim { Character newPlayer = new Character(); newPlayer.id = foundPlayerMap.id; newPlayer.name = GetPlayerName(newPlayer.id); newPlayer.posX = int.Parse(split[1]); newPlayer.posY = int.Parse(split[2]); newPlayer.isInvi = foundPlayerMap.isInvi; charactersListInAutoAim.Add(newPlayer); } } } else if (charactersListInAutoAim.Count == 0) { if ((foundPlayerMap.faction != Character.cheaterFaction && foundPlayerMap.faction != Character.cheaterAsociatedFaction) || Character.cheaterFaction == 5) //If the faction is diferent from the cheater Add it to AutoAim { Character newPlayer = new Character(); newPlayer.id = foundPlayerMap.id; newPlayer.name = GetPlayerName(newPlayer.id); newPlayer.posX = int.Parse(split[1]); newPlayer.posY = int.Parse(split[2]); newPlayer.isInvi = foundPlayerMap.isInvi; charactersListInAutoAim.Add(newPlayer); selectedCharacter = newPlayer.id; selectedName = newPlayer.name; } } } } //else if (foundPlayerMap == null) //{ // Monster foundMonster = monstersListInMap.Find(x => x.ID == idPlayer); // foundMonster.posX = int.Parse(split[1]); // foundMonster.posY = int.Parse(split[2]); //} } if(returnPacket) { PortListener.SendToClient(packetString); return packetString; } return ""; }