/// <summary>记录金币</summary> private void RecordGold(tg_user user, int gold, int value) { //记录元宝花费日志 var logdata = string.Format("{0}_{1}_{2}_{3}", "Gold", gold, value, user.gold); (new Share.Log()).WriteLog(user.id, (int)LogType.Use, (int)ModuleNumber.ROLETRAIN, (int)RoleTrainCommand.TRAIN_TEA_INSIGHT, logdata); }
/// <summary> /// 验证金钱 /// </summary> /// <param name="user">用户实体</param> /// <param name="session"></param> /// <returns></returns> private bool CheckCoin(tg_user user, TGGSession session) { var baseinfo = Variable.BASE_RULE.FirstOrDefault(q => q.id == "32119"); if (baseinfo == null) { return(false); } //消耗的金钱 var cost = Convert.ToInt32(baseinfo.value); if (user.coin < cost) { return(false); } var coin = user.coin; user.coin -= cost; user.Update(); session.Player.User.coin = user.coin; (new Share.User()).REWARDS_API((int)GoodsType.TYPE_COIN, user); //日志 var logdata = string.Format("{0}_{1}_{2}_{3}", "Coin", coin, cost, user.coin); (new Share.Log()).WriteLog(user.id, (int)LogType.Use, (int)ModuleNumber.WAR, (int)WarCommand.WAR_DEFENCE_PLAN_OPEN, "合战", "解锁防守方案", "金钱", (int)GoodsType.TYPE_COIN, cost, user.coin, logdata); return(true); }
/// <summary>初始用户扩展信息</summary> public tg_user_extend InitUserExtend(tg_user user) { if (user == null || user.id <= 0) { return(null); } var _b = Variable.BASE_RULE.FirstOrDefault(q => q.id == "4001"); var _t = Variable.BASE_RULE.FirstOrDefault(q => q.id == "17001"); var _s = Variable.BASE_RULE.FirstOrDefault(q => q.id == "9002"); if (_b == null || _t == null || _s == null) { return(new tg_user_extend()); } var base_bag = Convert.ToInt32(_b.value); var base_train_bar = Convert.ToInt32(_t.value); var shot_count = Convert.ToInt32(_s.value); var model = new tg_user_extend { user_id = user.id, bag_count = base_bag, train_bar = base_train_bar, shot_count = shot_count }; model.Save(); return(model); }
/// <summary>处理喝茶信息</summary> private ASObject TeaInfo(int nspirit, tg_user user, int spirit) { var session = Variable.OnlinePlayer[user.id] as TGGSession; if (session == null) { return(Error((int)ResultType.BASE_PLAYER_OFFLINE_ERROR)); } var uspirit = user.spirit; user.spirit = tg_user.IsSpiritMax(user.spirit, spirit); //玩家喝茶获得的魂 user.Update(); session.Player.User = user; (new Share.User()).REWARDS_API((int)GoodsType.TYPE_SPIRIT, user); //推送魂更新 (new Share.Title()).IsTitleAcquire(user.id, (int)TitleGetType.USE_TEA_TABLE); //判断称号信息 //记录获得魂日志 var logdata = string.Format("{0}_{1}_{2}_{3}", "S", uspirit, spirit, user.spirit); (new Share.Log()).WriteLog(user.id, (int)LogType.Get, (int)ModuleNumber.ROLETRAIN, (int)RoleTrainCommand.TRAIN_TEA_INSIGHT, logdata); return(new ASObject(TeaBulidData((int)ResultType.SUCCESS, spirit, nspirit))); }
/// <summary>创建武将</summary> private RoleItem CreateRoleItem(BaseRoleInfo baserole, tg_user user, BaseIdentity baseIdentity) { var role = new tg_role { role_id = baserole.id, role_identity = baseIdentity.id, base_captain = baserole.captain, base_force = baserole.force, base_brains = baserole.brains, base_charm = baserole.charm, base_govern = baserole.govern, power = baserole.power, att_life = baserole.life, user_id = user.id, role_state = (int)RoleStateType.IDLE, role_level = 1, }; return(new RoleItem() { Kind = role, LifeSkill = new tg_role_life_skill(), FightSkill = new List <tg_role_fight_skill>(), }); }
/// <summary>PlayerDetailed 实体转换</summary> public static PlayerDetailed ToPlayerDetailed(tg_user model, tg_role role, List <String> areas, int loginstate, int cars, int viplevel, string identity, string vocation, string office) { var player = new PlayerDetailed() { id = model.id, rid = role.id, code = model.user_code, name = model.player_name, vocation = vocation, login_state = loginstate == 0 ? "不在线" : "在线", vip = viplevel, identity = identity, level = role.role_level, office = office, gold = model.gold, coin = model.coin, spirit = model.spirit, fame = model.fame, merit = model.merit, honor = role.total_honor, cars = cars, Areas = areas, }; return(player); }
/// <summary> 金钱消耗验证 </summary> private bool CheckMoney(tg_user user, int costgold) { #if DEBUG XTrace.WriteLine("{0}玩家越狱前的金币{1}", user.player_name, user.gold); #endif var leftgold = user.gold - costgold; var userid = user.id; if (leftgold < 0) { return(false); } user.gold = Convert.ToInt32(leftgold); user.Update(); if (!Variable.OnlinePlayer.ContainsKey(userid)) { return(false); } var session = Variable.OnlinePlayer[userid] as TGGSession; if (session == null) { return(false); } session.Player.User = user; #if DEBUG XTrace.WriteLine("{0}玩家越狱后的金币{1}", session.Player.User.player_name, session.Player.User.gold); #endif log.GoldInsertLog(costgold, user.id, (int)ModuleNumber.PRISON, (int)PrisonCommand.BREAK);//金钱消耗记录 (new Share.User()).REWARDS_API((int)GoodsType.TYPE_GOLD, session.Player.User); return(true); }
/// <summary>转换成前端需要的Vo数据</summary> public UserInfoVo ConvertUser(tg_user user) { var family = tg_family_member.GetEntityById(user.id) ?? new tg_family_member { fid = 0 }; var role = tg_role.GetRoreByUserid(user.id, user.role_id); var model = new UserInfoVo { id = user.id, playerName = user.player_name, sex = user.player_sex, vocation = user.player_vocation, area = user.player_influence, camp = user.player_camp, positionId = user.player_position, spirit = user.spirit, fame = user.fame, growAddCount = role.att_points, gold = user.gold, coin = user.coin, rmb = user.rmb, coupon = user.coupon, familyId = (int)family.id, }; return(model); }
/// <summary>获取玩家信息</summary> public Player GetPlayer(tg_user user) { var user_extend = tg_user_extend.GetEntityByUserId(user.id) ?? InitUserExtend(user);//还未完成 //防沉迷 var fcm = 0; var ut = tg_user_temp.GetFindEntity(user.user_code); if (ut != null) { fcm = ut.isAdult; } user_extend.fcm = fcm; tg_user_extend.Save(user_extend); var scene = view_scene_user.GetSceneByUserid(user.id); var bag = InitBag(user, user_extend); var family = tg_family_member.GetEntityById(user.id) ?? new tg_family_member { fid = 0 }; var blacklist = tg_friends.GetEntityListByUserIdAndState(user.id).Select(m => m.friend_id).ToList(); var entity = new RoleItem { Kind = tg_role.GetEntityByUserId(user.id) ?? InitRole(user) }; entity.LifeSkill = tg_role_life_skill.GetFindByRid(entity.Kind.id) ?? InitLifeSkill(entity.Kind.id); entity.FightSkill = tg_role_fight_skill.GetRoleSkillByRid(entity.Kind.id); var area = tg_user_area.GetEntityByUserId(user.id).ToList(); if (!area.Any()) { area = InitArea(user.id); } var vip = tg_user_vip.GetEntityByUserId(user.id) ?? InitVip(user.id); var daminglog = tg_daming_log.GetEntityByUserId(user.id); if (!daminglog.Any()) { daminglog = InitDamingLog(user.id); } var player = new Player { User = user, UserExtend = user_extend, Scene = scene, Role = entity, Bag = bag, Family = family, BlackList = blacklist, BusinessArea = area, Vip = vip, DamingLog = daminglog, }; player.moduleIds = GetUserOpenModule(player.User.id); return(player); }
/// <summary> 金钱消耗验证 </summary> private bool CheckMoney(tg_user user, TGGSession session) { var baserule = Variable.BASE_RULE.FirstOrDefault(q => q.id == "25005"); if (baserule == null) { return(false); } var costcoin = Convert.ToInt64(baserule.value); #if DEBUG XTrace.WriteLine("{0}玩家留言前的铜币{1}", session.Player.User.player_name, session.Player.User.coin); #endif var leftcoin = user.coin - costcoin; if (leftcoin < 0) { return(false); } user.coin = leftcoin; user.Update(); session.Player.User = user; #if DEBUG XTrace.WriteLine("{0}玩家留言后的铜币{1}", session.Player.User.player_name, session.Player.User.coin); #endif (new Share.User()).REWARDS_API((int)GoodsType.TYPE_COIN, session.Player.User); return(true); }
/// <summary>构建奖励更新数据</summary> /// <param name="list">物品类型集合</param> /// <param name="model">玩家</param> /// <param name="increases">新增物品对象集合</param> /// <param name="decreases">更新物品对象集合</param> /// <param name="delete">删除物品ID集合</param> private ASObject RewardsASObject(IEnumerable <int> list, tg_user model, List <ASObject> increases, List <ASObject> decreases, List <double> delete) { var dic = new Dictionary <string, object>(); var aso_list = list.Select(item => AMFConvert.ToASObject(BulidReward(item, model, increases, decreases, delete))).ToList(); dic.Add("rewards", aso_list); return(new ASObject(dic)); }
public FightUserEntity() { user = new tg_user(); yin = new YinEntity(); attackRole = new RoleEntity(); personal = new tg_fight_personal(); roleEntity = new List <RoleEntity>(); }
/// <summary> 获取奖励 </summary> /// <param name="user"></param> /// <param name="str"></param> /// <param name="list"></param> /// <returns></returns> private tg_user GetReward(tg_user user, string str, ref List <RewardVo> list) { var coin = 0; var ids = new List <int>(); foreach (var item in str.Split('|')) { var array = item.Split('_'); if (array.Length != 2) { continue; } var values = Convert.ToInt32(array[1]); switch (Convert.ToInt32(array[0])) { case 1: { const int type = (int)GoodsType.TYPE_MERIT; ids.Add(type); user.merit += values; list.Add(new RewardVo { goodsType = type, value = values }); break; } //1:战功值_数量 case 2: { const int type = (int)GoodsType.TYPE_COIN; coin += values; user.coin = tg_user.IsCoinMax(user.coin, values); ids.Add(type); list.Add(new RewardVo { goodsType = type, value = values }); break; } //2:个人战游戏币_数量 default: { break; } } } if (!ids.Any()) { return(user); } user.Update(); (new User()).REWARDS_API(ids, user); if (coin == 0) { return(user); } var logdata = string.Format("{0}_{1}_{2}_{3}", "Coin", coin, coin, user.coin); (new Log()).WriteLog(user.id, (int)LogType.Get, (int)ModuleNumber.WAR, (int)WarCommand.WAR_COPY_ATTACK, "用户", "", "金钱", (int)GoodsType.TYPE_COIN, coin, user.coin, logdata); return(user); }
/// <summary>返回玩家自己是守护者的信息</summary> private ASObject ReturnWatchMen(tg_user user, int enemytype, int enemyid, tg_duplicate_checkpoint checkpoint, int ncount, int fcount) { var uservo = Common.GetInstance().ConvertUser(user); var aso = new ASObject(Common.GetInstance().BulidData((int)ResultType.SUCCESS, checkpoint, enemytype, enemyid, ncount, fcount, uservo, checkpoint.dekaron)); return(aso); }
/// <summary> 金钱消耗验证 </summary> private bool CheckMoney(tg_user user, int count, TGGSession session) { #if DEBUG XTrace.WriteLine("{0}玩家第{1}次刷新", session.Player.User.player_name, count); #endif if (count == 0) //第一次刷新 { var baserule = Variable.BASE_RULE.FirstOrDefault(q => q.id == "21002"); if (baserule == null) { return(false); } var costcoin = Convert.ToInt64(baserule.value); #if DEBUG XTrace.WriteLine("{0}玩家第刷新前的铜币{1}", session.Player.User.player_name, session.Player.User.coin); #endif if (user.coin < costcoin) { return(false); } user.coin -= costcoin; user.Update(); session.Player.User.coin = user.coin; #if DEBUG XTrace.WriteLine("{0}玩家第刷新后的铜币{1}", session.Player.User.player_name, session.Player.User.coin); #endif (new Share.User()).REWARDS_API((int)GoodsType.TYPE_COIN, session.Player.User); return(true); } if (count != 1) { return(false); } #if DEBUG XTrace.WriteLine("{0}玩家第刷新前的金币{1}", session.Player.User.player_name, session.Player.User.gold); #endif //第二次刷新 var baserule1 = Variable.BASE_RULE.FirstOrDefault(q => q.id == "21003"); if (baserule1 == null) { return(false); } int costgold = Convert.ToInt32(baserule1.value); if (user.gold < costgold) { return(false); } user.gold -= costgold; user.Update(); session.Player.User.gold = user.gold; #if DEBUG XTrace.WriteLine("{0}玩家第刷新后的金币{1}", session.Player.User.player_name, session.Player.User.gold); #endif log.GoldInsertLog(costgold, user.id, (int)ModuleNumber.APPRAISE, (int)AppraiseCommand.TASK_BUY); //金币消费记录 (new Share.User()).REWARDS_API((int)GoodsType.TYPE_GOLD, session.Player.User); return(true); }
/// <summary>获取玩家信息</summary> public Player GetPlayer(tg_user user, Int32 isAdult) { try { var user_extend = tg_user_extend.GetEntityByUserId(user.id) ?? InitUserExtend(user); //还未完成 user_extend.fcm = isAdult; tg_user_extend.Save(user_extend); var scene = view_scene_user.GetSceneByUserid(user.id); var bag = InitBag(user, user_extend); var family = tg_family_member.GetEntityById(user.id) ?? new tg_family_member { fid = 0 }; var blacklist = tg_friends.GetEntityListByUserIdAndState(user.id).Select(m => m.friend_id).ToList(); var entity = new RoleItem { Kind = tg_role.GetEntityByUserId(user.id) ?? InitRole(user) }; entity.LifeSkill = tg_role_life_skill.GetFindByRid(entity.Kind.id) ?? InitLifeSkill(entity.Kind.id); entity.FightSkill = tg_role_fight_skill.GetRoleSkillByRid(entity.Kind.id); var area = tg_user_area.GetEntityByUserId(user.id).ToList(); if (!area.Any()) { area = InitArea(user.id); } var vip = tg_user_vip.GetEntityByUserId(user.id) ?? InitVip(user.id); var daminglog = tg_daming_log.GetEntityByUserId(user.id); if (!daminglog.Any()) { daminglog = InitDamingLog(user.id); } var war = GetWarItem(user.id); var player = new Player { User = user, UserExtend = user_extend, Scene = scene, Role = entity, Bag = bag, Family = family, BlackList = blacklist, BusinessArea = area, Vip = vip, DamingLog = daminglog, War = war, }; player.moduleIds = GetUserOpenModule(player.User.id); return(player); } catch (Exception ex) { XTrace.WriteException(ex); return(null); } }
/// <summary>构建奖励更新数据</summary> /// <param name="goodsType">物品类型</param> /// <param name="model">玩家</param> /// <param name="increases">新增物品对象集合</param> /// <param name="decreases">更新物品对象集合</param> /// <param name="delete">删除物品ID集合</param> private ASObject RewardsASObject(int goodsType, tg_user model, List <ASObject> increases, List <ASObject> decreases, List <double> delete) { var dic = new Dictionary <string, object>(); var aso_list = new List <ASObject> { AMFConvert.ToASObject(BulidReward(goodsType, model, increases, decreases, delete)) }; dic.Add("rewards", aso_list); return(new ASObject(dic)); }
/// <summary> tg_family and user 组装InviteReceiveVo</summary> /// <param name="model">家族实体</param> /// <param name="user">用户实体</param> /// <returns>前端InviteReceiveVo</returns> public static InviteReceiveVo ToInviteReceiveVo(tg_family model, tg_user user) { return(new InviteReceiveVo() { id = model.id, familyId = (int)model.id, userName = user.player_name, familyName = model.family_name, userId = Convert.ToInt32(user.id), }); }
/// <summary> 修改玩家状态 </summary> /// <param name="user">用户信息</param> /// <param name="type">状态类型</param> /// <returns></returns> private ASObject UpdatePlayState(tg_user user, int type) { //if (!IsPosition(user)) return new ASObject(Common.GetInstance().BuildData((int)ResultType.POSITION_ERROR)); var playerdata = Variable.Activity.Siege.PlayerData.FirstOrDefault(m => m.user_id == user.id); if (playerdata == null) { return(new ASObject(Common.GetInstance().BuildData((int)ResultType.NO_DATA))); } lock (this) { playerdata.state = type; } return(new ASObject(Common.GetInstance().BuildData((int)ResultType.SUCCESS))); }
/// <summary>初始化背包数据</summary> public BagItem InitBag(tg_user user, tg_user_extend extend) { var bag = new BagItem { BagIsFull = false, Surplus = 0, }; var count = tg_bag.GetFindCount(user.id); bag.Surplus = extend.bag_count - count; bag.BagIsFull = bag.Surplus <= 0; return(bag); }
/// <summary> 组装玩家场景数据实体 </summary> public view_scene_user BuildSceneUser(tg_user user, int level) { return(new view_scene_user { player_camp = user.player_camp, model_number = (int)ModuleNumber.SIEGE, player_name = user.player_name, player_sex = user.player_sex, player_vocation = user.player_vocation, role_level = level, user_id = user.id, }); }
/// <summary> /// 获取能加的声望 /// </summary> /// <param name="user"></param> /// <param name="receive">领取的金钱</param> private Int64 GetFame(tg_user user, int fame) { var _total_false = user.fame + fame; var poor = _total_false - Variable.MAX_FAME; if (!(poor > 0)) { return(fame); } var use = fame - poor; return(use < 0 ? 0 : use); }
/// <summary>获取上限值</summary> public BaseRule GetBaseRule(tg_user user, int roleid) { var baserule = new BaseRule(); if (roleid == user.role_id) { baserule = Variable.BASE_RULE.FirstOrDefault(m => m.id == "7013"); } else { baserule = Variable.BASE_RULE.FirstOrDefault(m => m.id == "7019"); } return(baserule); }
/// <summary>获取可以锻炼的加成值</summary> public double GetCanAtt(tg_user user, tg_role role, int attribute, BaseTrain basetrain, int count) { count = basetrain.count * count; var base_rule = GetBaseRule(user, role.role_id); if (base_rule == null) { return(0); } var role_att = GetTrainAtt(role, attribute); var att = GetAtt(role_att, count, base_rule); return(att); }
/// <summary>组织物品跟新数据</summary> /// <param name="model">玩家</param> /// <param name="goodsType">物品类型</param> /// <param name="increases">新增物品对象集合</param> /// <param name="decreases">更新物品对象集合</param> /// <param name="delete">删除物品ID集合</param> /// <returns></returns> private RewardVo BulidReward(int goodsType, tg_user model, List <ASObject> increases, List <ASObject> decreases, List <double> delete) { var reward = new RewardVo(); switch (goodsType) { #region case (int)GoodsType.TYPE_COIN: { reward = new RewardVo { goodsType = goodsType, value = model.coin }; break; } case (int)GoodsType.TYPE_COUPON: { reward = new RewardVo { goodsType = goodsType, value = model.coupon }; break; } case (int)GoodsType.TYPE_GOLD: { reward = new RewardVo { goodsType = goodsType, value = model.gold }; break; } case (int)GoodsType.TYPE_RMB: { reward = new RewardVo { goodsType = goodsType, value = model.rmb, }; break; } case (int)GoodsType.TYPE_PROP: { reward = new RewardVo { goodsType = goodsType, increases = increases, decreases = decreases }; break; } case (int)GoodsType.TYPE_EQUIP: { reward = new RewardVo { goodsType = goodsType, increases = increases, decreases = decreases }; break; } case (int)GoodsType.TYPE_SPIRIT: { reward = new RewardVo { goodsType = goodsType, value = model.spirit }; break; } case (int)GoodsType.TYPE_FAME: { reward = new RewardVo { goodsType = goodsType, value = model.fame }; break; } case (int)GoodsType.TYPE_DONATE: { reward = new RewardVo { goodsType = goodsType, value = model.donate }; break; } case (int)GoodsType.TYPE_MERIT: { reward = new RewardVo { goodsType = goodsType, value = model.merit }; break; } #endregion } return(reward); }
/// <summary>向用户推送更新</summary> public void RewardsToUser(tg_user user, int type) { if (!Variable.OnlinePlayer.ContainsKey(user.id)) { return; } var session = Variable.OnlinePlayer[user.id] as TGGSession; if (session == null) { return; } session.Player.User = user; (new User()).REWARDS_API(type, session.Player.User); }
/// <summary>用户金钱判断</summary> private bool UserResource(int cost, ref tg_user user) { var _gold = user.gold; if (user.gold > cost) { var gold = user.gold - cost; user.gold = gold; //日志 var logdata = string.Format("{0}_{1}_{2}_{3}", "G", _gold, cost, user.gold); (new Share.Log()).WriteLog(user.id, (int)LogType.Use, (int)ModuleNumber.DUPLICATE, (int)DuplicateCommand.TOWER_CHECKPOINT_NPC_REFRESH, logdata); return(true); } return(false); }
private List<RewardVo> GetReward(tg_user model, IEnumerable<int> list) { var rv = new List<RewardVo>(); foreach (var type in list) { var reward = new RewardVo(); switch (type) { #region case (int)GoodsType.TYPE_COIN: { reward = new RewardVo { goodsType = type, value = model.coin }; break; } case (int)GoodsType.TYPE_COUPON: { reward = new RewardVo { goodsType = type, value = model.coupon }; break; } case (int)GoodsType.TYPE_GOLD: { reward = new RewardVo { goodsType = type, value = model.gold }; break; } case (int)GoodsType.TYPE_RMB: { reward = new RewardVo { goodsType = type, value = model.rmb, }; break; } case (int)GoodsType.TYPE_SPIRIT: { reward = new RewardVo { goodsType = type, value = model.spirit }; break; } case (int)GoodsType.TYPE_FAME: { reward = new RewardVo { goodsType = type, value = model.fame }; break; } #endregion } rv.Add(reward); } return rv; }
/// <summary> /// 用户金币保存并推送 /// </summary> private void GoldSaveAndSend(tg_user user, Int32 cost, Int64 userid) { user.gold -= cost; user.Save(); if (!Variable.OnlinePlayer.ContainsKey(userid)) { return; } var session = Variable.OnlinePlayer[userid] as TGGSession; if (session == null) { return; } session.Player.User.gold = user.gold; new Share.User().REWARDS_API((int)GoodsType.TYPE_GOLD, user); }
/// <summary> /// 用户金币保存并推送 /// </summary> private void GoldSaveAndSend(tg_user user, BaseBuyPower baseinfo, Int64 userid) { user.gold -= baseinfo.gold; user.Save(); if (!Variable.OnlinePlayer.ContainsKey(userid)) { return; } var session = Variable.OnlinePlayer[userid] as TGGSession; if (session == null) { return; } session.Player.User = user; Common.GetInstance().RewardsToUser(session, user, (int)GoodsType.TYPE_GOLD); }