/// <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))); }
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()); } }
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()); } }
//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)); }
/// <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)); }
/// <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))); }
/// <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))); }
//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()); }
/// <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))); }
/// <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)); }
/// <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)); }
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)))); }
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))); }
/// <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)); }
//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()); } }
/// <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))); }
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()); } }
/// <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); }
/// <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)); } }
/// <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)); }
// 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)); } } }
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 }, })); }
/// <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)); }
/// <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)); }
/// <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)); }
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)); }
//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()); } }
/// <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))); }
// 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)); //验证提交任务 }
/// <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)); }