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); }
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"); } }
public void DeletePlayer() { this.player = null; }
public void SetPlayer(Database.Player player) { this.player = player; }
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! * } * } * } * } */ }
public void BroadcastPacket(Database.Player pl, Packet.SendPacketHandlers.Packet packet) { BroadcastPacket(pl.PosX, pl.PosY, World.DEBUG_SIGHT_RANGE, packet); }
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); }