public Connection(TcpClient c, Player P) { this.player = P; SendQueue = new Queue<ServerPacket>(); _client = c; ipaddr = "127.0.0.1:tty"; if(c != null) { ipaddr = c.Client.RemoteEndPoint.ToString(); } }
public void HandlePlayerSpawn(Player Player, bool self) { PlayerSpawnPacket packet = new PlayerSpawnPacket(); packet.PlayerID = Player.playerID; if(self) packet.PlayerID = 255; packet.Name = Player.name; packet.X = Player.pos.x; packet.Y = Player.pos.y; packet.Z = Player.pos.z; packet.Heading = Player.heading; packet.Pitch = Player.pitch; SendPacket(packet); }
/// <summary> /// Lookup the command cmd, and execute it using args as the arguments. sender is used to post error messages back to the user. /// </summary> /// <param name="sender">The Player attempting to execute the command.</param> /// <param name="cmd">Command to execute, e.g. "me"</param> /// <param name="args">Argument passed to command, e.g. "uses /me sucessfully"</param> /// public static void Execute(Player sender, string cmd, string args) { if (Commands.ContainsKey(cmd)) { if (sender.rank >= Commands[cmd].RankNeeded) { try { Commands[cmd].Run(sender, cmd, args); } catch(NotImplementedException) { sender.PrintMessage(Color.CommandError + "That command's not implemented!"); } } else { sender.PrintMessage(Color.CommandError + "You don't have permission to use that command."); } } else { sender.PrintMessage(Color.CommandError + "Unknown command " + cmd); } }
// === Callbacks === // PlayerJoins: called when a player connects. public virtual void PlayerJoins(Player player) { }
// PlayerBuilds: called when a player places or deletes a block. public virtual void PlayerBuilds(Player player, BlockPosition pos, Block type, Block oldType) { }
// CanBuild: return whether the given player may build that type at that location. public virtual bool CanBuild(Player player, BlockPosition pos, Block type) { return true; }
public static void Inform(Player p, string text) { p.PrintMessage(Color.DarkGreen + text); }
public override void PlayerMoves(Player Player, Position dest, byte heading, byte pitch) { // do nothing }
public override void PlayerJoins(Player Player) { // do nothing }
public static void WrapMessage(Player sendto, string message) { WrapMessage(sendto, message, Color.CommandResult); }
public static void WrapMessage(Player sendto, string message, string prefix) { if(prefix.Length > 4) prefix = prefix.Substring(0, 4); while (message.Length > 60) { int i = message.LastIndexOf(' ', 60, 60); if(i == -1) i = 60; sendto.PrintMessage(prefix + message.Substring(0, i)); message = message.Substring(i); } sendto.PrintMessage(prefix + message); }
public virtual void PlayerMoves(Player Player, Position dest, byte heading, byte pitch) { if (Player == this) { pos = dest; } conn.SendPlayerMovement(Player, dest, heading, pitch, Player == this); }
public virtual void PlayerJoins(Player Player) { conn.HandlePlayerSpawn(Player, Player == this); }
public void PlayerDisconnects(Player P) { PlayerDisconnects(P.playerID); }
// PlayerMessage: allows for adjusting of messages. Return "" to cancel or null to pass through. public virtual string PlayerMessage(Player player, string message) { return null; }
// PlayerQuits: called when a player disconnects. public virtual void PlayerQuits(Player player) { }
public void SendPlayerMovement(Player player, Position dest, byte heading, byte pitch, bool self) { PlayerMovePacket packet = new PlayerMovePacket(); packet.PlayerID = player.playerID; if (self) packet.PlayerID = 255; packet.X = player.pos.x; packet.Y = player.pos.y; packet.Z = player.pos.z; packet.Heading = heading; packet.Pitch = pitch; SendPacket(packet); }