Ejemplo n.º 1
0
        public static void GuildPromote(World.Network.WorldClient client, string packet)
        {
            string[] data       = packet.Substring(2).Split('|');
            int      id         = int.Parse(data[0]);
            int      rank       = int.Parse(data[1]);
            int      percentExp = int.Parse(data[2]);
            int      rights     = int.Parse(data[3]);

            if (client.Action.Guild != null && client.Action.GuildMember != null)
            {
                Game.Guilds.GuildMember guildMember = client.Action.Guild.FindMember(id);
                if (guildMember != null)
                {
                    /* Si il a le droit de modifier les rangs */
                    if (client.Action.GuildMember.HaveRight(Game.Guilds.GuildRightsConstants.CAN_SET_RANK))
                    {
                        if (guildMember.Rank != Game.Guilds.GuildRank.Leader)
                        {
                            /* On verifie si il veut pas voler la place de meneur :) */
                            if (rank != (int)Game.Guilds.GuildRank.Leader)
                            {
                                guildMember.Rank = (Game.Guilds.GuildRank)rank;
                                RequestMembersInfos(client);
                            }
                        }
                        if (client.Action.GuildMember.Rank == Game.Guilds.GuildRank.Leader)
                        {
                            if ((Game.Guilds.GuildRank)rank == Game.Guilds.GuildRank.Leader)
                            {
                                client.Action.SystemMessage("Vous n'etes desormais pu le meneur de la guilde !");
                                client.Action.GuildMember.Rank = Game.Guilds.GuildRank.InTry;
                                guildMember.Rank = Game.Guilds.GuildRank.Leader;
                                guildMember.AllowFullRight();
                                client.Action.GuildMember.Rights.Clear();
                                client.Action.SaveCharacter();
                                guildMember.Save();
                                RequestMembersInfos(client);
                            }
                        }
                    }

                    /* Si il a le droit de modifier les droits */
                    if (client.Action.GuildMember.HaveRight(Game.Guilds.GuildRightsConstants.CAN_SET_RIGHTS))
                    {
                        if (guildMember.Rank != Game.Guilds.GuildRank.Leader)
                        {
                            guildMember.Rights = guildMember.GetRightsByInt(rights);
                        }
                    }
                }
                else
                {
                    client.Action.SystemMessage("Le joueur n'existe pas, ou ne fait pas partie de la guilde !");
                }
            }
            else
            {
                client.Action.SystemMessage("Vous devez posseder une guilde pour effectuer cette action !");
            }
        }
Ejemplo n.º 2
0
 public static void GuildKick(World.Network.WorldClient client, string packet)
 {
     if (client.Action.Guild != null && client.Action.GuildMember != null)
     {
         string nickname = packet.Substring(2);
         Game.Guilds.GuildMember guildMember = client.Action.Guild.FindMember(nickname);
         var guild = guildMember.OwnGuild;
         if (guildMember != null)
         {
             if (guildMember.Rank == Game.Guilds.GuildRank.Leader)
             {
                 if (guildMember.Character.ID == client.Character.ID)
                 {
                     if (guild.Members.Count > 1)
                     {
                         client.Action.Guild.KickMember(guildMember);
                         client.Send("gKK" + client.Character.Nickname + "|" + client.Character.Nickname);
                         client.Action.Guild       = null;
                         client.Action.GuildMember = null;
                         client.Action.RefreshRoleplayEntity();
                         guild.Delete();
                     }
                     else
                     {
                         client.Action.SystemMessage("Selectionner avant un nouveau meneur !");
                     }
                     return;
                 }
                 else
                 {
                     client.Action.SystemMessage("Impossible de bannir le joueur");
                     return;
                 }
             }
             /* Si il s'auto-kick */
             if (guildMember.ID == client.Action.GuildMember.ID)
             {
                 client.Action.Guild.KickMember(guildMember);
                 client.Send("gKK" + client.Character.Nickname + "|" + client.Character.Nickname);
                 client.Action.Guild       = null;
                 client.Action.GuildMember = null;
                 client.Action.RefreshRoleplayEntity();
             }
             else /* Il kick un autre joueur que sois même */
             {
                 if (client.Action.GuildMember.HaveRight(Game.Guilds.GuildRightsConstants.CAN_KICK))
                 {
                     client.Action.Guild.KickMember(guildMember);
                     Network.WorldClient kickedClient = World.Helper.WorldHelper.GetClientByCharacter(nickname);
                     if (kickedClient != null)
                     {
                         kickedClient.Send("gKK" + kickedClient.Character.Nickname + "|" + kickedClient.Character.Nickname);
                         kickedClient.Action.Guild       = null;
                         kickedClient.Action.GuildMember = null;
                         kickedClient.Action.RefreshRoleplayEntity();
                     }
                 }
                 else
                 {
                     client.Action.SystemMessage("Impossible de bannir le joueur : Vous ne posseder pas le droit");
                 }
             }
         }
         else
         {
             client.Action.SystemMessage("Le joueur n'existe pas, ou ne fait pas partie de la guilde !");
         }
     }
     else
     {
         client.Action.SystemMessage("Vous devez posseder une guilde pour effectuer cette action !");
     }
 }
Ejemplo n.º 3
0
        private void GetGuildJoinRequest(string datas)
        {
            switch (datas[0])
            {
                case 'R':

                    if (!World.Entities.Requests.CharactersRequests.CharactersList.Any(x => x.Name == datas.Substring(1)))
                    {
                        Client.Send("BN");
                        return;
                    }

                    var receiverCharacter = World.Entities.Requests.CharactersRequests.CharactersList.First(x => x.Name == datas.Substring(1));

                    if (receiverCharacter.Guild != null || Client.Player.Guild == null || !receiverCharacter.IsConnected)
                    {
                        if (receiverCharacter.Guild != null)
                        {
                            Client.Player.NClient.Send("Im134");
                            return;
                        }

                        Client.Send("BN");
                        return;
                    }

                    if (!Client.Player.Guild.Members.First(x => x.Character == Client.Player).CanInvite)
                    {
                        Client.Send("Im1101");
                        return;
                    }

                    Client.Player.State.ReceiverInviteGuild = receiverCharacter.ID;
                    receiverCharacter.State.SenderInviteGuild = Client.Player.ID;

                    Client.Player.State.OnWaitingGuild = true;
                    receiverCharacter.State.OnWaitingGuild = true;

                    Client.Send(string.Concat("gJR", receiverCharacter.Name));
                    receiverCharacter.NClient.Send(string.Format("gJr{0}|{1}|{2}", Client.Player.ID, Client.Player.Name, Client.Player.Guild.Name));

                    break;

                case 'K':

                    var ID = 0;

                    if (!int.TryParse(datas.Substring(1), out ID) || !World.Entities.Requests.CharactersRequests.CharactersList.Any(x => x.ID == ID))
                    {
                        Client.Send("BN");
                        return;
                    }

                    var accepttoCharacter = World.Entities.Requests.CharactersRequests.CharactersList.First(x => x.ID == ID);

                    if (!accepttoCharacter.IsConnected || accepttoCharacter.State.ReceiverInviteGuild != Client.Player.ID)
                    {
                        Client.Send("BN");
                        return;
                    }

                    Client.Player.State.SenderInviteGuild = -1;
                    accepttoCharacter.State.ReceiverInviteGuild = -1;

                    Client.Player.State.OnWaitingGuild = false;
                    accepttoCharacter.State.OnWaitingGuild = false;

                    Client.Player.Guild = accepttoCharacter.Guild;
                    var member = new Game.Guilds.GuildMember(Client.Player);
                    var guild = Client.Player.Guild;

                    accepttoCharacter.Guild.Members.Add(member);

                    Client.Send(string.Format("gS{0}|{1}|{2}", guild.Name, guild.Emblem.Replace(",", "|"), Utilities.Basic.ToBase36(member.Rights)));
                    accepttoCharacter.NClient.Send(string.Concat("gJKa", Client.Player.Name));

                    break;

                case 'E':

                    if (!World.Entities.Requests.CharactersRequests.CharactersList.Any(x => x.Name == datas.Substring(1)))
                    {
                        Client.Send("BN");
                        return;
                    }

                    var refusetoCharacter = World.Entities.Requests.CharactersRequests.CharactersList.First(x => x.Name == datas.Substring(1));

                    if (!refusetoCharacter.IsConnected || refusetoCharacter.State.ReceiverInviteGuild == Client.Player.ID)
                    {
                        Client.Send("BN");
                        return;
                    }

                    refusetoCharacter.NClient.Send("gJEc");

                    break;
            }
        }