public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); //Version 0 if (version >= 0) { m_AccountName = reader.ReadString(); m_CaptchaSourceType = (CaptchaSourceType)reader.ReadInt(); m_NextCaptchaTime = reader.ReadDateTime(); m_CaptchaRequired = reader.ReadBool(); m_CaptchaAttempt = reader.ReadInt(); m_ConfirmPrompt = reader.ReadBool(); m_CurrentPenalty = (PenaltyLevelType)reader.ReadInt(); m_CurrentPenaltyExpiration = reader.ReadDateTime(); m_PreviousPenalty = (PenaltyLevelType)reader.ReadInt(); m_PenaltyProbationExpiration = reader.ReadDateTime(); m_SelectedRow1Index = reader.ReadInt(); m_SelectedRow2Index = reader.ReadInt(); m_SelectedRow3Index = reader.ReadInt(); m_Row1CorrectIndex = reader.ReadInt(); m_Row2CorrectIndex = reader.ReadInt(); m_Row3CorrectIndex = reader.ReadInt(); int row1Count = reader.ReadInt(); for (int a = 0; a < row1Count; a++) { m_Row1IDs.Add(reader.ReadInt()); } int row2Count = reader.ReadInt(); for (int a = 0; a < row2Count; a++) { m_Row2IDs.Add(reader.ReadInt()); } int row3Count = reader.ReadInt(); for (int a = 0; a < row3Count; a++) { m_Row3IDs.Add(reader.ReadInt()); } } //----- CaptchaPersistance.m_AccountEntries.Add(this); }
public bool Attempt(PlayerMobile player, CaptchaSourceType captchaSource) { if (m_CurrentPenalty != PenaltyLevelType.None && DateTime.UtcNow >= m_CurrentPenaltyExpiration) { m_CurrentPenalty = PenaltyLevelType.None; } if (m_PreviousPenalty != null && DateTime.UtcNow >= m_PenaltyProbationExpiration) { m_PreviousPenalty = PenaltyLevelType.None; } if (m_CurrentPenalty != PenaltyLevelType.None) { string timeRemaining = Utility.CreateTimeRemainingString(DateTime.UtcNow, m_CurrentPenaltyExpiration, false, true, true, true, false); player.SendMessage(2115, "Due to previous captcha failures, your account is not allowed to gather resources for another " + timeRemaining + "."); return(false); } if (m_CaptchaRequired) { m_CaptchaSourceType = captchaSource; m_ConfirmPrompt = false; player.SendSound(0x055); player.CloseGump(typeof(CaptchaGump)); player.SendGump(new CaptchaGump(player)); return(false); } else { if (DateTime.UtcNow >= m_NextCaptchaTime) { GenerateIDs(); player.SendSound(0x055); m_NextCaptchaTime = DateTime.UtcNow + TimeSpan.FromMinutes((double)Utility.RandomMinMax(MinimumCaptchaDelay, MaximumCaptchaDelay)); m_CaptchaRequired = true; m_CaptchaAttempt = 0; m_ConfirmPrompt = false; m_CaptchaSourceType = captchaSource; player.CloseGump(typeof(CaptchaGump)); player.SendGump(new CaptchaGump(player)); return(false); } else { return(true); } } }