/// <summary> /// 创建玩家对象 /// </summary> /// <param name="playerId"></param> /// <param name="userId"></param> /// <returns></returns> public static async Task <Gamer> Create(long playerId, long userId, long?id = null) { Gamer gamer = ComponentFactory.CreateWithId <Gamer, long>(id ?? IdGenerater.GenerateId(), userId); gamer.PlayerID = playerId; gamer.isOffline = false; gamer.playerBaseInfo = await DBCommonUtil.getPlayerBaseInfo(userId); return(gamer); }
protected override async void Run(Session session, C2G_UseZhuanPan message, Action <G2C_UseZhuanPan> reply) { G2C_UseZhuanPan response = new G2C_UseZhuanPan(); try { DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); PlayerBaseInfo playerBaseInfo = await DBCommonUtil.getPlayerBaseInfo(message.Uid); if (playerBaseInfo.ZhuanPanCount <= 0) { response.Error = ErrorCode.TodayHasSign; response.Message = "您的抽奖次数不足"; reply(response); return; } else { playerBaseInfo.ZhuanPanCount -= 1; playerBaseInfo.LuckyValue += 1; response.itemId = getRewardItemId(playerBaseInfo.LuckyValue); response.reward = getReward(response.itemId, playerBaseInfo.LuckyValue); // 满99后重置 if (playerBaseInfo.LuckyValue >= 99) { playerBaseInfo.LuckyValue = 0; } await proxyComponent.Save(playerBaseInfo); reply(response); { await DBCommonUtil.changeWealthWithStr(message.Uid, response.reward, "转盘奖励"); // 转盘日志 { Log_UseZhuanPan log_UseZhuanPan = ComponentFactory.CreateWithId <Log_UseZhuanPan>(IdGenerater.GenerateId()); log_UseZhuanPan.Uid = message.Uid; log_UseZhuanPan.Reward = response.reward; await proxyComponent.Save(log_UseZhuanPan); } } } } catch (Exception e) { Log.Debug(e.ToString()); ReplyError(response, e, reply); } }
protected override async void Run(Session session, C2G_Share message, Action <G2C_Share> reply) { G2C_Share response = new G2C_Share(); try { DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); // 分享增加转盘次数 { List <Log_UseZhuanPan> log_UseZhuanPan = await proxyComponent.QueryJson <Log_UseZhuanPan>($"{{CreateTime:/^{DateTime.Now.GetCurrentDay()}/,Uid:{ message.Uid}}}"); PlayerBaseInfo playerBaseInfo = await DBCommonUtil.getPlayerBaseInfo(message.Uid); // 贵族 if (playerBaseInfo.VipTime.CompareTo(CommonUtil.getCurTimeNormalFormat()) > 0) { if (log_UseZhuanPan.Count == 4) { Log.Debug("该用户是贵族,游戏增加的转盘次数已用完,通过分享增加次数"); playerBaseInfo.ZhuanPanCount = 1; await proxyComponent.Save(playerBaseInfo); } } else { if (log_UseZhuanPan.Count == 3) { Log.Debug("该用户是普通玩家,游戏增加的转盘次数已用完,通过分享增加次数"); playerBaseInfo.ZhuanPanCount = 1; await proxyComponent.Save(playerBaseInfo); } } } // 分享日志 { Log_Share log_Share = ComponentFactory.CreateWithId <Log_Share>(IdGenerater.GenerateId()); log_Share.Uid = message.Uid; await proxyComponent.Save(log_Share); } reply(response); } catch (Exception e) { Log.Debug(e.ToString()); ReplyError(response, e, reply); } }
protected override async void Run(Session session, G2M_PlayerEnterRoom message, Action <M2G_PlayerEnterRoom> reply) { M2G_PlayerEnterRoom response = new M2G_PlayerEnterRoom(); //Log.Info("G2M_GamerEnterRoomHandler" + JsonHelper.ToJson(message)); try { RoomComponent roomCompnent = Game.Scene.GetComponent <RoomComponent>(); Gamer gamer = null; Room room = null; foreach (var _room in roomCompnent.rooms.Values) { room = _room; gamer = room.Get(message.UserId); if (gamer != null) { Log.Info("找到房间:" + _room.Id); break; } } //断线重连 if (gamer != null) { //在空闲房间内 if (room.State == RoomState.Idle) { response.Message = "已经进入房间"; response.Error = ErrorCode.ERR_Common; Log.Error("玩家多次进入空闲房间"); room.Remove(gamer.UserID); reply(response); return; } DeskComponent deskComponent = room.GetComponent <DeskComponent>(); //重新更新actor gamer.PlayerID = message.PlayerId; gamer.GetComponent <UnitGateComponent>().GateSessionActorId = message.SessionId; //短线重连 Actor_GamerReconnet reconnet = new Actor_GamerReconnet(); foreach (var _gamer in room.GetAll()) { if (_gamer == null) { Log.Error($"断线重连后玩家为空"); continue; } GamerData gamerData = new GamerData(); HandCardsComponent handCardsComponent = _gamer.GetComponent <HandCardsComponent>(); if (handCardsComponent == null) { Log.Error($"{_gamer.UserID}断线重连后玩家的手牌为空,移除玩家"); continue; // room.Remove(_gamer.UserID); // //房间没人就释放 // if (room.seats.Count == 0) // { // roomCompnent.RemoveRoom(room); // room.Dispose(); // } // return; } List <MahjongInfo> handCards = handCardsComponent.GetAll(); gamerData.handCards = handCards; gamerData.faceCards = handCardsComponent.FaceCards; gamerData.playCards = handCardsComponent.PlayCards; //添加碰刚的uid foreach (var pengOrBar in handCardsComponent.PengOrBars) { //碰 if (pengOrBar.OperateType == OperateType.Peng) { gamerData.pengCards.Add(new MahjongInfo() { weight = (byte)pengOrBar.Weight }); gamerData.OperatedPengUserIds.Add(pengOrBar.UserId); } //杠 else { gamerData.gangCards.Add(new MahjongInfo() { weight = (byte)pengOrBar.Weight }); gamerData.OperatedGangUserIds.Add(pengOrBar.UserId); } } gamerData.IsBanker = handCardsComponent.IsBanker; gamerData.UserID = _gamer.UserID; gamerData.SeatIndex = room.GetGamerSeat(_gamer.UserID); gamerData.OnlineSeconds = await DBCommonUtil.GetRestOnlineSeconds(_gamer.UserID); gamerData.IsTrusteeship = gamer.IsTrusteeship; PlayerBaseInfo playerBaseInfo = await DBCommonUtil.getPlayerBaseInfo(_gamer.UserID); PlayerInfo playerInfo = PlayerInfoFactory.Create(playerBaseInfo); gamerData.playerInfo = playerInfo; reconnet.Gamers.Add(gamerData); } reconnet.RestCount = deskComponent.RestLibrary.Count; reconnet.RoomType = (int)room.GetComponent <GameControllerComponent>().RoomConfig.Id; if (room.IsFriendRoom) { GameControllerComponent gameControllerComponent = room.GetComponent <GameControllerComponent>(); reconnet.RoomId = gameControllerComponent.RoomConfig.FriendRoomId; reconnet.MasterUserId = gameControllerComponent.RoomConfig.MasterUserId; reconnet.JuCount = gameControllerComponent.RoomConfig.JuCount; reconnet.Multiples = gameControllerComponent.RoomConfig.Multiples; reconnet.CurrentJuCount = room.CurrentJuCount; } room.GamerReconnect(gamer, reconnet); gamer.isOffline = false; gamer.RemoveComponent <TrusteeshipComponent>(); Log.Info($"玩家{message.UserId}断线重连"); gamer.StartTime = DateTime.Now; } else { Log.Info($"{message.UserId}进入房间"); gamer = await GamerFactory.Create(message.PlayerId, message.UserId); await gamer.AddComponent <MailBoxComponent>().AddLocation(); gamer.AddComponent <UnitGateComponent, long>(message.SessionId); RoomComponent roomComponent = Game.Scene.GetComponent <RoomComponent>(); //获得空闲的房间 Room idleRoom; if (message.RoomType == 3) { idleRoom = roomComponent.GetFriendRoomById(message.RoomId); if (idleRoom == null) { response.Error = ErrorCode.ERR_Common; response.Message = "房间号不存在"; reply(response); return; } if (idleRoom.Count == 4) { response.Error = ErrorCode.ERR_Common; response.Message = "房间人数已满"; reply(response); return; } } else { idleRoom = roomComponent.GetIdleRoomById(message.RoomType); if (idleRoom == null) { idleRoom = RoomFactory.Create(message.RoomType); roomComponent.Add(idleRoom); } } idleRoom.Add(gamer); await idleRoom.BroadGamerEnter(gamer.UserID); } response.GameId = gamer.Id; reply(response); if (message.RoomType == 3) { await Actor_GamerReadyHandler.GamerReady(gamer, new Actor_GamerReady() { }); } } catch (Exception e) { ReplyError(response, e, reply); } await Task.CompletedTask; }
protected override async void Run(Session session, C2G_LoginGate message, Action <G2C_LoginGate> reply) { G2C_LoginGate response = new G2C_LoginGate(); try { long userId = Game.Scene.GetComponent <NjmjGateSessionKeyComponent>().Get(message.Key); if (userId == 0) { response.Error = ErrorCode.ERR_ConnectGateKeyError; response.Message = "Gate key验证失败!"; reply(response); return; } // 检测是否已存在 UserComponentSystem.CheckIsExistTheUser(userId); //创建User对象 User user = UserFactory.Create(userId, session); await user.AddComponent <MailBoxComponent>().AddLocation(); //添加心跳包 session.AddComponent <HeartBeatComponent>().CurrentTime = TimeHelper.ClientNowSeconds(); //添加User对象关联到Session上 session.AddComponent <SessionUserComponent>().User = user; //添加消息转发组件 session.AddComponent <MailBoxComponent, string>(ActorType.GateSession); response.PlayerId = user.Id; response.Uid = userId; ConfigComponent configCom = Game.Scene.GetComponent <ConfigComponent>(); DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); { //商城 if (ShopData.getInstance().getDataList().Count == 0) { List <ShopConfig> shopList = new List <ShopConfig>(); for (int i = 1; i < configCom.GetAll(typeof(ShopConfig)).Length + 1; ++i) { int id = 1000 + i; ShopConfig config = (ShopConfig)configCom.Get(typeof(ShopConfig), id); shopList.Add(config); } ShopData.getInstance().getDataList().AddRange(shopList); } //#region AddShopInfo List <ShopInfo> shopInfoList = new List <ShopInfo>(); for (int i = 0; i < ShopData.getInstance().getDataList().Count; ++i) { ShopConfig config = ShopData.getInstance().getDataList()[i]; ShopInfo info = new ShopInfo(); info.Id = (int)config.Id; info.Name = config.Name; info.Price = config.Price; info.ShopType = config.shopType; info.Desc = config.Desc; info.CurrencyType = config.CurrencyType; info.Items = config.Items; info.Icon = config.Icon; info.VipPrice = config.VipPrice; shopInfoList.Add(info); } response.ShopInfoList = shopInfoList; } { //任务 if (TaskData.getInstance().getDataList().Count == 0) { List <TaskConfig> taskList = new List <TaskConfig>(); for (int i = 1; i < configCom.GetAll(typeof(TaskConfig)).Length + 1; ++i) { int id = 100 + i; TaskConfig config = (TaskConfig)configCom.Get(typeof(TaskConfig), id); taskList.Add(config); } TaskData.getInstance().getDataList().AddRange(taskList); } } { //成就 if (ChengjiuData.getInstance().getDataList().Count == 0) { List <ChengjiuConfig> chengjiuList = new List <ChengjiuConfig>(); for (int i = 1; i < configCom.GetAll(typeof(ChengjiuConfig)).Length + 1; ++i) { int id = 100 + i; ChengjiuConfig config = (ChengjiuConfig)configCom.Get(typeof(ChengjiuConfig), id); chengjiuList.Add(config); } ChengjiuData.getInstance().getDataList().AddRange(chengjiuList); } } List <UserBag> bagInfoList = await proxyComponent.QueryJson <UserBag>($"{{UId:{userId}}}"); response.BagList = new List <Bag>(); List <Bag> bagList = new List <Bag>(); for (int i = 0; i < bagInfoList.Count; ++i) { Bag bag = new Bag(); bag.ItemId = bagInfoList[i].BagId; bag.Count = bagInfoList[i].Count; bagList.Add(bag); } response.BagList = bagList; PlayerBaseInfo playerBaseInfo = await DBCommonUtil.getPlayerBaseInfo(userId); // 老用户检测 { try { AccountInfo accountInfo = await DBCommonUtil.getAccountInfo(userId); if (accountInfo.OldAccountState == 1) { string url = "http://fksq.hy51v.com:10086/CheckIsOldUser?machine_id=" + accountInfo.MachineId + "&game_id=217"; string str = HttpUtil.GetHttp(url); Log.Debug("web地址:" + url); Log.Debug("判断是否是老用户:" + str); JObject result = JObject.Parse(str); string old_uid = (string)result.GetValue("old_uid"); // 不是老用户 if (string.IsNullOrEmpty(old_uid)) { accountInfo.OldAccountState = 3; await proxyComponent.Save(accountInfo); } // 是老用户 else { List <Log_OldUserBind> log_OldUserBinds = await proxyComponent.QueryJson <Log_OldUserBind>($"{{macId:'{accountInfo.MachineId}'}}"); if (log_OldUserBinds.Count > 0) { accountInfo.OldAccountState = 3; await proxyComponent.Save(accountInfo); } else { accountInfo.OldAccountState = 2; await proxyComponent.Save(accountInfo); // 记录绑定日志 { Log_OldUserBind log_OldUserBind = ComponentFactory.CreateWithId <Log_OldUserBind>(IdGenerater.GenerateId()); log_OldUserBind.Uid = userId; log_OldUserBind.OldUid = old_uid; log_OldUserBind.macId = accountInfo.MachineId; log_OldUserBind.isSendReward = 1; await proxyComponent.Save(log_OldUserBind); } { url = ("http://fksq.hy51v.com:10086/GetOldNjmjData?UserId=" + old_uid); str = HttpUtil.GetHttp(url); result = JObject.Parse(str); int moneyAmount = (int)result.GetValue("moneyAmount"); int gIngotAmount = (int)result.GetValue("gIngotAmount"); Log.Debug("老用户金币=" + moneyAmount + " 元宝=" + gIngotAmount); playerBaseInfo.GoldNum = moneyAmount; playerBaseInfo.WingNum = gIngotAmount; await proxyComponent.Save(playerBaseInfo); await DBCommonUtil.changeWealthWithStr(userId, "111:10;2:10", "老用户赠送"); } // 发送老用户广播 Actor_OldUser actor_OldUser = new Actor_OldUser(); actor_OldUser.OldAccount = old_uid; Game.Scene.GetComponent <UserComponent>().BroadCastToSingle(actor_OldUser, userId); } } } else if (accountInfo.OldAccountState == 2) { List <Log_OldUserBind> log_OldUserBinds = await proxyComponent.QueryJson <Log_OldUserBind>($"{{macId:'{accountInfo.MachineId}'}}"); if (log_OldUserBinds.Count > 0) { if (log_OldUserBinds[0].isSendReward != 1) { log_OldUserBinds[0].isSendReward = 1; await proxyComponent.Save(log_OldUserBinds[0]); await DBCommonUtil.SendMail(userId, "更新游戏奖励", "亲爱的玩家,南京麻将最新版本更新了,特意送上更新奖励,请笑纳,祝您游戏愉快!", "111:10;2:10"); } } } } catch (Exception ex) { Log.Error("检测是否是老用户出错:" + ex); } } #region 用户活动所获得的头像数据 List <OtherData> otherDatas = await proxyComponent.QueryJson <OtherData>($"{{UId:{userId}}}"); if (otherDatas.Count > 0) { response.ownIcon = otherDatas[0].OwnIcon; } #endregion reply(response); session.Send(new G2C_TestHotfixMessage() { Info = "recv hotfix message success" }); // vip上线全服广播 { if (playerBaseInfo.VipTime.CompareTo(CommonUtil.getCurTimeNormalFormat()) > 0) { Actor_LaBa actor_LaBa = new Actor_LaBa(); actor_LaBa.LaBaContent = "贵族玩家" + playerBaseInfo.Name + "上线啦!"; Game.Scene.GetComponent <UserComponent>().BroadCast(actor_LaBa); } } } catch (Exception e) { ReplyError(response, e, reply); } }
protected override async void Run(Session session, C2G_UseHuaFei message, Action <G2C_UseHuaFei> reply) { G2C_UseHuaFei response = new G2C_UseHuaFei(); try { DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); // 兑换话费 if (message.Type == 1) { if (message.HuaFei == 5 * 100) { PlayerBaseInfo playerBaseInfo = await DBCommonUtil.getPlayerBaseInfo(message.Uid); if (playerBaseInfo.HuaFeiNum >= 5 * 100) { List <UseHuaFei> useHuaFeis = await proxyComponent.QueryJson <UseHuaFei>($"{{CreateTime:/^{DateTime.Now.GetCurrentDay()}/,Uid:{message.Uid},HuaFei:{message.HuaFei}}}"); if (useHuaFeis.Count > 0) { response.Error = ErrorCode.TodayHasSign; response.Message = "您今天的兑换机会已用完"; reply(response); return; } else { // 充值话费 { string str = HttpUtil.PhoneFeeRecharge(message.Uid.ToString().Substring(1), "话费", "5", message.Phone, "3", "1"); Log.Debug("=======" + str); if (!CommonUtil.checkHuaFeiChongZhiResult(str)) { response.Message = "充值失败"; response.Error = ErrorCode.ERR_PhoneCodeError; reply(response); return; } // 充值成功 else { // 充值话费 UseHuaFei useHuaFei = ComponentFactory.CreateWithId <UseHuaFei>(IdGenerater.GenerateId()); useHuaFei.Uid = message.Uid; useHuaFei.HuaFei = message.HuaFei; useHuaFei.Phone = message.Phone; await proxyComponent.Save(useHuaFei); await DBCommonUtil.ChangeWealth(message.Uid, 3, -5 * 100, "话费充值"); } } reply(response); } } else { response.Error = ErrorCode.TodayHasSign; response.Message = "您的话费余额不足"; reply(response); return; } } else { // 不合法的金额 response.Error = ErrorCode.TodayHasSign; response.Message = "您的充值金额不存在"; reply(response); return; } } // 兑换元宝 else if (message.Type == 2) { if (message.HuaFei == 1 * 100) { PlayerBaseInfo playerBaseInfo = await DBCommonUtil.getPlayerBaseInfo(message.Uid); if (playerBaseInfo.HuaFeiNum >= 1 * 100) { List <UseHuaFei> useHuaFeis = await proxyComponent.QueryJson <UseHuaFei>($"{{CreateTime:/^{DateTime.Now.GetCurrentDay()}/,Uid:{message.Uid},HuaFei:{message.HuaFei}}}"); if (useHuaFeis.Count >= 10) { response.Error = ErrorCode.TodayHasSign; response.Message = "您今天的兑换机会已用完"; reply(response); return; } else { // 兑换10个元宝 { await DBCommonUtil.ChangeWealth(message.Uid, 2, 10, "话费兑换元宝"); { // 记录日志 UseHuaFei useHuaFei = ComponentFactory.CreateWithId <UseHuaFei>(IdGenerater.GenerateId()); useHuaFei.Uid = message.Uid; useHuaFei.HuaFei = message.HuaFei; useHuaFei.Phone = message.Phone; await proxyComponent.Save(useHuaFei); await DBCommonUtil.ChangeWealth(message.Uid, 3, -1 * 100, "话费兑换元宝"); } } response.Reward = "2:10"; reply(response); } } else { response.Error = ErrorCode.TodayHasSign; response.Message = "您的话费余额不足"; reply(response); return; } } else { // 不合法的金额 response.Error = ErrorCode.TodayHasSign; response.Message = "您的充值金额不存在"; reply(response); return; } } } catch (Exception e) { ReplyError(response, e, reply); } }
public static async Task GamerContinue(Gamer gamer) { try { Log.Info($"玩家{gamer.UserID}继续游戏"); RoomComponent roomComponent = Game.Scene.GetComponent <RoomComponent>(); Room room = roomComponent.Get(gamer.RoomID); if (room == null) { return; } GameControllerComponent gameControllerComponent = room.GetComponent <GameControllerComponent>(); OrderControllerComponent orderControllerComponent = room.GetComponent <OrderControllerComponent>(); gamer.ReadyTimeOut = 0; List <GamerInfo> Gamers = new List <GamerInfo>(); for (int i = 0; i < room.GetAll().Length; i++) { Gamer _gamer = room.GetAll()[i]; if (_gamer == null) { continue; } GamerInfo gamerInfo = new GamerInfo(); gamerInfo.UserID = _gamer.UserID; gamerInfo.SeatIndex = room.GetGamerSeat(_gamer.UserID); gamerInfo.IsReady = _gamer.IsReady; PlayerBaseInfo playerBaseInfo = await DBCommonUtil.getPlayerBaseInfo(gamerInfo.UserID); //判断金币是否不够 if (!room.IsFriendRoom) { if (playerBaseInfo.GoldNum < gameControllerComponent.RoomConfig.MinThreshold) { room.GamerBroadcast(_gamer, new Actor_GamerReadyTimeOut() { Message = "金币不足" }); room.Remove(_gamer.UserID); _gamer.Dispose(); if (room.Count == 0) { GameHelp.RoomDispose(room); return; } continue; } } PlayerInfo playerInfo = PlayerInfoFactory.Create(playerBaseInfo); gamerInfo.playerInfo = playerInfo; Gamers.Add(gamerInfo); } Actor_GamerEnterRoom actorGamerEnterRoom = new Actor_GamerEnterRoom() { RoomType = (int)gameControllerComponent.RoomConfig.Id, Gamers = Gamers }; if (room.IsFriendRoom) { actorGamerEnterRoom.RoomId = gameControllerComponent.RoomConfig.FriendRoomId; actorGamerEnterRoom.MasterUserId = gameControllerComponent.RoomConfig.MasterUserId; actorGamerEnterRoom.JuCount = gameControllerComponent.RoomConfig.JuCount; actorGamerEnterRoom.Multiples = gameControllerComponent.RoomConfig.Multiples; actorGamerEnterRoom.CurrentJuCount = room.CurrentJuCount; } room.Broadcast(actorGamerEnterRoom); // if (room.IsFriendRoom) // { await Actor_GamerReadyHandler.GamerReady(gamer, new Actor_GamerReady() { }); // } } catch (Exception e) { Log.Error(e); } await Task.CompletedTask; }
/// <summary> /// 加入房间Actor /// </summary> /// <param name="self"></param> /// <param name="userId"></param> public static async Task BroadGamerEnter(this Room self, long userId) { List <GamerInfo> gamerInfos = new List <GamerInfo>(); long roomType = self.GetComponent <GameControllerComponent>().RoomConfig.Id; GamerInfo currentInfo = null; for (int i = 0; i < self.GetAll().Length; i++) { Gamer _gamer = self.GetAll()[i]; if (_gamer == null) { continue; } GamerInfo gamerInfo = new GamerInfo(); gamerInfo.UserID = _gamer.UserID; gamerInfo.SeatIndex = self.GetGamerSeat(_gamer.UserID); gamerInfo.IsReady = _gamer.IsReady; if (_gamer.playerBaseInfo == null) { _gamer.playerBaseInfo = await DBCommonUtil.getPlayerBaseInfo(gamerInfo.UserID); } PlayerInfo playerInfo = PlayerInfoFactory.Create(_gamer.playerBaseInfo); gamerInfo.playerInfo = playerInfo; if (gamerInfo.UserID == userId) { currentInfo = gamerInfo; } gamerInfos.Add(gamerInfo); } foreach (var _gamer in self.GetAll()) { if (_gamer == null || _gamer.isOffline) { continue; } //第一次进入 if (_gamer.UserID == userId) { Actor_GamerEnterRoom actorGamerEnterRoom = new Actor_GamerEnterRoom() { RoomType = (int)roomType, Gamers = gamerInfos, }; if (roomType == 3) { GameControllerComponent gameControllerComponent = self.GetComponent <GameControllerComponent>(); actorGamerEnterRoom.RoomId = gameControllerComponent.RoomConfig.FriendRoomId; actorGamerEnterRoom.MasterUserId = gameControllerComponent.RoomConfig.MasterUserId; actorGamerEnterRoom.JuCount = gameControllerComponent.RoomConfig.JuCount; actorGamerEnterRoom.Multiples = gameControllerComponent.RoomConfig.Multiples; actorGamerEnterRoom.CurrentJuCount = self.CurrentJuCount; } self.GamerBroadcast(_gamer, actorGamerEnterRoom); } //有人加入 else { Actor_GamerJionRoom actorGamerJionRoom = new Actor_GamerJionRoom() { Gamer = currentInfo }; self.GamerBroadcast(_gamer, actorGamerJionRoom); } } }
/// <summary> /// 更新任务 /// </summary> /// <param name="uid"></param> /// <param name="taskId"></param> /// <param name="progress"></param> public static async Task UpdateTask(long uid, int taskId, int progress) { DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); TaskInfo taskInfo = new TaskInfo(); List <TaskProgressInfo> taskProgressInfoList = await proxyComponent.QueryJson <TaskProgressInfo>($"{{UId:{uid},TaskId:{taskId}}}"); if (taskProgressInfoList.Count <= 0) { TaskProgressInfo info = ComponentFactory.CreateWithId <TaskProgressInfo>(IdGenerater.GenerateId()); TaskConfig config = ConfigHelp.Get <TaskConfig>(taskId); // TaskConfig config = TaskData.getInstance().GetDataByTaskId(taskId); info.IsGet = false; info.UId = uid; info.Name = config.Name; info.TaskId = (int)config.Id; info.IsComplete = false; info.Target = config.Target; info.Reward = config.Reward; info.Desc = config.Desc; info.CurProgress = 0; await proxyComponent.Save(info); taskProgressInfoList = await proxyComponent.QueryJson <TaskProgressInfo>($"{{UId:{uid},TaskId:{taskId}}}"); } if (taskProgressInfoList.Count > 0) { /* * progress = -1 代表输 * progress = 1 代表赢 */ if (taskId == 104) { if (!taskProgressInfoList[0].IsComplete) { if (progress == -1) { taskProgressInfoList[0].CurProgress = 0; await proxyComponent.Save(taskProgressInfoList[0]); } else if (progress == 1) { taskProgressInfoList[0].CurProgress += progress; if (taskProgressInfoList[0].CurProgress == taskProgressInfoList[0].Target) { taskProgressInfoList[0].IsComplete = true; } await proxyComponent.Save(taskProgressInfoList[0]); } } } else { taskProgressInfoList[0].CurProgress += progress; if (taskProgressInfoList[0].CurProgress >= taskProgressInfoList[0].Target) { taskProgressInfoList[0].IsComplete = true; } await proxyComponent.Save(taskProgressInfoList[0]); } } // 增加转盘次数 if (taskId == 101) { if (taskProgressInfoList[0].CurProgress < 4) { PlayerBaseInfo playerBaseInfo = await DBCommonUtil.getPlayerBaseInfo(uid); ++playerBaseInfo.ZhuanPanCount; await proxyComponent.Save(playerBaseInfo); } } // Log.Debug("UpdateTask111111111111"); }