/// <summary> /// <see cref="Process" /> this instance. /// </summary> /// <param name="level"> /// </param> /// <exception cref="OverflowException"> /// <paramref name="value" /> es menor que <see cref="F:System.TimeSpan.MinValue" /> o mayor que /// <see cref="F:System.TimeSpan.MaxValue" />.O bienEl valor de <paramref name="value" /> es /// <see cref="F:System.Double.PositiveInfinity" />.O bienEl valor de <paramref name="value" /> es /// <see cref="F:System.Double.NegativeInfinity" />. /// </exception> public override void Process(Level level) { var p = new Authentification_Failed(this.Client); if (this.Version[0] != 2 && this.Version[2] != 2000) { this.Client.State = 0; p.SetErrorCode(CodesFail.NEW_VERSION); if (this.Version[0] > 2) { p.SetReason("Esta versión de cliente es superior a la aceptada por el servidor."); } else if (this.Version[2] < 2000) { p.SetReason("Esta versión de cliente es menor a la aceptada por el servidor."); } else { p.SetReason("Este cliente no es aceptado por el servidor."); } p.Send(); return; } if (Settings.Maintenance) { this.Client.State = State.DISCONNECTED; p.SetErrorCode(CodesFail.MAINTENANCE); p.SetReason("Duración del mantenimiento: " + TimeSpan.FromMinutes(Settings.MaintenanceDuration)); p.RemainingTime(Settings.MaintenanceDuration); p.Send(); return; } if (this.Hash != Constants.Sha) { p.SetErrorCode(CodesFail.NEW_VERSION); p.SetReason("Este cliente no es aceptado por el servidor."); p.Send(); } else { this.Client.State = State.SESSION; new Pre_Authentification_OK(this.Client).Send(); } }
/// <summary> /// <see cref="Process" /> this instance. /// </summary> /// <param name="level"> /// </param> public override void Process(Level level) { level = ResourcesManager.GetPlayer(this.UserID); if (Convert.ToBoolean(Constants.Patching)) { if (this.MasterHash != ObjectManager.FingerPrint.sha) { var p = new Authentification_Failed(this.Client); p.SetErrorCode(CodesFail.NEW_VERSION); p.SetResourceFingerprintData(ObjectManager.FingerPrint.SaveToJson()); p.SetContentURL(Constants.PatchURL); p.SetUpdateURL("https://ClashRoyaleSpain.es/"); p.Send(); return; } } if (level == null) { level = ObjectManager.CreateAvatar(this.UserID); byte[] tokenSeed = new byte[20]; new Random().NextBytes(tokenSeed); SHA1 sha = new SHA1CryptoServiceProvider(); this.Token = BitConverter.ToString(sha.ComputeHash(tokenSeed)).Replace("-", string.Empty); Debug.Write("New Token: " + this.Token); level.GetPlayerAvatar().SetCreated(DateTime.UtcNow); level.GetPlayerAvatar().SetToken(this.Token); } else { if (level.GetPlayerAvatar().GetToken() != this.Token) { new Authentification_Failed(this.Client).Send(); } if (level.GetAccountStatus() == 99) { var p = new Authentification_Failed(this.Client); p.SetErrorCode(CodesFail.BANNED); p.Send(); return; } } ResourcesManager.LogPlayerIn(level, this.Client); level.Tick(); if (level.GetAccountPrivileges() > 0) { level.GetPlayerAvatar().SetLeagueId(21); } if (level.GetAccountPrivileges() > 4) { level.GetPlayerAvatar().SetLeagueId(22); } level.GetPlayerAvatar().SetIsAndroid(this.isAndroid); level.GetPlayerAvatar().SetRegion(this.Region); level.GetPlayerAvatar().SetUpdate(DateTime.UtcNow); var loginOk = new Authentification_OK(this.Client); loginOk.SetAccountId(level.GetPlayerAvatar().GetId()); loginOk.SetPassToken(this.Token); loginOk.SetServerMajorVersion(this.Version[0]); loginOk.SetServerBuild(this.Version[1]); loginOk.SetContentVersion(this.Version[2]); loginOk.SetServerEnvironment("prod"); loginOk.SetDaysSinceStartedPlaying(10); loginOk.SetServerTime( Math.Round(level.GetTime().Subtract(new DateTime(1970, 1, 1)).TotalSeconds * 1000).ToString()); loginOk.SetAccountCreatedDate(level.GetPlayerAvatar().GetCreated().ToString()); loginOk.SetStartupCooldownSeconds(0); loginOk.SetCountryCode("ES"); loginOk.Send(); if (level.GetPlayerAvatar().GetBattleID() > 0) { if (ResourcesManager.Battles.ContainsKey(level.GetPlayerAvatar().GetId())) { var SectorPC = new Sector_PC(this.Client) { Battle = ResourcesManager.Battles[ level.GetPlayerAvatar().GetId()] }; SectorPC.Send(); this.Client.State = State.IN_BATTLE; } else { level.GetPlayerAvatar().SetBattleID(0); } } else { new Own_Home_Data(this.Client).Send(); if (level.GetPlayerAvatar().GetClan()) { new Clan_Data(this.Client).Send(); } } }