public override Task OnDisconnected() // дисконнект конкретного игрока с задержкой 7 секунд { if (_broadcaster.players.Any(p => p.ConnectionId == Context.ConnectionId)) { LeavePlayers.Add(_broadcaster.players.First(p => p.ConnectionId == Context.ConnectionId)); Thread mythread = new Thread(WaitLeavePlayerTimer); mythread.Start(LeavePlayers.First(p => p.ConnectionId == Context.ConnectionId).Id); //_logger.Log("OnDisconnected({0})", Context.ConnectionId); Clients.All.playerleave(_broadcaster.players.First(p => p.ConnectionId == Context.ConnectionId).Id); _broadcaster.players.Remove(_broadcaster.players.First(p => p.ConnectionId == Context.ConnectionId)); } return(base.OnDisconnected()); }
public Task Connect(int id) // дисконнект конкретного игрока с задержкой 7 секунд { //BD.UsersVK // int id = 0; id = Broadcaster.Instance.players.Count(); var User = (from u in BD.UsersData where u.Id == id select u).ToArray(); if (User.Length > 0) // Тут еще проверочку на пасс { if (LeavePlayers.Any(p => p.Id == id)) { LeavePlayers.First(p => p.Id == id).ConnectionId = Context.ConnectionId; _broadcaster.players.Add(LeavePlayers.First(p => p.Id == id)); LeavePlayers.Remove(LeavePlayers.First(p => p.Id == id)); } else if (_broadcaster.players.Any(p => p.Id == id)) { _broadcaster.players.First(p => p.Id == id).ConnectionId = Context.ConnectionId; } else { PlayerModel newPlayer = oldplayer(Context.ConnectionId, id, User[0]); SendPosition(newPlayer.x, newPlayer.y); _broadcaster.players.Add(newPlayer); } } else { PlayerModel newPlayer = newplayer(Context.ConnectionId, "dEND", BD.UsersData.Count()); #region Добавление юзера в бд UsersData RegModel = new UsersData(); RegModel.Id = BD.UsersData.Count(); RegModel.Name = newPlayer.Name; RegModel.Money = 10000; RegModel.Credits = 2; RegModel.SkillData = JsonConvert.SerializeObject(newPlayer.skillsInfoArray); BD.UsersData.InsertOnSubmit(RegModel); BD.SubmitChanges(); #endregion SendPosition(newPlayer.x, newPlayer.y); //кидаем его на эту точку _broadcaster.players.Add(newPlayer); //добавляем в список } return(base.OnConnected()); }