Esempio n. 1
0
 public int GetElfFightCount(CharacterController character)
 {
     if (character.CheckCondition(SecondCondition) != -2)
     {
         return(1);
     }
     if (character.CheckCondition(ThirdCondition) != -2)
     {
         return(2);
     }
     return(3);
 }
Esempio n. 2
0
        public void GetCanAcceptMail()
        {
            var str = Table.GetServerConfig(2005).Value.Trim();

            if (string.IsNullOrEmpty(str) == false)
            {
                var Ids = str.Split('|');
                foreach (var id in Ids)
                {
                    var tb = Table.GetMail(int.Parse(id));
                    if (tb != null)
                    {
                        if (mCharacter.GetFlag(tb.Flag))
                        {
                            continue;
                        }
                        if (mCharacter.CheckCondition(tb.Condition) == -2)
                        {
                            PushMail(tb.Id);
                        }
                    }
                }
            }

            //Table.ForeachMail(record =>
            //{
            //    if (record.Flag < 0 && record.Condition != -1)
            //    {
            //        Logger.Warn("Mail[{0}] Flag is -1", record.Flag);
            //        return true;
            //    }
            //    if (mCharacter.GetFlag(record.Flag))
            //    {
            //        return true;
            //    }
            //    if (mCharacter.CheckCondition(record.Condition) == -2)
            //    {
            //        PushMail(record.Id);
            //    }
            //    //mCharacter.
            //    return true;
            //});
        }
Esempio n. 3
0
        //查看条件是否完成,然后影响到邮件的
        private static void ConditionMail(CharacterController character, Dictionary <int, int> maillist, int nConId)
        {
            //看这个条件是否有影响的邮件
            List <int> tempList;

            if (!TriggerMail.TryGetValue(nConId, out tempList))
            {
                return; //这个条件没有影响邮件
            }
            //条件是否完成了
            if (character.CheckCondition(nConId) != -2)
            {
                return; //没有完成
            }
            //整理这些邮件
            foreach (var mailid in tempList)
            {
                maillist[mailid] = 1;
            }
        }
Esempio n. 4
0
        public virtual ErrorCodes AquireReward(int id, out int result)
        {
            result = -1;
            if (!IsActive)
            {
                return(ErrorCodes.Error_Operation_NotInActivity);
            }


            for (int i = 0; i < Items.Count; i++)
            {
                var item = Items[i];
                if (id == item.Id)
                {
                    if (!item.IsActive)
                    {
                        return(ErrorCodes.Error_Operation_NotInActivity);
                    }
                    if (!item.CanAquire)
                    {
                        return(ErrorCodes.Error_Operation_CannotAquire);
                    }
                    if (null == Controller)
                    {
                        return(ErrorCodes.Unknow);
                    }

                    var tb = Table.GetYunYing(item.Id);
                    if (null == tb)
                    {
                        return(ErrorCodes.Error_Operation_NotInActivity);
                    }

                    if (-1 != tb.ConditionId)
                    {
                        if (-2 != Controller.CheckCondition(tb.ConditionId))
                        {
                            return(ErrorCodes.Error_Condition);
                        }
                    }

                    if (-1 != tb.NeetItem && tb.NeetItemCount > 0)
                    {
                        var nowCount = Controller.mBag.GetItemCount(tb.NeetItem);
                        if (nowCount < tb.NeetItemCount)
                        {
                            return(ErrorCodes.ItemNotEnough);
                        }
                        var ret = Controller.mBag.DeleteItem(tb.NeetItem, tb.NeetItemCount, eDeleteItemType.OperationActivity, tb.Name);
                        if (ErrorCodes.OK != ret)
                        {
                            return(ret);
                        }
                    }

                    item.Aquire();

                    if (null != item.Rewards)
                    {
                        var items = new Dictionary <int, int>();
                        for (int j = 0; j < item.Rewards.Count; j++)
                        {
                            var reward = item.Rewards[j];
                            if (-1 == reward.Id || reward.Count <= 0)
                            {
                                continue;
                            }
                            items.Add(reward.Id, reward.Count);
                            var tbItem = Table.GetItemBase(reward.Id);
                            if (null != tbItem)
                            {
                                if (10500 == tbItem.Type)//时装
                                {
                                    var tbYunYing = Table.GetYunYing(item.Id);
                                    if (null != tbYunYing)
                                    {
                                        //开服活动购买时装后,修改时装的扩展计数,刷新时装商城
                                        Controller.SetExData(tbYunYing.Param[2], 0);
                                    }
                                }
                                else
                                {
                                    Controller.BroadCastGetEquip(reward.Id, 100002166);
                                }
                            }
                        }
                        if (items.Count > 0)
                        {
                            Controller.mBag.AddItemOrMail(200, items, null, eCreateItemType.OperationActivity, tb.Name);
                        }
                    }
                    return(ErrorCodes.OK);
                }
            }
            return(ErrorCodes.Error_Operation_NotFound);
        }