public void HandleMessageContents(NetworkMessage message, Connection connection) { var ruleViolationPacket = new RuleViolationPacket(message); var statementPacket = new StatementPacket(message); // TODO: log somewhere? :) ResponsePackets.Add(new DefaultNoErrorPacket()); }
public void HandleMessageContents(NetworkMessage message, Connection connection) { var ruleViolationPacket = new RuleViolationPacket(message); using (var otContext = new OpenTibiaDbContext()) { var playerRecord = otContext.Players.Where(p => p.Charname.Equals(ruleViolationPacket.CharacterName)).FirstOrDefault(); if (playerRecord != null) { var userRecord = otContext.Users.Where(u => u.Login == playerRecord.Account_Nr).FirstOrDefault(); if (userRecord != null) { var nowUnixTimestamp = (int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds; otContext.Banishments.Add(new Banishment { AccountId = playerRecord.Account_Id, AccountNr = playerRecord.Account_Nr, Ip = ruleViolationPacket.IpAddress, GmId = ruleViolationPacket.GamemasterId, Violation = ruleViolationPacket.Reason, Comment = ruleViolationPacket.Comment, Timestamp = nowUnixTimestamp, BanishedUntil = nowUnixTimestamp, PunishmentType = 0x02 }); otContext.SaveChanges(); ResponsePackets.Add(new NotationResultPacket { GamemasterId = (uint)ruleViolationPacket.GamemasterId }); return; } } } ResponsePackets.Add(new DefaultErrorPacket()); }
public void HandleMessageContents(NetworkMessage message, Connection connection) { var ruleViolationPacket = new RuleViolationPacket(message); byte banDays = 0; var banUntilDate = DateTime.Now; using (var otContext = new OpenTibiaDbContext()) { var playerRecord = otContext.Players.Where(p => p.Charname.Equals(ruleViolationPacket.CharacterName)).FirstOrDefault(); if (playerRecord != null) { var userRecord = otContext.Users.Where(u => u.Login == playerRecord.Account_Nr).FirstOrDefault(); if (userRecord != null) { // Calculate Banishment date based on number of previous banishments youger than 60 days... var todayMinus60Days = DateTime.Today.AddDays(-60).ToFileTimeUtc(); var banCount = otContext.Banishments.Where(b => b.AccountNr == playerRecord.Account_Nr && b.Timestamp > todayMinus60Days && b.PunishmentType == 1).Count(); switch (banCount) { case 0: banDays = 7; break; case 1: banDays = 15; break; case 2: banDays = 30; break; case 3: banDays = 90; break; default: banDays = 255; break; } banUntilDate = banUntilDate.AddDays(banDays); var nowUnixTimestamp = (int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds; var banUntilUnixTimestamp = (int)banUntilDate.Subtract(new DateTime(1970, 1, 1)).TotalSeconds; otContext.Banishments.Add(new Banishment { AccountId = playerRecord.Account_Id, AccountNr = playerRecord.Account_Nr, Ip = ruleViolationPacket.IpAddress, GmId = ruleViolationPacket.GamemasterId, Violation = ruleViolationPacket.Reason, Comment = ruleViolationPacket.Comment, Timestamp = nowUnixTimestamp, BanishedUntil = banUntilUnixTimestamp, PunishmentType = 1 }); userRecord.Banished = 1; userRecord.Banished_Until = banUntilUnixTimestamp; otContext.SaveChanges(); ResponsePackets.Add(new BanismentResultPacket { BanDays = banDays, BanishedUntil = (uint)banUntilDate.ToFileTimeUtc() }); return; } } } ResponsePackets.Add(new DefaultErrorPacket()); }