public Guild GetGuildByCharacterID(int characterID)
        {
            DbParameter characterIdParameter = _db.CreateParameter(DbNames.GETGUILDBYCHARACTERID_CHARACTERID, characterID);
            characterIdParameter.DbType = DbType.Int32;

            Guild g = null;

            _db.Open();

            DbDataReader reader = _db.ExcecuteReader(DbNames.GETGUILDBYCHARACTERID, CommandType.StoredProcedure, characterIdParameter);

            int ordinalGuild_id = reader.GetOrdinal(DbNames.GUILD_ID);
            int ordinalGuild_name = reader.GetOrdinal(DbNames.GUILD_NAME);
            int ordinalGuild_notice = reader.GetOrdinal(DbNames.GUILD_NOTICE);
            int ordinalGuild_fame = reader.GetOrdinal(DbNames.GUILD_FAME);
            int ordinalGuild_donations = reader.GetOrdinal(DbNames.GUILD_DONATIONS);

            while (reader.Read())
            {
                g = new Guild();
                g.ID = reader.GetInt32(ordinalGuild_id);
                g.Fame = reader.GetInt32(ordinalGuild_fame);
                g.Donations = reader.GetInt32(ordinalGuild_donations);
                g.Name = reader.GetString(ordinalGuild_name);
                g.Notice = reader.GetString(ordinalGuild_notice);
            }

            reader.Close();
            _db.Close();

            // get member list, get member with rank 1 as leader.
            if (g != null)
            {
                g.Members = GetGuildMembersByGuildID(g.ID);
                GuildMember master = g.Members.Single(x => x.Rank == GuildOrder.Guild_Master);
                if (master != null)
                    g.Leader = master;
            }

            return g;
        }
        public void InsertGuildMember(GuildMember gm, Guild g)
        {
            DbParameter guildIdParameter = _db.CreateParameter(DbNames.INSERTGUILDMEMBER_GUILDID, g.ID);

            DbParameter characterIdParameter = _db.CreateParameter(DbNames.INSERTGUILDMEMBER_CHARACTERID, gm.Character.CharacterId);
            characterIdParameter.DbType = DbType.Int32;

            DbParameter titleParameter = _db.CreateParameter(DbNames.INSERTGUILDMEMBER_TITLE, gm.Title);
            titleParameter.DbType = DbType.String;

            DbParameter rankParameter = _db.CreateParameter(DbNames.INSERTGUILDMEMBER_RANK, gm.Rank);
            rankParameter.DbType = DbType.Int32;

            _db.Open();
            _db.ExecuteNonQuery(DbNames.INSERTGUILDMEMBER, CommandType.StoredProcedure, guildIdParameter, characterIdParameter, titleParameter, rankParameter);
            _db.Close();
        }
        public void UpdateGuild(Guild g)
        {
            DbParameter guildIdParameter = _db.CreateParameter(DbNames.UPDATEGUILD_ID, g.ID);
            guildIdParameter.DbType = DbType.Int32;

            DbParameter noticeParameter = _db.CreateParameter(DbNames.UPDATEGUILD_NOTICE, g.Notice);
            noticeParameter.DbType = DbType.String;

            DbParameter fameParameter = _db.CreateParameter(DbNames.UPDATEGUILD_FAME, g.Fame);
            fameParameter.DbType = DbType.Int32;

            DbParameter donationsParameter = _db.CreateParameter(DbNames.UPDATEGUILD_DONATIONS, g.Donations);
            donationsParameter.DbType = DbType.Int32;

            _db.Open();
            _db.ExecuteNonQuery(DbNames.UPDATEGUILD, CommandType.StoredProcedure, guildIdParameter, noticeParameter, fameParameter, donationsParameter);
            _db.Close();
        }
        public void SendToGuild(Guild g, byte[] p)
        {
            foreach (GuildMember m in g.Members)
            {
                Client member = GetClientByCharacterID(m.Character.CharacterId);

                if (member != null)
                {
                    member.Send(p);
                }
            }
        }
        public void UpdateGuildMemberStatus(Guild g)
        {
            foreach (GuildMember m in g.Members)
            {
                Client member = GetClientByCharacterID(m.Character.CharacterId);

                if (member != null)
                {
                    m.Online = true;
                }
                else
                    m.Online = false;
            }
        }
 public static byte[] SendGuildStats(Guild g)
 {
     Packet p = new Packet(200);
     p.WriteHexString("00");
     p.WriteInt(g.ID);
     p.WriteString(g.Name);
     p.WriteInt(g.Leader.Character.CharacterId);
     p.WriteString(g.Leader.Character.Name);
     p.WriteHexString("00 00 00 00 00 00 00 00 00 00 00 00 00 14 00 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 05 00 00 00 00");
     return p.GetWrittenBuffer(PacketIds.SendGuildStats);
 }
 public static byte[] SendLeaveGuild(int ch, Guild g)
 {
     Packet p = new Packet(20);
     p.WriteHexString("00");
     p.WriteInt(g.ID);
     p.WriteHexString("00 00 00 00"); // unknown
     p.WriteInt(ch);
     return p.GetWrittenBuffer(PacketIds.SendLeaveGuild);
 }
 public static byte[] SendGuildNotice(Guild g)
 {
     Packet p = new Packet(20);
     p.WriteInt(g.Leader.Character.CharacterId);
     p.WriteHexString("09");
     p.WriteString(g.Notice);
     return p.GetWrittenBuffer(PacketIds.SendGuildNotice);
 }
 public static byte[] SendGuildMember(Guild g, GuildMember m)
 {
     Packet p = new Packet(20);
     p.WriteInt(m.Character.CharacterId);
     p.WriteInt(g.ID);
     p.WriteString(g.Name);
     p.WriteInt((int)m.Rank);
     p.WriteString(m.Title);
     p.WriteString(m.Character.Name); // owner name
     p.WriteHexString("00 00 00 00 00");
     p.WriteHexString("02 00 00 00");
     p.WriteHexString("00 00 00 00"); // more stats?
     p.WriteHexString("00 00 00 00"); // guild mark
     return p.GetWrittenBuffer(PacketIds.SendGuildOwner);
 }
 public static byte[] SendGuildCreate(Guild g)
 {
     Packet p = new Packet(20);
     p.WriteHexString("00");
     p.WriteInt(g.ID);
     p.WriteString(g.Name);
     return p.GetWrittenBuffer(PacketIds.SendGuildCreate);
 }
 public static byte[] SendGuildChangeMemberTitle(Guild g, GuildMember m, GuildMemberError e)
 {
     Packet p = new Packet(20);
     p.WriteByte((byte)e); // error proly
     if (e == GuildMemberError.Success)
     {
         p.WriteInt(g.ID);
         p.WriteInt(m.Character.CharacterId);
         p.WriteString(m.Title);
     }
     else
     {
         p.WriteInt(0);
         p.WriteInt(0);
         p.WriteString("");
     }
     return p.GetWrittenBuffer(PacketIds.SendGuildChangeMemberTitle);
 }
        public static byte[] SendGuild(Guild g)
        {
            Packet p = new Packet(200);
            p.WriteInt(g.ID);
            p.WriteString(g.Name);
            p.WriteInt(g.Members.Count);

            foreach (GuildMember c in g.Members)
            {
                p.WriteInt((int)c.Rank);
                p.WriteInt(c.Character.CharacterId);
                p.WriteString(c.Character.Name);
                p.WriteString(c.Title);
                p.WriteByte(Convert.ToByte(c.Online));
                p.WriteHexString("01");
            }

            return p.GetWrittenBuffer(PacketIds.SendGuild);
        }