Example #1
0
 public void RemovePlayer(Database.Player pl)
 {
     mapa.RemoveEntityAtTile(pl.MapPosition, pl.PlayerPID, true);
     //players.Remove(pl.UniqueID);
     Database.Player plOut;
     players.TryRemove(pl.PlayerPID, out plOut);
 }
Example #2
0
        public void RemovePlayer(int userID, int playerID)
        {
            if (userID > 0)
            {
                Database.Player tmpPlayer = null;
                //players.TryGetValue(playerID, out tmpPlayer);
                try
                {
                    //players.Remove(playerID);
                    players.TryRemove(playerID, out tmpPlayer);
                }
                catch (Exception e)
                {
                    Output.WriteLine(ConsoleColor.Red, "Error removing player : " + e.ToString());
                    return;
                }
                Database.Player tp;
                if (tmpPlayer != null)
                {
                    bool isOK = mapa.RemoveEntityAtTile(tmpPlayer.MapPosition, tmpPlayer.PlayerPID, true);
                    if (!isOK)
                    {
                        tmpPlayer.Con.Close();
                        Output.WriteLine(ConsoleColor.Red, "Player: " + tmpPlayer.PlayerPID.ToString() + " out of map!");
                        return;
                    }

                    /*
                     * List<int> pl = mapa.GetAllPlayersAtRange(tmpPlayer.MapPosition, DEBUG_SIGHT_RANGE);
                     * foreach (int i in pl)
                     * {
                     *  tp = null;
                     *  players.TryGetValue(i, out tp);
                     *  if (tp != null && tp.PlayerPID != playerID)
                     *  {
                     *      tp.Con.Send(new Packet.SendPacketHandlers.PlayerDespawn(playerID));//despawn player!
                     *  }
                     * }
                     */
                }
                Output.WriteLine(ConsoleColor.Magenta, "Player: " + playerID.ToString() + " removed from WORLD");
            }
            else
            {
                Output.WriteLine(ConsoleColor.Red, "Player: " + playerID.ToString() + " NO EXIST in WORLD");
            }
        }
Example #3
0
 public void DeletePlayer()
 {
     this.player = null;
 }
Example #4
0
 public void SetPlayer(Database.Player player)
 {
     this.player = player;
 }
Example #5
0
        public void MovePlayerOnMap(Database.Player pl, Map.Nod from, Map.Nod to)
        {
            //Output.WriteLine("World::MovePlayerOnMap From [" + from.X.ToString() + "," + from.Y.ToString() + "] To [" + to.X.ToString() + "," + to.Y.ToString() + "]");
            mapa.RemoveEntityAtTile(from, pl.PlayerPID, true);
            if (!mapa.AddEntityAtTile(to, pl.PlayerPID, true))
            {
                pl.Con.Close();
                return;
            }

            /*
             * else
             * {
             *  //send info to all players in sight range about new player spawn
             *  List<int> playersList = mapa.GetAllPlayersAtRange(to, DEBUG_SIGHT_RANGE);
             *  Database.Player p;
             *  foreach (int i in playersList)
             *  {
             *      if (!pl.ContainsPlayer(i))//this is new player in range so send spawn and add to known list
             *      {
             *          p = null;
             *          players.TryGetValue(i, out p);
             *          if (p != null && p.PlayerPID != pl.PlayerPID)
             *          {
             *              pl.AddPlayer(i);
             *              p.Con.Send(new Packet.SendPacketHandlers.PlayerSpawn(pl.Con));//newly added player data!
             *              //if (pl.moving)//player is moving so send this info to new player in range
             *              //{
             *              //    p.Con.Send(new Packet.SendPacketHandlers.MoveStart(pl.PlayerPID, pl.newX, pl.newY));//newly added player data!
             *              //}
             *          }
             *      }
             *  }
             *  List<int> oldPlayersList = pl.KnownPlayers();
             *  foreach (int i in oldPlayersList)
             *  {
             *      if (!playersList.Contains(i))//this player isn't in range so send despawn
             *      {
             *          p = null;
             *          players.TryGetValue(i, out p);
             *          if (p != null && p.PlayerPID != pl.PlayerPID)
             *          {
             *              pl.RemovePlayer(i);
             *              pl.Con.Send(new Packet.SendPacketHandlers.PlayerDespawn(i));//newly added player data!
             *          }
             *      }
             *  }
             *  //check for new mobs in range
             *  List<int> mobList = mapa.GetAllMobsAtRange(to, DEBUG_SIGHT_RANGE);
             *  Database.Mob m;
             *  foreach (int i in mobList)
             *  {
             *      if (!pl.ContainsMob(i))//this is new mob in range so send spawn and add to known list
             *      {
             *          m = null;
             *          monsters.TryGetValue(i, out m);
             *          if (m != null)
             *          {
             *              pl.AddMob(i);
             *              m.AddPlayer(pl.PlayerPID);
             *              pl.Con.Send(new Packet.SendPacketHandlers.MobSpawn(m));//newly added player data!
             *              //if (m.moving)//mob is moving so send this info to new player in range
             *              //{
             *              //    pl.Con.Send(new Packet.SendPacketHandlers.MobMoveStart(m.InternalID, m.newX, m.newY));//newly added player data!
             *              //}
             *          }
             *      }
             *  }
             *  List<int> oldMobsList = pl.KnownMobs();
             *  foreach (int i in oldMobsList)
             *  {
             *      if (!mobList.Contains(i))//this mob isn't in range so send despawn
             *      {
             *          m = null;
             *          monsters.TryGetValue(i, out m);
             *          if (m != null)
             *          {
             *              pl.RemoveMob(i);
             *              pl.Con.Send(new Packet.SendPacketHandlers.MobDespawn(i));//newly added player data!
             *          }
             *      }
             *  }
             * }
             */
        }
Example #6
0
 public void BroadcastPacket(Database.Player pl, Packet.SendPacketHandlers.Packet packet)
 {
     BroadcastPacket(pl.PosX, pl.PosY, World.DEBUG_SIGHT_RANGE, packet);
 }
Example #7
0
        public bool AddPlayer(Database.Player player)
        {
            Output.WriteLine("New player at position: " + player.PosX.ToString() + "," + player.PosY.ToString());
            Map.Nod nod = mapa.GetTileAddress((uint)player.PosX, (uint)player.PosY);
            player.MapPosition    = nod;
            player.OldMapPosition = new Map.Nod(nod.X, nod.Y);
            if (nod != null)
            {
                Output.WriteLine("Adding player at position: " + nod.X.ToString() + "," + nod.Y.ToString());
            }
            else
            {
                Output.WriteLine(ConsoleColor.Red, "Adding player at position: GetTileAddress return NULL !");
                player.Con.Close();
                return(false);
            }
            //Database.Player pl = new Database.Player(con, nod);
            try
            {
                //players.Add(pl.UniqueID, pl);
                players.TryAdd(player.PlayerPID, player);
            }
            catch (ArgumentException e)
            {
                Database.Player tp = null;
                //players.TryGetValue(pl.UniqueID, out tp);
                //players.Remove(pl.UniqueID);
                players.TryRemove(player.PlayerPID, out tp);
                if (tp != null)
                {
                    tp.Con.SendAsync(new Packet.SendPacketHandlers.LoginError(Packet.SendPacketHandlers.LOGIN_ERROR.CURRENTLY_LOGGED));
                    tp.Con.Close();
                }
                AddPlayer(player);
                return(true);
            }
            //Output.WriteLine("Adding player at position: " + nod.X.ToString() + "," + nod.Y.ToString());
            if (!mapa.AddEntityAtTile(player.MapPosition, player.PlayerPID, true))
            {
                player.Con.Close();
                return(false);
            }

            /*
             * else
             * {
             *  //send info to all players in sight range about new player spawn
             *  List<int> playersList = mapa.GetAllPlayersAtRange(player.MapPosition, DEBUG_SIGHT_RANGE);
             *  Database.Player p;
             *  foreach (int i in playersList)
             *  {
             *      p = null;
             *      players.TryGetValue(i, out p);
             *      if (p != null && p.PlayerPID != player.PlayerPID)
             *      {
             *          player.AddPlayer(i);
             *          p.Con.Send(new Packet.SendPacketHandlers.PlayerSpawn(player.Con));//newly added player data!
             *      }
             *  }
             *  //inform all mobs in sight range about new player spawn
             *  List<int> mobsList = mapa.GetAllMobsAtRange(player.MapPosition, DEBUG_SIGHT_RANGE);
             *  Database.Mob m;
             *  foreach (int i in mobsList)
             *  {
             *      m = null;
             *      monsters.TryGetValue(i, out m);
             *      if (m != null)
             *      {
             *          m.AddPlayer(player.PlayerPID);
             *      }
             *  }
             * }
             */
            return(true);
        }