Beispiel #1
0
        public override void Execute(WorldClient client, CommandParameters parameters)
        {
            var mapid      = parameters.getShortParamater(0);
            var cellid     = parameters.GetIntParameter(1);
            var toTeleport = client.Character;

            if (parameters.Lenght > 2)
            {
                var playerName = parameters.GetParameter(2);
                toTeleport = CharacterTable.GetCharacter(playerName);
            }

            if (toTeleport != null)
            {
                var NextMap = MapTable.Get(mapid);
                if (NextMap == null)
                {
                    client.Send(new ConsoleMessage("Mapid invalide"));
                    return;
                }
                toTeleport.Teleport(NextMap, cellid);
                client.Send(new ConsoleMessage("Teleportation effectuer"));
            }
            else
            {
                client.Send(new ConsoleMessage("Impossible de trouver le joueur", ConsoleColorEnum.RED));
            }
        }
Beispiel #2
0
        private static void ProcessEnnemyDeleteRequest(WorldClient Client, string Packet)
        {
            int guid = -1;

            switch (Packet[2])
            {
            case '%':
                Packet = Packet.Substring(3);
                Player p = CharacterTable.GetCharacter(Packet);
                if (p == null || !p.IsOnline())
                {
                    Client.Send(new CharacterEnnemyDeleteMessage("Ef"));
                    return;
                }
                guid = p.GetClient().Account.ID;
                break;

            case '*':
                Packet = Packet.Substring(3);
                var cible = Client.Account.Data.EnnemyList.Where(x => x.Value.Equals(Packet));

                if (cible != null && cible.Count() > 0)
                {
                    guid = cible.First().Key;
                }
                else
                {
                    Client.Send(new CharacterEnnemyDeleteMessage("Ef"));
                    return;
                }
                var ClientCibled = Network.WorldServer.Clients.First(x => x.Account != null && x.Account.ID == guid);
                if (ClientCibled.Account == null || ClientCibled.Character == null || !ClientCibled.Character.IsOnline())
                {
                    Client.Send(new CharacterEnnemyDeleteMessage("Ef"));
                    return;
                }

                guid = ClientCibled.Account.ID;
                break;

            default:
                Packet = Packet.Substring(2);
                Player Pr = CharacterTable.GetCharacter(Packet);
                if (Pr == null || !Pr.IsOnline())
                {
                    Client.Send(new CharacterEnnemyDeleteMessage("Ef"));
                    return;
                }
                guid = Pr.GetClient().Account.ID;
                break;
            }
            if (guid == -1 || !Client.Account.Data.EnnemyList.ContainsKey(guid))
            {
                Client.Send(new CharacterEnnemyDeleteMessage("Ef"));
                return;
            }
            Client.Account.Data.EnnemyList.Remove(guid);
            Client.Account.Data.Save();
            Client.Send(new EnnemyDeleteOkMessage("K"));
        }
Beispiel #3
0
 public override void Execute(WorldClient client, CommandParameters parameters)
 {
     if (parameters.Lenght > 0)
     {
         var spellid = parameters.GetIntParameter(0);
         var target  = client.Character;
         if (parameters.Lenght > 1)
         {
             if (CharacterTable.Contains(parameters.GetParameter(1)))
             {
                 target = CharacterTable.GetCharacter(parameters.GetParameter(1));
             }
         }
         if (!target.IsOnline())
         {
             client.Send(new ConsoleMessage("La Cible est deconnecté", ConsoleColorEnum.RED));
             return;
         }
         if (!SpellTable.Cache.ContainsKey(spellid))
         {
             client.Send(new ConsoleMessage("Impossible de trouver le sort n°" + spellid, ConsoleColorEnum.RED));
             return;
         }
         target.GetSpellBook().AddSpell(spellid, 6, 25, client);
         target.Send(new SpellsListMessage(target));
         client.Send(new ConsoleMessage("Le sort a été appris", ConsoleColorEnum.GREEN));
     }
     else
     {
         client.Send(new ConsoleMessage("Parametres invalide !", ConsoleColorEnum.RED));
     }
 }
Beispiel #4
0
        public override void Execute(WorldClient client, CommandParameters parameters)
        {
            if (parameters.Lenght > 1)
            {
                try
                {
                    var targeti = parameters.GetParameter(0);
                    var packet  = parameters.getShortParamater(1);

                    var target = CharacterTable.GetCharacter(targeti);

                    if (target == null || !target.IsOnline())
                    {
                        client.Send(new ConsoleMessage("Cible invalide !", ConsoleColorEnum.RED));
                        return;
                    }

                    target.Title = packet;

                    target.RefreshOnMap();

                    client.Send(new ConsoleMessage("Le titre a été modifié avec succès !", ConsoleColorEnum.GREEN));
                }
                catch (FormatException e)
                {
                    client.Send(new ConsoleMessage("Parametres invalide !", ConsoleColorEnum.RED));
                }
            }
            else
            {
                client.Send(new ConsoleMessage("Parametres invalide !", ConsoleColorEnum.RED));
            }
        }
Beispiel #5
0
        private static void ProcessObjectUseRequest(WorldClient Client, string Packet)
        {
            int    guid       = -1;
            int    targetGuid = -1;
            int    targetCell = -1;
            Player Target     = null;

            try
            {
                String[] infos = Regex.Split(Packet.Substring(2), "\\|");
                guid = int.Parse(infos[0]);
                if (infos.Length == 3)
                {
                    targetCell = int.Parse(infos[2]);
                }
                try //try
                {
                    targetGuid = int.Parse(infos[1]);
                }
                catch (Exception e)
                {
                    targetGuid = -1;
                };
            }
            catch (Exception e)
            {
                Logger.Error(e);
                return;
            }
            if (CharacterTable.GetCharacter(targetGuid) != null)
            {
                Target = CharacterTable.GetCharacter(targetGuid);
            }
            if (!Client.Character.InventoryCache.hasItemGuid(guid))
            {
                return;
            }

            InventoryItemModel obj = InventoryItemTable.getItem(guid);
            ItemTemplateModel  T   = obj.Template;

            if (!T.Criterions.Equals("") && !ConditionParser.validConditions(Client.Character, T.Criterions))
            {
                Client.Send(new ImMessage("119|43"));
                return;
            }
            if (T.ItemType == ItemTypeEnum.ITEM_TYPE_PAIN || T.ItemType == ItemTypeEnum.ITEM_TYPE_VIANDE_COMESTIBLE)
            {
                Client.Character.myMap.SendToMap(new MapEmoticoneMessage(Client.Character.ActorId, 17));
            }
            else if (T.ItemType == ItemTypeEnum.ITEM_TYPE_BIERE)
            {
                Client.Character.myMap.SendToMap(new MapEmoticoneMessage(Client.Character.ActorId, 18));
            }
            T.applyAction(Client.Character, Target, guid, (short)targetCell);
        }
Beispiel #6
0
 public void SendGuildSettingsInfos()
 {
     if (this.ID != -1)
     {
         var chara = CharacterTable.GetCharacter(this.ID);
         if (chara != null)
         {
             chara.Send(new GuildSettingInformationMessage(this.GuildCache, StringHelper.EncodeBase36(this.Restriction)));
         }
     }
 }
Beispiel #7
0
 private static void ProcessFollowAll(WorldClient Client, string Packet)
 {
     if (Client.GetGameAction(GameActionTypeEnum.GROUP) != null)
     {
         var  Party  = (Client.GetGameAction(GameActionTypeEnum.GROUP) as GameParty).Party;
         long pGuid2 = -1;
         if (!long.TryParse(Packet.Substring(3), out pGuid2))
         {
             Client.Send(new BasicNoOperationMessage());
             return;
         }
         var P2 = CharacterTable.GetCharacter(pGuid2);
         if (P2 == null || !P2.IsOnline())
         {
             Client.Send(new BasicNoOperationMessage());
             return;
         }
         if (Packet[2] == '+')
         {
             foreach (var T in Party.Players)
             {
                 if (T.ActorId == Client.Character.ActorId)
                 {
                     continue;
                 }
                 if (T.Follows != null)
                 {
                     T.Follows.Follower.Remove(Client.Character.ActorId);
                 }
                 T.Send(new CharacterFlagMessage(P2));
                 T.Send(new PartyFlagMessage("+" + P2.ActorId));
                 T.Follows = P2;
                 P2.Follower.Add(T.ActorId, T);
             }
         }
         else if (Packet[2] == '-')
         {
             foreach (var T in Party.Players)
             {
                 if (T.ActorId == Client.Character.ActorId)
                 {
                     continue;
                 }
                 T.Send(new CharacterDeleteFlagMessage());
                 T.Send(new PartyFlagMessage("-"));
                 T.Follows = null;
                 P2.Follower.Remove(T.ActorId);
             }
         }
     }
 }
Beispiel #8
0
        private static void ProcessPartyRequest(WorldClient Client, string Packet)
        {
            Player Target = CharacterTable.GetCharacter(Packet.Substring(2));

            if (Target == null || !Target.IsOnline() || Target.isAaway)
            {
                Client.Send(new PartyErrorMessage("n"));
                return;
            }
            if (!Target.Client.CanGameAction(World.GameActionTypeEnum.GROUP))
            {
                Client.Send(new PartyErrorMessage("a"));
                return;
            }
            if (!Client.CanGameAction(GameActionTypeEnum.BASIC_REQUEST))
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }
            if (!Target.Client.CanGameAction(GameActionTypeEnum.BASIC_REQUEST))
            {
                Client.Send(new PartyErrorMessage("a"));
                return;
            }
            if (Client.GetBaseRequest() != null && Client == Client.GetBaseRequest().Requester)
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }
            if (Client.IsGameAction(World.GameActionTypeEnum.GROUP) && (Client.GetGameAction(World.GameActionTypeEnum.GROUP) as GameParty).Party.Players.Count == 8)
            {
                Client.Send(new PartyErrorMessage("f"));
                return;
            }

            var Request       = new PartyRequest(Client, Target.Client);
            var RequestAction = new GameRequest(Client.GetCharacter(), Request);

            Client.SetBaseRequest(Request);
            Target.Client.SetBaseRequest(Request);

            Client.AddGameAction(RequestAction);
            Target.Client.AddGameAction(RequestAction);

            var Message = new PartyRequestMessage(Client.Character.Name, Target.Name);

            Client.Send(Message);
            Target.Send(Message);
        }
Beispiel #9
0
        private static void ProcessPartyLeave(WorldClient Client, string Packet)
        {
            if (!Client.IsGameAction(GameActionTypeEnum.GROUP))
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }
            var Party = (Client.GetGameAction(GameActionTypeEnum.GROUP) as GameParty).Party;

            if (Party == null)
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }
            if (Packet.Length == 2)
            {
                Party.Leave(Client.Character);
                Client.Send(new PartyLeaveMessage(""));
                Client.Send(new InconnuHelpMessage(""));
            }
            else
            {
                long guid = -1;
                if (!long.TryParse(Packet.Substring(2), out guid))
                {
                    Client.Send(new BasicNoOperationMessage());
                    return;
                }
                if (guid == -1)
                {
                    return;
                }
                var Target = CharacterTable.GetCharacter(guid);
                if (Target == null)
                {
                    Client.Send(new BasicNoOperationMessage());
                    return;
                }
                Party.Leave(Target);
                Target.Send(new PartyLeaveMessage(Client.Character.ActorId.ToString()));
                Target.Send(new InconnuHelpMessage(""));
            }
        }
Beispiel #10
0
        public static void ProcessBasicMessageRequest(WorldClient Client, string Packet)
        {
            var Data = Packet.Substring(2).Split('|');

            var Message = Data[1];

            if (Enum.IsDefined(typeof(ChatChannelEnum), (int)Data[0][0]))
            {
                var Channel = (ChatChannelEnum)Data[0][0];

                if (Client.Character.IsChatChannelEnable(Channel))
                {
                    Client.RaiseChatMessage(Channel, Message);
                }

                Client.Send(new BasicNoOperationMessage());
            }
            else
            {
                var CharacterName = Data[0];

                var Character = CharacterTable.GetCharacter(CharacterName);

                // Le personnage existe ?
                if (Character != null && Character.IsOnline())
                {
                    if (Character.Account != null && Character.Account.Data != null && Character.Account.Data.EnnemyList.ContainsKey(Client.Account.ID))
                    {
                        Client.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 14, Character.Name));
                        return;
                    }
                    Client.Send(new ChatChannelMessage(ChatChannelEnum.CHANNEL_PRIVATE_SEND, Character.ID, Character.Name, Message));
                    Character.Send(new ChatChannelMessage(ChatChannelEnum.CHANNEL_PRIVATE_RECIEVE, Client.Character.ID, Client.Character.Name, Message));
                }
                else
                {
                    // Personnage non trouvé.
                    Client.Send(new ChatMessageErrorMessage(ChatChannelErrorEnum.ERROR_NOT_FOUND));
                }
            }
        }
Beispiel #11
0
 public override void Execute(WorldClient client, CommandParameters parameters)
 {
     if (parameters.Lenght > 0)
     {
         int level;
         try
         {
             level = parameters.GetIntParameter(0);
         }
         catch (FormatException e)
         {
             client.Send(new ConsoleMessage("Le parametre 1 n'est pas un nombre décimal", ConsoleColorEnum.RED));
             return;
         }
         var target = client.Character;
         if (parameters.Lenght > 1)
         {
             if (CharacterTable.Contains(parameters.GetParameter(1)))
             {
                 target = CharacterTable.GetCharacter(parameters.GetParameter(1));
             }
         }
         if (!target.IsOnline())
         {
             client.Send(new ConsoleMessage("La Cible est deconnecté", ConsoleColorEnum.RED));
             return;
         }
         while (target.Level < level)
         {
             target.LevelUP();
         }
         target.Send(new AccountStatsMessage(target));
         target.Send(new CharacterNewLevelMessage(target.Level));
         target.Send(new SpellsListMessage(target));
         client.Send(new ConsoleMessage("Le niveau a été modifié", ConsoleColorEnum.GREEN));
     }
     else
     {
         client.Send(new ConsoleMessage("Parametres invalide !", ConsoleColorEnum.RED));
     }
 }
Beispiel #12
0
        public override void Execute(WorldClient client, CommandParameters parameters)
        {
            if (parameters.Lenght > 0)
            {
                int honor;
                try
                {
                    honor = parameters.GetIntParameter(0);
                }
                catch (FormatException e)
                {
                    client.Send(new ConsoleMessage("Le parametre 1 n'est pas un nombre décimal", ConsoleColorEnum.RED));
                    return;
                }
                var target = client.Character;
                if (parameters.Lenght > 1)
                {
                    if (CharacterTable.Contains(parameters.GetParameter(1)))
                    {
                        target = CharacterTable.GetCharacter(parameters.GetParameter(1));
                    }
                }
                if (!target.IsOnline())
                {
                    client.Send(new ConsoleMessage("La Cible est deconnecté", ConsoleColorEnum.RED));
                    return;
                }

                target.AddHonor(honor);
                target.RefreshOnMap();

                client.Send(new ConsoleMessage("Les points d'honneurs ont été ajouté", ConsoleColorEnum.GREEN));
            }
            else
            {
                client.Send(new ConsoleMessage("Parametres invalide !", ConsoleColorEnum.RED));
            }
        }
Beispiel #13
0
        private static void ProcessFriendDeleteRequest(WorldClient Client, string Packet)
        {
            int guid = -1;

            switch (Packet[2])
            {
            case '%':
                Packet = Packet.Substring(3);
                Player p = CharacterTable.GetCharacter(Packet);
                if (p == null || !p.IsOnline())
                {
                    Client.Send(new CharacterFriendAddMessage("Ef"));
                    return;
                }
                guid = p.GetClient().Account.ID;
                break;

            default:
                Packet = Packet.Substring(2);
                Player Pr = CharacterTable.GetCharacter(Packet);
                if (Pr == null || !Pr.IsOnline())
                {
                    Client.Send(new CharacterFriendAddMessage("Ef"));
                    return;
                }
                guid = Pr.GetClient().Account.ID;
                break;
            }
            if (guid == -1 || !Client.Account.Data.FriendsList.ContainsKey(guid))
            {
                Client.Send(new CharacterFriendAddMessage("Ef"));
                return;
            }
            Client.Account.Data.FriendsList.Remove(guid);
            Client.Account.Data.Save();
            Client.Send(new CharacterFriendDeleteMessage("K"));
        }
Beispiel #14
0
 private static void ProcessFollowMember(WorldClient Client, string Packet)
 {
     if (Client.GetGameAction(GameActionTypeEnum.GROUP) != null)
     {
         var  Party = (Client.GetGameAction(GameActionTypeEnum.GROUP) as GameParty).Party;
         long pGuid = -1;
         if (!long.TryParse(Packet.Substring(3), out pGuid))
         {
             Client.Send(new BasicNoOperationMessage());
             return;
         }
         var P = CharacterTable.GetCharacter(pGuid);
         if (P == null || !P.IsOnline())
         {
             Client.Send(new BasicNoOperationMessage());
             return;
         }
         if (Packet[2] == '+')
         {
             if (Client.Character.Follows != null)
             {
                 Client.Character.Follows.Follower.Remove(Client.Character.ActorId);
             }
             Client.Send(new CharacterFlagMessage(P));
             Client.Send(new PartyFlagMessage("+" + P.ActorId));
             Client.Character.Follows = P;
             P.Follower.Add(Client.Character.ActorId, Client.Character);
         }
         else if (Packet[2] == '-')
         {
             Client.Send(new CharacterDeleteFlagMessage());
             Client.Send(new PartyFlagMessage("-"));
             Client.Character.Follows = null;
             Client.Character.Follower.Remove(Client.Character.ActorId);
         }
     }
 }
Beispiel #15
0
        private static void BuyRequest(WorldClient Client, string Packet)
        {
            Client.Send(new GameRideMessage("v"));
            MountPark MP = Client.Character.myMap.mountPark;

            if (MP == null)
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }
            if (MP.get_owner() == -1)
            {
                Client.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 96));
                return;
            }
            if (MP.get_price() == 0)
            {
                Client.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 97));
                return;
            }
            if (!Client.Character.HasGuild())
            {
                Client.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 135));
                return;
            }
            if (Client.GetCharacter().getCharacterGuild().GradeType != GuildGradeEnum.GRADE_BOSS)
            {
                Client.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 98));
                return;
            }
            byte enclosMax       = (byte)Math.Floor((double)Client.Character.GetGuild().Level / 10);
            byte TotalEncloGuild = (byte)MountParkTable.CountByGuild(Client.Character.GetGuild().ID);

            if (TotalEncloGuild >= enclosMax)
            {
                Client.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 103));
                return;
            }
            if (Client.Character.Kamas < MP.get_price())
            {
                Client.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 82));
                return;
            }
            Client.GetCharacter().InventoryCache.SubstractKamas(MP.get_price());
            if (MP.get_owner() > 0)
            {
                var Owner = CharacterTable.GetCharacter(MP.get_owner());
                if (Owner != null && Owner.Account.curPlayer != null)
                {
                    Owner.Send(new ChatGameMessage("Un enclo a ete vendu a " + MP.get_price() + ".", "CC0000"));
                    Owner.Account.Data.BankKamas += MP.get_price();
                    Owner.Account.Data.Save();
                }
                else
                {
                    AccountDataTable.Update(MP.get_price(), MP.get_owner());
                }
            }
            MP.set_price(0);
            MP.set_owner(Client.Character.ID);
            MP.set_guild(Client.Character.GetGuild());
            MountParkTable.Update(MP);
            CharacterTable.Update(Client.Character);
            Client.GetCharacter().myMap.SendToMap(new MapMountParkMessage(MP));
        }
Beispiel #16
0
        private static void ProcessFriendAddRequest(WorldClient Client, string Packet)
        {
            WorldClient client = null;

            switch (Packet[2])
            {
            case '%':
                Packet = Packet.Substring(3);
                Player P = CharacterTable.GetCharacter(Packet);
                if (P == null || !P.IsOnline())
                {
                    Client.Send(new CharacterFriendAddMessage("Ef"));
                    return;
                }
                client = P.GetClient();
                break;

            default:
                Packet = Packet.Substring(2);
                Player Pr = CharacterTable.GetCharacter(Packet);
                if (Pr == null || !Pr.IsOnline())
                {
                    Client.Send(new CharacterFriendAddMessage("Ef"));
                    return;
                }
                client = Pr.GetClient();
                break;
            }
            if (client == null)
            {
                Client.Send(new CharacterFriendAddMessage("Ef"));
                return;
            }
            if (client.Account.ID == Client.Account.ID)
            {
                Client.Send(new CharacterFriendAddMessage("Ey"));
                return;
            }
            if (!Client.Account.Data.FriendsList.ContainsKey(client.Account.ID))
            {
                Client.Account.Data.FriendsList.Add(client.Account.ID, client.Account.Pseudo);
                StringBuilder sb = new StringBuilder(";").Append("?;") /* Chno had zab ?*/.Append(client.Character.Name).Append(";");
                if (client.Account.Data.FriendsList.ContainsKey(Client.Account.ID))
                {
                    sb.Append(client.Character.Level).Append(";");
                    sb.Append(client.Character.Alignement).Append(";");
                }
                else
                {
                    sb.Append("?;");
                    sb.Append("-1;");
                }
                sb.Append(client.Character.Classe).Append(";");
                sb.Append(client.Character.Sexe).Append(";");
                sb.Append(client.Character.Look);

                Client.Send(new CharacterFriendAddMessage("K" + client.Account.Pseudo + sb.ToString()));
                Client.Account.Data.Save();
            }
            else
            {
                Client.Send(new CharacterFriendAddMessage("Ea"));
            }
        }
Beispiel #17
0
        private static void ProcessEnnemyAddRequest(WorldClient Client, string Packet)
        {
            WorldClient client = null;

            switch (Packet[2])
            {
            case '%':
                Packet = Packet.Substring(3);
                Player P = CharacterTable.GetCharacter(Packet);
                if (P == null || !P.IsOnline())
                {
                    Client.Send(new CharacterFriendAddMessage("Ef"));
                    return;
                }
                client = P.GetClient();
                break;

            case '*':     // Pseudo
                Packet = Packet.Substring(3);
                var sock = WorldServer.Network.WorldServer.Clients.FirstOrDefault(x => x.Account != null && x.Account.Pseudo == Packet);
                P = null;
                if (sock != null)
                {
                    P = sock.Character;
                }
                if (P == null || !P.IsOnline())
                {
                    Client.Send(new CharacterFriendAddMessage("Ef"));
                    return;
                }
                client = P.GetClient();
                break;

            default:
                Packet = Packet.Substring(2);
                Player Pr = CharacterTable.GetCharacter(Packet);
                if (Pr == null || !Pr.IsOnline())
                {
                    Client.Send(new CharacterFriendAddMessage("Ef"));
                    return;
                }
                client = Pr.GetClient();
                break;
            }
            if (client == null)
            {
                Client.Send(new CharacterFriendAddMessage("Ef"));
                return;
            }
            if (client.Account.ID == Client.Account.ID)
            {
                Client.Send(new CharacterFriendAddMessage("Ey"));
                return;
            }
            if (!Client.Account.Data.EnnemyList.ContainsKey(client.Account.ID))
            {
                Client.Account.Data.EnnemyList.Add(client.Account.ID, client.Account.Pseudo);
                StringBuilder sb = new StringBuilder(";").Append("?;") /* Chno had zab ?*/.Append(client.Character.Name).Append(";");
                if (client.Account.Data.EnnemyList.ContainsKey(Client.Account.ID))
                {
                    sb.Append(client.Character.Level).Append(";");
                    sb.Append(client.Character.Alignement).Append(";");
                }
                else
                {
                    sb.Append("?;");
                    sb.Append("-1;");
                }
                sb.Append(client.Character.Classe).Append(";");
                sb.Append(client.Character.Sexe).Append(";");
                sb.Append(client.Character.Look);

                Client.Send(new CharacterEnnemyAddMessage(client.Account.Pseudo + sb.ToString()));
                Client.Account.Data.Save();
            }
            else
            {
                Client.Send(new CharacterOldEnnemyAddMessage());
            }
        }
Beispiel #18
0
 public Player getPerso()
 {
     return(CharacterTable.GetCharacter(this.ID));
 }
Beispiel #19
0
        private static void ProcessGuildKickRequest(WorldClient Client, string Packet)
        {
            var Guild = Client.GetCharacter().getCharacterGuild().GuildCache;

            if (Guild == null)
            {
                Client.Send(new BasicNoOperationMessage());
                return;
            }

            var TargetName = Packet.Substring(2);

            var Member = Guild.GetMember(TargetName);

            if (Member != null)
            {
                if (Member == Client.GetCharacter().getCharacterGuild())
                {
                    Guild.RemovePlayer(Client.GetCharacter().getCharacterGuild());
                    Client.Character.setCharacterGuild(null);
                    if (Client.Character.GetClient() != null)
                    {
                        Guild.UnRegister(Client.Character.GetClient());
                    }

                    Client.Send(new GuildKickMessage('K', Args: TargetName + "|" + TargetName));
                    Client.Character.RefreshOnMap();
                }
                else
                {
                    if (!Client.GetCharacter().getCharacterGuild().Can(GuildRightEnum.RIGHT_BAN))
                    {
                        Client.Send(new GuildKickMessage('E', GuildKickReason.REASON_NO_RIGHT));
                    }
                    else
                    {
                        if (Member.GradeType == GuildGradeEnum.GRADE_BOSS)
                        {
                            Client.Send(new GuildKickMessage('E', GuildKickReason.REASON_UNKNOW));
                        }
                        else
                        {
                            Guild.RemovePlayer(Member);
                            var perso = CharacterTable.GetCharacter(Member.ID);
                            if (perso == null)
                            {
                                return;
                            }
                            perso.setCharacterGuild(null);
                            if (perso.GetClient() != null)
                            {
                                Guild.UnRegister(perso.GetClient());
                            }
                            Client.Send(new GuildKickMessage('K', Args: Client.GetCharacter().Name + "|" + TargetName));

                            perso.Send(new GuildKickMessage('K', Args: Client.GetCharacter().Name));
                            perso.RefreshOnMap();
                        }
                    }
                }
            }
        }