private void OnDeathEvent(TSPlayer player, MemoryStream data) { // Read in Byte data.ReadByte(); PlayerDeathReason death = PlayerDeathReason.FromReader(new BinaryReader(data)); string reason = death.GetDeathText(player.TPlayer.name).ToString(); // Update player last death event lastPlaceOfDeathData.UpdateLocationUser(player.UUID, new Vector2(player.X, player.Y), reason); }
private bool RecordPlayerDeath(Player player, MemoryStream data) { // Unused initial ID, read byte so FromReader is properly aligned in stream. data.ReadByte(); PlayerDeathReason playerDeathReason = PlayerDeathReason.FromReader(new BinaryReader(data)); // Record failure in current death repository. string killerName = GetNameOfKiller(player, playerDeathReason); int totalDeathCount = deathRecords.RecordDeath(player.name, killerName); // Log objects for reference. string deathText = playerDeathReason.GetDeathText(player.name).ToString(); logWriter.ServerWriteLine(JsonConvert.SerializeObject(playerDeathReason), TraceLevel.Info); logWriter.ServerWriteLine(string.Format("{0} {1}->{2} ({3})", player.name, deathText, killerName, totalDeathCount), TraceLevel.Info); // Broadcast message to server. string serverMessage = GetServerMessage(player, killerName, totalDeathCount); TShockAPI.Utils.Instance.Broadcast(serverMessage, 255, 0, 0); return(true); }