public void LoadGuildMembers()
        {
            try
            {
                LoadGuildMemberIds(Character.Network.Guild.Guildid, ref Character.Network.Guild.Members);

                foreach (int m in Character.Network.Guild.Members)
                {
                    Global.guild_player PlayerGuild = new Global.guild_player();
                    PlayerGuild.MemberID = m;

                    DB ms = new DB("SELECT * FROM character WHERE id='" + m + "'");
                    using (System.ObjData.Manager.SqlClient.SqlDataReader reader = ms.Read())
                    {
                        while (reader.Read())
                        {
                            PlayerGuild.Model = reader.GetInt32(3);
                            PlayerGuild.Xsector = reader.GetByte(16);
                            PlayerGuild.Ysector = reader.GetByte(17);
                            PlayerGuild.Level = reader.GetByte(5);
                            PlayerGuild.Name = reader.GetString(2);
                            PlayerGuild.Online = (reader.GetInt32(47) == 1);
                            if (PlayerGuild.Online)
                            {
                                Systems sys = GetPlayerMainid(m);
                                if (sys != null)
                                    Character.Network.Guild.MembersClient.Add(sys.client);
                            }
                        }
                    }
                    ms.Close();

                    DB ms2 = new DB("SELECT * FROM guild_members WHERE guild_member_id='" + m + "'");
                    using (System.ObjData.Manager.SqlClient.SqlDataReader reader2 = ms2.Read())
                    {
                        while (reader2.Read())
                        {
                            PlayerGuild.joinRight = (reader2.GetByte(7) == 1);
                            PlayerGuild.withdrawRight = (reader2.GetByte(8) == 1);
                            PlayerGuild.unionRight = (reader2.GetByte(9) == 1);
                            PlayerGuild.guildstorageRight = (reader2.GetByte(10) == 1);
                            PlayerGuild.noticeeditRight = (reader2.GetByte(11) == 1);
                            PlayerGuild.FWrank = reader2.GetByte(6);
                            PlayerGuild.DonateGP = reader2.GetInt32(4);
                            PlayerGuild.Rank = reader2.GetByte(3);
                        }
                    }

                    ms2.Close();
                    Character.Network.Guild.MembersInfo.Add(PlayerGuild);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
        /////////////////////////////////////////////////////////////////////////
        //Guild Permissions
        /////////////////////////////////////////////////////////////////////////
        void GuildPermissions()
        {
            try
            {
                PacketReader Reader = new PacketReader(PacketInformation.buffer);
                Reader.Byte();
                int memberid = Reader.Int32();

                byte permissions = (byte)Reader.Int32();

                char[] bits = new char[8];

                for (int i = 0; i < 8; ++i) bits[i] = (char)0;
                bits = Convert.ToString(permissions, 2).ToCharArray();

                Reader.Close();

                // set the amount to the target player :)
                int targetindex = Character.Network.Guild.MembersInfo.FindIndex(i => i.MemberID == memberid);
                if (Character.Network.Guild.MembersInfo[targetindex].Online)
                {
                    Systems member = GetPlayerMainid(memberid);

                    // so here we can set chars right
                    member.Character.Network.Guild.joinRight = bits[4] == '1' ? true : false;
                    member.Character.Network.Guild.withdrawRight = bits[3] == '1' ? true : false;
                    member.Character.Network.Guild.unionRight = bits[2] == '1' ? true : false;
                    member.Character.Network.Guild.guildstorageRight = bits[0] == '1' ? true : false;
                    member.Character.Network.Guild.noticeeditRight = bits[1] == '1' ? true : false;
                }

                // set new amount to every guild members guild class
                foreach (int m in Character.Network.Guild.Members)
                {
                    int index = Character.Network.Guild.MembersInfo.FindIndex(i => i.MemberID == m);
                    if (Character.Network.Guild.MembersInfo[index].Online)
                    {
                        Systems sys = Helpers.GetInformation.GetPlayerMainid(m);

                        // here comes the messy way
                        Global.guild_player mygp = new Global.guild_player();
                        int myindex = 0;
                        foreach (Global.guild_player gp in sys.Character.Network.Guild.MembersInfo)
                        {
                            if (gp.MemberID == memberid)
                            {
                                mygp = gp; //
                                mygp.joinRight = bits[4] == '1' ? true : false;
                                mygp.withdrawRight = bits[3] == '1' ? true : false;
                                mygp.unionRight = bits[2] == '1' ? true : false;
                                mygp.guildstorageRight = bits[0] == '1' ? true : false;
                                mygp.noticeeditRight = bits[1] == '1' ? true : false;
                                break;
                            }
                            myindex++;
                        }
                        sys.Character.Network.Guild.MembersInfo[myindex] = mygp;
                    }
                }

                DB.query("UPDATE guild_members SET guild_perm_join='" + bits[4] + "',guild_perm_withdraw='" + bits[3] + "',guild_perm_union='" + bits[2] + "',guild_perm_storage='" + bits[0] + "',guild_perm_notice='" + bits[1] + "' WHERE guild_member_id='" + memberid + "'");
                Character.Network.Guild.Send(Packet.GuildUpdate(Character, 4, 0, permissions, 0));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Guild permission error: {0}", ex);
                Log.Exception(ex);
            }
        }