Exemple #1
0
        /// <summary>道具使用</summary>
        public ASObject CommandStart(int goodtype, TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine(string.Format("{0}:{1}", "PROP_USE", "道具使用"));
#endif
            var id        = Convert.ToInt64(data.FirstOrDefault(q => q.Key == "id").Value.ToString()); //解析数据
            var propCount = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "count").Value.ToString());
            var props     = tg_bag.GetEntityById(id);
            if (props == null)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)ResultType.FRONT_DATA_ERROR)));
            }
            var base_prop = Common.GetInstance().GetBaseProp(props.base_id);                     //道具基表数据
            if (base_prop == null)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)ResultType.BASE_TABLE_ERROR)));
            }
            if (base_prop.useMode != 1)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)ResultType.PROP_UNUSED)));                                                     //玩家增加相关数据
            }
            if (base_prop.useLevel > session.Player.Role.Kind.role_level)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)ResultType.BASE_PLAYER_LEVEL_ERROR)));
            }
            var temp = props.count - propCount;
            //道具资源足够使用
            if (temp < 0)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)ResultType.SUCCESS)));
            }
            props.count = temp;
            var resule = (int)Common.GetInstance().BagToUse(session, base_prop.containsResources, propCount, props);
            return(new ASObject(Common.GetInstance().BuildData(resule)));
        }
Exemple #2
0
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            try
            {
#if DEBUG
                XTrace.WriteLine("{0}:{1}", "ROLE_TITLE_UNLOAD", "称号卸载");
#endif
                var rid = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "roleId").Value.ToString());
                var tid = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "titleId").Value.ToString());

                var role  = tg_role.GetEntityById(rid);
                var title = tg_role_title.GetTitleByTid(tid);
                if (role == null || title == null)
                {
                    return(Error((int)ResultType.DATABASE_ERROR));                                //验证称号信息
                }
                if (!CheckRole(role, tid) || !CheckTitle(title, rid))
                {
                    return(Error((int)ResultType.FRONT_DATA_ERROR));                                                  //验证武将 称号信息
                }
                if (title.title_load_state == (int)LoadStateType.UNLOAD)
                {
                    return(Error((int)ResultType.TITLE_UN_LOAD));                                                    //验证称号是否已经卸载
                }
                title = DeleteRole(title, rid);
                return(!tg_role_title.UpdateByTitle(title) ? Error((int)ResultType.DATABASE_ERROR) : UpdateRole(session, role, title.title_id, title));   //更新称号信息
            }
            catch (Exception ex)
            {
                XTrace.WriteException(ex);
                return(new ASObject());
            }
        }
Exemple #3
0
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            try
            {
#if DEBUG
                XTrace.WriteLine("{0}:{1}", "SELECT_GENRE", "武将流派忍者众选择");
#endif
                var rid  = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "id").Value.ToString());       //武将主键rid
                var type = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "type").Value.ToString());     //流派或忍者众

                if (!CheckData(type))
                {
                    return(Result((int)ResultType.ROLE_GENRE_ERROR));                   //验证流派id
                }
                var role = tg_role.GetEntityById(rid);
                if (role == null)
                {
                    return(Result((int)ResultType.DATABASE_ERROR));
                }

                return(RoleSelectGenre(session, role, type));    //家臣选择流派忍者众信息
            }
            catch (Exception ex)
            {
                XTrace.WriteException(ex);
                return(new ASObject());
            }
        }
Exemple #4
0
        //private static TASK_FINISH objInstance = null;

        //public static TASK_FINISH getInstance()
        //{
        //    if (objInstance == null) objInstance = new TASK_FINISH();
        //    return objInstance;
        //}

        //  private ConcurrentDictionary<Int64, bool> dic = new ConcurrentDictionary<long, bool>();

        /// <summary>
        /// 说明:任务步骤用 类型_类型id_完成值来表示。
        /// 例如1_200001_1, 1表示任务类型对话,200001表示npc的id,对话类型中0表示未完成,1表示完成
        /// 多步任务用|来分割,例如两步对话任务为 1_200001_1|1_200002_1.
        /// </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "TASK_FINISH", "完成任务");
#endif

            //type:0表示接受任务,1表示完成任务 2 表示提交任务
            if (!data.ContainsKey("task") || !data.ContainsKey("npcId"))
            {
                return(null);
            }
            var id  = Convert.ToInt64(data.FirstOrDefault(q => q.Key == "task").Value);
            var npc = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "npcId").Value);
            if (session.MainTask == null)
            {
                XTrace.WriteLine("sesion中找不到任务");
                return(null);
            }

            var mytask = session.MainTask.CloneEntity();
            if (mytask == null || mytask.id != id || mytask.task_type != (int)TaskType.MAIN_TASK ||
                mytask.user_id != session.Player.User.id || mytask.task_state != (int)TaskStateType.TYPE_UNRECEIVED)
            {
                return(null);
            }

            var basetask = Variable.BASE_TASKMAIN.FirstOrDefault(q => q.id == mytask.task_id); //基表数据
            if (basetask == null)
            {
                return(null);
            }

            return(ReceiveTaskCheck(mytask, basetask.acceptId, npc));
        }
Exemple #5
0
        /// <summary>关卡结束</summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "TOWER_SHOT_FUNISH", "关卡结束");
#endif
            var score  = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "score").Value);
            var type   = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "type").Value);
            var isexit = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "isexit").Value);
#if DEBUG
            XTrace.WriteLine("前端提交分数:{0}", score);
#endif
            if (session.Player.UserExtend.shot_count == 0)
            {
                return(new ASObject(Common.GetInstance().BuilData((int)ResultType.CHALLENGE_FAIL, null)));
            }

            var shot = tg_duplicate_shot.GetEntityByUserId(session.Player.User.id);
            if (isexit == (int)ExitType.Exit)
            {
                return(UnPass(session, shot, score));
            }
            var base_copyfamepass = Variable.BASE_COPYFAMEPASS.FirstOrDefault(m => m.type == type);

            return(base_copyfamepass != null && score >= base_copyfamepass.score ? Pass(session, shot, score) : UnPass(session, shot, score));
        }
Exemple #6
0
        /// <summary>阵武将丢弃</summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            var roleid   = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "roleId").Value);        //roleId:[double]武将主键
            var location = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "location").Value);      //location:[当前武将位置]
            var user     = session.Player.User;
            var role     = session.Player.Role.Kind;

            if (role.id == roleid)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)ResultType.FIGHT_LEAD_NO_DELETE, null, null)));
            }

            var _role = tg_role.FindByid(roleid);

            if (_role == null)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)ResultType.DATABASE_ERROR, null, null)));
            }
            var matrix = tg_fight_personal.GetFindByUserId(user.id);
            var yin    = tg_fight_yin.FindByid(matrix.yid);

            Common.GetInstance().PositionUpdate(ref matrix, location, 0);

            _role.role_state = (int)RoleStateType.IDLE;

            _role.Update();
            matrix.Update();

            session.Fight.Personal = matrix;
            Common.GetInstance().RoleInfoToRole(user.id, _role, "state");
            return(new ASObject(Common.GetInstance().BuildData((int)ResultType.SUCCESS, matrix, yin)));
        }
Exemple #7
0
        /// <summary>开始跑商</summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "BUSINESS_START", "开始跑商");
#endif

            var destinationid = new ArrayList();

            var carid       = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "carId").Value);//跑商马车Id
            var destination = data.FirstOrDefault(q => q.Key == "idList").Value as object[];
            if (!FrontData(destination))
            {
                return(Common.GetInstance().BuildData((int)ResultType.FRONT_DATA_ERROR));
            }

            var car = tg_car.FindByid(carid);

            if (car.state == (int)CarStatusType.RUNNING) //马车状态验证
            {
                //return Common.getInstance().BuildData((int)ResultType.CAR_RUNNING);
                var _bglist = tg_goods_business.GetListEntityByCid(carid);              //马车上货物
                return(new ASObject(BuildData((int)ResultType.SUCCESS, car, _bglist))); //返回马车当前信息
            }

            //体力判断
            if (!PowerOperate(session.Player.Role.Kind, session))
            {
                return(ErrorResult((int)ResultType.BASE_ROLE_POWER_ERROR));
            }

            foreach (var item in destination)
            {
                destinationid.Add(item);
            }
            var distance = Common.GetInstance().CityDistance(destinationid); //城市距离
            var bglist   = tg_goods_business.GetListEntityByCid(carid);      //马车上货物

            Int64 time = Common.GetInstance().RuleData("3003", distance, car.speed) * 1000;
            if (time == 0)
            {
                time = 1000 * 1000;
            }
            var ticks = (DateTime.Now.Ticks - 621355968000000000) / 10000;
            car.time          = ticks + time;
            car.start_ting_id = Convert.ToInt32(destination.FirstOrDefault());
            car.stop_ting_id  = Convert.ToInt32(destination.LastOrDefault());
            car.state         = (int)CarStatusType.RUNNING;
            car.distance      = distance;
            if (car.stop_ting_id == 0)
            {
                XTrace.WriteLine("---- 跑商发车发生错误  用户Id:{0}  马车Id:{1} ----", car.user_id, car.id);
            }
            tg_car.GetCarUpdate(car);
            Common.GetInstance().BusinssStart(car.user_id, car.id, time);
            TaskCheck(bglist, session.Player.User.id);
            (new Share.DaMing()).CheckDaMing(session.Player.User.id, (int)DaMingType.跑商);
            return(new ASObject(BuildData((int)ResultType.SUCCESS, car, bglist)));
        }
Exemple #8
0
        //private static WAR_DEFENCE_PLAN_UPDATE _objInstance;

        ///// <summary>WAR_DEFENCE_ROLE_UPDATE单体模式</summary>
        //public static WAR_DEFENCE_PLAN_UPDATE GetInstance()
        //{
        //    return _objInstance ?? (_objInstance = new WAR_DEFENCE_PLAN_UPDATE());
        //}

        /// <summary> 修改武将防守方案信息 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            if (!data.ContainsKey("planId") || !data.ContainsKey("areaSetId") || !data.ContainsKey("frontId") ||
                !data.ContainsKey("roles"))
            {
                return(null);
            }
            //玩家防守方案主键id
            var   sendplanId = data.FirstOrDefault(q => q.Key == "planId").Value.ToString();
            Int64 planid = 0; Int32 areasetid = 0; Int32 front = 0;

            if (!Int64.TryParse(sendplanId, out planid))
            {
                return(CommonHelper.ErrorResult((int)ResultType.FRONT_DATA_ERROR));
            }
            //获取防守地形
            var sendareasetid = data.FirstOrDefault(m => m.Key == "areaSetId").Value.ToString(); //玩家设置地形主键id

            if (!Int32.TryParse(sendareasetid, out areasetid))
            {
                return(CommonHelper.ErrorResult((int)ResultType.FRONT_DATA_ERROR));
            }

            //获取防守阵
            var sendfront = data.FirstOrDefault(m => m.Key == "frontId").Value.ToString(); //玩家设置阵基表id

            Int32.TryParse(sendfront, out front);


            var planvo    = GetSendVo(planid, front);
            var roles     = data.FirstOrDefault(m => m.Key == "roles").Value as object[];
            var listroles = GetSendRoles(roles);

            if (listroles == null || planvo == null)
            {
                return(CommonHelper.ErrorResult(ResultType.FRONT_DATA_ERROR));
            }


            var areasetlist = view_user_area_set.GetEntityByUserId(session.Player.User.id, areasetid).ToList();
            //验证前端数据数据
            var tuple = CheckData(listroles, planvo, session.Player.User.id, areasetid);

            if (!tuple.Item1)
            {
                return(CommonHelper.ErrorResult(ResultType.FRONT_DATA_ERROR));
            }
            //验证坐标信息
            if (!CheckPoint(listroles, areasetlist))
            {
                return(CommonHelper.ErrorResult(ResultType.FRONT_DATA_ERROR));
            }

            // if (!CheckFund(session.Player.War.City)) return CommonHelper.ErrorResult(ResultType.WAR_RES_FUNDS_ERROR);
            return(!SavaData(tuple.Item3, tuple.Item2, listroles, planvo, areasetlist) ?
                   CommonHelper.ErrorResult((int)ResultType.DATABASE_ERROR) :
                   CommonHelper.SuccessResult());
        }
Exemple #9
0
        /// <summary> 查看开始指令处理 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "WAR_MILITARY_ENTER", "进入军需品功能");
#endif
            if (!data.ContainsKey("id") || !data.ContainsKey("count"))
            {
                return(null);
            }
            var goods_id    = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "id").Value);    //据点id
            var goods_count = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "count").Value); //据点id

            if (goods_count <= 0)
            {
                return(CommonHelper.ErrorResult((int)ResultType.FRONT_DATA_ERROR));
            }
            var station = session.Player.War.PlayerInCityId;//1000024;
            var user    = session.Player.User;

            var goods = Variable.WARGOODS.Values.FirstOrDefault(m => m.city_id == station && m.goods_id == goods_id);
            if (goods == null)
            {
                return(CommonHelper.ErrorResult((int)ResultType.FRONT_DATA_ERROR));
            }
            //判断资源消耗
            if (goods_count > goods.count)
            {
                return(CommonHelper.ErrorResult((int)ResultType.WAR_GOODS_COUNT_ERROR));
            }

            var city = session.Player.War.City.CloneEntity();
            if (!IsMax(city, goods_id, goods_count))
            {
                return(CommonHelper.ErrorResult((int)ResultType.WAR_RES_MAX_ERROR));
            }
            var res_cost = Math.Round(goods_count * goods.goods_buy_price, 2);

            res_cost = Common.GetInstance().GetFunds(res_cost, user.player_influence, goods_id);
            var temp = city.res_funds - res_cost;
            if (temp < 0)
            {
                return(CommonHelper.ErrorResult((int)ResultType.WAR_RES_FUNDS_ERROR));
            }
            city.res_funds          = temp;
            city                    = SetResouce(city, goods_id, goods_count);
            session.Player.War.City = city;
            //资源更新推送
            tg_war_city.UpdateByResouce(city);
            (new Share.War()).SendCity(city.base_id, city.user_id);
            //数量更新
            var _c = goods.count - goods_count;
            goods.count = _c;
            var key = string.Format("{0}_{1}", goods.city_id, goods.goods_id);
            Variable.WARGOODS.AddOrUpdate(key, goods, (k, v) => goods);

            return(new ASObject(BuildData((int)ResultType.SUCCESS, goods)));
        }
Exemple #10
0
        /// <summary>道具出售</summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "PROP_SELL", "道具出售");
#endif
            var propid = Convert.ToInt64(data.FirstOrDefault(q => q.Key == "id").Value.ToString());//解析数据
            var count  = int.Parse(data.FirstOrDefault(q => q.Key == "count").Value.ToString());
            return(BagSell(propid, count, session));
        }
Exemple #11
0
        /// <summary>
        /// 获取前端数据
        /// </summary>
        /// <param name="data"></param>
        /// <returns>1.数据是否正确 2.合战武将实体  3.部队基表id 4.部队数量 5.原始数量</returns>
        private Tuple <bool, tg_war_role, Int32, Int32> GetClientData(ASObject data, Int64 userid)
        {
            if (!data.ContainsKey("roleId") || !data.ContainsKey("soldierId") || !data.ContainsKey("count"))
            {
                return(Tuple.Create(false, new tg_war_role(), 0, 0));
            }
            var _roleid = data.FirstOrDefault(q => q.Key == "roleId").Value.ToString();
            var _baseid = data.FirstOrDefault(q => q.Key == "soldierId").Value.ToString();
            var _count  = data.FirstOrDefault(q => q.Key == "count").Value.ToString();

            Int64 roleid; Int32 baseid; Int32 count;

            Int64.TryParse(_roleid, out roleid);
            Int32.TryParse(_baseid, out baseid);
            Int32.TryParse(_count, out count);


            var role    = tg_war_role.GetEntityById(roleid, userid);//FindByid(roleid);
            var soldier = tg_war_army_type.GetEntityByRidAndBaseId(roleid, baseid);

            if (role == null || soldier == null || count <= 0)
            {
                return(Tuple.Create(false, role, 0, 0));
            }

            if (role.type == (int)WarRoleType.NPC)
            {
                var identify = Variable.BASE_IDENTITY.FirstOrDefault(q => q.vocation == (int)VocationType.Roles);
                if (identify == null)
                {
                    return(Tuple.Create(false, role, 0, 0));
                }
                if (identify.soldier < count)
                {
                    return(Tuple.Create(false, role, 0, 0));
                }
            }
            else
            {
                var roleinfo = tg_role.GetEntityByIdUid(role.rid, userid);//FindByid(role.rid);
                if (roleinfo == null)
                {
                    return(Tuple.Create(false, role, 0, 0));
                }
                var baseidentify = Variable.BASE_IDENTITY.FirstOrDefault(q => q.id == roleinfo.role_identity);
                if (baseidentify == null)
                {
                    return(Tuple.Create(false, role, 0, 0));
                }
                if (baseidentify.soldier < count)
                {
                    return(Tuple.Create(false, role, 0, 0));
                }
            }

            return(Tuple.Create(true, role, baseid, count));
        }
Exemple #12
0
        public ASObject Execute(Int64 userid, ASObject data)
        {
            try
            {
# if DEBUG
                XTrace.WriteLine("{0}:{1}", "TRAIN_ROLE_START", "开始修行");
#endif
                var session = Variable.OnlinePlayer[userid] as TGGSession;
                if (session == null)
                {
                    return(CommonHelper.ErrorResult((int)ResultType.FAIL));
                }
                var rid       = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "id").Value);
                var attribute = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "attribute").Value);
                var type      = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "type").Value);
                var count     = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "count").Value);
                if (attribute == 0 || type == 0)
                {
                    return(CommonHelper.ErrorResult((int)ResultType.FRONT_DATA_ERROR));
                }

                var user       = session.Player.User.CloneEntity();
                var train_role = tg_train_role.GetEntityByRid(rid);
                var role       = tg_role.GetRoleById(rid);
                if (train_role == null || role == null)
                {
                    return(CommonHelper.ErrorResult((int)ResultType.DATABASE_ERROR));
                }
                if (train_role.state == (int)RoleTrainStatusType.TRAINING)
                {
                    return(CommonHelper.ErrorResult((int)ResultType.TRAINROLE_TRAINING));
                }
                var _role = role.CloneEntity();

                var baserule   = Variable.BASE_RULE.FirstOrDefault(m => m.id == "17016");
                var base_train = Variable.BASE_TRAIN.FirstOrDefault(m => m.id == type);
                if (base_train == null || baserule == null)
                {
                    return(CommonHelper.ErrorResult((int)ResultType.BASE_TABLE_ERROR));
                }
                var result = Check(user, role, attribute, base_train, count, Convert.ToInt32(baserule.value));
                if (result != 0)
                {
                    return(CommonHelper.ErrorResult(result));
                }

                role       = tg_role.GetRoleById(rid);
                train_role = CreateTrainRole(train_role, base_train.time * count, attribute, type, count);
                train_role.Save();
                (new Share.RoleTrain()).RoleTrainThreading(session.Player.User.id, role.id, count * base_train.time * 60 * 60 * 1000); //推送武将修行完信息

                (new Share.TGTask()).MainTaskUpdate(TaskStepType.TRAIN, userid, 0, 0);                                                 //任务验证
                (new Share.Skill()).PowerLog(_role, (int)ModuleNumber.ROLETRAIN, (int)RoleTrainCommand.TRAIN_ROLE_START);
                (new Share.DaMing()).CheckDaMing(role.user_id, (int)DaMingType.修行);                                                    //检测大名修行完成度
                return(new ASObject(BuilData((int)ResultType.SUCCESS, (new Share.Role()).BuildRole(rid))));
            }
Exemple #13
0
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "BUSINESS_PRICE_LOCK", "价格锁定");
#endif
            var price       = 0;
            var carmainid   = Convert.ToInt64(data.FirstOrDefault(q => q.Key == "carId").Value);
            var goodsmainid = Convert.ToInt64(data.FirstOrDefault(q => q.Key == "goodsId").Value);
            var type        = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "type").Value);

            //验证商圈
            if (!(new Share.Business()).IsArea(session.Player.Order.current_ting_base_id, session.Player.BusinessArea))
            {
                return(CommonHelper.ErrorResult(ResultType.BUSINESS_TIME_OPEN_ERROR));
            }


            var goodsid = GetGoodsId(type, goodsmainid, session);
            if (goodsid == 0)
            {
                return(CommonHelper.ErrorResult(ResultType.BUSINESS_GOODS_LACK));
            }

            var businessgoods = tg_goods_business.GetByGoodsidAndUserid(session.Player.User.id, goodsid, carmainid);

            //全局货物查询
            var goodsinfo = Variable.GOODS.FirstOrDefault(q => q.ting_id == session.Player.Order.ting_base_id &&
                                                          q.goods_id == goodsid);
            if (goodsinfo != null && ((type == 0 && goodsinfo.goods_buy_price == 0) || goodsinfo.goods_sell_price == 0))
            {
                return(new ASObject(BuildData(null, 0, 0, (int)ResultType.UNKNOW_ERROR, session.Player.Vip.bargain)));
            }
            var buyprice = type == 0 ? goodsinfo.goods_buy_price : businessgoods.price;
            var sell     = IsSameGoods(session.Player.Order.current_ting_base_id, goodsinfo.goods_id)
                ? goodsinfo.goods_buy_price
                : goodsinfo.goods_sell_price;


            session.Player.Order.vocation = session.Player.User.player_vocation;
            GetOrder((int)goodsid, goodsmainid, session.Player.Order, sell, carmainid, buyprice); //session中的订单赋值

            if (type == 1)
            {
                CheckGoodsPrice(session.Player.Order); //卖货物时町中已有货物价格减半
                price = session.Player.Order.sell_price_ok;
            }
            else
            {
                price = session.Player.Order.buy_price_ok;
            }
            var order = session.Player.Order.CloneEntity();

            var count   = (new Share.Business()).GetBargainCount(session.Player); //剩余讲价次数
            var goodsvo = BuildGoodsVo(order, goodsmainid, type);
            return(new ASObject(BuildData(goodsvo, count, price, (int)ResultType.SUCCESS, session.Player.Vip.bargain)));
        }
Exemple #14
0
        /// <summary> 据点更改名字 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            if (!data.ContainsKey("name") || !data.ContainsKey("id"))
            {
                return(null);
            }

            var id   = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "id").Value);
            var name = data.FirstOrDefault(m => m.Key == "name").Value.ToString();

            name = CommonHelper.FilterCityName(name);

            if (Util.IsFilterWords(name))
            {
                return(CommonHelper.ErrorResult((int)ResultType.DATA_WORDS_ERROR));
            }

            var user = session.Player.User;
            var rule = Variable.BASE_RULE.FirstOrDefault(m => m.id == "32054");

            if (rule == null)
            {
                return(CommonHelper.ErrorResult(ResultType.BASE_TABLE_ERROR));
            }
            var gold = Convert.ToInt32(rule.value);

            if (user.gold < gold)
            {
                return(CommonHelper.ErrorResult(ResultType.BASE_PLAYER_GOLD_ERROR));
            }
            //name = name + "城";
            if (IsExistByName(name))
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_NAME_EXIST));
            }
            var city = session.Player.War.City;

            if (city == null)
            {
                return(CommonHelper.ErrorResult(ResultType.NO_DATA));
            }
            if (city.base_id != id)
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_CITY_NOEXIST));
            }
            // var city = tg_war_city.GetEntityByBaseId(id);
            city.name = name;
            city.Update();
            Common.GetInstance().UpdateGold(user.id, gold, (int)WarCommand.WAR_UPDATE_CITY_NAME);
            var temp = view_war_city.GetEntityById(city.id);

            //var count = tg_war_role.GetRoleCountByCityId(id);
            (new Share.War()).SendCityBuild(temp);
            return(Common.GetInstance().BulidData(temp, (int)WarCityCampType.OWN));
        }
Exemple #15
0
        //private static ROLE_TITLE_LOAD ObjInstance;

        ///// <summary>ROLE_TITLE_LOAD单体模式</summary>
        //public static ROLE_TITLE_LOAD GetInstance()
        //{
        //    return ObjInstance ?? (ObjInstance = new ROLE_TITLE_LOAD());
        //}

        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            try
            {
#if DEBUG
                XTrace.WriteLine("{0}:{1}", "ROLE_TITLE_LOAD", "称号装备");
#endif
                if (!data.ContainsKey("titleId") || !data.ContainsKey("roleId"))
                {
                    return(null);                                                                 //验证前端数据
                }
                var tid = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "titleId").Value.ToString());
                var rid = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "roleId").Value.ToString());

                var title = tg_role_title.GetTitleByTid(tid, session.Player.User.id);
                var role  = tg_role.GetEntityByIdUid(rid, session.Player.User.id); //tg_role.GetEntityById(rid);
                if (title == null || role == null)
                {
                    return(Error((int)ResultType.DATABASE_ERROR));
                }
                if (title.user_id != session.Player.User.id || role.user_id != session.Player.User.id)
                {
                    return(null);                                                                                      //验证玩家数据,防止发包
                }
                if (title.title_state == (int)TitleState.NOT_REACHED)
                {
                    return(Error((int)ResultType.TITLE_NO_REACHED));                                                   //验证称号达成状态
                }
                var btitle = Variable.BASE_ROLETITLE.FirstOrDefault(m => m.id == title.title_id);
                if (btitle == null)
                {
                    return(Error((int)ResultType.BASE_TABLE_ERROR));                  //验证基表信息
                }
                if (!CheckRepeatTitle(role, tid))
                {
                    return(Error((int)ResultType.TITLE_HAS_LOAD));                                //验证同一称号已穿戴
                }
                if (Common.GetInstance().Count(title) >= title.title_count)
                {
                    return(Error((int)ResultType.TITLE_PACKET_FULL));                                                          //验证称号格子是否已满
                }
                //更新称号格子信息
                title = UpdateNewTitle(title, rid);
                if (Common.GetInstance().Count(title) == 1)
                {
                    title.title_load_state = (int)LoadStateType.LOAD;                                            //穿戴后称号的状态
                }
                return(CheckRole(session, role, btitle, title));
            }
            catch (Exception ex)
            {
                XTrace.WriteException(ex);
                return(new ASObject());
            }
        }
Exemple #16
0
        /// <summary>进入战斗</summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            XTrace.WriteLine("{0}:{1}", "FIGHT_PERSONAL_ENTER", "进入战斗");

            var type   = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "type").Value);
            var npcid  = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "npc").Value);
            var result = GetResult(session, npcid, type, 0);  //战斗处理结果

            return(result != ResultType.SUCCESS ? new ASObject(BuildData((int)result, null)) :
                   new ASObject(BuildData((int)ResultType.SUCCESS, vo)));
        }
Exemple #17
0
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            try
            {
#if DEBUG
                XTrace.WriteLine("{0}:{1}", "CHATS_TOWER_TEST", "爬塔测试指令");
#endif
                var site   = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "site").Value.ToString());
                var count  = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "count").Value.ToString());
                var player = session.Player.CloneEntity();

                var rule = Variable.BASE_RULE.FirstOrDefault(m => m.id == "9009");
                if (rule == null)
                {
                    return(Result((int)ResultType.BASE_TABLE_ERROR));                   //验证基表信息
                }
                if (site < 1)
                {
                    site = 1;
                }
                if (site > Convert.ToInt32(rule.value))
                {
                    site = Convert.ToInt32(rule.value);                                        //塔层信息错误改为默认塔层
                }
                var tower = tg_duplicate_checkpoint.GetEntityByUserId(player.User.id);
                if (tower != null)      //更新更改的爬塔信息
                {
                    if (!UpdateTower(tower, site))
                    {
                        return(Result((int)ResultType.DATABASE_ERROR));
                    }
                }
                else
                {
                    if (!InsertTower(player.User.id, site))
                    {
                        Result((int)ResultType.DATABASE_ERROR);
                    }
                }
                player.UserExtend.challenge_count = count;
                if (!tg_user_extend.GetUpdate(player.UserExtend))
                {
                    return(Result((int)ResultType.DATABASE_ERROR));
                }
                session.Player = player;
                return(new ASObject(Result((int)ResultType.SUCCESS)));
            }
            catch (Exception ex)
            {
                XTrace.WriteException(ex);
                return(new ASObject());
            }
        }
Exemple #18
0
        /// <summary>提取附件</summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "MESSAGE_ATTACHMENT", "提取附件");
#endif
#if DEBUG
            XTrace.WriteLine("{0} {1} 剩余格子 {2}", "背包状态", session.Player.Bag.BagIsFull.ToString(), session.Player.Bag.Surplus);
#endif
            var type = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "type").Value);
            if (type == (int)MessageSelectType.ALL) return GetAllAttachment(session);
            var id = Convert.ToInt64(data.FirstOrDefault(q => q.Key == "id").Value);
            return GetSingleAttachment(session, id);
        }
Exemple #19
0
 /// <summary>推送协议</summary>
 public ASObject CommandStart(TGGSession session, ASObject data)
 {
     try
     {
         var type = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "type").Value);
         var id   = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "id").Value);
         //var type = (int)GoodsType.TYPE_Power;
         //var id = 7010012;
         var count = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "count").Value);
         return(count < 0 ? BuildData((int)ResultType.FAIL) : HandleRequest(type, id, count, session));
     }
     catch { return(BuildData((int)ResultType.FAIL)); }
 }
Exemple #20
0
        /// <summary>响应邀请</summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            try
            {
# if DEBUG
                XTrace.WriteLine("{0}:{1}", "FAMILY_INVITE_REPLY", "响应邀请");
#endif
                var state  = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "state").Value);
                var fid    = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "id").Value);
                var userid = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "userid").Value);
                var family = tg_family.GetEntityById(fid);

                if (family == null)
                {
                    return(ErrorResult((int)ResultType.FAMILY_NOEXIST));
                }
                if (session.Player.Family.fid != 0)
                {
                    return(ErrorResult((int)ResultType.FAMILY_MEMBER_EXIST));
                }

                if (state == (int)FamilyApplyType.ACCEPT)
                {
                    var base_level = Variable.BASE_RULE.FirstOrDefault(m => m.id == "18005");
                    if (base_level == null)
                    {
                        return(ErrorResult((int)ResultType.FAMILY_USERLEVEL_LACK));
                    }
                    if (session.Player.Role.Kind.role_level < Convert.ToInt32(base_level.value))
                    {
                        return(ErrorResult((int)ResultType.FAMILY_USERLEVEL_LACK));
                    }
                    return(InviteReplyProcess(family, session.Player.User.id));
                }
                if (state == (int)FamilyApplyType.REFUSE)   //推送拒绝信心给邀请人
                {
                    if (Variable.OnlinePlayer.ContainsKey(userid))
                    {
                        var sessionB = Variable.OnlinePlayer[userid] as TGGSession;
                        if (sessionB != null)
                        {
                            FAMILY_REFUSE_PUSH.GetInstance().CommandStart(sessionB);
                        }
                    }
                }
                else
                {
                    return(ErrorResult((int)ResultType.FRONT_DATA_ERROR));
                }
                return(ErrorResult((int)ResultType.SUCCESS));
            }
Exemple #21
0
        //    private static WAR_DIPLOMACY_IN _objInstance;

        //    /// <summary>WAR_DIPLOMACY_IN单体模式</summary>
        //    public static WAR_DIPLOMACY_IN GetInstance()
        //    {
        //        return _objInstance ?? (_objInstance = new WAR_DIPLOMACY_IN());
        //    }

        /// <summary> 建交 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            if (!data.ContainsKey("type") || !data.ContainsKey("id"))
            {
                return(null);
            }

            var id     = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "id").Value);   //id:[double] 据点基表id
            var type   = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "type").Value); //type:[int] 1 建交 2 同盟
            var userid = session.Player.User.id;
            var city   = (new Share.War()).GetWarCity(id);

            if (city == null)
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_CITY_NOEXIST));
            }
            var p = tg_war_partner.GetEntityByUserId(userid, city.user_id);

            switch (type)
            {
            case 1:    //type:[int] 1 建交
            {
                if (p == null)
                {
                    return(BuildData(0));
                }
                return(p.friendly >= 100 ?
                       CommonHelper.ErrorResult(ResultType.WAR_DIPLOMACY_FULL)
                            : BuildData(p.friendly));
            }

            case 2:    //type:[int] 2 同盟
            {
                if (p == null)
                {
                    return(CommonHelper.ErrorResult(ResultType.WAR_DIPLOMACY_NOTFULL));
                }
                var time = Common.GetInstance().CurrentTime();
                if (p.time < time)
                {
                    return(p.friendly < 100 ?
                           CommonHelper.ErrorResult(ResultType.WAR_DIPLOMACY_NOTFULL)
                                : BuildData(p.friendly));
                }
                return(CommonHelper.ErrorResult(ResultType.WAR_DIPLOMACY_TIME_IN));
            }

            default: { return(CommonHelper.ErrorResult(ResultType.FRONT_DATA_ERROR)); }
            }
        }
Exemple #22
0
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            var type     = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "type").Value);
            var sceneid  = Convert.ToInt64(data.FirstOrDefault(q => q.Key == "id").Value);
            var taskinfo = Variable.WorkInfo.Where(q => q.GuardSceneId == sceneid && q.GuardCamp != session.Player.User.player_camp).ToList();
            var userid   = session.Player.User.id;

            if (!taskinfo.Any())
            {
                return(new ASObject(new Dictionary <string, object> {
                    { "result", (int)ResultType.TASK_CANCLE },
                }));
            }
            ;
            if (type == 0)
            {
                var rivalid = GetFightUserId(taskinfo);
                var fight   = new Fight().GeFight(userid, rivalid, FightType.ONE_SIDE, 0, false, true);
                new Fight().Dispose();
                if (fight.Result != ResultType.SUCCESS)
                {
                    return(new ASObject(new Dictionary <string, object> {
                        { "result", (int)ResultType.FIGHT_ERROR },
                    }));
                }
            }
            if (type == 1)
            {
                var baserule = Variable.BASE_RULE.FirstOrDefault(q => q.id == "2017");
                if (baserule != null)
                {
                    var user = session.Player.User.CloneEntity();
                    if (user.coin - Convert.ToInt32(baserule.value) < 0)
                    {
                        return(new ASObject(new Dictionary <string, object> {
                            { "result", (int)ResultType.BASE_PLAYER_COIN_ERROR },
                        }));
                    }
                    user.coin -= Convert.ToInt32(baserule.value);
                    if (user.Update() == 0)
                    {
                        session.Player.User = user;
                    }
                    (new Share.User()).REWARDS_API((int)GoodsType.TYPE_COIN, session.Player.User);
                }
            }
            return(new ASObject(new Dictionary <string, object> {
                { "result", (int)ResultType.SUCCESS },
            }));
        }
Exemple #23
0
        /// <summary>执行方法</summary>
        public ASObject Execute(Int64 user_id, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "FAMILY_CREATE", "创建家族");
#endif
            var session = Variable.OnlinePlayer[user_id] as TGGSession;
            if (session == null)
            {
                return(CommonHelper.ErrorResult((int)ResultType.BASE_PLAYER_OFFLINE_ERROR));
            }
            var name   = Convert.ToString(data.FirstOrDefault(m => m.Key == "name").Value);
            var notice = Convert.ToString(data.FirstOrDefault(m => m.Key == "notice").Value);
            return(CreateFamily(name, notice, session));
        }
Exemple #24
0
        /// <summary>执行方法</summary>
        public ASObject Execute(long user_id, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "BUSINESS_PACKET_BUY", "增加货物格");
#endif
            var session = Variable.OnlinePlayer[user_id] as TGGSession;
            if (session == null)
            {
                return(CommonHelper.ErrorResult((int)ResultType.FAIL));
            }
            var id    = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "carId").Value.ToString());
            var count = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "count").Value.ToString());
            return(Logic(id, count, session));
        }
Exemple #25
0
        /// <summary>执行方法</summary>
        public ASObject Execute(long user_id, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "BUSINESS_GOODS_BUY", "交易");
#endif
            var session = Variable.OnlinePlayer[user_id] as TGGSession;
            if (session == null)
            {
                return(CommonHelper.ErrorResult((int)ResultType.FAIL));
            }
            var type  = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "type").Value);
            var count = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "count").Value);
            return(Logic(type, count, session));
        }
Exemple #26
0
        public ASObject Execute(Int64 userid, ASObject data)
        {
            try
            {
# if DEBUG
                XTrace.WriteLine("{0}:{1}", "EQUIP_BUY", "装备买");
#endif
                var session = Variable.OnlinePlayer[userid] as TGGSession;
                if (session == null)
                {
                    return(CommonHelper.ErrorResult((int)ResultType.FAIL));
                }
                var baseid = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "id").Value);
                var count  = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "count").Value);

                if (count <= 0 || baseid == 0)
                {
                    return(ResultData((int)ResultType.FRONT_DATA_ERROR));                          //前端数据不对
                }
                var baseinfo = Variable.BASE_EQUIP.FirstOrDefault(q => q.id == baseid);
                if (baseinfo == null || baseinfo.grade != 1)
                {
                    return(ResultData((int)ResultType.BASE_TABLE_ERROR));//该装备不能购买
                }
                var user  = session.Player.User.CloneEntity();
                var price = baseinfo.buyPrice;
                if (!CheckMoney(session, price * count)) //金钱验证
                {
                    return(ResultData((int)ResultType.BASE_PLAYER_COIN_ERROR));
                }
                if (!CheckBox(session, count)) //格子数验证
                {
                    return(ResultData((int)ResultType.EQUIP_BAG_FULL));
                }
                var equiplist = new List <tg_bag>();
                var newequip  = new tg_bag();
                GetEntity(baseinfo, session.Player.User.id, newequip); //基本属性设置
                AddAtt(newequip, baseinfo);                            //根据装备类型设置属性
                for (var i = 0; i < count; i++)
                {
                    equiplist.Add(newequip.CloneEntity());
                }

                CreateLog(user.id, user.coin, baseid, count, price * count);

                var list = tg_bag.GetSaveList(equiplist); //批量插入
                SendReward(list, session);
                return(ResultData((int)ResultType.SUCCESS));
            }
Exemple #27
0
        //private static ROLE_TITLE_UNLOAD ObjInstance;

        ///// <summary>ROLE_TITLE_UNLOAD单体模式</summary>
        //public static ROLE_TITLE_UNLOAD GetInstance()
        //{
        //    return ObjInstance ?? (ObjInstance = new ROLE_TITLE_UNLOAD());
        //}

        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            try
            {
#if DEBUG
                XTrace.WriteLine("{0}:{1}", "ROLE_TITLE_UNLOAD", "称号卸载");
#endif
                if (!data.ContainsKey("roleId") || !data.ContainsKey("titleId"))
                {
                    return(null);                                                                //验证前端传递参数信息
                }
                var rid = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "roleId").Value.ToString());
                var tid = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "titleId").Value.ToString());

                var role  = tg_role.GetEntityById(rid);
                var title = tg_role_title.GetTitleByTid(tid, session.Player.User.id);
                if (role == null || title == null)
                {
                    return(Error((int)ResultType.DATABASE_ERROR));                                //验证称号信息
                }
                //验证玩家信息
                if (role.user_id != session.Player.User.id || title.user_id != session.Player.User.id)
                {
                    return(null);
                }

                //检查武将身上是否已经穿戴该称号,同时验证称号格子是否装备了该武将
                if (!CheckRole(role, tid) || !CheckTitle(title, rid))
                {
                    return(Error((int)ResultType.FRONT_DATA_ERROR));
                }
                if (title.title_load_state == (int)LoadStateType.UNLOAD)
                {
                    return(Error((int)ResultType.TITLE_UN_LOAD));                                                    //验证称号是否已经卸载
                }
                //卸载称号后更新称号格子上的武将信息
                title = DeleteRole(title, rid);

                //更新称号信息,对应处理武将信息
                return(!tg_role_title.UpdateByTitle(title) ?
                       Error((int)ResultType.DATABASE_ERROR) :
                       UpdateRole(session, role, title.title_id, title));
            }
            catch (Exception ex)
            {
                XTrace.WriteException(ex);
                return(new ASObject());
            }
        }
Exemple #28
0
        /// <summary>流派技能书使用</summary>

        public ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "PROP_GENRE_USE", "流派技能书使用");
#endif
            var rid    = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "rid").Value);
            var id     = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "id").Value);
            var userid = session.Player.User.id;
            var role   = tg_role.GetEntityById(rid);
            var prop   = tg_bag.GetEntityById(id);
            if (role == null || prop == null)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)ResultType.FRONT_DATA_ERROR)));
            }
            if (prop.count < 1)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)ResultType.PROP_LACK))); //数量的判断
            }
            var baseProp = Common.GetInstance().GetBaseProp(prop.base_id);                       //道具基表数据
            var result   = IsBaseData(baseProp, role.role_level);
            if (result != ResultType.SUCCESS)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)result)));
            }

            var fskills = tg_role_fight_skill.GetRoleSkillByRid(rid);       //已学战斗技能信息
            var genres  = (new Share.Role()).LearnGenreOrNinja(fskills, role.role_genre, role.role_ninja);
            if (genres.Contains(baseProp.genre))
            {
                return(new ASObject(Common.GetInstance().BuildData((int)ResultType.PROP_GENRE_OPENED)));
            }

            var model = GetFightSkillFirst(baseProp.genre);
            if (model == null)
            {
                return(new ASObject(Common.GetInstance().BuildData((int)ResultType.BASE_TABLE_ERROR)));
            }
            var skill = BuildSkill(role.id, baseProp.genre, model); //组装流派战斗技能

            prop.count--;                                           //扣除道具
            skill.Insert();                                         //插入数据库
            genres.Add(baseProp.genre);                             //增加流派

            (new Bag()).BuildReward(userid, new List <tg_bag>()
            {
                prop
            });
            return(new ASObject(BuildData((int)ResultType.SUCCESS, role.id, genres)));
        }
Exemple #29
0
        // private ConcurrentDictionary<Int64, bool> dic = new ConcurrentDictionary<long, bool>();

        /// <summary>
        /// 说明:任务步骤用 类型_类型id_完成值来表示。
        /// 例如1_200001_1, 1表示任务类型对话,200001表示npc的id,对话类型中0表示未完成,1表示完成
        /// 多步任务用|来分割,例如两步对话任务为 1_200001_1|1_200002_1.
        /// </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "TASK_FINISH", "完成任务");
#endif
#if DEBUG
            var sw = Stopwatch.StartNew();
#endif
            //type:0表示接受任务,1表示完成任务 2 表示提交任务

            var id     = Convert.ToInt64(data.FirstOrDefault(q => q.Key == "task").Value);
            var type   = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "type").Value);
            var npc    = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "npcId").Value);
            var mytask = session.MainTask.CloneEntity();
            if (mytask == null || mytask.id != id || mytask.task_type != (int)TaskType.MAIN_TASK)
            {
                return(new ASObject(BulidReturnData((int)ResultType.BASE_TABLE_ERROR, null)));
            }


            var basetask = Variable.BASE_TASKMAIN.FirstOrDefault(q => q.id == mytask.task_id); //基表数据
            if (basetask == null)
            {
                return(new ASObject(BulidReturnData((int)ResultType.TASK_NO_MAINTASK, null)));
            }
            var baseindex = Variable.BASE_TASKMAIN.IndexOf(basetask);

            if (type == 0) //接收任务验证
            {
                return(ReceiveTaskCheck(mytask, basetask.acceptId, npc));
            }
            if (type == 1) //完成任务验证
            {
                return(FinishTaskCheck(mytask, basetask.stepCondition, npc));
            }
            if (mytask.task_state == (int)TaskStateType.TYPE_FINISHED)
            {
                return(new ASObject(BulidReturnData((int)ResultType.TASK_FINISHED, mytask)));
            }
            if (mytask.task_state != (int)TaskStateType.TYPE_REWARD)  //验证任务是否完成
            {
                return(new ASObject(BulidReturnData((int)ResultType.TASK_MAINTASK_UNFINISHED, null)));
            }
#if DEBUG
            sw.Stop();
            XTrace.WriteLine("指令 {1} 运行总耗时:{0} 毫秒", sw.ElapsedMilliseconds.ToString(), GetType().Namespace);
#endif
            return(SubmitTaskCheck(mytask, npc, baseindex)); //验证提交任务
        }
Exemple #30
0
        /// <summary>执行方法</summary>
        public ASObject Execute(Int64 user_id, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "EQUIP_SPIRIT_LOCK", "装备铸魂解锁");
#endif
            var session = Variable.OnlinePlayer[user_id] as TGGSession;
            if (session == null)
            {
                return(CommonHelper.ErrorResult((int)ResultType.BASE_PLAYER_OFFLINE_ERROR));
            }
            var equipid  = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "id").Value);
            var type     = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "type").Value);
            var location = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "location").Value);
            return(SpiritLockLogic(equipid, type, location, session));
        }