protected override async void Run(Session session, C2G_GetItem message, Action <G2C_GetItem> reply) { G2C_GetItem response = new G2C_GetItem(); try { DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); List <PlayerBaseInfo> baseInfo = await proxyComponent.QueryJson <PlayerBaseInfo>($"{{_id:{message.UId}}}"); PlayerInfo playerInfo = new PlayerInfo(); Log.Info("领取邮件"); Log.Info(JsonHelper.ToJson(message.InfoList)); for (int i = 0; i < message.InfoList.Count; ++i) { GetItemInfo getItem = message.InfoList[i]; await DBCommonUtil.ChangeWealth(message.UId, getItem.ItemID, getItem.Count, "邮件领取奖励"); } List <EmailInfo> emailInfoList = await proxyComponent.QueryJson <EmailInfo>($"{{UId:{message.UId},_id:{message.MailId}}}"); if (emailInfoList.Count > 0) { emailInfoList[0].State = 1; await proxyComponent.Save(emailInfoList[0]); } response.Result = true; reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
protected override async void Run(Session session, C2G_GetTaskReward message, Action <G2C_GetTaskReward> reply) { G2C_GetTaskReward response = new G2C_GetTaskReward(); try { DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); //1,任务;2,成就 if (message.GetType == 1) { List <TaskProgressInfo> taskProgressInfoList = await proxyComponent.QueryJson <TaskProgressInfo>($"{{UId:{message.UId},TaskId:{message.TaskInfo.Id}}}"); if (taskProgressInfoList.Count > 0) { if (!taskProgressInfoList[0].IsComplete) { response.Error = ErrorCode.TaskNotComplete; response.Message = "任务还未完成,不能领取奖励"; taskProgressInfoList[0].IsGet = false; await proxyComponent.Save(taskProgressInfoList[0]); } else { taskProgressInfoList[0].IsGet = true; await DBCommonUtil.ChangeWealth(message.UId, 1, message.TaskInfo.Reward, "任务奖励"); await proxyComponent.Save(taskProgressInfoList[0]); } } } else if (message.GetType == 2) { List <ChengjiuInfo> chengjiuInfoList = await proxyComponent.QueryJson <ChengjiuInfo>($"{{UId:{message.UId},TaskId:{message.TaskInfo.Id}}}"); if (chengjiuInfoList.Count > 0) { if (!chengjiuInfoList[0].IsComplete) { response.Error = ErrorCode.TaskNotComplete; response.Message = "成就任务还未完成,不能领取奖励"; chengjiuInfoList[0].IsGet = false; await proxyComponent.Save(chengjiuInfoList[0]); } else { chengjiuInfoList[0].IsGet = true; await DBCommonUtil.ChangeWealth(message.UId, 1, message.TaskInfo.Reward, "成就奖励"); await proxyComponent.Save(chengjiuInfoList[0]); } } } reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
protected override async void Run(Session session, C2G_ChangeWealth message, Action <G2C_ChangeWealth> reply) { G2C_ChangeWealth response = new G2C_ChangeWealth(); try { await DBCommonUtil.ChangeWealth(message.UId, message.propId, message.propNum, "C2G_ChangeWealthHandler调用"); reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
protected override async void Run(Session session, C2G_UseItem message, Action <G2C_UseItem> reply) { G2C_UseItem response = new G2C_UseItem(); try { DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); List <UserBag> itemInfos = await proxyComponent.QueryJson <UserBag>($"{{UId:{message.UId},BagId:{message.ItemId}}}"); if (itemInfos.Count <= 0) { response.Message = "您的道具数量不足"; response.result = 0; } else { if (itemInfos[0].Count > 0) { await DBCommonUtil.ChangeWealth(message.UId, itemInfos[0].BagId, -1, "使用背包道具"); response.result = 1; await useProp(response, message.UId, message.ItemId); } else { response.Message = "您的道具数量不足"; response.result = 0; } } reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
/// <summary> /// 游戏内改变金币 /// </summary> /// <param name="room"></param> /// <param name="gamer"></param> /// <param name="amount"></param> /// <param name="isFriendRoom"></param> /// <param name="msg"></param> public static async void ChangeGamerGold(Room room, Gamer gamer, int amount, string msg = "游戏内改变金币", bool isNeedAnim = true) { if (amount == 0) { return; } if (room.IsFriendRoom) { await DBCommonUtil.ChangeWealth(gamer.UserID, 4, amount, msg, room); } else { await DBCommonUtil.ChangeWealth(gamer.UserID, 1, amount, msg, room); } if (isNeedAnim) { room.Broadcast(new Actor_GamerChangeGold() { Uid = gamer.UserID, GoldAmount = amount }); } }
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); } }
protected override async void Run(Session session, C2G_BuyItem message, Action <G2C_BuyItem> reply) { G2C_BuyItem response = new G2C_BuyItem(); try { DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); ShopConfig config = ConfigHelp.Get <ShopConfig>(message.ShopId); int shopId = CommonUtil.splitStr_Start(config.Items.ToString(), ':'); int count = CommonUtil.splitStr_End(config.Items.ToString(), ':'); int cost = 0; if (await DBCommonUtil.IsVIP(message.UId)) { cost = config.VipPrice; } else { cost = config.Price; } await DBCommonUtil.ChangeWealth(message.UId, config.CurrencyType, -cost, $"花费{cost}元宝购买商品{config.Name}"); List <PlayerBaseInfo> playerBaseInfos = await proxyComponent.QueryJson <PlayerBaseInfo>($"{{_id:{message.UId}}}"); switch (config.CurrencyType) { //金币 case 1: response.Wealth = playerBaseInfos[0].GoldNum; response.ShopType = 2; break; //元宝 case 2: response.Wealth = playerBaseInfos[0].WingNum; response.ShopType = 1; break; } //购买金币 if (shopId == 1) { await DBCommonUtil.ChangeWealth(message.UId, 1, count, $"商城购买{count}金币"); } else if (shopId == 112) { await DBCommonUtil.AddFriendKey(message.UId, count, "-1", $"商城购买{count}个{config.Name}道具"); } else { List <UserBag> itemInfos = await proxyComponent.QueryJson <UserBag>($"{{UId:{message.UId},BagId:{shopId}}}"); await DBCommonUtil.ChangeWealth(message.UId, shopId, count, $"商城购买{count}个{config.Name}道具"); } response.Count = count; reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
protected override async Task Run(Gamer gamer, C2M_ActorGamerGetTreasure message, Action <M2C_ActorGamerGetTreasure> reply) { M2C_ActorGamerGetTreasure response = new M2C_ActorGamerGetTreasure(); try { DBProxyComponent proxyComponent = Game.Scene.GetComponent <DBProxyComponent>(); ConfigComponent configComponent = Game.Scene.GetComponent <ConfigComponent>(); //记录数据 gamer.EndTime = DateTime.Now; TimeSpan span = gamer.EndTime - gamer.StartTime; int totalSeconds = (int)span.TotalSeconds; //await DBCommonUtil.RecordGamerTime(gamer.EndTime, false, gamer.UserID); await DBCommonUtil.RecordGamerInfo(gamer.UserID, totalSeconds); List <GamerInfoDB> gamerInfos = await proxyComponent.QueryJson <GamerInfoDB>($"{{UId:{gamer.UserID}}}"); if (gamerInfos.Count == 0) { response.Error = ErrorCode.ERR_Common; response.Message = "未到时间"; reply(response); return; } GamerInfoDB gamerInfo = gamerInfos[0]; gamerInfo.DailyTreasureCount++; TreasureConfig config = configComponent.Get(typeof(TreasureConfig), gamerInfo.DailyTreasureCount) as TreasureConfig; Log.Debug("config:" + JsonHelper.ToJson(config)); if (config == null) { response.Error = ErrorCode.ERR_Common; response.Message = "宝箱已领取完"; } else { if (gamerInfo.DailyOnlineTime >= config.TotalTime) { await DBCommonUtil.ChangeWealth(gamer.UserID, 1, config.Reward, "游戏内宝箱奖励"); await proxyComponent.Save(gamerInfo); //下一个奖励 TreasureConfig treasureConfig = (TreasureConfig)configComponent.Get(typeof(TreasureConfig), ++gamerInfo.DailyTreasureCount); //宝箱领完了 if (treasureConfig == null) { response.RestSeconds = -1; response.Reward = config.Reward; } else { response.RestSeconds = treasureConfig.TotalTime - gamerInfo.DailyOnlineTime; response.Reward = config.Reward; } } else { response.Error = ErrorCode.ERR_Common; response.Message = "未到时间"; } } reply(response); gamer.StartTime = DateTime.Now; //await DBCommonUtil.RecordGamerTime(gamer.EndTime, false, gamer.UserID); } catch (Exception e) { ReplyError(response, e, reply); } await Task.CompletedTask; }