XConquer

MsgSindycate

Sep 16th, 2020
461
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.  
  3. using System;
  4. using System.Linq;
  5. using System.Text;
  6. using COServer.Game;
  7. using System.Collections.Generic;
  8.  
  9. namespace COServer.Network.GamePackets
  10. {
  11.     public unsafe class MsgSyndicate : Writer, Interfaces.IPacket
  12.     {
  13.         public enum Mode : uint
  14.         {
  15.             None = 0,
  16.             JoinRequest = 1,
  17.             InviteRequest = 2,
  18.             Quit = 3,
  19.             Info = 6,
  20.             Allied = 7,
  21.             RemoveAlly = 8,
  22.             Enemied = 9,
  23.             RemoveEnemy = 10,
  24.             DonateSilvers = 11,
  25.             Refresh = 12,
  26.             Disband = 19,
  27.             DonateConquerPoints = 20,
  28.             ChangeGuildRequirements = 24,
  29.             GuildRequirements = 25,
  30.             Bulletin = 27,
  31.             PromoteSendRequest = 28,
  32.             PromoteAcceptRequest = 29,
  33.             Discharge = 30,
  34.             ConfirmPromote = 34,
  35.             Diseharge = 36,
  36.             Promote = 37,
  37.             PromoteInfo = 38,
  38.             Unknown = 45,
  39.             GuildBlackList = 47,
  40.             MakeBlackList = 48,
  41.             SmsBlackList = 49,
  42.             RemoveBlackList = 50
  43.         }
  44.         byte[] Packet;
  45.         public MsgSyndicate(bool Create)
  46.         {
  47.             if (Create)
  48.             {
  49.                 Packet = new byte[36];
  50.                 WriteUInt16((ushort)(Packet.Length - 8), 0, Packet);
  51.                 WriteUInt16((ushort)MsgTypes.MsgSyndicate, 2, Packet);
  52.             }
  53.         }
  54.         public MsgSyndicate(uint Date)
  55.         {
  56.             Packet = new byte[36 + Date];
  57.             WriteUInt16((ushort)(Packet.Length - 8), 0, Packet);
  58.             WriteUInt16((ushort)MsgTypes.MsgSyndicate, 2, Packet);
  59.         }
  60.         public Mode Action
  61.         {
  62.             get { return (Mode)Packet[4]; }
  63.             set { fixed (byte* Pack = Packet) *((uint*)(Pack + 4)) = (uint)value; }
  64.         }
  65.         public uint dwParam
  66.         {
  67.             get { return BitConverter.ToUInt32(Packet, 8); }
  68.             set { WriteUInt32(value, 8, Packet); }
  69.         }
  70.         public uint Level
  71.         {
  72.             get { return BitConverter.ToUInt32(Packet, 12); }
  73.             set { WriteUInt32(value, 12, Packet); }
  74.         }
  75.         public uint Reborn
  76.         {
  77.             get { return BitConverter.ToUInt32(Packet, 16); }
  78.             set { WriteUInt32(value, 16, Packet); }
  79.         }
  80.         public uint Class
  81.         {
  82.             get { return BitConverter.ToUInt32(Packet, 20); }
  83.             set { WriteUInt32(value, 20, Packet); }
  84.         }
  85.         public string BulletinTime
  86.         {
  87.             set
  88.             {
  89.                 WriteByte(1, 24, Packet);
  90.                 WriteByte((byte)(value.Length), 25, Packet);
  91.                 WriteString(value, 26, Packet);
  92.             }
  93.         }
  94.         public byte[] ToArray()
  95.         {
  96.             return Packet;
  97.         }
  98.         public void Deserialize(byte[] Data)
  99.         {
  100.             Packet = Data;
  101.         }
  102.         public void Send(Client.GameState client)
  103.         {
  104.             client.Send(Packet);
  105.         }
  106.         static void AllyGuilds(string name, Client.GameState client)
  107.         {
  108.             foreach (var guild in Kernel.Guilds.Values)
  109.             {
  110.                 if (guild.Name == name && client.Guild.Name != name)
  111.                 {
  112.                     if (guild.Leader != null)
  113.                     {
  114.                         if (guild.Leader.IsOnline)
  115.                         {
  116.                             guild.Leader.Client.OnMessageBoxEventParams = new object[] { guild, client.Guild };
  117.                             client.OnMessageBoxEventParams = new object[] { guild, client.Guild };
  118.                             Client.GameState Leader = guild.Leader.Client;
  119.                             Leader.MessageOK = delegate
  120.                             {
  121.                                 Game.ConquerStructures.Society.Guild Guild1 = Leader.OnMessageBoxEventParams[0] as Game.ConquerStructures.Society.Guild;
  122.                                 Game.ConquerStructures.Society.Guild Guild2 = Leader.OnMessageBoxEventParams[1] as Game.ConquerStructures.Society.Guild;
  123.                                 if (Guild1.Ally.Count == 6 || Guild2.Ally.Count == 6) return;
  124.                                 Guild1.AddAlly(Guild2.Name);
  125.                                 Guild2.AddAlly(Guild1.Name);
  126.                                 if (Guild1.Leader.Client != null)
  127.                                 {
  128.                                     if (Guild1.Leader.Client.Socket.Alive)
  129.                                     {
  130.                                         if (Guild2.Leader.Client != null && Guild2.Leader.Client.Socket.Alive)
  131.                                         {
  132.                                             Guild2.Leader.Client.Send(new MsgTalk(Guild1.Leader.Name + " has accepted your ally request.", System.Drawing.Color.Blue, MsgTalk.TopLeft));
  133.                                         }
  134.                                     }
  135.                                 }
  136.                             };
  137.                             guild.Leader.Client.MessageCancel = delegate
  138.                             {
  139.                                 try
  140.                                 {
  141.                                     if (guild.Leader.Client != null)
  142.                                     {
  143.                                         if (guild.Leader.Client.Socket.Alive)
  144.                                         {
  145.                                             if (guild.Leader.Client.OnMessageBoxEventParams != null)
  146.                                             {
  147.                                                 Game.ConquerStructures.Society.Guild Guild2 = guild.Leader.Client.OnMessageBoxEventParams[1] as Game.ConquerStructures.Society.Guild;
  148.                                                 Game.ConquerStructures.Society.Guild Guild1 = guild.Leader.Client.OnMessageBoxEventParams[0] as Game.ConquerStructures.Society.Guild;
  149.                                                 if (Guild2.Leader.IsOnline)
  150.                                                 {
  151.                                                     Guild2.Leader.Client.Send(new MsgTalk(Guild1.Leader.Name + " has declined your ally request.", System.Drawing.Color.Blue, MsgTalk.TopLeft));
  152.                                                 }
  153.                                             }
  154.                                         }
  155.                                     }
  156.                                 }
  157.                                 catch (Exception e)
  158.                                 {
  159.                                     Server.SaveException(e);
  160.                                 }
  161.                             };
  162.                             guild.Leader.Client.Send(new NpcReply(NpcReply.MessageBox, client.Player.Name + " , GuildLeader of " + client.Guild.Name + " wants to make with you an alliance."));
  163.                         }
  164.                     }
  165.                 }
  166.             }
  167.         }
  168.         public void SendPromote(Client.GameState client, ushort typ)
  169.         {
  170.             if (client == null) return;
  171.             if (client.AsMember == null) return;
  172.             List<string> list = new List<string>();
  173.             StringBuilder builder = new StringBuilder();
  174.             if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
  175.             {
  176.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.GuildLeader, 1, 1, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
  177.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.DeputyLeader, (int)client.Guild.RanksCounts[990], 10, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
  178.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HDeputyLeader, (int)client.Guild.RanksCounts[980], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 650));
  179.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonoraryManager, (int)client.Guild.RanksCounts[880], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 320));
  180.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonorarySuperv, (int)client.Guild.RanksCounts[840], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 270));
  181.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonorarySteward, (int)client.Guild.RanksCounts[680], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 100));
  182.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Aide, (int)client.Guild.RanksCounts[602], 6, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
  183.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Steward, (int)client.Guild.RanksCounts[690], 3, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
  184.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Follower, (int)client.Guild.RanksCounts[490], 10, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
  185.             }
  186.             if (client.AsMember.Rank == Enums.GuildMemberRank.LeaderSpouse)
  187.             {
  188.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HDeputyLeader, (int)client.Guild.RanksCounts[980], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 650));
  189.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonoraryManager, (int)client.Guild.RanksCounts[880], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 320));
  190.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonorarySuperv, (int)client.Guild.RanksCounts[840], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 270));
  191.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonorarySteward, (int)client.Guild.RanksCounts[680], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 100));
  192.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Aide, (int)client.Guild.RanksCounts[602], 10, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
  193.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Steward, (int)client.Guild.RanksCounts[690], 3, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
  194.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Follower, (int)client.Guild.RanksCounts[490], 10, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
  195.             }
  196.             if (client.AsMember.Rank == Enums.GuildMemberRank.Manager || client.AsMember.Rank == Enums.GuildMemberRank.HonoraryManager)
  197.             {
  198.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Aide, (int)client.Guild.RanksCounts[602], 6, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
  199.             }
  200.             if (client.AsMember.Rank == Enums.GuildMemberRank.DeputyLeader)
  201.             {
  202.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HDeputyLeader, (int)client.Guild.RanksCounts[980], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 650));
  203.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonoraryManager, (int)client.Guild.RanksCounts[880], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 320));
  204.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonorarySuperv, (int)client.Guild.RanksCounts[840], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 270));
  205.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.HonorarySteward, (int)client.Guild.RanksCounts[680], 4, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 100));
  206.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Steward, (int)client.Guild.RanksCounts[690], 3, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
  207.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Aide, (int)client.Guild.RanksCounts[602], 6, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
  208.                 list.Add(this.CreatePromotionString(builder, Enums.GuildMemberRank.Follower, (int)client.Guild.RanksCounts[490], 10, (int)client.Guild.GetMemberPotency(Enums.GuildMemberRank.GuildLeader), 0));
  209.             }
  210.             int extraLength = 0;
  211.             foreach (var str in list) extraLength += str.Length + 1;
  212.             byte[] packet = new byte[28 + 8 + extraLength];
  213.             WriteUInt16((ushort)(packet.Length - 8), 0, packet);
  214.             WriteUInt16((ushort)MsgTypes.MsgSyndicate, 2, packet);
  215.             WriteByte((byte)typ, 4, packet);
  216.             WriteStringList(list, 24, packet);
  217.             client.Send(packet);
  218.         }
  219.         private string CreatePromotionString(StringBuilder builder, Enums.GuildMemberRank rank, int occupants, int maxOccupants, int extraBattlePower, int conquerPoints)
  220.         {
  221.             builder.Remove(0, builder.Length);
  222.             builder.Append((int)rank);
  223.             builder.Append(" ");
  224.             builder.Append(occupants);
  225.             builder.Append(" ");
  226.             builder.Append(maxOccupants);
  227.             builder.Append(" ");
  228.             builder.Append(extraBattlePower);
  229.             builder.Append(" ");
  230.             builder.Append(conquerPoints);
  231.             builder.Append(" ");
  232.             return builder.ToString();
  233.         }
  234.         public static void Process(byte[] Packet, Client.GameState client)
  235.         {
  236.             MsgSyndicate command = new MsgSyndicate(false);
  237.             command.Deserialize(Packet);
  238.             switch (command.Action)
  239.             {
  240.                 case Mode.Info:
  241.                     {
  242.                         var Guild = Kernel.Guilds[command.dwParam];
  243.                         if (Guild != null)
  244.                             Guild.SendName(client);
  245.                         break;
  246.                     }
  247.                 case Mode.ChangeGuildRequirements:
  248.                     {
  249.                         if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
  250.                         {
  251.                             client.Guild.LevelRequirement = Math.Min(command.Level, 140);
  252.                             client.Guild.RebornRequirement = Math.Min(command.Reborn, 2);
  253.                             client.Guild.ClassRequirement = Math.Min(command.Class, 127);
  254.                             foreach (var member in client.Guild.Members.Values)
  255.                                 if (member.IsOnline)
  256.                                     client.Guild.SendGuild(member.Client);
  257.                             Database.GuildTable.SaveRequirements(client.Guild);
  258.                         }
  259.                         break;
  260.                     }
  261.                 case Mode.RemoveAlly:
  262.                 case Mode.RemoveEnemy:
  263.                     {
  264.                         string name = Encoding.Default.GetString(Packet, 26, Packet[25]);
  265.                         if (client.Guild != null)
  266.                         {
  267.                             if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
  268.                             {
  269.                                 client.Guild.RemoveAlly(name);
  270.                                 foreach (var guild in Kernel.Guilds.Values)
  271.                                 {
  272.                                     if (guild.Name == name && client.Guild.Name != name)
  273.                                     {
  274.                                         guild.RemoveAlly(client.Guild.Name);
  275.                                     }
  276.                                 }
  277.                                 client.Guild.RemoveEnemy(name);
  278.                             }
  279.                         }
  280.                         break;
  281.                     }
  282.                 case Mode.Allied:
  283.                     {
  284.                         string name = Encoding.Default.GetString(Packet, 26, Packet[25]);
  285.                         if (client.Guild != null)
  286.                         {
  287.                             if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
  288.                             {
  289.                                 if (client.Guild.Ally.Count < 6)
  290.                                 {
  291.                                     AllyGuilds(name, client);
  292.                                 }
  293.                             }
  294.                         }
  295.                         break;
  296.                     }
  297.                 case Mode.Enemied:
  298.                     {
  299.                         string name = Encoding.Default.GetString(Packet, 26, Packet[25]);
  300.                         if (client.Guild != null)
  301.                         {
  302.                             if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
  303.                             {
  304.                                 if (client.Guild.Enemy.Count < 6)
  305.                                 {
  306.                                     client.Guild.AddEnemy(name);
  307.                                 }
  308.                             }
  309.                         }
  310.                         break;
  311.                     }
  312.                 case Mode.Bulletin:
  313.                     {
  314.                         string message = Encoding.Default.GetString(Packet, 26, Packet[25]);
  315.                         if (client.Guild != null)
  316.                         {
  317.                             if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
  318.                             {
  319.                                 client.Guild.Bulletin = message;
  320.                                 client.Guild.CreateBuletinTime();
  321.                                 client.Guild.SendGuild(client);
  322.                             }
  323.                         }
  324.                         break;
  325.                     }
  326.                 case Mode.DonateSilvers:
  327.                     {
  328.                         if (client.Guild != null)
  329.                         {
  330.                             if (client.Trade.InTrade) return;
  331.                             if (client.PokerPlayer != null)
  332.                                 return;
  333.                             if (client.Player.Money >= command.dwParam)
  334.                             {
  335.                                 client.Guild.SilverFund += command.dwParam;
  336.                                 Database.GuildTable.SaveFunds(client.Guild);
  337.                                 client.AsMember.SilverDoantion += command.dwParam;
  338.                                 client.Player.Money -= command.dwParam;
  339.                                 client.Guild.SendGuild(client);
  340.                                 client.Guild.SendGuildMessage(new MsgTalk((client.Player.Name + " Donate " + command.dwParam + " Guild " + client.Guild.Name + " Silvers"), System.Drawing.Color.Red, MsgTalk.TopLeft));
  341.                             }
  342.                         }
  343.                         break;
  344.                     }
  345.                 case Mode.DonateConquerPoints:
  346.                     {
  347.                         if (client.Guild != null)
  348.                         {
  349.                             if (client.Trade.InTrade) return;
  350.                             if (client.PokerPlayer != null)
  351.                                 return;
  352.                             if (client.Player.ConquerPoints >= (ulong)command.dwParam)
  353.                             {
  354.                                 client.Guild.ConquerPointFund += command.dwParam;
  355.                                 Database.GuildTable.SaveFunds(client.Guild);
  356.                                 client.AsMember.ConquerPointDonation += command.dwParam;
  357.                                 client.Player.ConquerPoints -= (uint)command.dwParam;
  358.                                 client.Guild.SendGuild(client);
  359.                                 client.Guild.SendGuildMessage(new MsgTalk((client.Player.Name + " Donate " + command.dwParam + " Guild " + client.Guild.Name + " ConquerPoints"), System.Drawing.Color.Red, MsgTalk.TopLeft));
  360.                             }
  361.                         }
  362.                         break;
  363.                     }
  364.                 case Mode.Refresh:
  365.                     {
  366.                         if (client.AsMember != null)
  367.                         {
  368.                             if (client.Guild != null)
  369.                                 client.Guild.SendGuild(client);
  370.                         }
  371.                         break;
  372.                     }
  373.                 case Mode.PromoteInfo:
  374.                     {
  375.                         if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
  376.                         {
  377.                             SafeDictionary<uint, Game.ConquerStructures.Society.Guild.Member> array2 = new SafeDictionary<uint, Game.ConquerStructures.Society.Guild.Member>();
  378.                             foreach (var p in client.Guild.Members.Values)
  379.                             {
  380.                                 if (p.Rank == (Enums.GuildMemberRank)command.dwParam)
  381.                                 {
  382.                                     array2.Add(p.ID, p);
  383.                                 }
  384.                             }
  385.                             var array = array2.Values.ToArray();
  386.                             if (array != null)
  387.                             {
  388.                                 byte[] Buffer = new byte[8 + 48 + array.Length * 32];
  389.                                 WriteUInt16((ushort)(Buffer.Length - 8), 0, Buffer);
  390.                                 WriteUInt16((ushort)MsgTypes.MsgSynMemberList, 2, Buffer);
  391.                                 Uint(1, 4, Buffer);
  392.                                 Uint((uint)array.Length, 12, Buffer);
  393.                                 int offset = 16;
  394.                                 for (int i = 0; i < array.Length; i++)
  395.                                 {
  396.                                     Uint((uint)array[i].Level, offset, Buffer);//Level
  397.                                     offset += 4;
  398.                                     Uint((uint)(array[i].IsOnline ? 1 : 0), offset, Buffer);//Online
  399.                                     offset += 4;
  400.                                     if (array[i].IsOnline)
  401.                                         Uint((uint)array[i].Client.Player.BattlePower, offset, Buffer);//BattlePower  
  402.                                     offset += 4;
  403.                                     offset += 4;
  404.                                     WriteString(array[i].Name, offset, Buffer);//Name
  405.                                     offset += 16;
  406.                                 }
  407.                                 client.Send(Buffer);
  408.                             }
  409.                         }
  410.                         client.Send(Packet);
  411.                         break;
  412.                     }
  413.                 case Mode.Discharge:
  414.                     {
  415.                         string name = Encoding.Default.GetString(Packet, 26, Packet[25]);
  416.                         if (client.Guild != null)
  417.                         {
  418.                             if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
  419.                             {
  420.                                 var member = client.Guild.GetMemberByName(name);
  421.                                 if (member.ID != client.Player.UID)
  422.                                 {
  423.                                     if (member.Rank == Enums.GuildMemberRank.DeputyLeader)
  424.                                     {
  425.                                         member.Rank = Enums.GuildMemberRank.Member;
  426.                                         if (member.IsOnline)
  427.                                         {
  428.                                             client.Guild.SendGuild(member.Client);
  429.                                             member.Client.Player.GuildRank = (ushort)member.Rank;
  430.                                             member.Client.Screen.FullWipe();
  431.                                             member.Client.Screen.Reload(null);
  432.                                             member.Client.Player.GuildSharedBp = member.Guild.GetSharedBattlepower(member.Rank);
  433.                                         }
  434.                                         Database.EntityTable.UpdateData(member.ID, "GuildRank", (int)member.Rank);
  435.                                         client.Guild.SendGuildMessage(new MsgTalk((member.Name + " was discharged from " + member.Rank + " position."), System.Drawing.Color.Yellow, MsgTalk.Guild));
  436.                                     }
  437.                                 }
  438.                             }
  439.                         }
  440.                         break;
  441.                     }
  442.                 case Mode.Promote:
  443.                     {
  444.                         if (client.Guild == null || client.AsMember == null) return;
  445.                         command.SendPromote(client, 37);
  446.                         return;
  447.                     }
  448.                 case Mode.PromoteAcceptRequest:
  449.                 case Mode.ConfirmPromote:
  450.                 case Mode.PromoteSendRequest:
  451.                     {
  452.                         if (client.Guild != null && client.AsMember != null)
  453.                         {
  454.                             string GetMemberName = GeneralData.ReadString(Packet, 26, Packet[25]);
  455.                             ushort GetMemberRank = BitConverter.ToUInt16(Packet, 8);
  456.                             Game.ConquerStructures.Society.Guild.Member MemberPromote = null;
  457.                             if (client.Guild.GetMember(GetMemberName, out MemberPromote))
  458.                             {
  459.                                 if (client.AsMember.Rank < MemberPromote.Rank)
  460.                                 {
  461.                                     client.Send("Sorry, you have small rank for change he position!");
  462.                                     break;
  463.                                 }
  464.                                 if (client.AsMember.Rank == Enums.GuildMemberRank.DeputyLeader)
  465.                                 {
  466.                                     if (GetMemberRank == (ushort)Enums.GuildMemberRank.Steward)
  467.                                     {
  468.                                         if (client.Guild.RanksCounts[GetMemberRank] >= 3)
  469.                                         {
  470.                                             client.Send("Sorry all Steward`s ranks its ocupated!");
  471.                                             return;
  472.                                         }
  473.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
  474.                                         MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
  475.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
  476.                                         if (MemberPromote.IsOnline)
  477.                                         {
  478.                                             client.Guild.SendGuild(MemberPromote.Client);
  479.                                             MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
  480.                                             MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
  481.                                             MemberPromote.Client.Screen.FullWipe();
  482.                                             MemberPromote.Client.Screen.Reload(null);
  483.                                         }
  484.                                     }
  485.                                     if (GetMemberRank == (ushort)Enums.GuildMemberRank.Follower)
  486.                                     {
  487.                                         if (client.Guild.RanksCounts[GetMemberRank] >= 10)
  488.                                         {
  489.                                             client.Send("Sorry all Follower`s ranks its ocupated!");
  490.                                             return;
  491.                                         }
  492.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
  493.                                         MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
  494.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
  495.                                         if (MemberPromote.IsOnline)
  496.                                         {
  497.                                             client.Guild.SendGuild(MemberPromote.Client);
  498.                                             MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
  499.                                             MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
  500.                                             MemberPromote.Client.Screen.FullWipe();
  501.                                             MemberPromote.Client.Screen.Reload(null);
  502.                                         }
  503.                                     }
  504.                                     if (GetMemberRank == (ushort)Enums.GuildMemberRank.Aide)
  505.                                     {
  506.                                         if (client.Guild.RanksCounts[GetMemberRank] >= 6)
  507.                                         {
  508.                                             client.Send("Sorry all Aide`s ranks its ocupated!");
  509.                                             return;
  510.                                         }
  511.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
  512.                                         MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
  513.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
  514.                                         if (MemberPromote.IsOnline)
  515.                                         {
  516.                                             client.Guild.SendGuild(MemberPromote.Client);
  517.                                             MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
  518.                                             MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
  519.                                             MemberPromote.Client.Screen.FullWipe();
  520.                                             MemberPromote.Client.Screen.Reload(null);
  521.                                         }
  522.                                     }
  523.                                 }
  524.                                 if (client.AsMember.Rank == Enums.GuildMemberRank.Manager || client.AsMember.Rank == Enums.GuildMemberRank.HonoraryManager)
  525.                                 {
  526.                                     if (GetMemberRank == (ushort)Enums.GuildMemberRank.Aide)
  527.                                     {
  528.                                         if (client.Guild.RanksCounts[GetMemberRank] >= 6)
  529.                                         {
  530.                                             client.Send("Sorry all Aide`s ranks its ocupated!");
  531.                                             return;
  532.                                         }
  533.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
  534.                                         MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
  535.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
  536.                                         if (MemberPromote.IsOnline)
  537.                                         {
  538.                                             client.Guild.SendGuild(MemberPromote.Client);
  539.                                             MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
  540.                                             MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
  541.                                             MemberPromote.Client.Screen.FullWipe();
  542.                                             MemberPromote.Client.Screen.Reload(null);
  543.                                         }
  544.                                     }
  545.                                 }
  546.                                 if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader || client.AsMember.Rank == Enums.GuildMemberRank.LeaderSpouse)
  547.                                 {
  548.                                     if (GetMemberRank == (ushort)Enums.GuildMemberRank.GuildLeader)
  549.                                     {
  550.                                         if (client.AsMember.Rank == Enums.GuildMemberRank.LeaderSpouse) return;
  551.                                         MemberPromote.Rank = Game.Enums.GuildMemberRank.GuildLeader;
  552.                                         client.Guild.LeaderName = MemberPromote.Name;
  553.                                         if (MemberPromote.IsOnline)
  554.                                         {
  555.                                             client.Guild.SendGuild(MemberPromote.Client);
  556.                                             MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
  557.                                             MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
  558.                                             MemberPromote.Client.Screen.FullWipe();
  559.                                             MemberPromote.Client.Screen.Reload(null);
  560.                                         }
  561.                                         client.AsMember.Rank = Game.Enums.GuildMemberRank.DeputyLeader;
  562.                                         client.Player.GuildRank = (ushort)client.AsMember.Rank;
  563.                                         client.Guild.SendGuild(client);
  564.                                         client.Screen.FullWipe();
  565.                                         client.Screen.Reload(null);
  566.                                         Database.GuildTable.SaveLeader(client.Guild);
  567.                                     }
  568.                                     if (GetMemberRank == (ushort)Enums.GuildMemberRank.DeputyLeader)
  569.                                     {
  570.                                         if (client.Guild.RanksCounts[GetMemberRank] >= 6)
  571.                                         {
  572.                                             client.Send("Sorry all DeputyLeader`s ranks its ocupated!");
  573.                                             return;
  574.                                         }
  575.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
  576.                                         MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
  577.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
  578.                                         if (MemberPromote.IsOnline)
  579.                                         {
  580.                                             client.Guild.SendGuild(MemberPromote.Client);
  581.                                             MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
  582.                                             MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
  583.                                             MemberPromote.Client.Screen.FullWipe();
  584.                                             MemberPromote.Client.Screen.Reload(null);
  585.                                         }
  586.                                     }
  587.                                     if (GetMemberRank == (ushort)Enums.GuildMemberRank.Aide)
  588.                                     {
  589.                                         if (client.AsMember.Rank == Enums.GuildMemberRank.LeaderSpouse) return;
  590.                                         if (client.Guild.RanksCounts[GetMemberRank] >= 6)
  591.                                         {
  592.                                             client.Send("Sorry all Aide`s ranks its ocupated!");
  593.                                             return;
  594.                                         }
  595.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
  596.                                         MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
  597.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
  598.                                         if (MemberPromote.IsOnline)
  599.                                         {
  600.                                             client.Guild.SendGuild(MemberPromote.Client);
  601.                                             MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
  602.                                             MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
  603.                                             MemberPromote.Client.Screen.FullWipe();
  604.                                             MemberPromote.Client.Screen.Reload(null);
  605.                                         }
  606.                                     }
  607.                                     if (GetMemberRank == (ushort)Enums.GuildMemberRank.Steward)
  608.                                     {
  609.                                         if (client.Guild.RanksCounts[GetMemberRank] >= 3)
  610.                                         {
  611.                                             client.Send("Sorry all Steward`s ranks its ocupated!");
  612.                                             return;
  613.                                         }
  614.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
  615.                                         MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
  616.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
  617.                                         if (MemberPromote.IsOnline)
  618.                                         {
  619.                                             client.Guild.SendGuild(MemberPromote.Client);
  620.                                             MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
  621.                                             MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
  622.                                             MemberPromote.Client.Screen.FullWipe();
  623.                                             MemberPromote.Client.Screen.Reload(null);
  624.                                         }
  625.                                     }
  626.                                     if (GetMemberRank == (ushort)Enums.GuildMemberRank.HDeputyLeader)
  627.                                     {
  628.                                         if (client.Guild.RanksCounts[GetMemberRank] >= 4)
  629.                                         {
  630.                                             client.Send("Sorry all HDeputyLeader`s ranks its ocupated!");
  631.                                             return;
  632.                                         }
  633.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
  634.                                         MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
  635.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
  636.                                         if (MemberPromote.IsOnline)
  637.                                         {
  638.                                             client.Guild.SendGuild(MemberPromote.Client);
  639.                                             MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
  640.                                             MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
  641.                                             MemberPromote.Client.Screen.FullWipe();
  642.                                             MemberPromote.Client.Screen.Reload(null);
  643.                                         }
  644.                                     }
  645.                                     if (GetMemberRank == (ushort)Enums.GuildMemberRank.HonoraryManager)
  646.                                     {
  647.                                         if (client.Guild.RanksCounts[GetMemberRank] >= 4)
  648.                                         {
  649.                                             client.Send("Sorry all HonoraryManager`s ranks its ocupated!");
  650.                                             return;
  651.                                         }
  652.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
  653.                                         MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
  654.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
  655.                                         if (MemberPromote.IsOnline)
  656.                                         {
  657.                                             client.Guild.SendGuild(MemberPromote.Client);
  658.                                             MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
  659.                                             MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
  660.                                             MemberPromote.Client.Screen.FullWipe();
  661.                                             MemberPromote.Client.Screen.Reload(null);
  662.                                         }
  663.                                     }
  664.                                     if (GetMemberRank == (ushort)Enums.GuildMemberRank.HonorarySuperv)
  665.                                     {
  666.                                         if (client.Guild.RanksCounts[GetMemberRank] >= 4)
  667.                                         {
  668.                                             client.Send("Sorry all HonorarySuperv`s ranks its ocupated!");
  669.                                             return;
  670.                                         }
  671.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
  672.                                         MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
  673.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
  674.                                         if (MemberPromote.IsOnline)
  675.                                         {
  676.                                             client.Guild.SendGuild(MemberPromote.Client);
  677.                                             MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
  678.                                             MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
  679.                                             MemberPromote.Client.Screen.FullWipe();
  680.                                             MemberPromote.Client.Screen.Reload(null);
  681.                                         }
  682.                                     }
  683.                                     if (GetMemberRank == (ushort)Enums.GuildMemberRank.HonorarySteward)
  684.                                     {
  685.                                         if (client.Guild.RanksCounts[GetMemberRank] >= 4)
  686.                                         {
  687.                                             client.Send("Sorry all HonorarySteward`s ranks its ocupated!");
  688.                                             return;
  689.                                         }
  690.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
  691.                                         MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
  692.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
  693.                                         if (MemberPromote.IsOnline)
  694.                                         {
  695.                                             client.Guild.SendGuild(MemberPromote.Client);
  696.                                             MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
  697.                                             MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
  698.                                             MemberPromote.Client.Screen.FullWipe();
  699.                                             MemberPromote.Client.Screen.Reload(null);
  700.                                         }
  701.                                     }
  702.                                     if (GetMemberRank == (ushort)Enums.GuildMemberRank.Follower)
  703.                                     {
  704.                                         if (client.Guild.RanksCounts[GetMemberRank] >= 10)
  705.                                         {
  706.                                             client.Send("Sorry all Follower`s ranks its ocupated!");
  707.                                             return;
  708.                                         }
  709.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
  710.                                         MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
  711.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
  712.                                         if (MemberPromote.IsOnline)
  713.                                         {
  714.                                             client.Guild.SendGuild(MemberPromote.Client);
  715.                                             MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
  716.                                             MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
  717.                                             MemberPromote.Client.Screen.FullWipe();
  718.                                             MemberPromote.Client.Screen.Reload(null);
  719.                                         }
  720.                                     }
  721.                                     if (GetMemberRank == (ushort)Enums.GuildMemberRank.Member)
  722.                                     {
  723.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]--;
  724.                                         MemberPromote.Rank = (Enums.GuildMemberRank)GetMemberRank;
  725.                                         client.Guild.RanksCounts[(ushort)MemberPromote.Rank]++;
  726.                                         if (MemberPromote.IsOnline)
  727.                                         {
  728.                                             client.Guild.SendGuild(MemberPromote.Client);
  729.                                             MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
  730.                                             MemberPromote.Client.Player.GuildRank = (ushort)MemberPromote.Rank;
  731.                                             MemberPromote.Client.Screen.FullWipe();
  732.                                             MemberPromote.Client.Screen.Reload(null);
  733.                                         }
  734.                                     }
  735.                                 }
  736.                                 client.Guild.SendGuildMessage(new MsgTalk((client.Player.Name + " has appointed " + MemberPromote.Name + " as " + MemberPromote.Rank), System.Drawing.Color.Yellow, MsgTalk.Guild));
  737.                                 //MemberPromote.Client.Player.GuildSharedBp = client.Guild.GetSharedBattlepower(MemberPromote.Rank);
  738.                             }
  739.                             else client.Send("Sorry Can't Find " + GetMemberName);
  740.                         }
  741.                         break;
  742.                     }
  743.                 case Mode.JoinRequest:
  744.                     {
  745.                         Client.GameState Target;
  746.                         if (Kernel.GamePool.TryGetValue(command.dwParam, out Target))
  747.                         {
  748.                             if (Target.Guild.BlackList.Contains(client.Player.UID))
  749.                             {
  750.                                 command.Action = Mode.GuildBlackList;
  751.                                 client.Send(command);
  752.                                 return;
  753.                             }
  754.                             client.GuildJoinTarget = Target.Player.UID;
  755.                             if (client.GuildJoinTarget == Target.Player.UID && Target.GuildJoinTarget == client.Player.UID)
  756.                             {
  757.                                 client.GuildJoinTarget = 0;
  758.                                 Target.GuildJoinTarget = 0;
  759.                                 Game.ConquerStructures.Society.Guild g;
  760.                                 if (Kernel.Guilds.TryGetValue(Target.Player.GuildID, out g))
  761.                                 {
  762.                                     if (Target.AsMember.Rank != Game.Enums.GuildMemberRank.Member)
  763.                                     {
  764.                                         if (client.Player.GuildID == 0)
  765.                                         {
  766.                                             if (client.Union != null)
  767.                                             {
  768.                                                 var Union = Kernel.Unions[client.UnionIDX];
  769.                                                 Union.RemoveMember(client);
  770.                                             }
  771.                                             g.AddMember(client);
  772.                                         }
  773.                                     }
  774.                                 }
  775.                             }
  776.                             else
  777.                             {
  778.                                 Game.ConquerStructures.Society.Guild tG;
  779.                                 if (Kernel.Guilds.TryGetValue(Target.Player.GuildID, out tG))
  780.                                 {
  781.                                     if (Target.AsMember.Rank != Game.Enums.GuildMemberRank.Member)
  782.                                     {
  783.                                         if (MsgSynRecruitAdvertisingList.PassJoinRequirements(client, tG))
  784.                                         {
  785.                                             client.Player.GuildRequest = Time32.Now;
  786.                                             command.dwParam = client.Player.UID;
  787.                                             MsgRelation Relation = new MsgRelation();
  788.                                             Relation.Level = (uint)client.Player.Level;
  789.                                             Relation.BattlePower = (uint)client.Player.BattlePower;
  790.                                             Relation.Receiver = Target.Player.UID;
  791.                                             Relation.Requester = client.Player.UID;
  792.                                             Relation.Spouse = Target.Player.Name == client.Player.Spouse;
  793.                                             Relation.Friend = client.Friends.ContainsKey(Target.Player.UID);
  794.                                             Relation.TradePartner = client.Partners.ContainsKey(Target.Player.UID);
  795.                                             if (client.Mentor != null)
  796.                                                 Relation.Mentor = client.Mentor.ID == Target.Player.UID;
  797.                                             Relation.Apprentice = client.Apprentices.ContainsKey(Target.Player.UID);
  798.                                             if (client.Team != null)
  799.                                                 Relation.Teammate = client.Team.IsTeammate(Target.Player.UID);
  800.                                             if (client.Guild != null)
  801.                                                 Relation.GuildMember = client.Guild.Members.ContainsKey(Target.Player.UID);
  802.                                             Relation.Enemy = client.Enemy.ContainsKey(Target.Player.UID);
  803.                                             Target.Send(Relation.ToArray());
  804.                                             Target.Send(command);
  805.                                         }
  806.                                     }
  807.                                 }
  808.                             }
  809.                         }
  810.                         break;
  811.                     }
  812.                 case Mode.InviteRequest:
  813.                     {
  814.                         Client.GameState Target;
  815.                         if (Kernel.GamePool.TryGetValue(command.dwParam, out Target))
  816.                         {
  817.                             if (client.Guild.BlackList.Contains(Target.Player.UID))
  818.                             {
  819.                                 command.Action = Mode.SmsBlackList;
  820.                                 client.Send(command);
  821.                                 return;
  822.                             }
  823.                             client.GuildJoinTarget = Target.Player.UID;
  824.                             if (client.GuildJoinTarget == Target.Player.UID && Target.GuildJoinTarget == client.Player.UID)
  825.                             {
  826.                                 client.GuildJoinTarget = 0;
  827.                                 Target.GuildJoinTarget = 0;
  828.                                 Game.ConquerStructures.Society.Guild g;
  829.                                 if (Kernel.Guilds.TryGetValue(client.Player.GuildID, out g))
  830.                                 {
  831.                                     if (client.AsMember.Rank != Game.Enums.GuildMemberRank.Member)
  832.                                     {
  833.                                         if (Target.Union != null)
  834.                                         {
  835.                                             var Union = Kernel.Unions[Target.Union.ID];
  836.                                             Union.RemoveMember(Target);
  837.                                         }
  838.                                         g.AddMember(Target);
  839.                                     }
  840.                                 }
  841.                             }
  842.                             else
  843.                             {
  844.                                 if (client.AsMember.Rank != Game.Enums.GuildMemberRank.Member)
  845.                                 {
  846.                                     client.Player.GuildRequest = Time32.Now;
  847.                                     command.dwParam = client.Player.UID;
  848.                                     MsgRelation Relation = new MsgRelation();
  849.                                     Relation.Level = (uint)client.Player.Level;
  850.                                     Relation.BattlePower = (uint)client.Player.BattlePower;
  851.                                     Relation.Receiver = Target.Player.UID;
  852.                                     Relation.Requester = client.Player.UID;
  853.                                     Relation.Spouse = Target.Player.Name == client.Player.Spouse;
  854.                                     Relation.Friend = client.Friends.ContainsKey(Target.Player.UID);
  855.                                     Relation.TradePartner = client.Partners.ContainsKey(Target.Player.UID);
  856.                                     if (client.Mentor != null)
  857.                                         Relation.Mentor = client.Mentor.ID == Target.Player.UID;
  858.                                     Relation.Apprentice = client.Apprentices.ContainsKey(Target.Player.UID);
  859.                                     if (client.Team != null)
  860.                                         Relation.Teammate = client.Team.IsTeammate(Target.Player.UID);
  861.                                     if (client.Guild != null)
  862.                                         Relation.GuildMember = client.Guild.Members.ContainsKey(Target.Player.UID);
  863.                                     Relation.Enemy = client.Enemy.ContainsKey(Target.Player.UID);
  864.                                     Target.Send(Relation.ToArray());
  865.                                     Target.Send(command);
  866.                                 }
  867.                             }
  868.                         }
  869.                         break;
  870.                     }
  871.                 case Mode.Unknown:
  872.                     {
  873.                         client.Send(command);
  874.                         break;
  875.                     }
  876.                 case Mode.MakeBlackList:
  877.                     {
  878.                         if (client.Guild != null)
  879.                         {
  880.                             uint UID = command.dwParam;
  881.                             if (Kernel.GamePool.ContainsKey(UID))
  882.                             {
  883.                                 var c = Kernel.GamePool[UID];
  884.                                 if (!client.Guild.BlackList.Contains(UID))
  885.                                     client.Guild.BlackList.Add(UID);
  886.                                 c.Send(command);
  887.                             }
  888.                             client.Send("Tha target is addad to the Guild Blacklist.");
  889.                         }
  890.                         break;
  891.                     }
  892.                 case Mode.RemoveBlackList:
  893.                     {
  894.                         if (client.Guild != null)
  895.                         {
  896.                             uint UID = command.dwParam;
  897.                             if (client.Guild.BlackList.Contains(UID))
  898.                                 client.Guild.BlackList.Remove(UID);
  899.                             client.Send(command);
  900.                         }
  901.                         client.Send("Removed from blacklist successfully. The target is recruitable, now.");
  902.                         break;
  903.                     }
  904.                 case Mode.Quit:
  905.                     {
  906.                         if (client.Guild != null)
  907.                         {
  908.                             if (client.AsMember.Rank != Enums.GuildMemberRank.GuildLeader)
  909.                             {
  910.                                 client.Guild.ExpelMember(client.Player.Name, true);
  911.                             }
  912.                         }
  913.                         break;
  914.                     }
  915.                 case Mode.Diseharge:
  916.                     {
  917.                         string name = Encoding.Default.GetString(Packet, 26, Packet[25]);
  918.                         if (client.Guild != null)
  919.                         {
  920.                             if (client.AsMember.Rank == Enums.GuildMemberRank.GuildLeader)
  921.                             {
  922.                                 var member = client.Guild.GetMemberByName(name);
  923.                                 client.Guild.SendGuildMessage(new MsgTalk((member.Name + " was discharged from " + member.Rank + " position."), System.Drawing.Color.Yellow, MsgTalk.Guild));
  924.                                 if (member.ID != client.Player.UID)
  925.                                 {
  926.                                     member.Rank = Enums.GuildMemberRank.Member;
  927.                                     if (member.IsOnline)
  928.                                     {
  929.                                         client.Guild.SendGuild(member.Client);
  930.                                         member.Client.Player.GuildRank = (ushort)member.Rank;
  931.                                         member.Client.Screen.FullWipe();
  932.                                         member.Client.Screen.Reload(null);
  933.                                         member.Client.Player.GuildSharedBp = member.Guild.GetSharedBattlepower(member.Rank);
  934.                                     }
  935.                                     Database.EntityTable.UpdateData(member.ID, "GuildRank", (int)member.Rank);
  936.                                 }
  937.                             }
  938.                         }
  939.                         break;
  940.                     }
  941.                 default: Console.WriteLine("[GuildCommand] Unknown Action: " + command.Action + ""); break;
  942.             }
  943.         }
  944.     }
  945. }
RAW Paste Data