예제 #1
0
파일: Mail.cs 프로젝트: eiyaya/mmorpgserver
        private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); //

        public void InitByDB(MailManager _this, CharacterController character, DBMail_List mails)
        {
            List <DBMail_One> deleteList = new List <DBMail_One>();

            _this.mCharacter = character;
            _this.mDbData    = mails;
            var count = 0;

            foreach (var dbmail in _this.mDbData.mData)
            {
                if (DateTime.FromBinary(dbmail.OverTime) < DateTime.Now)
                {
                    deleteList.Add(dbmail);
                    continue;
                }
                var mail = new Mail(character, dbmail);
                _this.Mails.Add(dbmail.Guid, mail);
                _this.AddChild(mail);
                count++;
            }
            foreach (var dbmail in deleteList)
            {
                _this.mDbData.mData.Remove(dbmail);
            }
            _this.GetCanAcceptMail();
        }
예제 #2
0
파일: Mail.cs 프로젝트: eiyaya/mmorpgserver
        //通知玩家被谁杀死
        public void PushMail(MailManager _this, int tableId, int ExtendType, string ExtendPara0, string ExtendPara1)
        {
            var tbMail = Table.GetMail(tableId);

            if (tbMail == null)
            {
                Logger.Fatal("null==Table.GetMail({0})", tableId);
                return;
            }
            //  if (tbMail.Flag < 0)
            //  {
            //      PlayerLog.WriteLog((int)LogType.MailConfigError, "PushMail tbMail[{0}] Flag is -1", tbMail.Id);
            //       return;
            //  }
            // if (_this.mCharacter.GetFlag(tbMail.Flag))
            //  {
            //     return;
            //  }
            if (_this.mCharacter.CheckCondition(tbMail.Condition) != -2)
            {
                return;
            }
            var nextId   = _this.GetNextId();
            var tempmail = new Mail(_this.mCharacter, nextId);

            tempmail.Name        = tbMail.Title;
            tempmail.Text        = tbMail.Text;
            tempmail.Send        = tbMail.Sender;
            tempmail.ExtendType  = ExtendType;
            tempmail.ExtendPara0 = ExtendPara0;
            tempmail.ExtendPara1 = ExtendPara1;

            for (var i = 0; i != 5; ++i)
            {
                if (tbMail.ItemId[i] < 0)
                {
                    continue;
                }
                if (tbMail.ItemCount[i] < 1)
                {
                    continue;
                }
                var itemDb = new ItemBaseData();
                ShareItemFactory.Create(tbMail.ItemId[i], itemDb);
                itemDb.Count = tbMail.ItemCount[i];
                tempmail.Reward.Add(itemDb);
                //tempmail.Reward.Add(tbMail.ItemId[i],tbMail.ItemCount[i]);
            }
            tempmail.OverTime = DateTime.Now.AddDays(15).ToBinary();
            _this.Mails.Add(tempmail.Guid, tempmail);
            _this.AddChild(tempmail);
            _this.mDbData.mData.Add(tempmail.mDbData);
            tempmail.MarkDirty();
            //  _this.mCharacter.SetFlag(tbMail.Flag);
        }
예제 #3
0
파일: Mail.cs 프로젝트: eiyaya/mmorpgserver
        //接收邮件
        public Mail PushMail(MailManager _this, string name, string text, List <ItemBaseData> datas, int type, string sender)
        {
            if (_this.Mails.Count >= StaticParam.MaxMailCount)
            {
                var minMail = GetTimeMin(_this);
                if (minMail == null)
                {
                    return(null);
                }
                minMail.Name      = name;
                minMail.Text      = text;
                minMail.StartTime = DateTime.Now.ToBinary();
                minMail.OverTime  = DateTime.Now.AddDays(15).ToBinary();
                minMail.State     = 0;
                minMail.Type      = type;
                minMail.Send      = sender;
                if (datas == null)
                {
                    minMail.Reward.Clear();
                }
                else
                {
                    minMail.Reward.Clear();
                    foreach (var data in datas)
                    {
                        minMail.Reward.Add(data);
                    }
                }
                minMail.MarkDirty();
                return(minMail);
            }
            var nextId   = _this.GetNextId();
            var tempmail = new Mail(_this.mCharacter, nextId);

            tempmail.Name = name;
            tempmail.Text = text;
            tempmail.Type = type;
            foreach (var data in datas)
            {
                tempmail.Reward.Add(data);
            }
            tempmail.OverTime = DateTime.Now.AddDays(15).ToBinary();
            _this.Mails.Add(tempmail.Guid, tempmail);
            _this.AddChild(tempmail);
            _this.mDbData.mData.Add(tempmail.mDbData);
            tempmail.MarkDirty();
            return(tempmail);
        }
예제 #4
0
파일: Mail.cs 프로젝트: eiyaya/mmorpgserver
        //分发邮件
        private Mail PushMail(MailManager _this,
                              string name,
                              string text,
                              List <KeyValuePair <int, int> > reward,
                              string sender             = "",
                              List <ItemBaseData> datas = null, int type = 0)
        {
            if (_this.Mails.Count >= StaticParam.MaxMailCount)
            {
                var minMail = GetTimeMin(_this);
                if (minMail == null)
                {
                    return(null);
                }
                minMail.Name      = name;
                minMail.Text      = text;
                minMail.Send      = sender;
                minMail.StartTime = DateTime.Now.ToBinary();
                minMail.OverTime  = DateTime.Now.AddDays(15).ToBinary();
                minMail.State     = 0;
                minMail.Type      = type;
                if (reward == null)
                {
                    minMail.Reward.Clear();
                }
                else
                {
                    minMail.Reward.Clear();
                    foreach (var i in reward)
                    {
                        var itemDb = new ItemBaseData();
                        ShareItemFactory.Create(i.Key, itemDb);
                        itemDb.Count = i.Value;
                        minMail.Reward.Add(itemDb);
                        if (datas != null)
                        {
                            datas.Add(itemDb);
                        }
                    }
                    //foreach (KeyValuePair<int, int> i in reward)
                    //{
                    //    ItemBaseData itemDb = new ItemBaseData();
                    //    ItemFactory.Create(i.Key, itemDb);
                    //    itemDb.Count = i.Value;
                    //    minMail.Reward.Clear();
                    //    minMail.Reward.Add(itemDb);
                    //}
                }
                minMail.MarkDirty();
                return(minMail);
            }
            var nextId   = _this.GetNextId();
            var tempmail = new Mail(_this.mCharacter, nextId);

            tempmail.Name = name;
            tempmail.Send = sender;
            tempmail.Text = text;
            tempmail.Type = type;
            if (reward != null)
            {
                foreach (var i in reward)
                {
                    var itemDb = new ItemBaseData();
                    ShareItemFactory.Create(i.Key, itemDb);
                    itemDb.Count = i.Value;
                    tempmail.Reward.Add(itemDb);
                    if (datas != null)
                    {
                        datas.Add(itemDb);
                    }
                }
                //foreach (KeyValuePair<int, int> i in reward)
                //{
                //    ItemBaseData itemDb = new ItemBaseData();
                //    ItemFactory.Create(i.Key, itemDb);
                //    itemDb.Count = i.Value;
                //    tempmail.Reward.Add(itemDb);
                //    if (datas != null)
                //    {
                //        datas.Add(itemDb);
                //    }
                //}
            }
            tempmail.OverTime = DateTime.Now.AddDays(15).ToBinary();
            //tempmail.OverTime = DateTime.Now.AddHours(15).ToBinary();
            _this.Mails.Add(tempmail.Guid, tempmail);
            _this.AddChild(tempmail);
            _this.mDbData.mData.Add(tempmail.mDbData);
            tempmail.MarkDirty();
            return(tempmail);
        }