public bool TryJoin(Player player, GlobalPlayerData iPlayerData, World world, Player i)
 {
     if (world.Id == -60)
     {
         player.SendInfo("Sorry but that user is in a restricted area!");
         return(true);
     }
     if (world.Name == "Admin Room")
     {
         if (!iPlayerData.Solo || player.Client.Account.Rank > 3)
         {
             if (!iPlayerData.UsingGroup)
             {
                 player.Client.Reconnect(new ReconnectPacket
                 {
                     Host   = "",
                     Port   = 2050,
                     GameId = world.Id,
                     Name   = world.Name,
                     Key    = Empty <byte> .Array,
                 });
                 return(true);
             }
             else
             {
                 foreach (var o in iPlayerData.JGroup)
                 {
                     if (o.Value == player.Client.Account.Name.ToLower())
                     {
                         player.Client.Reconnect(new ReconnectPacket
                         {
                             Host   = "",
                             Port   = 2050,
                             GameId = world.Id,
                             Name   = world.Name,
                             Key    = Empty <byte> .Array,
                         });
                         return(true);
                     }
                 }
                 player.SendInfo("Not in " + i.Client.Account.Name + "'s group!");
                 return(true);
             }
         }
         else
         {
             player.SendInfo("Player is going solo!");
             return(true);
         }
     }
     else
     {
         player.SendInfo("Sorry but that user is in a restricted area!");
         return(true);
     }
 }
        public void Execute(Player player, string[] args)
        {
            GlobalPlayerData PlayerData = PlayerDataList.GetData(player.Client.Account.Name);

            if (PlayerData.Solo)
            {
                PlayerData.Solo = false;
                player.SendInfo("Solo disabled! People can now join you!");
            }
            else
            {
                PlayerData.Solo = true;
                player.SendInfo("Solo enabled! People can no longer join you!");
            }
        }
 public bool TryJoin(Player player, GlobalPlayerData iPlayerData, World world, Player i)
 {
     if (!iPlayerData.Solo)
     {
         if (!iPlayerData.UsingGroup)
         {
             player.Client.Reconnect(new ReconnectPacket()
             {
                 Host   = "",
                 Port   = 2050,
                 GameId = world.Id,
                 Name   = world.Name,
                 Key    = Empty <byte> .Array,
             });
             return(true);
         }
         else
         {
             foreach (var o in iPlayerData.JGroup)
             {
                 if (o.Value == player.Client.Account.Name.ToLower())
                 {
                     player.Client.Reconnect(new ReconnectPacket()
                     {
                         Host   = "",
                         Port   = 2050,
                         GameId = world.Id,
                         Name   = world.Name,
                         Key    = Empty <byte> .Array,
                     });
                     return(true);
                 }
             }
             player.SendInfo("Not in " + i.Client.Account.Name + "'s group!");
             return(true);
         }
     }
     else
     {
         player.SendInfo("Player is going solo!");
         return(true);
     }
 }
 public void Execute(Player player, string[] args)
 {
     try
     {
         GlobalPlayerData PlayerData = PlayerDataList.GetData(player.Client.Account.Name);
         if (args.Length > 0)
         {
             string subcommand = args[0];
             if (subcommand == "list")
             {
                 string glist = "Players in your group: ";
                 foreach (var i in PlayerData.JGroup)
                 {
                     if (glist != "Players in your group: ")
                     {
                         glist = glist + ", " + i;
                     }
                     else
                     {
                         glist = glist + i;
                     }
                 }
                 player.SendInfo(glist);
             }
             else if (subcommand == "add" && args.Length > 1)
             {
                 foreach (var i in PlayerData.JGroup)
                 {
                     if (i.Value == args[1].ToLower())
                     {
                         player.SendInfo("Player already added!");
                         return;
                     }
                 }
                 PlayerData.JGroup.TryAdd(PlayerData.JGroup.Count, args[1].ToLower());
                 player.SendInfo("Added " + args[1] + "!");
             }
             else if (subcommand == "del" && args.Length > 1)
             {
                 int remc = 0;
                 foreach (var i in PlayerData.JGroup)
                 {
                     if (i.Value == args[1].ToLower())
                     {
                         string absolutelynothingdisregardthis;
                         player.SendInfo("Removed player " + i.Value + "!");
                         remc++;
                         PlayerData.JGroup.TryRemove(i.Key, out absolutelynothingdisregardthis);
                     }
                 }
                 if (remc < 1)
                 {
                     player.SendInfo("Player not found!");
                 }
             }
         }
         else
         {
             if (PlayerData.UsingGroup)
             {
                 PlayerData.UsingGroup = false;
                 player.SendInfo("Group-only join disabled!");
             }
             else
             {
                 PlayerData.UsingGroup = true;
                 player.SendInfo("Group-only join enabled!");
             }
         }
     }
     catch
     {
         player.SendInfo("Unexpected error in command!");
     }
 }
        public void Execute(Player player, string[] args)
        {
            string name = string.Join(" ", args.ToArray()).Trim();

            try
            {
                GlobalPlayerData PlayerData = PlayerDataList.GetData(player.Client.Account.Name);
                foreach (var w in RealmManager.Worlds)
                {
                    World world = w.Value;
                    if (w.Key != 0)
                    {
                        foreach (var i in world.Players)
                        {
                            if (i.Value.Client.Account.Name.ToLower() == name.ToLower())
                            {
                                GlobalPlayerData iPlayerData = PlayerDataList.GetData(i.Value.Client.Account.Name);
                                if (!(player.Client.Account.Rank > 2))
                                {
                                    if (world.Name != "Vault")
                                    {
                                        if (world.Name != "Guild Hall")
                                        {
                                            TryJoin(player, iPlayerData, world, i.Value); return;
                                        }
                                        else
                                        {
                                            if ((world as GuildHall).Guild == player.Guild)
                                            {
                                                TryJoin(player, iPlayerData, world, i.Value); return;
                                            }
                                            else
                                            {
                                                player.SendInfo("Player is in " + i.Value.Guild + "'s guild hall!");
                                                return;
                                            }
                                        }
                                    }
                                    else
                                    {
                                        if (world.Name == "Vault")
                                        {
                                            player.SendInfo("Player is in Vault!");
                                            return;
                                        }
                                        else if (world.Name == "Guild Hall")
                                        {
                                            player.SendInfo("Player is in Guild Hall!");
                                            return;
                                        }
                                        else
                                        {
                                            if (!iPlayerData.UsingGroup)
                                            {
                                                player.Client.Reconnect(new ReconnectPacket()
                                                {
                                                    Host   = "",
                                                    Port   = 2050,
                                                    GameId = world.Id,
                                                    Name   = i.Value.Name + "'s Vault",
                                                    Key    = Empty <byte> .Array,
                                                });
                                                return;
                                            }
                                            else
                                            {
                                                foreach (var o in iPlayerData.JGroup)
                                                {
                                                    if (o.Value == player.Client.Account.Name.ToLower())
                                                    {
                                                        player.Client.Reconnect(new ReconnectPacket()
                                                        {
                                                            Host   = "",
                                                            Port   = 2050,
                                                            GameId = world.Id,
                                                            Name   = i.Value.Name + "'s Vault",
                                                            Key    = Empty <byte> .Array,
                                                        });
                                                        return;
                                                    }
                                                }
                                                player.SendInfo("Not in " + i.Value.Client.Account.Name + "'s group!");
                                                return;
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    player.Client.Reconnect(new ReconnectPacket()
                                    {
                                        Host   = "",
                                        Port   = 2050,
                                        GameId = world.Id,
                                        Name   = i.Value.Owner.Name,
                                        Key    = Empty <byte> .Array,
                                    });
                                    return;
                                }
                            }
                        }
                    }
                }
                player.SendHelp("Use /visit <playername>");
            }
            catch
            {
                player.SendInfo("Unexpected error in command!");
            }
        }
    private void HandleIncomingGlobalPlayerPositions(PacketHeader packetHeader, Connection connection, GlobalPlayerData incomingObject)
    {
        Globals.locked = true;

        foreach (cPositionData pos in incomingObject.players.Values)
        {
            try
            {
                if (pos.SessionID != "")
                {
                    if (!Globals.GlobalPlayerPositions.ContainsKey(pos.SessionID) && pos.SessionID != Globals.SessionID)
                    {
                        Globals.GlobalPlayerPositions.Add(pos.SessionID, pos);
                        Globals.playersToSpawn.Add(pos.SessionID, pos);
                    }
                    else
                    {
                        Globals.locked = true;

                        if (pos.SessionID == Globals.SessionID)
                        {
                            Globals.PlayerPosition = pos;
                            Globals.InventoryItemsNew.Clear();

                            foreach (Data.Characters.Inventory.Inventory.ItemData item in pos.character.Inventory.Items.Values)
                            {
                                Globals.InventoryItemsNew.Add(item);
                            }
                        }

                        Globals.GlobalPlayerPositions[pos.SessionID] = pos;
                        if (!Globals.GlobalPlayerPositionsOld.ContainsKey(pos.SessionID))
                        {
                            Globals.GlobalPlayerPositionsOld.Add(pos.SessionID, pos);
                        }
                        else
                        {
                            Globals.GlobalPlayerPositionsOld[pos.SessionID] = pos;
                        }

                        Globals.locked = false;
                    }
                    //GlobalPlayerPositionsOld[pos.SessionID] = GlobalPlayerPositions[pos.SessionID];
                }
            }
            catch (Exception ex) { }
        }
        Globals.locked = false;
    }