public void JoinGuild(RealmTime t, JoinGuildPacket pkt)
        {
            Database    db      = new Database();
            GuildStruct gStruct = db.GetGuild(pkt.GuildName);

            if (client.Player.Invited == false)
            {
                SendInfo("You need to be invited to join a guild!");
            }
            if (gStruct != null)
            {
                Guild g = db.ChangeGuild(client.Account, gStruct.Id, 0, false);
                if (g != null)
                {
                    client.Account.Guild = g;
                    Guild     = g.Name;
                    GuildRank = g.Rank;
                    UpdateCount++;
                    foreach (var p in RealmManager.GuildMembersOf(g.Name))
                    {
                        p.Client.SendPacket(new TextPacket()
                        {
                            BubbleTime = 0,
                            Stars      = -1,
                            //Name = "@" + psr.Account.Name + " has joined the guild!"
                            Name      = "",
                            Recipient = "*Guild*",
                            Text      = client.Account.Name + " has joined the guild!"
                        });
                    }
                }
            }
        }
        public GuildStruct GetGuild(string name)
        {
            var cmd = CreateQuery();

            cmd.CommandText = "SELECT * FROM guilds WHERE name=@n";
            cmd.Parameters.AddWithValue("@n", name);
            GuildStruct guild = null;

            using (var rdr = cmd.ExecuteReader())
            {
                if (!rdr.HasRows)
                {
                    return(null);
                }
                rdr.Read();
                guild = new GuildStruct()
                {
                    Id             = rdr.GetInt32("id"),
                    Name           = rdr.GetString("name"),
                    Level          = rdr.GetInt32("level"),
                    Members        = rdr.GetString("members").Split(','),
                    GuildFame      = rdr.GetInt32("guildFame"),
                    TotalGuildFame = rdr.GetInt32("totalGuildFame")
                };
            }
            return(guild);
        }
示例#3
0
        public GuildStruct GetGuild(int guildid)
        {
            MySqlCommand cmd = CreateQuery();

            cmd.CommandText = "SELECT * FROM guilds WHERE id=@gid";
            cmd.Parameters.AddWithValue("@gid", guildid);
            GuildStruct guild;

            using (MySqlDataReader rdr = cmd.ExecuteReader())
            {
                if (!rdr.HasRows)
                {
                    return(null);
                }
                rdr.Read();
                guild = new GuildStruct
                {
                    Id             = rdr.GetInt32("id"),
                    Name           = rdr.GetString("name"),
                    Level          = rdr.GetInt32("level"),
                    Members        = rdr.GetString("members").Split(','),
                    GuildFame      = rdr.GetInt32("guildFame"),
                    TotalGuildFame = rdr.GetInt32("totalGuildFame")
                };
            }
            return(guild);
        }
        public void UpdateGuild(int id)
        {
            GuildStruct guild = GetGuild(id);

            if (guild == null)
            {
                throw new Exception("Guild not found!");
            }
            var cmd = CreateQuery();

            cmd.CommandText = "SELECT * FROM accounts WHERE guild=@gid";
            cmd.Parameters.AddWithValue("@gid", id);
            string members = "";

            using (var rdr = cmd.ExecuteReader())
            {
                while (rdr.Read())
                {
                    members = members + rdr.GetInt32("id").ToString() + ",";
                }
            }

            if (members != "")
            {
                cmd             = CreateQuery();
                cmd.CommandText = "UPDATE guilds SET members=@mem WHERE id=@gid";
                cmd.Parameters.AddWithValue("@gid", id);
                cmd.Parameters.AddWithValue("@mem", members);
                if (cmd.ExecuteNonQuery() == 0)
                {
                    throw new Exception("Failed to edit members column!");
                }
            }
            else
            {
                cmd             = CreateQuery();
                cmd.CommandText = "DELETE FROM guilds WHERE id=@gid";
                cmd.Parameters.AddWithValue("@gid", id);
                if (cmd.ExecuteNonQuery() == 0)
                {
                    throw new Exception("Failed to delete empty guild!");
                }
            }
        }
 public GuildStruct GetGuild(string name)
 {
     MySqlCommand cmd = CreateQuery();
     cmd.CommandText = "SELECT * FROM guilds WHERE name=@n";
     cmd.Parameters.AddWithValue("@n", name);
     GuildStruct guild;
     using (MySqlDataReader rdr = cmd.ExecuteReader())
     {
         if (!rdr.HasRows) return null;
         rdr.Read();
         guild = new GuildStruct
         {
             Id = rdr.GetInt32("id"),
             Name = rdr.GetString("name"),
             Level = rdr.GetInt32("level"),
             Members = rdr.GetString("members").Split(','),
             GuildFame = rdr.GetInt32("guildFame"),
             TotalGuildFame = rdr.GetInt32("totalGuildFame")
         };
     }
     return guild;
 }
示例#6
0
 private void Handle(Player player, JoinGuildPacket packet)
 {
     player.Manager.Data.AddDatabaseOperation(db =>
     {
         GuildStruct gStruct = db.GetGuild(packet.GuildName);
         if (player.Client.Player.Invited == false)
         {
             player.SendInfo("You need to be invited to join a guild!");
         }
         if (gStruct != null)
         {
             Guild g = db.ChangeGuild(player.Client.Account, gStruct.Id, 0, 0, false);
             if (g != null)
             {
                 player.Client.Account.Guild = g;
                 player.Guild     = g.Name;
                 player.GuildRank = g.Rank;
                 player.UpdateCount++;
                 foreach (Player p in player.Manager.GuildMembersOf(g.Name))
                 {
                     p.Client.SendPacket(new TextPacket
                     {
                         BubbleTime = 0,
                         Stars      = -1,
                         Name       = "",
                         Recipient  = "*Guild*",
                         Text       = player.Client.Account.Name + " has joined the guild!"
                     });
                 }
             }
         }
         else
         {
             player.SendInfo("Guild doesn't exist!");
         }
     });
 }
        public string HTTPGetGuildMembers(int num, int offset, Account acc)
        {
            GuildStruct guild = GetGuild(acc.Guild.Id);
            string      ret   = "<Guild name=\"" + guild.Name + "\" id=\"" + guild.Id + "\"><TotalFame>" + guild.TotalGuildFame + "</TotalFame><CurrentFame>" + guild.GuildFame + "</CurrentFame><HallType>Guild Hall " + guild.Level.ToString() + "</HallType>";
            var         cmd   = CreateQuery();

            cmd.CommandText = "SELECT * FROM accounts WHERE guild = @gid";
            cmd.Parameters.AddWithValue("@gid", guild.Id);
            List <string> Founders  = new List <string>();
            List <string> Leaders   = new List <string>();
            List <string> Officers  = new List <string>();
            List <string> Members   = new List <string>();
            List <string> Initiates = new List <string>();

            using (var rdr = cmd.ExecuteReader())
            {
                int countLeft = num;
                int offsleft  = offset;
                while (rdr.Read())
                {
                    if (offsleft == 0)
                    {
                        if (countLeft != 0)
                        {
                            string add = "<Member>";

                            add += "<Name>" + rdr.GetString("name") + "</Name>";
                            add += "<Rank>" + rdr.GetInt32("guildRank").ToString() + "</Rank>";
                            add += "<Fame>0</Fame>";

                            add += "</Member>";

                            switch (rdr.GetInt32("guildRank"))
                            {
                            case 40:
                                Founders.Add(add); break;

                            case 30:
                                Leaders.Add(add); break;

                            case 20:
                                Officers.Add(add); break;

                            case 10:
                                Members.Add(add); break;

                            case 0:
                                Initiates.Add(add); break;
                            }
                        }
                        else
                        {
                            break;
                        }
                    }
                    else
                    {
                        offsleft--;
                    }
                    countLeft--;
                }
            }
            Members.AddRange(Initiates);
            Officers.AddRange(Members);
            Leaders.AddRange(Officers);
            Founders.AddRange(Leaders);
            foreach (string i in Founders)
            {
                ret += i;
            }
            ret += "</Guild>";
            return(ret);
        }
示例#8
0
 public GuildStruct GetGuild(int guildid)
 {
     var cmd = CreateQuery();
     cmd.CommandText = "SELECT * FROM guilds WHERE id=@gid";
     cmd.Parameters.AddWithValue("@gid", guildid);
     GuildStruct guild = null;
     using (var rdr = cmd.ExecuteReader())
     {
         if (!rdr.HasRows) return null;
         rdr.Read();
         guild = new GuildStruct()
         {
             Id = rdr.GetInt32("id"),
             Name = rdr.GetString("name"),
             Level = rdr.GetInt32("level"),
             Members = rdr.GetString("members").Split(','),
             GuildFame = rdr.GetInt32("guildFame"),
             TotalGuildFame = rdr.GetInt32("totalGuildFame")
         };
     }
     return guild;
 }
示例#9
0
        public string HttpGetGuildMembers(int num, int offset, Account acc)
        {
            GuildStruct guild = GetGuild(acc.Guild.Id);
            string      ret   = "<Guild name=\"" + guild.Name + "\" id=\"" + guild.Id + "\"><TotalFame>" + guild.TotalGuildFame +
                                "</TotalFame><CurrentFame>" + guild.GuildFame + "</CurrentFame><HallType>Guild Hall " +
                                guild.Level + "</HallType>";
            MySqlCommand cmd = CreateQuery();

            cmd.CommandText = "SELECT * FROM accounts WHERE guild = @gid";
            cmd.Parameters.AddWithValue("@gid", guild.Id);
            var founders  = new List <string>();
            var leaders   = new List <string>();
            var officers  = new List <string>();
            var members   = new List <string>();
            var initiates = new List <string>();

            using (MySqlDataReader rdr = cmd.ExecuteReader())
            {
                int countLeft = num;
                int offsleft  = offset;
                while (rdr.Read())
                {
                    if (offsleft == 0)
                    {
                        if (countLeft != 0)
                        {
                            string add = "<Member>";

                            add += string.Format("<Name>{0}</Name>", rdr.GetString("name"));
                            add += string.Format("<Rank>{0}</Rank>", rdr.GetInt32("guildRank"));
                            add += string.Format("<Fame>{0}</Fame>", rdr.GetInt32("guildFame"));

                            add += "</Member>";

                            switch (rdr.GetInt32("guildRank"))
                            {
                            case 40:
                                founders.Add(add);
                                break;

                            case 30:
                                leaders.Add(add);
                                break;

                            case 20:
                                officers.Add(add);
                                break;

                            case 10:
                                members.Add(add);
                                break;

                            case 0:
                                initiates.Add(add);
                                break;
                            }
                        }
                        else
                        {
                            break;
                        }
                    }
                    else
                    {
                        offsleft--;
                    }
                    countLeft--;
                }
            }
            members.AddRange(initiates);
            officers.AddRange(members);
            leaders.AddRange(officers);
            founders.AddRange(leaders);
            ret  = founders.Aggregate(ret, (current, i) => current + i);
            ret += "</Guild>";
            return(ret);
        }