Пример #1
0
 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);
     }
 }
Пример #2
0
        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 "";
        }