//处理服务器收到的信息数据,返回gameuser信息 public static GameUser InfoDataDeal(MySQLCtrl mySQLCtrl, Socket socket, string infoStr) { string[] strTemp = DataCtrl.SegmentData(infoStr); GameUser gameuser = new GameUser(); switch (strTemp[0]) { //收到注册数据 case "0": string[] infos = DataCtrl.SegmentData(infoStr.Substring(2)); if (mySQLCtrl.IsExistInDb(infos[0])) { gameuser.Status = "0|0|0|注册邮箱已存在|"; return gameuser; } if (mySQLCtrl.IsNickNameExistInDb(infos[1])) { gameuser.Status = "0|0|0|注册昵称已存在|"; return gameuser; } RegisterDeal(mySQLCtrl, socket, infos, out gameuser); return gameuser; //收到登陆数据 case "1": string[] loadInfo = DataCtrl.SegmentData(infoStr.Substring(2)); if (!mySQLCtrl.IsExistInDb(loadInfo[0])) { gameuser.Status = "0|1|0|登录邮箱未注册|"; return gameuser; } SignDeal(mySQLCtrl, socket, loadInfo, out gameuser); return gameuser; default: return null; } }
public override bool TakeAction() { int sportsIndex; if (int.TryParse(userSportsID, out sportsIndex)) { var tempList = ContextUser.GetSportsCombat(); if (tempList.Count > 0 && sportsIndex < tempList.Count) { sportsIndex = MathUtils.Addition(sportsIndex, 1); _uSportsCombat = tempList[tempList.Count - sportsIndex] ?? new SportsCombat(); _combatProcessList = _uSportsCombat.CombatProcess ?? new CombatProcessContainer(); _userTalPriority = CombatHelper.TotalPriorityNum(ContextUser.UserID, 0); if (_combatProcessList.DefenseList.Count > 0) { _npcTalPriority = CombatHelper.TotalPriorityNum(_combatProcessList.DefenseList[0].UserID, 0); } } } else if (!string.IsNullOrEmpty(toUserID)) { UserHelper.ChechDailyRestrain(ContextUser.UserID); if (ContextUser.UserID == toUserID) { ErrorCode = LanguageManager.GetLang().ErrorCode; return(false); } if (GetChallGeNum(ContextUser.UserID) <= 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St5107_ChallGeNumFull; return(false); } toGameUser = UserCacheGlobal.LoadOffline(toUserID); if (ContextUser.UseMagicID == 0 || toGameUser == null || toGameUser.UseMagicID == 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St4004_NoUseMagic; return(false); } RankingHelper.SportSRewardGain(toUserID, toGameUser.RankID); //被挑战者的竞技排名 //todo 竞技场冷却时间清除 //var userQueueCache = new PersonalCacheStruct<UserQueue>(); //var queueArray = userQueueCache.FindAll(Uid, m => m.QueueType == QueueType.JingJiTiaoZhan); //if (queueArray.Count > 0 && queueArray[0].DoRefresh() > 0) //{ // ErrorCode = LanguageManager.GetLang().ErrorCode; // ErrorInfo = LanguageManager.GetLang().St5107_Colding; // return false; //} //if (queueArray.Count > 0) //{ // var userQueue = queueArray[0]; // userQueue.ColdTime = codeTime; // userQueue.TotalColdTime = codeTime; // userQueue.Timing = DateTime.Now; //} //else //{ // UserQueue queue = new UserQueue() // { // QueueID = Guid.NewGuid().ToString(), // QueueType = QueueType.JingJiTiaoZhan, // QueueName = QueueType.JingJiTiaoZhan.ToString(), // UserID = ContextUser.UserID, // ColdTime = codeTime, // IsSuspend = false, // TotalColdTime = codeTime, // Timing = DateTime.Now // }; // userQueueCache.Add(queue); // //queue.Append(); //} //次数限制修改 int sportNum = 0; UserDailyRestrain dailyRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(ContextUser.UserID); if (dailyRestrain != null) { sportNum = MathUtils.Addition(dailyRestrain.Funtion9, 1, int.MaxValue); dailyRestrain.Funtion9 = sportNum; //dailyRestrain.Update(); } else { sportNum = 1; } TriggerSportCombat(ContextUser, toGameUser, sportNum, ref sportsPrizeStr, userMail); var tempList = ContextUser.GetSportsCombat(); if (tempList.Count > 0) { _uSportsCombat = tempList[tempList.Count - 1] ?? new SportsCombat(); _combatProcessList = _uSportsCombat.CombatProcess ?? new CombatProcessContainer(); } //日常任务-竞技 TaskHelper.TriggerDailyTask(Uid, 4006); _userTalPriority = CombatHelper.TotalPriorityNum(ContextUser.UserID, 0); _npcTalPriority = CombatHelper.TotalPriorityNum(toUserID, 0); } else { ErrorCode = LanguageManager.GetLang().ErrorCode; return(false); } userMail.GameCoin = _uSportsCombat.RewardGoin; userMail.Obtion = _uSportsCombat.RewardObtian; var tjxMailService = new TjxMailService(toGameUser); tjxMailService.Send(userMail); _selfAbilityEffectList = UserAbilityHelper.GetSelfAbilityEffectList(ContextUser.UserID, 0); _defSelfAbilityEffectList = UserAbilityHelper.GetSelfAbilityEffectList(toUserID, 1); _selfAbilityEffectList.AddRange(_defSelfAbilityEffectList); return(true); }
static void InitMall(GameUser user) { var examquest = new DemoExamQuestion(user.UserId); examquest.DoAnswer(); }
//处理注册数据 private static bool RegisterDeal(MySQLCtrl mySQLCtrl, Socket socket, string[] infos, out GameUser gameuser) { if (mySQLCtrl.InsertToDb(infos[0], infos[1], infos[2], infos[3])) { gameuser = new GameUser(infos[0], infos[1], infos[2], infos[3], "0"); gameuser.Status = "0|0|1|"; return true; } gameuser = null; gameuser.Status = "0|0|0|注册失败,请重试|"; return false; }
/// <summary> ///在citadelsdb的GameUser表中依靠邮箱查询 /// </summary> /// <param name="mail"></param> /// <returns></returns> public GameUser SelecInDb(string mail) { GameUser gameUser = new GameUser(); MySqlCmd.CommandText = String.Format("select* from GameUser where GameUser_Mail='{0}'", mail); MySqlCmd.Connection = MySqlConnection; MySqlDataReader reader = MySqlCmd.ExecuteReader(); while (reader.Read()) { if (reader.HasRows) { gameUser = new GameUser(reader.GetString(1), reader.GetString(2), reader.GetString(3), reader.GetString(4), reader.GetString(5)); } } reader.Close(); return gameUser; }
public override bool UserLeft(GameUser user, bool voluntarily) { user.CanVote = user.CanChooseCards = false; if (!Votes.ContainsKey(user.Guid)) return !CardsetOrder.Contains(user); if (Votes[user.Guid] == null) Votes.Remove(user.Guid); SelectWinner(); return true; }
void OnEnable() { user = (GameUser)ParseUser.CurrentUser; title.text = "Welcome " + user.PlayerName; }
private void mapper(GameUser gameUsers, GameUserViewModel viewModel) { gameUsers.UserName = viewModel.UserName; gameUsers.Password = viewModel.Password; }
public static bool Add(int UID, int playerID, Connection userCon) { GameUser gUser = new GameUser(UID, playerID, userCon); return(gameUser.Add(UID, playerID, gUser)); }
public void Do(IDictionary <string, object> context) { var userId = context["userId"].ToString(); if (userId != string.Empty) { var currentGameQueue = this.gameRepository.GetGameQueue(this.CurrentGameQueueId); var user = this.userRepository.GetUser(userId); var gameUser = new GameUser { UserId = user.Id, UserName = user.DisplayName }; // Create/Update gameQueue blob if (currentGameQueue == null || currentGameQueue.Status != QueueStatus.Waiting) { this.CurrentGameQueueId = Guid.NewGuid(); // Create game queue currentGameQueue = new GameQueue { Id = this.CurrentGameQueueId, Users = new List <GameUser> { gameUser }, Status = QueueStatus.Waiting, GameId = Guid.Empty }; } else if (!currentGameQueue.Users.Any(u => u.UserId == gameUser.UserId)) { currentGameQueue.Users.Add(gameUser); } if (currentGameQueue.Users.Count >= this.maxNumberOfPlayersPerGame) { // Create game var game = new Game { Id = Guid.NewGuid(), Users = currentGameQueue.Users, ActiveUser = currentGameQueue.Users.First().UserId, Status = GameStatus.Waiting, Seed = new Random().Next(10000, int.MaxValue) }; currentGameQueue.Status = QueueStatus.Ready; currentGameQueue.GameId = game.Id; this.gameRepository.AddOrUpdateGame(game); } var userSession = new UserSession { UserId = userId, ActiveGameQueueId = currentGameQueue.Id }; this.gameRepository.AddOrUpdateGameQueue(currentGameQueue); this.userRepository.AddOrUpdateUserSession(userSession); } }
protected override bool CreateUserRole(out IUser user) { user = null; var cacheSet = new PersonalCacheStruct <GameUser>(); GameUser gameUser; if (cacheSet.TryFindKey(UserId + "", out gameUser) == LoadingStatus.Success) { if (gameUser == null) { gameUser = new GameUser { UserId = UserId, PassportId = Pid, RetailId = RetailID, NickName = Pid }; cacheSet.Add(gameUser); } var tbuserCache = new GameDataCacheSet <tb_User>(); if (gameUser.CurrRoleId == 0) { tb_User _tempuser = tbuserCache.FindKey(UserId); if (_tempuser == null) {//自动注册同个角色到游戏库中 // VALUES(2, 'j222222', '', 1000.0000, 100000.0000, '', '', '', 'wechatname', '114.114.114.114', 'desc', 0, 0, 1, 1380002, 1000) int genCodeUserId = GameServerManager.GetGenerateUserId(UserId); _tempuser = new tb_User() { Desc = "desc", diamond = 0, IP = Current.RemoteAddress == null ? string.Empty : Current.RemoteAddress, isRobot = 0, LastLotinTime1 = "", LastLotinTime2 = "", wechatName = _createData.roleName == "" ? UserId + "wechat" : _createData.NickName, RegTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), RobotLevel = 0, Status = 0, UserID = UserId, UserMaxMoney = 20 * 10000 * 10000, UserMoney = 2000, //t_anythingList.GetInt("init_gold"), UserName = _createData.roleName, UserPassword = "", Sex = _createData._Sex, wechatHeadIcon = _createData.HeadID, }; tbuserCache.Add(_tempuser); //InitiData.InitiRoleData(UserId); //触发邀请玩家任务计数 //if (genCodeUserId > 0) TaskHelper.SetTaskCount(genCodeUserId, TaskTypeEnum.User); } gameUser.CurrRoleId = UserId; sc_create _create = new sc_create() { fn = "sc_create", result = 1 }; _senddata = JsonUtils.Serialize(_create); return(true); } } Console.WriteLine("10000 CreateUserRole is fail......................................"); return(false); }
public string DoReg() { GameUser gu = new GameUser(); string UserName = Request["UserName"].Trim(); string Pwd = Request["PWD"].Trim(); string Card = Request["Card"].Trim(); string Email = Request["Email"].Trim(); string Code = Request["Code"].Trim(); if (!DevRegHel.RegName(UserName)) { return("您输入的用户名不可用!"); } if (!DevRegHel.RegPwd(Pwd)) { return("您输入的密码不可用!"); } if (!DevRegHel.RegCard(Card)) { return("您输入的身份证不可用!"); } if (!DevRegHel.RegEmail(Email)) { return("您输入的邮箱不可用!"); } if (gum.IsGameUser(UserName)) { return("您输入的用户名已被注册!"); } if (Session[Keys.SESSION_CODE] == null) { return("验证码已过期,请刷新验证码!"); } if (Session[Keys.SESSION_CODE].ToString().ToUpper() != Code.ToUpper()) { return("您输入的验证码不正确!"); } if (Request["Ck"].Trim() != "on") { return("请务必确认您已经阅读服务条款!"); } if (alm.IsLock(BBRequest.GetIP())) { return("您暂时不能注册!"); } if (gum.ExitEmail(Request["Email"])) { return("您的邮箱已经注册过!"); } gu = new GameUser(0, Request["UserName"], DESEncrypt.Md5(Request["PWD"], 32), "", Request["Sex"], "", "", Request["RealName"], Request["Email"] , "", Request["Birthday"], Request["Card"], "1", 0, "", 0, 0, 0, 0, 0, 0, DateTime.Now, DateTime.Now, 0, 0, 0, 0, BBRequest.GetIP(), "", 0, "", ""); try { if (gum.AddUser(gu)) { int Id = gum.GetGameUser(UserName).Id; sysmsg sm = new sysmsg(); sm.title = "注册成功消息"; sm.type = 2; sm.userid = Id; sm.fromid = 0; sm.msg = "恭喜您成功注册5577游戏账号,您可凭借此账号登录5577游戏旗下任何一款游戏,祝您游戏愉快。如果您在游戏过程中遇到任何问题,欢迎您致电客服咨询。"; smm.AddSysMsg(sm); Session[Keys.SESSION_USER] = Id; Session.Timeout = 120; validatecode vdc = new validatecode(); vdcm.DelValiDateCode(Id, 1); vdc.type = 1; vdc.userid = Id; vdc.sendtime = DateTime.Now; vdc.code = Guid.NewGuid().ToString() + DateTime.Now.Minute + DateTime.Now.Millisecond; vdc.email = gu.Email.Trim(); vdcm.AddValiDateCode(vdc); //string ucode = DESEncrypt.encryptstring1(vdc.userid.ToString()); //string tcode = DESEncrypt.encryptstring1(vdc.type.ToString()); //string scode = vdc.code.ToString(); //string vicode = vdc.sendtime.ToString("yyyy-MM-ddHH:mm:ss"); return("True"); } else { return("注册失败!"); } } catch (Exception ex) { gu.IsLock = 1; gu.UserDesc = "此用户为注册失败用户!失败原因:" + ex.Message; gum.UpdateUser(gu); //gum.DelGameUser(UserName); return("注册失败!错误:" + ex.Message); } }
public kpMailService(GameUser gameUser) { _gameUser = gameUser; }
protected override bool DoSuccess(int userId) { var cacheSet = new GameDataCacheSet <GameUser>(); GameUser gameUser = cacheSet.FindKey(Uid); if (gameUser == null || string.IsNullOrEmpty(gameUser.SessionID) || !gameUser.IsInlining) { gameUser = cacheSet.FindKey(Uid); } if (gameUser != null) { //原因:还在加载中时,返回 if (gameUser.Property.IsRefreshing) { Uid = string.Empty; ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().ServerLoading; return(false); } } var nowTime = DateTime.Now; if (gameUser == null) { this.ErrorCode = 1005; return(true); } else { if (gameUser.UserStatus == UserStatus.FengJin) { ErrorCode = LanguageManager.GetLang().TimeoutCode; ErrorInfo = LanguageManager.GetLang().AcountIsLocked; return(false); } gameUser.SessionID = Sid; gameUser.OnlineDate = nowTime; gameUser.LoginDate = nowTime; gameUser.Property.GameId = this.GameType; gameUser.Property.ServerId = this.ServerID; gameUser.Property.ChatVesion = 0; //gameUser.OnLine = true; //gameUser.Logoff = true; } System.Threading.Tasks.Task.Factory.StartNew(() => { //登录日志 UserLoginLog userLoginLog = new UserLoginLog(); userLoginLog.UserId = gameUser.UserId.ToString(); userLoginLog.SessionID = Sid; userLoginLog.MobileType = this.MobileType.ToShort(); userLoginLog.ScreenX = this.ScreenX; userLoginLog.ScreenY = this.ScreenY; userLoginLog.RetailId = this.RetailID; userLoginLog.AddTime = nowTime; userLoginLog.State = LoginStatus.Logined.ToInt(); userLoginLog.DeviceID = this.DeviceID; userLoginLog.Ip = this.GetRealIP(); userLoginLog.Pid = gameUser.Pid; userLoginLog.UserLv = gameUser.UserLv; var sender = DataSyncManager.GetDataSender(); sender.Send(userLoginLog); }); return(true); }
private static void TriggerSportCombat(GameUser user, GameUser toUser, int sportNum, ref string sportsPrizeString, UserMail userMail) { CombatProcessContainer combatProcessList = null; int rewardGoin = 0; int rewardObtion = 0; //荣誉值 int experence = 0; //经验 int winNum = 0; //原因:gameuser加了连胜字段 winNum = user.VictoryNum; int rankIndex; int torankIndex; Ranking <UserRank> ranking = RankingFactory.Get <UserRank>(CombatRanking.RankingKey); if (!ranking.TryGetRankNo(m => m.UserID == user.UserID, out rankIndex) || !ranking.TryGetRankNo(m => m.UserID == toUser.UserID, out torankIndex)) { return; } UserRank userRank = ranking.Find(s => s.UserID == user.UserID); UserRank toUserRank = ranking.Find(s => s.UserID == toUser.UserID); if (userRank == null || toUserRank == null) { return; } //修改wuzf,两个地方调用Doing()方法 ISingleCombat sportCombat = CombatFactory.TriggerTournament(user, toUser); if (sportCombat == null) { return; } bool isWin = sportCombat.Doing(); if (isWin) { winNum = MathUtils.Addition(winNum, 1, int.MaxValue); userRank.VictoryNum = winNum; toUserRank.VictoryNum = 0; toUser.VictoryNum = 0; new PersonalCacheStruct <GameUser>().UpdateSelf(toUser.PersonalId); rewardGoin = (user.UserLv * 40); //GetRewardGameCoin(user, user.UserLv); experence = (user.UserLv * 10); rewardObtion = 10; AddFoe(user, toUser); } else { winNum = 0; userRank.VictoryNum = 0; rewardGoin = (user.UserLv * 20); if (!rewardGoin.IsValid()) { rewardGoin = 0; } experence = (user.UserLv * 5); rewardObtion = 5; } //公会贡献 UserHelper.Contribution(user.UserID, rewardObtion); if (!string.IsNullOrEmpty(user.MercenariesID)) { GuildMemberLog.AddLog(user.MercenariesID, new MemberLog { UserID = user.UserID, IdolID = 0, LogType = 1, GainObtion = rewardObtion, Experience = rewardObtion, GainAura = 0, InsertDate = DateTime.Now, }); } user.VictoryNum = winNum; new PersonalCacheStruct <GameUser>().UpdateSelf(user.PersonalId); user.ExpNum = MathUtils.Addition(user.ExpNum, rewardObtion, int.MaxValue); user.GameCoin = MathUtils.Addition(user.GameCoin, rewardGoin, int.MaxValue); GeneralHelper.UserGeneralExp(user.UserID, 0, experence); int _rankTopId = 0; int _ranktoTopID = 0; if (isWin && rankIndex > torankIndex) { _rankTopId = toUserRank.RankId; _ranktoTopID = userRank.RankId; } else { _rankTopId = userRank.RankId; _ranktoTopID = toUserRank.RankId; } combatProcessList = (CombatProcessContainer)sportCombat.GetProcessResult(); user.SportsCombatQueue.Enqueue(new SportsCombat() { ToUser = toUser.UserID, ToUserName = toUser.NickName, TopID = _rankTopId, IsWin = isWin, RewardGoin = rewardGoin, RewardObtian = rewardObtion, SportsNum = sportNum, WinNum = winNum, CombatDate = DateTime.Now, CombatProcess = combatProcessList, IsSelf = true, RankStatus = GetRankStatus(isWin, userRank, toUserRank) }); UserDailyRestrain dailyRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(toUser.UserID) ?? new UserDailyRestrain(); toUser.SportsCombatQueue.Enqueue(new SportsCombat() { ToUser = user.UserID, ToUserName = user.NickName, TopID = _ranktoTopID, IsWin = !isWin, RewardGoin = 0, RewardObtian = 0, SportsNum = dailyRestrain.Funtion9, WinNum = toUserRank.VictoryNum, CombatDate = DateTime.Now, CombatProcess = combatProcessList, IsSelf = false, RankStatus = GetRankStatus(!isWin, toUserRank, userRank) }); //日志 UserCombatLog log = new UserCombatLog() { CombatLogID = Guid.NewGuid().ToString(), UserID = user.UserID, CityID = 0, PlotID = 0, NpcID = 0, CombatType = CombatType.User, HostileUser = toUser.UserID, IsWin = isWin, CombatProcess = JsonUtils.Serialize(combatProcessList), CreateDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(log); string prizeContent = string.Empty; MysteryHelper.IsTriggerMyStery(user, MysteryType.Jingjichang, out prizeContent); MysteryInfo mysteryInfo = new ShareCacheStruct <MysteryInfo>().FindKey(MysteryType.Jingjichang); if (!string.IsNullOrEmpty(prizeContent) && mysteryInfo != null) { var prompt = string.Empty; var broadcast = string.Empty; if (isWin) { prompt = mysteryInfo.WinPrompt; broadcast = mysteryInfo.WinBroadcast; } else { prompt = mysteryInfo.Prompt; broadcast = mysteryInfo.Broadcast; } sportsPrizeString = string.Format(prompt, toUser.NickName, prizeContent); string broadContent = string.Format(broadcast, toUser.NickName, prizeContent); var broadcastService = new TjxBroadcastService(null); var msg = broadcastService.Create(NoticeType.System, broadContent); broadcastService.Send(msg); } //sportsPrizeString = SportsPrizeHelper.DoPrize(user.UserID, isWin, toUser.NickName); //var userMail = new UserMail(Guid.NewGuid()); var mailText = string.Format(LanguageManager.GetLang().SportsRankLetterForWin, user.NickName); if (isWin) { if (rankIndex > torankIndex) { //SportsRankPrize(rankIndex, user, torankIndex); //SportsRankPrize(torankIndex, toUser, rankIndex); ranking.TryMove(rankIndex, torankIndex); //user.RankID = torankIndex; //user.RankDate = DateTime.Now; //toUser.RankID = rankIndex; //toUser.RankDate = DateTime.Now; new PersonalCacheStruct <GameUser>().UpdateSelf(user.PersonalId); new PersonalCacheStruct <GameUser>().UpdateSelf(toUser.PersonalId); mailText = string.Format(LanguageManager.GetLang().SportsRankLetterForFailure, user.NickName, rankIndex); } else { mailText = string.Format(LanguageManager.GetLang().SportsRankLetterForFailureRank, user.NickName, rankIndex); } UserHelper.SprostSystemChat(userRank, toUserRank); NoviceHelper.SportCombatFestival(user, winNum, userRank.VictoryNum); } userMail.Content = mailText; var userid = toUser.UserID.ToInt(); userMail.ToUserID = userid; userMail.UserId = userid; userMail.MailType = (int)MailType.Fight; userMail.ToUserName = toUser.NickName; userMail.FromUserName = LanguageManager.GetLang().St_SystemMailTitle; userMail.FromUserId = LanguageManager.GetLang().SystemUserId; userMail.SendDate = DateTime.Now; userMail.Title = string.Empty; userMail.CounterattackUserID = user.UserID.ToInt(); userMail.CombatProcess = JsonUtils.Serialize(combatProcessList); userMail.IsWin = isWin; }
/// <summary> /// 大侠传充值接口 /// </summary> /// <param name="OrderNo">订单号</param> /// <returns>返回充值结果</returns> public string Pay(string OrderNo) { order = os.GetOrder(OrderNo); //获取用户的充值订单 gu = gus.GetGameUser(order.UserName); //获取充值用户 gs = gss.GetGameServer(order.ServerId); //获取用户要充值的服务器 string PayGold = (order.PayMoney * game.GameMoneyScale).ToString(); //计算支付的游戏币 if (gus.IsGameUser(gu.UserName)) //判断用户是否属于平台 { tstamp = Utils.GetTimeSpan(); //获取时间戳 string url = string.Format("op_id={0}&sid={1}&game_id={2}&account={3}&order_id={4}&game_money={5}&u_money={6}&time={7}", gc.AgentId, gs.ServerNo, 8, gu.UserName, OrderNo, PayGold, order.PayMoney, tstamp); //获取验证字符串 Base64Protector bp = new Base64Protector(); Auth = bp.Base64Code(url); //获取验证码 Sign = DESEncrypt.Md5(Auth + gc.PayTicket, 32); //获取验证参数 string PayUrl = "http://" + gc.PayCom + "?auth=" + Auth + "&verify=" + Sign; GameUserInfo gui = Sel(gu.Id, gs.Id); //获取玩家查询信息 if (gui.Message == "Success") //判断玩家是否存在 { if (order.State == 1) //判断订单状态是否为支付状态 { string PayResult = Utils.GetWebPageContent(PayUrl); //获取充值结果 PayResult = PayResult.Substring(0, PayResult.IndexOf('}')); //处理充值结果 PayResult = PayResult.Replace(PayResult.Substring(0, PayResult.LastIndexOf('{') + 1), ""); switch (PayResult.Substring(9)) //对充值结果进行解析 { case "0": if (os.UpdateOrder(order.OrderNo)) //更新订单状态为已完成 { gus.UpdateGameMoney(gu.UserName, order.PayMoney); //跟新玩家游戏消费情况 return("充值成功!"); } else { return("充值失败!错误原因:更新订单状态失败!"); } case "1": return("充值失败!错误原因:商家错误或者不存在!"); case "2": return("充值失败!错误原因:服务器不存在!"); case "3": return("充值失败!错误原因:游戏不存在!"); case "4": return("充值失败!错误原因:无效时间戳!"); case "5": return("充值失败!错误原因:检验码错误!"); case "6": return("充值失败!错误原因:缺少参数!"); case "7": return("充值失败!错误原因:订单号不存在!"); case "8": return("充值失败!错误原因:角色不存在!"); case "9": return("充值失败!错误原因:排行榜类型不存在!"); case "10": return("充值失败!错误原因:方法名字错误!"); case "11": return("充值失败!错误原因:非法IP!"); case "12": return("充值失败!错误原因:充值金额不对!"); case "13": return("充值失败!错误原因:游戏币金额不对!"); case "14": return("充值失败!错误原因:游戏币和游戏币币比列不对!"); case "100": return("充值失败!未知原因"); default: return("充值失败!未知错误!"); } } else { return("充值失败!错误原因:无法提交未支付订单!"); } } else { return("充值失败!角色不存在!"); } } else { return("充值失败!用户不存在!"); } }
public static void Remove(int UID, out GameUser val) { gameUser.Remove(UID, out val); }
public override bool UserLeft(GameUser user, bool voluntarily) { if (!voluntarily) user.CanChooseCards = user.CanVote = false; else user.CanVote = false; if (WaitingOnUsers.Contains(user)) { WaitingOnUsers.Remove(user); ChosenUsers.Remove(user); user.HasChosenCards = false; CheckReady(); } if (user == Manager.CurrentCzar() && Manager.Mode != GameManager.GameMode.SovietRussia) { Manager.SendToAll("Czar left! Discarding round..."); foreach(var person in ChosenUsers) person.ChosenCards = new int[] { }; Manager.StartState(new ChoosingCards(Manager)); } return true; }
public static async Task <GameUser> LoginAs(GameUser user) { return((GameUser)await ParseUser.LogInAsync(user.Username, "a")); }
public void LinkedToUser(GameUser user) { User = user; }
void Load(String jsonUnarrangedData, String userId, Action onDataLoaded) { var unarrangedData = JsonConvert .DeserializeObject <Dictionary <string, Dictionary <string, List <object> > > >(jsonUnarrangedData); /* Quando o userId é nulo, isso indica que apenas os dados iniciais são * carregados, independentemente do usuário */ ClearRecords(); foreach (var table in unarrangedData) { string tableName = table.Key; IEnumerable <string> primaryKeys = table.Value["primaryKeys"].Select(i => ToString()); List <JObject> records = table.Value["records"].Cast <JObject>().ToList(); foreach (var record in records) { AssetFilter filter = AssetFilterRecords .SingleOrDefault(i => i.NamTable == tableName); switch (tableName) { case "assetfilter": AssetFilter assetFilter = record.ToObject <AssetFilter>(); // assetFilter.TxtAssetPath = $"Assets/{assetFilter.TxtAssetPath}"; AssetFilterRecords.Add(assetFilter); break; case "score": // only current user scores are retrieved Score score = record.ToObject <Score>(); ScoreRecords.Add(score); break; case "part": Part part = record.ToObject <Part>(); PartRecords.Add(part); break; case "phase": Phase phase = record.ToObject <Phase>(); phase.Part = PartRecords .SingleOrDefault(i => i.CodPart == phase.CodPart); phase.UserScore = ScoreRecords .SingleOrDefault(i => i.NumPhase == phase.NumPhase); PhaseRecords.Add(phase); phase.TilemapsGrid = dataUtil .LoadAsset <Grid>($"Grid_{filter.TxtAssetFilter}_{phase.NumPhase}", new[] { filter.TxtAssetPath }); break; case "gameuser": // only current user data is retrieved GameUser user = record.ToObject <GameUser>(); user.CurrentPhase = PhaseRecords .SingleOrDefault(i => i.NumPhase == user.NumCurrentPhase); UserRecords.Add(user); break; case "troop": Troop troop = record.ToObject <Troop>(); troop.GameObject = dataUtil .LoadAsset <GameObject>($"{filter.TxtAssetFilter}_{troop.TxtAssetIdentifier}", new[] { filter.TxtAssetPath }); TroopRecords.Add(troop); break; case "barrack": Barrack barrack = record.ToObject <Barrack>(); barrack.Part = PartRecords .SingleOrDefault(i => i.CodPart == barrack.CodPart); barrack.Troop = TroopRecords .SingleOrDefault(i => i.CodTroop == barrack.CodTroop); barrack.GameObject = dataUtil .LoadAsset <GameObject>($"{filter.TxtAssetFilter}_{barrack.Troop.TxtAssetIdentifier}", new[] { filter.TxtAssetPath }); BarrackRecords.Add(barrack); break; case "tower": Tower tower = record.ToObject <Tower>(); tower.GameObject = dataUtil .LoadAsset <GameObject>($"{filter.TxtAssetFilter}_{(tower.IsEnemy ? "enemy" : "player")}", new[] { filter.TxtAssetPath }); TowerRecords.Add(tower); break; case "skill": Skill skill = record.ToObject <Skill>(); skill.Action = dataUtil .LoadAsset <SkillAction>($"{filter.TxtAssetFilter}_{skill.TxtAssetIdentifier}", new[] { filter.TxtAssetPath }); SkillRecords.Add(skill); break; case "hero": Hero hero = record.ToObject <Hero>(); hero.Part = PartRecords .SingleOrDefault(i => i.CodPart == hero.CodPart); hero.Skills = SkillRecords .Where(i => i.CodHero == hero.CodHero) .ToList(); hero.GameObject = dataUtil .LoadAsset <GameObject>($"{filter.TxtAssetFilter}_{hero.TxtAssetIdentifier}", new[] { filter.TxtAssetPath }); HeroRecords.Add(hero); break; case "speak": Speak speak = record.ToObject <Speak>(); SpeakRecords.Add(speak); break; case "scene": Scene scene = record.ToObject <Scene>(); scene.Texts = SpeakRecords .Where(i => i.CodCutscene == scene.CodCutscene && i.CodScene == scene.CodScene) .ToList(); scene.Sprite = dataUtil .LoadAsset <Sprite>(new[] { $"{filter.TxtAssetPath}/{scene.TxtImagePath}" }); SceneRecords.Add(scene); break; case "cutscene": Cutscene cutscene = record.ToObject <Cutscene>(); cutscene.Scenes = SceneRecords .Where(i => i.CodCutscene == cutscene.CodCutscene) .ToList(); CutsceneRecords.Add(cutscene); break; default: break; } } } if (userId != null && userId.Length != 0 && UserRecords.Count == 1) { loadedUser = UserRecords.SingleOrDefault(); SaveUserData(loadedUser); // remove later } if (!(onDataLoaded is null)) { onDataLoaded(); } }
private void OnLoggedIn(GameUser user) { isLoading = false; menus.States.SetState("Logged In State"); }
/// <summary> /// 日常活动领取 /// </summary> /// <param name="user"></param> /// <param name="festivalID"></param> /// <param name="content"></param> /// <returns></returns> public static bool UseFestivalRestrain(GameUser user, int festivalID, out string content) { content = string.Empty; FestivalInfo info = new ShareCacheStruct <FestivalInfo>().FindKey(festivalID); var cacheSet = new GameDataCacheSet <FestivalRestrain>(); FestivalRestrain restrain = cacheSet.FindKey(user.UserID, festivalID); short isReceive = FestivalIsReceive(user, festivalID); if (info != null && isReceive == 1) { if (info.FestivalType == FestivalType.UpgradeGiveGift && user.UserLv < info.RestrainNum) { content = LanguageManager.GetLang().St_LevelNotEnough; return(false); } if (info.FestivalType == FestivalType.FirstReward || info.FestivalType == FestivalType.UpgradeGiveGift || info.FestivalType == FestivalType.PayAccumulation) { content = PrizeHelper.PrizeContent(user, info.Reward.ToList()); if (!string.IsNullOrEmpty(content)) { return(false); } content = PrizeHelper.GetPrizeUserTake(user, info.Reward.ToList()); if (!string.IsNullOrEmpty(content)) { if (info.FestivalExtend != null && !string.IsNullOrEmpty(info.FestivalExtend.Desc)) { content = string.Format(info.FestivalExtend.Desc, content); } return(true); } } if (restrain != null && (info.FestivalType == FestivalType.PayReward || info.FestivalType == FestivalType.FirstPayDoubleSpar)) { if (info.FestivalExtend != null) { int payNum = (info.RestrainNum * info.FestivalExtend.MinusNum).ToInt(); user.GiftGold = MathUtils.Addition(user.GiftGold, payNum); if (!string.IsNullOrEmpty(info.FestivalExtend.Desc)) { content = string.Format(info.FestivalExtend.Desc, payNum); } return(true); } } if (info.FestivalType == FestivalType.LoginGiveGift) { List <PrizeInfo> prizeList = info.Reward.FindAll(s => s.RefreshDate.Date == DateTime.Now.Date); content = PrizeHelper.GetPrizeUserTake(user, prizeList); if (!string.IsNullOrEmpty(content)) { if (info.FestivalExtend != null && !string.IsNullOrEmpty(info.FestivalExtend.Desc)) { content = string.Format(info.FestivalExtend.Desc, content); } return(true); } } } return(false); }
//处理登陆数据 public static bool SignDeal(MySQLCtrl mySQLCtrl, Socket socket, string[] landInfos, out GameUser gameuser) { gameuser = mySQLCtrl.SelecInDb(landInfos[0]); if (landInfos[1] == gameuser.Pwd) { gameuser.Status = "0|1|1|"; return true; } else { gameuser.Status = "0|1|0|登陆失败,请检查密码或重试|"; return false; } }
/// <summary> /// 斗破乾坤查询接口 /// </summary> /// <param name="UserId">用户Id</param> /// <param name="ServerId">服务器Id</param> /// <returns>返回查询结果</returns> public GameUserInfo Sel(int UserId, int ServerId) { gu = gus.GetGameUser(UserId); //获取查询用户 gs = gss.GetGameServer(ServerId); //获取查询用户所在区服 tstamp = Utils.GetTimeSpan(); //获取时间戳 GameUserInfo gui = new GameUserInfo(); //定义返回查询结果信息 Sign = DESEncrypt.Md5("account=" + gu.UserName + "&action=playerinfo&agent=" + gc.AgentId + "&serverid=" + gs.ServerNo + "&time=" + tstamp + "&" + gc.SelectTicket, 32); //获取验证参数 string SelUrl = "http://" + gs.ServerNo + "." + gc.ExistCom + "?account=" + gu.UserName + "&action=playerinfo&agent=" + gc.AgentId + "&serverid=" + gs.ServerNo + "&time=" + tstamp + "&token=" + Sign + ""; //获取查询地址 string SelResult = Utils.GetWebPageContent(SelUrl); //获取返回结果 try { switch (SelResult) { case "-501": gui.Message = "查询账号数量超过限制"; break; case "-207": gui.Message = "无效玩家账号"; break; default: SelResult = SelResult.Substring(0, SelResult.IndexOf('}')); //处理返回结果 SelResult = SelResult.Replace(SelResult.Substring(0, SelResult.LastIndexOf('{') + 1), ""); string[] b = SelResult.Split(','); switch (b[0].Substring(7)) { case "-101": gui.Message = "查询失败!无效访问!"; break; case "-102": gui.Message = "查询失败!验证失败!"; break; case "-209": gui.Message = "查询失败!无效参数!"; break; case "-401": gui.Message = "查询失败!链接超时!"; break; case "-304": gui.Message = "查询失败!IP限制!"; break; default: gui = new GameUserInfo(gu.Id.ToString(), gu.UserName, b[1].Substring(7).Replace("\"", ""), int.Parse(b[0].Substring(8).Replace("\"", "")), gs.Name, os.GetOrderInfo(gu.UserName), "Success"); break; } break; } } catch (Exception) { gui.UserName = "******"; gui.Message = "查询失败!查询不到用户信息!"; } return(gui); }
/// <summary> /// 斗破乾坤充值接口 /// </summary> /// <param name="OrderNo">订单号</param> /// <returns>返回充值结果</returns> public string Pay(string OrderNo) { order = os.GetOrder(OrderNo); //获取用户的充值订单 gu = gus.GetGameUser(order.UserName); //获取充值用户 gs = gss.GetGameServer(order.ServerId); //获取用户要充值的服务器 string PayGold = (order.PayMoney * game.GameMoneyScale).ToString(); //计算支付的游戏币 if (gus.IsGameUser(gu.UserName)) //判断用户是否属于平台 { tstamp = Utils.GetTimeSpan(); //获取时间戳 Sign = DESEncrypt.Md5("account=" + gu.UserName + "&agent=" + gc.AgentId + "&amount=" + PayGold + "&order=" + OrderNo + "&price=" + order.PayMoney + "&serverid=" + gs.ServerNo + "&time=" + tstamp + "&" + gc.PayTicket, 32); string PayUrl = "http://" + gs.ServerNo + "." + gc.PayCom + "?account=" + gu.UserName + "&agent=" + gc.AgentId + "&amount=" + PayGold + "&order=" + OrderNo + "&price=" + order.PayMoney + "&serverid=" + gs.ServerNo + "&time=" + tstamp + "&token=" + Sign; GameUserInfo gui = Sel(gu.Id, gs.Id); //获取玩家查询信息 if (gui.Message == "Success") //判断玩家是否存在 { if (order.State == 1) //判断订单状态是否为支付状态 { string PayResult = Utils.GetWebPageContent(PayUrl); //获取充值结果 switch (PayResult) //对充值结果进行解析 { case "1": if (os.UpdateOrder(order.OrderNo)) //更新订单状态为已完成 { gus.UpdateGameMoney(gu.UserName, order.PayMoney); //跟新玩家游戏消费情况 return("充值成功!"); } else { return("充值失败!错误原因:更新订单状态失败!"); } case "-102": return("充值失败!验证参数错误!"); case "-201": return("充值失败!角色不存在!"); case "-207": return("充值失败!账号不存在!"); case "-300": return("充值失败!金额有误!"); case "-301": return("充值失败!无效订单!"); case "-302": return("充值失败!无非提交重复订单!"); case "-303": return("充值失败!充值接口已关闭!"); case "-304": return("充值失败!IP限制!"); default: return("充值失败!未知错误!"); } } else { return("充值失败!错误原因:无法提交未支付订单!"); } } else { return(gui.Message); } } else { return("充值失败!用户不存在!"); } }
/// <summary> /// 天地劫副本层数 /// </summary> /// <param name="user"></param> public static int CheckUserPlotLayerNum(GameUser user) { int layerNum = 0; PlotInfo plotInfo = CheckUserPlotKalpa(user); if (user != null && plotInfo != null) { //最高层 if (user.UserExtend != null) { //修改:当前层大于最大层数时更新 if (user.UserExtend.MaxLayerNum < plotInfo.LayerNum) { user.UserExtend.UpdateNotify(obj => { user.UserExtend.MaxLayerNum = plotInfo.LayerNum; return(true); }); //user.Update(); } } //当前层 if (user.UserExtend != null && user.UserExtend.LayerNum > 0) { UserDailyRestrain dailyRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(user.UserID); if (dailyRestrain != null && dailyRestrain.UserExtend != null && dailyRestrain.UserExtend.LastKalpaNum > 0) { layerNum = user.UserExtend.LayerNum; } else { layerNum = plotInfo.LayerNum; user.UserExtend.UpdateNotify(obj => { user.UserExtend.LayerNum = layerNum; return(true); }); //user.Update(); } } else { layerNum = plotInfo.LayerNum; if (user.UserExtend == null) { user.UserExtend = new GameUserExtend(); } user.UserExtend.UpdateNotify(obj => { user.UserExtend.LayerNum = layerNum; return(true); }); //user.Update(); } } else { layerNum = 1; } return(layerNum); }