public IBkaData Get(long playerId)
        {
            IBkaData result  = null;
            string   bkaJson = null;

            using (var connection = new MySqlConnection(ConnectionString))
            {
                connection.Open();
                using (var command = new MySqlCommand())
                {
                    command.Connection  = connection;
                    command.CommandText = @"SELECT datavalue FROM data WHERE datatypename = 'bka' and datarealm = 'ns2' AND datarecordid = @PlayerId;";
                    command.Prepare();
                    command.Parameters.AddWithValue("@PlayerId", playerId);
                    using (var reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            bkaJson = reader.GetString("datavalue");
                        }
                    }
                }
            }
            if (!string.IsNullOrWhiteSpace(bkaJson))
            {
                result = _bkaDataParser.Parse(bkaJson);
            }
            return(result);
        }
示例#2
0
        private void NotifyCameraAdders(IGame game, IBkaData bkaData, HttpRequestBase httpRequestBase)
        {
            var bka                    = bkaData.Bka;
            var mapName                = game.MapName;
            var when                   = game.Created.ToShortDateString();
            var minutes                = Convert.ToInt32(game.DurationInSeconds / 60);
            var message                = $@"{bka} has uploaded a new camera for ""{mapName} {when} [{minutes}m]""";
            var gameRecordings         = _gameRecordingsGetter.Get(game.ServerName, game.StartTimeSeconds);
            var gameRecordingPlayerIds = gameRecordings.Select(x => x.PlayerId).ToList();

            if (gameRecordingPlayerIds.Count > 1)
            {
                if (ScheduledTaskRegistry.BotTask.B != null)
                {
                    var playerSteamIds = gameRecordingPlayerIds.Select(_playerIdAdapter.Adapt).ToList();
                    var cameraCount    = playerSteamIds.Count;
                    var url            = Url.Action("Watch", "Replay", new { serverName = game.ServerName, startTimeSeconds = game.StartTimeSeconds }, httpRequestBase.Url.Scheme);
                    message = $@"{message} ({cameraCount} total cameras now)!";
                    var steamMessage = $@"{message} {url} -- If you don't want these Replay notifications, please give that feedback to Wyzcrak ( https://steamcommunity.com/id/wyzcrak ).";
                    playerSteamIds.Where(x => !ReplayNotificationOptOutNs2Ids.Contains(x.AccountID)).ForEach(playerSteamId => { ScheduledTaskRegistry.BotTask.AddDailySteamMessage(new ScheduledTaskRegistry.DailySteamMessage(DateTime.Now, playerSteamId, steamMessage)); });
                }
            }

            var serverModels = _serverGetter.Get();

            foreach (var serverModel in serverModels)
            {
                _serverAdminCommandSender.Send(serverModel.WebAdminBaseUrl, UserName, PlayerId, $"sh_printallconsoles REPLAY {message} -- M > TGNS Portal > Replay", false);
            }
        }
示例#3
0
 public DeletableGameRecording(IGame game, long playerId, IBkaData bkaData)
 {
     Game     = game;
     PlayerId = playerId;
     BkaData  = bkaData;
 }