private static void AppendLog(int teamId, TeamCombatProcess logTeam) { if (_combatProcessList != null) { if (!_combatProcessList.ContainsKey(teamId)) { _combatProcessList.Add(teamId, new TeamCombatResult()); } lock (ThisLock) { TeamCombatResult tempList = _combatProcessList[teamId]; tempList.ProcessList.Add(logTeam); } UserCombatLog log = new UserCombatLog { CombatLogID = Guid.NewGuid().ToString(), CombatType = CombatType.MultiPlot, UserID = logTeam.UserId, PlotID = logTeam.PlotID, NpcID = logTeam.PlotNpcID, HostileUser = logTeam.TeamID.ToString(), IsWin = logTeam.IsWin, CombatProcess = JsonUtils.Serialize(logTeam.ProcessContainer), CreateDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(log); } }
public override void Process(JsonParameter[] paramList) { JsonParameterList parameters = JsonParameter.Convert(paramList); string op = parameters["op"]; string userID = parameters["UserID"]; GameUser gameUser = new PersonalCacheStruct <GameUser>().FindKey(userID); OAOperationLog oAOperationLog = new OAOperationLog(); oAOperationLog.ID = Guid.NewGuid().ToString(); oAOperationLog.UserID = userID; oAOperationLog.OpUserID = Convert.ToInt32(parameters["OpUserID"]); oAOperationLog.CreateDate = DateTime.Now; if (parameters["EndDate"].Length > 0) { oAOperationLog.EndDate = Convert.ToDateTime(parameters["EndDate"]); } oAOperationLog.Reason = parameters["Reason"]; if (gameUser == null) { return; } if (op == "disableId") { gameUser.UserStatus = UserStatus.FengJin; oAOperationLog.OpType = 1; } else if (op == "enableId") { gameUser.UserStatus = UserStatus.Normal; oAOperationLog.OpType = 2; } else if (op == "disableMsg") { gameUser.MsgState = false; oAOperationLog.OpType = 3; } else if (op == "enableMsg") { gameUser.MsgState = true; oAOperationLog.OpType = 4; } else { return; } //gameUser.Update(); var sender = DataSyncManager.GetDataSender(); sender.Send(oAOperationLog); }
/// <summary> /// 灵件操作日志 /// </summary> /// <param name="userId"></param> /// <param name="sparePartID"></param> /// <param name="userSparepartID"></param> /// <param name="userItemID"></param> /// <param name="position"></param> /// <param name="partStatus"></param> public static void AppendSparePartLog(string userId, UserSparePart sparePart, short partStatus) { UserSparePartLog partLog = new UserSparePartLog() { UserID = userId, SparePartID = sparePart.SparePartId, SparePart = sparePart, PartStatus = partStatus, CreateDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(partLog); }
private void OnSyncSql(object state) { try { if (Monitor.TryEnter(syncSqlObject, 1000)) { try { TraceLog.ReleaseWrite("Sql waiting to be written to the Redis"); while (true) { var list = CacheChangeManager.Current.PopSql(100); if (list.Count == 0) { break; } foreach (var key in list) { string redisKey = key; try { dynamic entity = CacheFactory.GetEntityFromRedis(redisKey, true); SchemaTable schemaTable = entity.GetSchema(); if (entity != null && schemaTable != null) { DbBaseProvider dbProvider = DbConnectionProvider.CreateDbProvider(schemaTable); if (dbProvider != null) { DataSyncManager.GetDataSender().Send(entity, false); } } } catch (Exception e) { TraceLog.WriteError("Sync to db {0} error:{1}", redisKey, e); } } } } finally { Monitor.Exit(syncSqlObject); } } } catch (Exception ex) { TraceLog.WriteError("Sql sync error:{0}", ex); } }
public override bool TakeAction() { try { DESAlgorithmNew des = new DESAlgorithmNew(); password = des.DecodePwd(password, GameEnvironment.Setting.ClientDesDeKey); if (password.Length > 12 || password.Length < 4) { this.ErrorCode = LanguageManager.GetLang().ErrorCode; this.ErrorInfo = LanguageManager.GetLang().St1006_PasswordTooLong; return(false); } Regex re = new Regex(@"^[\u4e00-\u9fa5\w]+$"); if (!re.IsMatch(password)) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1006_PasswordExceptional; return(false); } password = CryptoHelper.DES_Encrypt(password, GameEnvironment.Setting.ProductDesEnKey); if (SnsManager.ChangePass(Uid, password) <= 0) { this.ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1006_ChangePasswordError; return(false); } else { UserOperationLog userOperationLog = new UserOperationLog(); userOperationLog.UserID = ContextUser.UserID; userOperationLog.ActionID = ActionIDDefine.Cst_Action1006; userOperationLog.FunctionID = "更新密码"; userOperationLog.CreateDate = DateTime.Now; userOperationLog.Num = 0; var sender = DataSyncManager.GetDataSender(); sender.Send(userOperationLog); } } catch (Exception ex) { this.SaveLog(ex.ToString()); ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1006_PasswordError; return(false); } return(true); }
/// <summary> /// 玩家修炼操作日志表log /// </summary> /// <param name="userID"></param> /// <param name="opType"></param> /// <param name="sumNum"></param> /// <param name="opNum"></param> /// <param name="useGold"></param> /// <param name="surplusGold"></param> /// <param name="totalGold"></param> public static void AppenPracticeLog(string userID, DateTime startDate, DateTime endDate, int continuedTime, int gainExperience) { UserPracticeLog log = new UserPracticeLog() { ID = Guid.NewGuid().ToString(), UserID = userID, StartDate = startDate, EndDate = endDate, ContinuedTime = continuedTime, GainExperience = gainExperience, CreateDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(log); }
/// <summary> /// -1:掉落,1增加,2使用,3出售,4出售删除 5合成,6购回 /// </summary> /// <param name="userID"></param> /// <param name="itemID"></param> /// <param name="num"></param> /// <param name="itemLv"></param> /// <param name="itemStatus"></param> public static void AddItemLog(string userID, int itemID, int num, short itemLv, int itemStatus, string useritemID) { var itemLog = new UserItemLog(); itemLog.LogID = Guid.NewGuid().ToString(); itemLog.ItemID = itemID; itemLog.UserID = userID; itemLog.ItemStatus = (short)itemStatus; itemLog.ItemLv = itemLv; itemLog.Num = num; itemLog.CreateDate = DateTime.Now; itemLog.UserItemID = useritemID; var sender = DataSyncManager.GetDataSender(); sender.Send(itemLog); }
/// <summary> /// 从Redis内存移除,并保存到数据库 /// </summary> /// <param name="keys"></param> public static void RemoveToDatabase(params string[] keys) { var entityKeys = new List <string>(); var entityList = new List <EntityHistory>(); RedisConnectionPool.ProcessReadOnly(client => { foreach (var k in keys) { try { string key = k; string setId = key + "_remove"; if (key.EndsWith("_remove")) { setId = key; key = key.Replace("_remove", ""); } else { if (client.ContainsKey(key)) { client.Rename(key, setId); } } entityKeys.Add(setId); //转存到DB使用protobuf byte[] keyValues = ProtoBufUtils.Serialize(client.HGetAll(setId)); var history = new EntityHistory() { Key = key, Value = keyValues }; entityList.Add(history); } catch (Exception ex) { TraceLog.WriteError("Redis cache remove key:{0} to Database error:{1}", k, ex); } } }); if (entityList.Count > 0) { DataSyncManager.GetDataSender().Send <EntityHistory>(entityList.ToArray()); RedisConnectionPool.ProcessReadOnly(client => client.RemoveAll(entityKeys)); } }
/// <summary> /// 新增玩家使用晶石购买log /// </summary> /// <param name="userID"></param> /// <param name="opType"></param> /// <param name="sumNum"></param> /// <param name="opNum"></param> /// <param name="useGold"></param> /// <param name="surplusGold"></param> /// <param name="totalGold"></param> public static void AppenUseGoldLog(string userID, short opType, int sumNum, int opNum, int useGold, int surplusGold, int totalGold) { UserUseGoldLog log = new UserUseGoldLog { ID = Guid.NewGuid().ToString(), UserID = userID, OpType = opType, SumNum = sumNum, OpNum = opNum, UseGold = useGold, SurplusGold = surplusGold, TotalGold = totalGold, CreateDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(log); }
/// <summary> /// 3.3.18 玩家庄园log /// </summary> /// <param name="userID"></param> /// <param name="opType"></param> /// <param name="sumNum"></param> /// <param name="opNum"></param> /// <param name="useGold"></param> /// <param name="surplusGold"></param> /// <param name="totalGold"></param> public static void AppenLandLog(string userID, short opType, int generalID, int postion, int useGold, short plantQuality, int gainNum, int buyNum) { UserLandLog log = new UserLandLog { ID = Guid.NewGuid().ToString(), UserID = userID, OpType = opType, GeneralID = generalID, Postion = postion, PlantQuality = plantQuality, GainNum = gainNum, BuyNum = buyNum, CreateDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(log); }
/// <summary> /// 玩家强化(装备,魔术)log /// </summary> /// <param name="userID"></param> /// <param name="opType"></param> /// <param name="sumNum"></param> /// <param name="opNum"></param> /// <param name="useGold"></param> /// <param name="surplusGold"></param> /// <param name="totalGold"></param> public static void AppenStrongLog(string userID, short opType, string userItemID, int itemID, short useType, short strongLv, int useGold, int generalID) { UserStrongLog log = new UserStrongLog { ID = Guid.NewGuid().ToString(), UserID = userID, OpType = opType, UserItemID = userItemID, ItemID = itemID, UseType = useType, StrongLv = strongLv, UseGold = useGold, GeneralID = generalID, CreateDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(log); }
/// <summary> /// 玩家扫荡操作日志表log /// </summary> /// <param name="userID"></param> /// <param name="opType"></param> /// <param name="sumNum"></param> /// <param name="opNum"></param> /// <param name="useGold"></param> /// <param name="surplusGold"></param> /// <param name="totalGold"></param> public static void AppenRaidsLog(string userID, short opType, DateTime startDate, DateTime endDate, short energy, int useGold) { int continuedTime = (int)(endDate - startDate).TotalSeconds; UserRaidsLog log = new UserRaidsLog() { ID = Guid.NewGuid().ToString(), UserID = userID, OpType = opType, StartDate = startDate, EndDate = endDate, ContinuedTime = continuedTime, UseEnergy = energy, UseGold = useGold, CreateDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(log); }
/// <summary> /// 玩家附魔符log /// </summary> /// <param name="userID"></param> /// <param name="opType"></param> /// <param name="enchantID"></param> /// <param name="synthesisInfo"></param> /// <param name="enchantLv"></param> /// <param name="mature"></param> /// <param name="exp"></param> /// <param name="userEnchantID"></param> public static void AppenEnchantLog(string userID, short opType, UserEnchantInfo enchantInfo, CacheList <SynthesisInfo> synthesisInfo) { UserEnchantLog log = new UserEnchantLog(); log.ID = Guid.NewGuid().ToString(); log.UserID = userID; log.OpType = opType; log.UserEnchantID = enchantInfo.UserEnchantID; log.EnchantID = enchantInfo.EnchantID; log.EnchantLv = enchantInfo.EnchantLv; log.MaxMature = enchantInfo.MaxMature; log.Experience = enchantInfo.CurrExprience; log.SynthesisEnchant = synthesisInfo; log.CreateDate = DateTime.Now; var sender = DataSyncManager.GetDataSender(); sender.Send(log); }
protected override bool CreateUserRole(out IUser user) { user = null; GameUser gameUser = new GameDataCacheSet <GameUser>().FindKey(UserId.ToString()); if (gameUser == null) { var roleFunc = new RoleFunc(); string msg; if (roleFunc.VerifyRange(UserName, out msg) || roleFunc.VerifyKeyword(UserName, out msg) || roleFunc.IsExistNickName(UserName, out msg)) { ErrorCode = Language.Instance.ErrorCode; ErrorInfo = msg; return(false); } gameUser = CreateRole(); roleFunc.OnCreateAfter(gameUser); } user = new SessionUser(gameUser); UserLoginLog userLoginLog = new UserLoginLog(); userLoginLog.UserId = UserId.ToString(); userLoginLog.SessionID = Sid; userLoginLog.MobileType = (short)MobileType; userLoginLog.ScreenX = ScreenX; userLoginLog.ScreenY = ScreenY; userLoginLog.RetailId = RetailID; userLoginLog.AddTime = DateTime.Now; userLoginLog.State = (short)LoginStatus.Logined; userLoginLog.DeviceID = DeviceID; userLoginLog.Ip = GetRealIP(); userLoginLog.Pid = gameUser.Pid; userLoginLog.UserLv = gameUser.UserLv; var sender = DataSyncManager.GetDataSender(); sender.Send(new[] { userLoginLog }); return(true); }
/// <summary> /// 玩家命运水晶log /// </summary> /// <param name="userID"></param> /// <param name="opType"></param> /// <param name="sumNum"></param> /// <param name="opNum"></param> /// <param name="useGold"></param> /// <param name="surplusGold"></param> /// <param name="totalGold"></param> public static void AppenCtystalLog(string userID, short opType, int crystalID, int coinNum, int useGold, CacheList <SynthesisInfo> synthesisInfo, short crystalLv, int exp) { UserCrystalLog log = new UserCrystalLog() { ID = Guid.NewGuid().ToString(), UserID = userID, OpType = opType, CrystalID = crystalID, CoinNum = coinNum, UseGold = useGold, SynthesisCrystal = synthesisInfo, CrystalLv = crystalLv, Experience = exp, CreateDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(log); }
public static void SaveLog <T>(string property, string userID, object oldValue, object value) { string v1 = oldValue.ToString(); string v2 = value.ToString(); if (!Equals(v1, v2)) { UserDataChangeLog changeLog = new UserDataChangeLog { UserID = userID, EntityName = typeof(T).Name, Name = property, PreValue = v1, Value = v2, ModifyDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(changeLog); } }
/// <summary> /// 新增装备合成log /// </summary> /// <param name="userID"></param> /// <param name="opType"></param> /// <param name="itemID"></param> /// <param name="num"></param> /// <param name="synthesisInfo1"></param> /// <param name="synthesisInfo2"></param> /// <param name="useGold"></param> /// <param name="beforeLv"></param> /// <param name="afterLv"></param> public static void AppenItemSynthesisLog(string userID, short opType, int itemID, int num, CacheList <SynthesisInfo> synthesisInfo1, SynthesisInfo synthesisInfo2, int useGold, short beforeLv, short afterLv) { UserItemSynthesisLog log = new UserItemSynthesisLog { ID = Guid.NewGuid().ToString(), UserID = userID, OpType = opType, ItemID = itemID, OpNum = num, DemandMaterial = synthesisInfo1, SurplusMaterial = synthesisInfo2, UseGold = useGold, BeforeLv = beforeLv, AfterLv = afterLv, CreateDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(log); }
public override bool TakeAction() { GameUser user = new GameDataCacheSet <GameUser>().FindKey(Uid); if (user == null) { var roleFunc = new RoleFunc(); string msg; if (roleFunc.VerifyRange(UserName, out msg) || roleFunc.VerifyKeyword(UserName, out msg) || roleFunc.IsExistNickName(UserName, out msg)) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = msg; return(false); } user = CreateRole(); roleFunc.OnCreateAfter(user); } Current.User = user; UserLoginLog userLoginLog = new UserLoginLog(); userLoginLog.UserId = Uid; userLoginLog.SessionID = Sid; userLoginLog.MobileType = (short)MobileType; userLoginLog.ScreenX = ScreenX; userLoginLog.ScreenY = ScreenY; userLoginLog.RetailId = RetailID; userLoginLog.AddTime = DateTime.Now; userLoginLog.State = (short)LoginStatus.Logined; userLoginLog.DeviceID = DeviceID; userLoginLog.Ip = GetRealIP(); userLoginLog.Pid = user.Pid; userLoginLog.UserLv = user.UserLv; var sender = DataSyncManager.GetDataSender(); sender.Send(userLoginLog); return(true); }
protected override void WriteLog(ChatMessage message) { var chatData = message as ChatData; if (chatData == null) { return; } string guildID = string.Empty; if (chatData.ChatType == ChatType.Guild) { GameUser user = new GameDataCacheSet <GameUser>().FindKey(chatData.FromUserID.ToString()); if (user == null) { user = new GameDataCacheSet <GameUser>().FindKey(chatData.ToUserID.ToString()); } if (user != null) { guildID = user.MercenariesID; } } var chatLog = new UserChatLog { ChatID = Guid.NewGuid().ToString(), FromUserID = chatData.FromUserID.ToString(), FromUserName = chatData.FromUserName, ToUserID = chatData.ToUserID.ToString(), ToUserName = chatData.ToUserName, ChatType = chatData.ChatType, Content = chatData.Content, SendDate = chatData.SendDate, GuildID = guildID, }; using (var sender = DataSyncManager.GetDataSender()) { sender.Send(chatLog); } }
public override void Process(JsonParameter[] paramList) { JsonParameterList parameters = JsonParameter.Convert(paramList); string op = parameters["op"]; ChatKeyWord keyword = new ChatKeyWord() { KeyID = parameters["KeyID"].ToNotNullString(), KeyWord = parameters["KeyWord"].ToNotNullString() }; var sender = DataSyncManager.GetDataSender(); if (op == "add" || op == "save") { sender.Send(new[] { keyword }); } else if (op == "delete") { keyword.OnDelete(); sender.Send(new[] { keyword }); } }
/// <summary> /// 从Redis内存移除,并保存到数据库 /// </summary> /// <param name="keys"></param> public static void RemoveToDatabase(params string[] keys) { RedisManager.Process(client => { foreach (var k in keys) { try { string key = k; string setId = key + "_remove"; if (key.EndsWith("_remove")) { setId = key; key = key.Replace("_remove", ""); } else { if (client.ContainsKey(key)) { client.Rename(key, setId); } } var buffer = client.Get <byte[]>(setId); if (buffer != null) { var history = new EntityHistory() { Key = key, Value = buffer }; DataSyncManager.GetDataSender().Send(history); client.Remove(setId); } } catch (Exception ex) { TraceLog.WriteError("Redis cache remove key:{0} to Database error:{1}", k, ex); } } }); }
private void AddUserItem(string userID, int itemID, int itemNum) { if (itemID > 0 && itemNum > 0) { UserTakePrize userPrizeLog = new UserTakePrize { ID = Guid.NewGuid().ToString(), UserID = userID.ToInt(), ItemPackage = string.Format("{0}={1}={2}", itemID, 1, itemNum), MailContent = string.Format("GM发送物品"), IsTasked = false, TaskDate = MathUtils.SqlMinDate, OpUserID = 10000, CreateDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(userPrizeLog); } else { throw new Exception("无此物品"); } }
protected override void WriteLog(ChatMessage message) { var chatData = message as ChatData; if (chatData == null) { return; } var chatLog = new ChatLog { FromUserID = chatData.FromUserID, FromUserName = chatData.FromUserName, ToUserID = chatData.ToUserID, ChatType = chatData.ChatType, Content = chatData.Content, SendDate = chatData.SendDate }; using (var sender = DataSyncManager.GetDataSender()) { sender.Send(chatLog); } }
private static void AsyncDoCombat(CountryUser cuser1, CountryUser cuser2, CountryCombatProcess process) { CountryLvGroup userLvGroup1; CountryLvGroup userLvGroup2; if (TryLvGroup(cuser1, out userLvGroup1) && TryLvGroup(cuser2, out userLvGroup2)) { ISingleCombat combater = CombatFactory.TriggerTournament(cuser1, cuser2); bool isWin = combater.Doing(); if (isWin) { ProcessPrize(cuser1, cuser2, process); cuser1.Refresh = DateTime.Now; cuser1.Status = 1; userLvGroup1.CombaQueue.Add(cuser1); CountryGroup userGroup1; if (TryGroup(cuser1.GroupType, out userGroup1)) { userGroup1.Score++; } cuser2.Refresh = DateTime.Now; cuser2.Status = 1; userLvGroup2.CombaQueue.Add(cuser2); } else { ProcessPrize(cuser2, cuser1, process); cuser2.Refresh = DateTime.Now; cuser2.Status = 1; userLvGroup2.CombaQueue.Add(cuser2); CountryGroup userGroup2; if (TryGroup(cuser2.GroupType, out userGroup2)) { userGroup2.Score++; } cuser1.Refresh = DateTime.Now; cuser1.Status = 1; userLvGroup1.CombaQueue.Add(cuser1); } process.ProcessContainer = (CombatProcessContainer)combater.GetProcessResult(); lock (thisLock) { if (_combatProcessList != null) { _combatProcessList.Add(process); } //日志 UserCombatLog log = new UserCombatLog(); log.CombatLogID = Guid.NewGuid().ToString(); log.UserID = cuser1.UserId; log.CityID = 0; log.PlotID = 0; log.NpcID = 0; log.CombatType = CombatType.Country; log.HostileUser = cuser2.UserId; log.IsWin = isWin; log.CombatProcess = JsonUtils.Serialize(process); log.CreateDate = DateTime.Now; var sender = DataSyncManager.GetDataSender(); sender.Send(log); } } }
public override bool TakeAction() { //if (ContextUser.EnergyNum <= 0) //{ // ErrorCode = LanguageManager.GetLang().ErrorCode; // ErrorInfo = LanguageManager.GetLang().St_EnergyNotEnough; // return false; //} //if (ContextUser.EnergyNum <= 0 && ContextUser.TempEnergyNum == 0) //{ // ErrorCode = LanguageManager.GetLang().ErrorCode; // ErrorInfo = LanguageManager.GetLang().St_EnergyNotEnough; // return false; //} if (ContextUser.UserStatus == UserStatus.SaoDang) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St4007_Saodanging; return(false); } if (ContextUser.UseMagicID == 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St4004_NoUseMagic; return(false); } if (new GameDataCacheSet <UserEmbattle>().FindAll(Uid, m => m.MagicID == ContextUser.UseMagicID).Count == 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St4004_EmbattleEmpty; return(false); } //if (ContextUser.TempEnergyNum == 0) //{ // ErrorCode = LanguageManager.GetLang().ErrorCode; // ErrorInfo = LanguageManager.GetLang().St_EnergyNotEnough; // return false; //} ContextUser.UserStatus = UserStatus.Combat; try { //触发战斗 PlotNPCInfo npcInfo = new ConfigCacheSet <PlotNPCInfo>().FindKey(PlotNpcID); //原因:碰npc时掉线,再请求战斗详情 if (npcInfo == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().LoadDataError; return(false); } //原因:最后一个npc时,清空玩家保存副本 if (ContextUser.UserExtend != null && ContextUser.UserExtend.MercenarySeq > npcInfo.NpcSeqNo) { ContextUser.UserStatus = UserStatus.Normal; ContextUser.UserExtend.UpdateNotify(obj => { ContextUser.UserExtend.PlotStatusID = 0; ContextUser.UserExtend.PlotNpcID = -1; ContextUser.UserExtend.MercenarySeq = 1; ContextUser.UserExtend.IsBoss = false; return(true); }); //ErrorCode = LanguageManager.GetLang().ErrorCode; //ErrorInfo = LanguageManager.GetLang().St4011_NoMonster; //return false; } PlotInfo plotInfo = new ConfigCacheSet <PlotInfo>().FindKey(npcInfo.PlotID); if (plotInfo == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().LoadDataError; return(false); } var cacheSetUserPlot = new GameDataCacheSet <UserPlotPackage>(); var cacheSetItemInfo = new ShareCacheStruct <ItemBaseInfo>(); var cacheSet = new GameDataCacheSet <UserPlotCombat>(); var userPlotPack = cacheSetUserPlot.FindKey(ContextUser.UserID); var userPlot = userPlotPack != null?userPlotPack.PlotPackage.Find(s => s.PlotID == npcInfo.PlotID) : null; //PlotHelper.IsKill(ContextUser.UserID, plotInfo.PlotID, plotInfo.CityID) if (userPlot != null && userPlot.PlotNum >= plotInfo.ChallengeNum) { if (plotInfo.PlotType == PlotType.Elite) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St4002_EliteUsed; return(false); } else if (plotInfo.PlotType == PlotType.HeroPlot) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St4002_HeroPlotNum; return(false); } } //if (userPlot != null && userPlot.ItemList != null) //{ // userPlot.UpdateNotify(obj => // { // userPlot.ItemList.Clear(); // return true; // }); //} if (npcInfo.NpcSeqNo == 1) { userPlot.ItemList.Clear(); ContextUser.IsItem = false; } userPlotCombat = cacheSet.FindKey(ContextUser.UserID, PlotNpcID); if (userPlotCombat != null && userPlotCombat.IsWin && ContextUser.UserExtend != null && PlotNpcID == ContextUser.UserExtend.PlotNpcID && !ContextUser.IsItem) { prizeItems = PlotHelper.GetPlotMonsterItems(Uid, npcInfo.PlotNpcID); } else { ISingleCombat plotCombater = CombatFactory.TriggerPlot(ContextUser, PlotNpcID); if (plotCombater == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().LoadDataError; return(false); } if (userPlotCombat == null) { userPlotCombat = new UserPlotCombat() { UserID = ContextUser.UserID, PlotNpcID = PlotNpcID }; cacheSet.Add(userPlotCombat, GameEnvironment.CacheUserPeriod); userPlotCombat = cacheSet.FindKey(ContextUser.UserID, PlotNpcID); } userPlotCombat.PlotID = npcInfo.PlotID; userPlotCombat.CombatDate = DateTime.Now; userPlotCombat.IsWin = plotCombater.Doing(); if (!userPlotCombat.IsWin) { userPlotCombat.OverNum += 1; } ContextUser.IsItem = npcInfo.NpcSeqNo == 1 ? false : ContextUser.IsItem; combatProcessList = (CombatProcessContainer)plotCombater.GetProcessResult(); userPlotCombat.GeneralNum = combatProcessList.AttackList.Count; userPlotCombat.GeneralOverNum = GetOverGeneralNum(combatProcessList.AttackList.ToList()); //userPlotCombat.CombatProcess = JsonUtils.Serialize(combatProcessList); int generalNum = combatProcessList.DefenseList.FindAll(s => s.LiveNum > 0).Count; if (userPlotCombat.IsWin) { if (ContextUser.UserExtend != null) { ContextUser.UserExtend.UpdateNotify(obj => { ContextUser.UserExtend.PlotStatusID = npcInfo.PlotID; ContextUser.UserExtend.PlotNpcID = PlotNpcID; ContextUser.UserExtend.MercenarySeq = MathUtils.Addition(npcInfo.NpcSeqNo, (short)1); ContextUser.UserExtend.IsBoss = npcInfo.IsBoss; //是否最后一个副本npc return(true); }); } //玩家通过一个城市的所有副本时,增加聊天频道系统提示 if (userPlot.PlotStatus != PlotStatus.Completed && npcInfo.IsBoss) //玩家此副本胜利 { var city = new ConfigCacheSet <CityInfo>().FindKey(plotInfo.CityID); var nextPlot = new ConfigCacheSet <PlotInfo>().FindKey(plotInfo.AftPlotID); if (city != null && nextPlot != null && nextPlot.CityID != plotInfo.CityID) //此城市的最后一个副本 { string content = string.Format(LanguageManager.GetLang().St_systemprompts, ContextUser.NickName, city.CityName); new TjxChatService().SystemSend(ChatType.World, content); } } PlotHelper.DoPlotPrize(Uid, npcInfo, userPlotCombat, generalNum, out _honourNum); if (npcInfo.NpcSeqNo == 1) { ContextUser.EnergyNum = MathUtils.Subtraction(ContextUser.EnergyNum, ContextUser.TempEnergyNum).ToShort(); //原因:刷晶石BUG ContextUser.TempEnergyNum = 0; } if (!ContextUser.IsItem) { prizeItems = PlotHelper.GetPlotMonsterItems(Uid, npcInfo.PlotNpcID); } TaskHelper.KillPlotMonster(Uid, npcInfo.PlotID, PlotNpcID); //var stroyTaskList = new ConfigCacheSet<StoryTaskInfo>().FindAll(s => s.PlotID == plotInfo.AftPlotID); //foreach (var story in stroyTaskList) //{ // var usertask = new GameDataCacheSet<UserTask>().FindKey(ContextUser.UserID, story.PlotID); // if (usertask != null) // { PlotHelper.EnablePlot(Uid, plotInfo.AftPlotID); // } //} if (plotInfo.PlotType == PlotType.Elite) { EliteDailyRestrain(npcInfo); NoviceHelper.ElitePlotFestivalList(ContextUser); //通关精英副本获得奖励 } else if (plotInfo.PlotType == PlotType.Kalpa) { KalpaDailyRestrain(npcInfo); } else if (plotInfo.PlotType == PlotType.HeroPlot) { PlotHelper.EnableHeroPlot(ContextUser.UserID, plotInfo.PlotID); PlotHelper.HeroDailyRestrain(ContextUser.UserID, plotInfo.PlotID, plotInfo.CityID); } } else { ContextUser.GeneralAllCount = 0; ContextUser.GeneralKillCount = 0; } var restrain = new GameDataCacheSet <UserDailyRestrain>().FindKey(Uid); if (restrain != null) { var restrainSet = new ShareCacheStruct <DailyRestrainSet>().FindKey(RestrainType.PlotGoto); if (restrainSet != null) { GotoNum = MathUtils.Subtraction(restrainSet.MaxNum, restrain.Funtion14, 0); } } } //原因:最后一个npc时,清空玩家保存副本 if (ContextUser.UserExtend != null && ContextUser.UserExtend.IsBoss) { ContextUser.UserExtend.UpdateNotify(obj => { ContextUser.UserExtend.PlotStatusID = 0; ContextUser.UserExtend.PlotNpcID = -1; ContextUser.UserExtend.MercenarySeq = 0; ContextUser.UserExtend.IsBoss = npcInfo.IsBoss; return(true); }); } if (!ContextUser.IsItem) { foreach (var prize in prizeItems) { if (prize.Type == 0 && userPlot != null) { var itemInfo = cacheSetItemInfo.FindKey(prize.ItemID); UniversalInfo universalInfo = new UniversalInfo(); universalInfo.HeadID = itemInfo != null ? itemInfo.HeadID : string.Empty; universalInfo.ItemID = itemInfo != null ? itemInfo.ItemID : 0; universalInfo.ItemDesc = itemInfo != null ? itemInfo.ItemDesc : string.Empty; universalInfo.MaxHeadID = itemInfo != null ? itemInfo.MaxHeadID : string.Empty; universalInfo.Name = itemInfo != null ? itemInfo.ItemName : string.Empty; universalInfo.Num = prize.Num; if (userPlot.ItemList != null && userPlot.ItemList.Count > 0) { var item = userPlot.ItemList.Find(s => s.ItemID == prize.ItemID); if (item != null) { item.UpdateNotify(obj => { item.Num = MathUtils.Addition(item.Num, prize.Num); return(true); }); } else { userPlot.UpdateNotify(obj => { userPlot.ItemList.Add(universalInfo); return(true); }); } } else { userPlot.UpdateNotify(obj => { userPlot.ItemList.Add(universalInfo); return(true); }); } } ContextUser.IsItem = true; } } var a = userPlot.ItemList; } finally { ContextUser.UserStatus = UserStatus.Normal; } //日志 UserCombatLog log = new UserCombatLog(); log.CombatLogID = Guid.NewGuid().ToString(); log.UserID = userPlotCombat.UserID; log.CityID = ContextUser.CityID; log.PlotID = userPlotCombat.PlotID; log.NpcID = userPlotCombat.PlotNpcID; log.CombatType = CombatType.Plot; log.HostileUser = string.Empty; log.IsWin = userPlotCombat.IsWin; log.CombatProcess = JsonUtils.Serialize(combatProcessList); log.PrizeItem = prizeItems; log.CreateDate = DateTime.Now; var sender = DataSyncManager.GetDataSender(); sender.Send(log); UserHelper.GetGeneralLife(ContextUser.UserID); UserHelper.RegainGeneralLife(ContextUser.UserID); //var userEmbattleList = EmbattleHelper.CurrEmbattle(ContextUser.UserID, true); // foreach (var userEmbattle in userEmbattleList) // { // _userTalPriority = MathUtils.Addition(_userTalPriority, PriorityHelper.GeneralTotalPriority(ContextUser.UserID, userEmbattle.GeneralID)); // } selfAbilityEffectList = UserAbilityHelper.GetSelfAbilityEffectList(ContextUser.UserID, 0); //var userEmbattleList = EmbattleHelper.CurrEmbattle(ContextUser.UserID, true); _userTalPriority = CombatHelper.TotalPriorityNum(ContextUser.UserID, 0); return(true); }
/// <summary> /// 处理礼包 /// </summary> /// <param name="userID"></param> /// <param name="order"></param> private static void DoGiff(string userID, OrderInfo order) { int packType = 0; List <PackageReceive> packageReceivess = new List <PackageReceive>(); UserRechargeLog rechargeLog = new UserRechargeLog { LogID = Guid.NewGuid().ToString(), UserID = userID, OrderNo = order.OrderNO, ChargeAmount = order.Amount, PayGold = order.GameCoins, ReargeDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(rechargeLog); UserRecharge recharge = new PersonalCacheStruct <UserRecharge>().FindKey(userID); if (recharge == null) { recharge = new UserRecharge() { UserID = userID }; } //处理充值活动 recharge.LastNum = order.GameCoins; TriggerFestivalPack(recharge, order.GameCoins); if (IsCurrentWeek(recharge.ChargeDate)) { recharge.WeekNum = MathUtils.Addition(recharge.WeekNum, order.GameCoins, int.MaxValue); } else { recharge.WeekNum = order.GameCoins; } if (recharge.ChargeDate.Month == DateTime.Now.Month) { recharge.MonthNum = MathUtils.Addition(recharge.MonthNum, order.GameCoins, int.MaxValue); } else { recharge.MonthNum = order.GameCoins; } recharge.TotalGoldNum = MathUtils.Addition(recharge.TotalGoldNum, order.GameCoins, int.MaxValue); recharge.ChargeDate = DateTime.Now; var rechargeCacheSet = new PersonalCacheStruct <UserRecharge>(); if (rechargeCacheSet.FindKey(userID) == null) { packType = 1; recharge.FirstNum = order.GameCoins; TriggerReceivePack(userID, packType, recharge.FirstNum); rechargeCacheSet.Add(recharge); FestivalHelper.GetFirstReward(userID, FestivalType.FirstReward); GameUser userInfo = new PersonalCacheStruct <GameUser>().FindKey(userID); if (userInfo != null) { FestivalHelper.GetPayReward(userInfo, order.GameCoins, FestivalType.FirstPayDoubleSpar); } } //触发总累计充值礼包 packType = 2; TriggerReceivePack(userID, packType, recharge.TotalGoldNum); List <RechargePacks> rechargePackseArray = new ShareCacheStruct <RechargePacks>().FindAll(m => m.PacksType == packType); foreach (RechargePacks rechargePackse in rechargePackseArray) { RemoveCharge(userID, rechargePackse.PacksID); } TriggerWeekPack(userID, recharge.WeekNum); //每周礼包 TriggerMonthPack(userID, recharge.MonthNum); //每月礼包 }
/// <summary> /// 触发战斗 /// </summary> /// <param name="user"></param> /// <param name="bossCombatProcess"></param> /// <returns></returns> public bool Combat(GameUser user, BossCombatProcess bossCombatProcess) { CombatGeneral bossGeneral = Boss; bossGeneral.LossLifeNum = 0; bool isWin = false; BossUser bossUser = GetCombatUser(user.UserID); ICombatController controller = CombatControllerFactory.Create(); ISingleCombat plotCombater = controller.GetSingleCombat(CombatType.BossPlot); double inspirePercent = bossUser.InspirePercent + bossUser.ReliveInspirePercent; plotCombater.SetAttack(new UserEmbattleQueue(user.UserID, user.UseMagicID, inspirePercent, CombatType.BossPlot)); plotCombater.SetDefend(new MonsterQueue(bossGeneral)); isWin = plotCombater.Doing(); bossCombatProcess.ProcessContainer = (CombatProcessContainer)plotCombater.GetProcessResult(); bossUser.CombatNum += 1; bossUser.DamageNum = MathUtils.Addition(bossUser.DamageNum, bossGeneral.LossLifeNum, int.MaxValue); bossCombatProcess.LiveNum = bossGeneral.LifeNum; bossCombatProcess.DamageNum = bossGeneral.LossLifeNum; bossCombatProcess.IsWin = isWin; bossCombatProcess.UserId = user.UserID; DoDamagePrize(user, bossGeneral.LossLifeNum, bossCombatProcess); if (isWin && bossGeneral.IsOver) { //GameActive active = GameActive; UserGuild guild = UserGuild; short bossprizeLv = 0; int killbossrate = 0; if (guild.BossPrize != null) { bossprizeLv = (short)guild.BossPrize.KillBossLv; killbossrate = guild.BossPrize.KillBossRate; //击杀奖 BossActivePrize bossPrize = UserGuild.BossPrize; string prizeItemMsg = string.Empty; DoTopThreePrize(0, user, bossPrize.KillReward, bossPrize.Items, out prizeItemMsg); } short lv = MathUtils.Subtraction(bossGeneral.Lv, bossprizeLv, (short)1); int killCoin = lv * killbossrate; user.GameCoin = MathUtils.Addition(user.GameCoin, killCoin, int.MaxValue); // new CacheChat().SystemSend(ChatType.World, string.Format("{0}玩家获得公会Boss战击杀奖,奖励{1}金币", user.NickName, killCoin)); new TjxChatService(user).SystemGuildSend(ChatType.Guild, string.Format(LanguageManager.GetLang().St6105_CombatKillReward, user.NickName, killCoin)); bossCombatProcess.KillGameCoin = killCoin; DoKillPrize(); int tempMinute = gameActive.Minutes - ConfigEnvSet.GetInt("BossCombat.KillTime"); int subSeconds = (int)new TimeSpan(0, tempMinute, 0).TotalSeconds; if (subSeconds - guild.ColdTime < 0) { //Boss自动升级 guild.GuildBossInfo.UpdateNotify(obj => { guild.GuildBossInfo.BossLv = MathUtils.Addition(guild.GuildBossInfo.BossLv, (short)1, short.MaxValue); return(true); }); //guild.Update(); } guild.CombatStatus = CombatStatus.Killed; CombatHelper.UpdateGuildBossKill(guild.GuildID); //公会boss已被杀 } else { bossUser.IsRelive = true; bossUser.ReliveBeginDate = DateTime.Now; } //日志 var log = new UserCombatLog { CombatLogID = Guid.NewGuid().ToString(), UserID = user.UserID, CityID = user.CityID, PlotID = gameActive == null ? 0 : gameActive.BossPlotID, NpcID = bossGeneral.GeneralID, CombatType = CombatType.BossPlot, HostileUser = string.Empty, IsWin = isWin, CombatProcess = JsonUtils.Serialize(bossCombatProcess), CreateDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(log); //user.Update(); return(isWin); }
protected override bool DoSuccess(int userId, out IUser user) { user = null; //原因:重登录时,数据会回档问题 var cacheSet = new PersonalCacheStruct <GameUser>(); GameUser userInfo = cacheSet.FindKey(userId.ToString()); if (userInfo != null) { //原因:还在加载中时,返回 if (userInfo.IsRefreshing) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().ServerLoading; return(false); } } if (userInfo == null || string.IsNullOrEmpty(userInfo.SessionID) || !userInfo.IsOnline) { UserCacheGlobal.Load(userId.ToString()); //重新刷缓存 userInfo = cacheSet.FindKey(userId.ToString()); } if (userInfo != null) { if (userInfo.UserStatus == UserStatus.FengJin) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1004_IDDisable; return(false); } user = new SessionUser(userInfo); //todo //NoticeHelper.RankNotice(userInfo); //公告 CombatHelper.LoadProperty(userInfo); //todo //NoviceHelper.OldFriendPack(Uid, userInfo.LoginTime); //好友礼包 UserLoginLog userLoginLog = new UserLoginLog(); userLoginLog.UserId = userInfo.UserID; userLoginLog.SessionID = Sid; userLoginLog.MobileType = MobileType; userLoginLog.ScreenX = ScreenX; userLoginLog.ScreenY = ScreenY; userLoginLog.RetailId = RetailID; userLoginLog.AddTime = DateTime.Now; userLoginLog.State = LoginStatus.Logined; userLoginLog.DeviceID = DeviceID; userLoginLog.Ip = this.GetRealIP(); userLoginLog.Pid = userInfo.Pid; userLoginLog.UserLv = userInfo.UserLv; //原因:报表统计 userLoginLog.PlotID = userInfo.PlotProgress; PlotInfo plotInfo = new ShareCacheStruct <PlotInfo>().FindKey(userInfo.PlotProgress); if (plotInfo != null) { userLoginLog.PlotName = plotInfo.PlotName; } var sender = DataSyncManager.GetDataSender(); sender.Send(userLoginLog); //int vipLv; //var vipLvArray = new ShareCacheStruct<VipLvInfo>().FindAll(u => u.PayGold <= userInfo.PayGold); //vipLv = vipLvArray.Count > 0 ? vipLvArray[vipLvArray.Count - 1].VipLv : (short)0; userInfo.LoginTime = DateTime.Now; userInfo.SessionID = Sid; userInfo.IsOnline = true; //userInfo.VipLv = vipLv; userInfo.GameId = GameType; userInfo.ServerId = ServerID; userInfo.ChatVesion = 0; userInfo.ChatDate = DateTime.MinValue; userInfo.BroadcastVesion = 0; if (userInfo.DailyLoginTime == MathUtils.SqlMinDate || userInfo.DailyLoginTime.Date != DateTime.Now.Date) { userInfo.DailyLoginTime = DateTime.Now; } //todo RankingHelper.DailySportsRankPrize(userInfo); } else { user = new SessionUser() { UserId = userId, PassportId = PassportId }; ErrorCode = 1005; ErrorInfo = LanguageManager.GetLang().St1005_RoleCheck; } return(true); }
public override bool TakeAction() { bool result = true; taskInfo = new ConfigCacheSet <StoryTaskInfo>().FindKey(TaskID); if (taskInfo == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; //this.ErrorInfo = LanguageManager.GetLang().St3002_NotFind; SaveLog(new Exception(string.Format("{0},User:{1},task:{2}", LanguageManager.GetLang().St3002_NotFind, ContextUser.UserID, TaskID))); return(false); } _userGeneral = UserGeneral.GetMainGeneral(Uid); //获得奖励 UserTask userTask = new GameDataCacheSet <UserTask>().FindKey(ContextUser.UserID, TaskID); if (userTask == null || userTask.TaskState != TaskState.Completed) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St3007_NoCompleted; return(false); } //交付物品任务扣除材料 if (taskInfo.TermsType == PlotTermsType.Shouji || taskInfo.TermsType == PlotTermsType.Delivery) { UserItemHelper.UseUserItem(Uid, taskInfo.TargetItemID, taskInfo.TargetItemNum); } userTask.TaskState = TaskState.Close; UserTaskLog taskLog = new UserTaskLog() { LogID = Guid.NewGuid().ToString(), TaskID = userTask.TaskID, UserID = userTask.UserID, TaskType = userTask.TaskType, TaskState = userTask.TaskState, TaskPrize = string.Format("Experience:{0},GameCoin:{1};GameCoin:{2} ", taskInfo.Experience, taskInfo.GameCoin, ContextUser.GameCoin ), CreateDate = DateTime.Now }; var sender = DataSyncManager.GetDataSender(); sender.Send(taskLog); ContextUser.GameCoin = MathUtils.Addition(ContextUser.GameCoin, taskInfo.GameCoin, int.MaxValue); if (taskInfo.TaskType == TaskType.Master && ContextUser.TaskProgress < TaskID) { ContextUser.TaskProgress = TaskID; } //ContextUser.Update(); //任务加佣兵经验 //var userEmbattles = new GameDataCacheSet<UserEmbattle>().FindAll(UserEmbattle.Index_UserID_MagicID, Uid, ContextUser.UseMagicID); //foreach (var userEmbattle in userEmbattles) //{ // UserGeneral userGeneral = new GameDataCacheSet<UserGeneral>().FindKey(ContextUser.UserID, userEmbattle.GeneralID); // if (userGeneral == null) continue; // userGeneral.CurrExperience = MathUtils.Addition(userGeneral.CurrExperience, taskInfo.Experience, int.MaxValue); // //userGeneral.Update(); //} UserHelper.UserGeneralExp(ContextUser.UserID, taskInfo.Experience); //开启功能 TaskHelper.EnableFunction(ContextUser, taskInfo.FunctionEnum); //下发可接任务 TaskHelper.SendAllowTask(ContextUser, TaskID); //开启副本 PlotHelper.EnablePlot(Uid, taskInfo.EnablePlot); //保留主线任务 var cacheSet = new GameDataCacheSet <UserTask>(); if (userTask.TaskType == TaskType.Master) { //userTask.Update(); } else { //原因:最后支线任务无限刷新BUG if (!TaskHelper.IsLastTask(userTask)) { cacheSet.Delete(userTask); } } return(result); }
//protected override bool ValidateElement() //{ // return UserHelper.GetKeyWordSubstitution(UserName); //} protected override bool CreateUserRole(out IUser user) { user = null; int MaxLength = ConfigEnvSet.GetInt("User.MaxLength"); int length = System.Text.Encoding.Default.GetByteCount(UserName); if (UserHelper.GetKeyWordSubstitution(UserName)) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1005_RegistNameKeyWord; return(false); } if (GameUser.IsNickName(UserName)) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1005_Rename; return(false); } if (length <= 0 || length > MaxLength) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = string.Format(LanguageManager.GetLang().St1005_KingNameTooLong, MaxLength); return(false); } Regex re = new Regex(@"^[\u4e00-\u9fa5\w]+$"); if (!re.IsMatch(UserName)) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1005_RegistNameExceptional; return(false); } if (!Pid.ToLower().StartsWith("z")) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1005_PassportError; return(false); } GeneralInfo general = new ConfigCacheSet <GeneralInfo>().FindKey(generalID); if (general == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; return(false); } CareerInfo careerInfo = new ConfigCacheSet <CareerInfo>().FindKey(general.CareerID); if (careerInfo == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1005_Professional; return(false); } GameUser userEntity = new GameDataCacheSet <GameUser>().FindKey(Uid); if (userEntity != null) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1005_RoleExist; return(false); } bool userSex = Sex == 0 ? false : true; if (new GameDataCacheSet <GameUser>().FindKey(Uid) == null) { userEntity = CreateGameUser(userSex); user = new SessionUser(userEntity); NoviceHelper.RetailLoginDaysReceive(userEntity); //渠道登录奖励 CreateGeneral(careerInfo); CreateMagic(userEntity); //每日限制次数 CreateDailyRestrain(); //开启默认功能 EnableFunction(); //SendGifItem(); UserPrayHelper.AddUserPray(Uid.ToInt(), PrayType.SanTianQiDao); UserPackHelper.AddUserPack(Uid); UserLoginLog userLoginLog = new UserLoginLog(); userLoginLog.UserId = Uid; userLoginLog.SessionID = Sid; userLoginLog.MobileType = MobileType; userLoginLog.ScreenX = ScreenX; userLoginLog.ScreenY = ScreenY; userLoginLog.RetailId = RetailID; userLoginLog.AddTime = DateTime.Now; userLoginLog.State = LoginStatus.Logined; userLoginLog.DeviceID = DeviceID; userLoginLog.Ip = this.GetRealIP(); userLoginLog.Pid = userEntity.Pid; userLoginLog.UserLv = userEntity.UserLv; var sender = DataSyncManager.GetDataSender(); sender.Send(userLoginLog); BackPackHelper.AddBack(userEntity); UserHelper.OpenMagic(Uid, 1); //封测注册发放礼包 UserItemHelper.AddUserItem(Uid, 1704, 1, ItemStatus.BeiBao); } else { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1005_RoleExist; return(false); } PlotHelper.EnablePlot(Uid, ConfigEnvSet.GetInt("UserPlot.OpenLockPlotID")); return(true); }