예제 #1
0
        private ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "PROP_OPEN_GRID", "开启格子");
#endif
            var player = session.Player.CloneEntity();
            var count  = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "count").Value);

            var bagcount = Convert.ToInt32(CommonHelper.BaseRule("4001"));  //默认格子数
            var number   = Convert.ToInt32(CommonHelper.BaseRule("4002"));  //上限格子数

            if (count <= 0)
            {
                return(CommonHelper.ErrorResult(ResultType.FRONT_DATA_ERROR));             //验证前端数据是否有误
            }
            if (player.UserExtend.bag_count >= number)
            {
                return(CommonHelper.ErrorResult(ResultType.BAG_TOPLIMIT));                                        //验证是否达到上限
            }
            if ((player.UserExtend.bag_count + count) > number)
            {
                return(CommonHelper.ErrorResult(ResultType.BAG_EXCEED_TOPLIMIT)); //验证是否开启成功时超过上限
            }
            var _count = player.UserExtend.bag_count - bagcount;                  //已开启格子数
            if (_count < 0)
            {
                return(CommonHelper.ErrorResult(ResultType.DATABASE_ERROR));
            }

            var base_consume = Consume(_count + 1, count);
            if (base_consume == 0)
            {
                return(CommonHelper.ErrorResult(ResultType.BASE_TABLE_ERROR));
            }

            player.User.gold = player.User.gold - base_consume;
            if (player.User.gold < 0)
            {
                return(CommonHelper.ErrorResult(ResultType.BASE_PLAYER_GOLD_ERROR));
            }

            player.UserExtend.bag_count += count;
            player.Bag.Surplus          += count;
            player.Bag.BagIsFull         = false;
            player.User.Update();
            player.UserExtend.Update();
            session.Player = player;
            (new Share.User()).REWARDS_API((int)GoodsType.TYPE_GOLD, session.Player.User);

            var temp = string.Format("{0}_{1}", "消费:" + base_consume, "开启格子数:" + count);//日志记录
            (new Share.Log()).WriteLog(player.User.id, (int)LogType.Use, (int)ModuleNumber.BAG, (int)PropCommand.PROP_OPEN_GRID, temp);

            return(new ASObject(BuildData((int)ResultType.SUCCESS, player.UserExtend.bag_count)));
        }