private void StartGame(C.StartGame p) { if (Stage != GameStage.Select) return; if (!Settings.AllowStartGame && (Account == null || (Account != null && !Account.AdminAccount))) { Enqueue(new S.StartGame { Result = 0 }); return; } if (Account == null) { Enqueue(new S.StartGame { Result = 1 }); return; } CharacterInfo info = null; for (int i = 0; i < Account.Characters.Count; i++) { if (Account.Characters[i].Index != p.CharacterIndex) continue; info = Account.Characters[i]; break; } if (info == null) { Enqueue(new S.StartGame { Result = 2 }); return; } if (info.Banned) { if (info.ExpiryDate > DateTime.Now) { Enqueue(new S.StartGameBanned { Reason = info.BanReason, ExpiryDate = info.ExpiryDate }); return; } info.Banned = false; } info.BanReason = string.Empty; info.ExpiryDate = DateTime.MinValue; long delay = (long) (SMain.Envir.Now - info.LastDate).TotalMilliseconds; //if (delay < Settings.RelogDelay) //{ // Enqueue(new S.StartGameDelay { Milliseconds = Settings.RelogDelay - delay }); // return; //} Player = new PlayerObject(info, this); Player.StartGame(); }