Ejemplo n.º 1
0
        public void RemoveMember(GuildMember Member, MySqlConnection con = null, bool BroadcastRemove = true)
        {
            lock (ThreadLocker)
            {
                var conCreated = (con == null);
                if (conCreated)
                {
                    con = Program.DatabaseManager.GetClient().GetConnection();
                }

                //remove from db
                using (var cmd = con.CreateCommand())
                {
                    cmd.CommandText = "GuildMember_Remove";

                    cmd.Parameters.Add(new MySqlParameter("@pGuildID", ID));
                    cmd.Parameters.Add(new MySqlParameter("@pCharacterID", Member.Character.ID));

                    cmd.ExecuteNonQuery();
                }

                //remove from list
                Members.Remove(Member);

                //update character
                Member.Character.Guild = null;
                Member.Character.GuildMember = null;
                Member.Character.GuildAcademy = null;

                //broadcast member left packet
                if (BroadcastRemove)
                {
                    using (var packet = new Packet(SH29Type.GuildMemberLeft))
                    {
                        packet.WriteString(Member.Character.Character.Name);

                        Broadcast(packet);
                    }

                    //send packet to zones that a member has been removed
                    using (var packet = new InterPacket(InterHeader.ZONE_GuildMemberRemove))
                    {
                        packet.WriteInt(ID);
                        packet.WriteInt(Member.Character.ID);

                        ZoneManager.Instance.Broadcast(packet);
                    }
                }

                //clean up
                Member.Dispose();

                if (conCreated)
                {
                    con.Dispose();
                }
            }
        }
Ejemplo n.º 2
0
        public void RemoveMember(GuildMember Member, MySqlConnection con = null, bool BroadcastRemove = true)
        {
            lock (ThreadLocker)
            {
                var conCreated = (con == null);
                if (conCreated)
                {
                    con = Program.DatabaseManager.GetClient().GetConnection();
                }


                //remove from db
                using (var cmd = con.CreateCommand())
                {
                    cmd.CommandText = "GuildMember_Remove";

                    cmd.Parameters.Add(new MySqlParameter("@pGuildID", ID));
                    cmd.Parameters.Add(new MySqlParameter("@pCharacterID", Member.Character.ID));



                    cmd.ExecuteNonQuery();
                }


                //remove from list
                Members.Remove(Member);

                //update character
                Member.Character.Guild        = null;
                Member.Character.GuildMember  = null;
                Member.Character.GuildAcademy = null;


                //broadcast member left packet
                if (BroadcastRemove)
                {
                    using (var packet = new Packet(SH29Type.GuildMemberLeft))
                    {
                        packet.WriteString(Member.Character.Character.Name);



                        Broadcast(packet);
                    }

                    //send packet to zones that a member has been removed
                    using (var packet = new InterPacket(InterHeader.ZONE_GuildMemberRemove))
                    {
                        packet.WriteInt(ID);
                        packet.WriteInt(Member.Character.ID);


                        ZoneManager.Instance.Broadcast(packet);
                    }
                }


                //clean up
                Member.Dispose();



                if (conCreated)
                {
                    con.Dispose();
                }
            }
        }