Index: binary-improvements/7dtd-server-fixes/src/TelnetCommands/Kill.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/TelnetCommands/Kill.cs	(revision 112)
+++ binary-improvements/7dtd-server-fixes/src/TelnetCommands/Kill.cs	(revision 112)
@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+
+public class Kill : ConsoleCommand
+{
+	public Kill (ConsoleSdtd cons) : base(cons)
+	{
+	}
+
+	public override string Description ()
+	{
+		return "kill a given player (entity id or name)";
+	}
+
+	public override string[] Names ()
+	{
+		return new string[] { "kill", string.Empty };
+	}
+
+	public override void Run (string[] _params)
+	{
+		try {
+			if (_params.Length != 1) {
+				m_Console.SendResult ("Usage: kill <playername|entityid>");
+				return;
+			}
+
+			ClientInfo ci = CommonMappingFunctions.GetClientInfoFromNameOrID(_params[0], false);
+
+			if (ci == null) {
+				m_Console.SendResult ("Playername or entity id not found.");
+				return;
+			}
+
+			CommonMappingFunctions.GetEntityPlayer(ci).Kill(null);
+			m_Console.SendResult ("Killed player " + _params[0]);
+		} catch (Exception e) {
+			Log.Out ("Error in Kill.Run: " + e);
+		}
+	}
+}
+
Index: binary-improvements/7dtd-server-fixes/src/TelnetCommands/PrivateMassageConnections.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/TelnetCommands/PrivateMassageConnections.cs	(revision 112)
+++ binary-improvements/7dtd-server-fixes/src/TelnetCommands/PrivateMassageConnections.cs	(revision 112)
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+
+public class PrivateMassageConnections
+{
+	private static Dictionary<ClientInfo, ClientInfo> senderOfLastPM = new Dictionary<ClientInfo, ClientInfo>();
+
+	public static void SetLastPMSender(ClientInfo _sender, ClientInfo _receiver) {
+		if (senderOfLastPM.ContainsKey(_receiver))
+			senderOfLastPM[_receiver] = _sender;
+		else
+			senderOfLastPM.Add(_receiver, _sender);
+	}
+
+	public static ClientInfo GetLastPMSenderForPlayer(ClientInfo _player) {
+		if (senderOfLastPM.ContainsKey(_player))
+			return senderOfLastPM[_player];
+		return null;
+	}
+}
+
Index: binary-improvements/7dtd-server-fixes/src/TelnetCommands/Reply.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/TelnetCommands/Reply.cs	(revision 112)
+++ binary-improvements/7dtd-server-fixes/src/TelnetCommands/Reply.cs	(revision 112)
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+
+public class Reply : ConsoleCommand
+{
+	public Reply (ConsoleSdtd cons) : base(cons)
+	{
+	}
+
+	public override string Description ()
+	{
+		return "send a message to  the player who last sent you a PM";
+	}
+
+	public override string[] Names ()
+	{
+		return new string[] { "reply", "re" };
+	}
+
+	private void SendMessage (ClientInfo _receiver, ClientInfo _sender, string _message)
+	{
+		PrivateMassageConnections.SetLastPMSender (_sender, _receiver);
+		string senderName = CommonMappingFunctions.GetPlayerName (_sender);
+
+		CommonMappingFunctions.GetConnectionManager ().networkView.RPC ("RPC_ChatMessage", _receiver.networkPlayer,
+				new object[] {
+			_message,
+			-1,
+			senderName + " (PM)",
+			true
+		}
+		);
+		string receiverName = CommonMappingFunctions.GetPlayerName (_receiver);
+		m_Console.SendResult ("Message to player " + (receiverName != null ? "\"" + receiverName + "\"" : "unknownName") + " sent with sender \"" + senderName + "\"");
+	}
+
+	private void RunInternal (ClientInfo _sender, string[] _params)
+	{
+		if (_params.Length < 1) {
+			m_Console.SendResult ("Usage: reply <message>");
+			return;
+		}
+
+		string message = _params [0];
+		for (int i = 1; i < _params.Length; i++) {
+			message += " " + _params [i];
+		}
+
+		ClientInfo receiver = PrivateMassageConnections.GetLastPMSenderForPlayer (_sender);
+		if (receiver != null && CommonMappingFunctions.GetClientID (receiver) >= 0) {
+			SendMessage (receiver, _sender, message);
+		} else {
+			if (receiver != null) {
+				m_Console.SendResult ("The sender of the PM you last received is currently not online.");
+			} else {
+				m_Console.SendResult ("You have not received a PM so far.");
+			}
+		}
+	}
+
+	public override void ExecuteRemote (string _sender, string[] _params)
+	{
+		try {
+			m_Console.SendResult (string.Format ("{0} executing remote command '{1}' {2}", _sender, this.Names () [0], string.Join (" ", _params)));
+			ClientInfo ci = CommonMappingFunctions.GetClientInfoFromSteamID (_sender);
+			RunInternal (ci, _params);
+		} catch (Exception e) {
+			Log.Out ("Error in Reply.ExecuteRemote: " + e);
+		}
+	}
+
+	public override void Run (string[] _params)
+	{
+		Log.Out ("Command \"reply\" can only be used on clients!");
+	}
+}
+
