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);
        }
Example #2
0
        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);
        }