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);
            }
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 5
0
        /// <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);
            }
        }
Esempio n. 7
0
        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);
            }
        }
Esempio n. 8
0
        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;
        }