コード例 #1
0
ファイル: Player.cs プロジェクト: lcnvdl/rotmg-server
 public void LeaveGuild(GuildRemovePacket pkt)
 {
     try
     {
         if (psr.Account.Guild == null || psr.Account.Guild.Name == "")
         {
             psr.SendPacket(new CreateGuildResultPacket()
             {
                 ResultMessage = "You don't have a guild!",
                 Success = false
             });
             return;
         }
         using (Database dbx = new Database())
         {
             var cmd = dbx.CreateQuery();
             cmd.CommandText = "UPDATE accounts SET guild='0', guildRank='-1' WHERE id=@id";
             cmd.Parameters.AddWithValue("@id", psr.Account.AccountId);
             if (cmd.ExecuteNonQuery() == 0)
             {
                 psr.SendPacket(new CreateGuildResultPacket()
                 {
                     ResultMessage = "Unable to remove guild from account data!",
                     Success = false
                 });
                 return;
             }
             else
             {
                 var members = dbx.GetGuildMembers(psr.Account);
                 if (!members.Contains(psr.Account.AccountId))
                 {
                     psr.SendPacket(new CreateGuildResultPacket()
                     {
                         ResultMessage = "Unable to find account in guild's members list!",
                         Success = false
                     });
                     return;
                 }
                 members.Remove(psr.Account.AccountId);
                 var newmembers = Utils.GetCommaSepString<int>(members.ToArray());
                 if (newmembers.Length == 0)
                 {
                     if (dbx.RemoveGuild(psr.Account) == false)
                     {
                         psr.SendPacket(new CreateGuildResultPacket()
                         {
                             ResultMessage = "Unable to delete guild!",
                             Success = false
                         });
                         return;
                     }
                 }
                 else
                 {
                     if (dbx.RemoveFromGuildMembers(psr.Account) == false)
                     {
                         psr.SendPacket(new CreateGuildResultPacket()
                         {
                             ResultMessage = "Unable to remove account from guild's members list!",
                             Success = false
                         });
                         return;
                     }
                 }
                 foreach (var i in RealmManager.Clients.Values)
                 {
                     if (i.Account.Guild.Name == psr.Account.Guild.Name && i.Account.Guild.Id == psr.Account.Guild.Id)
                     {
                         i.SendPacket(new TextPacket()
                         {
                             Name = "",
                             BubbleTime = 0,
                             Stars = -1,
                             Text = psr.Account.Name + " left the guild."
                         });
                     }
                 }
                 psr.Account.Guild = new Guild()
                     {
                         Id = 0,
                         Name = "",
                         Rank = -1
                     };
                 UpdateCount++;
                 psr.SendPacket(new CreateGuildResultPacket()
                 {
                     ResultMessage = "Successfully left the guild!",
                     Success = true
                 });
                 return;
             }
         }
     }
     catch
     {
         psr.SendPacket(new CreateGuildResultPacket()
         {
             ResultMessage = "Error leaving the guild!",
             Success = false
         });
         return;
     }
 }