Esempio n. 1
0
        public void HandleMessageContents(NetworkMessage message, Connection connection)
        {
            var ruleViolationPacket = new RuleViolationPacket(message);
            var statementPacket     = new StatementPacket(message);

            // TODO: log somewhere? :)
            ResponsePackets.Add(new DefaultNoErrorPacket());
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
        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());
        }