Пример #1
0
    public void ReqBuy(MsgPack pack)
    {
        ReqBuy  data = pack.msg.reqBuy;
        GameMsg msg  = new GameMsg
        {
            cmd = (int)CMD.RspBuy,
        };

        PlayerData pd = cacheSvc.GetPlayerDataBySession(pack.session);

        if (pd.diamond < data.cost)
        {
            msg.err = (int)ErrorCode.LackDiamond;
        }
        else
        {
            pd.diamond -= data.cost;
            PshTaskPrgs pshTaskPrgs = null;
            switch (data.type)
            {
            case 0:
                pd.power += 100;
                //任务进度数据更新
                pshTaskPrgs = TaskSys.Instance.GetPshTaskPrgs(pd, 4);
                break;

            case 1:
                pd.coin += 1000;
                //任务进度数据更新
                pshTaskPrgs = TaskSys.Instance.GetPshTaskPrgs(pd, 5);
                break;
            }

            if (!cacheSvc.UpdatePlayerData(pd.id, pd))
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                RspBuy rspBuy = new RspBuy
                {
                    type    = data.type,
                    diamond = pd.diamond,
                    coin    = pd.coin,
                    power   = pd.power,
                };
                msg.rspBuy = rspBuy;

                //并包处理
                msg.pshTaskPrgs = pshTaskPrgs;
            }
        }
        pack.session.SendMsg(msg);
    }
Пример #2
0
    public void ReqFBFight(MsgPack pack)
    {
        ReqFBFight data = pack.msg.reqFBFight;

        GameMsg msg = new GameMsg
        {
            cmd = (int)CMD.RspFBFight
        };

        PlayerData playerData = cacheSvc.GetPlayerDataBySession(pack.session);
        int        power      = cfgSvc.GetMapCfg(data.fbId).power;

        // 判断发过来的副本id是否合法
        if (data.fbId > playerData.fuben)
        {
            msg.err = (int)ErrorCode.ClientDataError;
        }
        else if (playerData.power < power)
        {
            msg.err = (int)ErrorCode.LackPower;
        }
        else
        {
            playerData.power -= power;
            if (cacheSvc.UpdatePlayerData(playerData.id, playerData) == false)
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                RspFBFight rspFBFight = new RspFBFight {
                    fbId  = data.fbId,
                    power = playerData.power
                };

                msg.rspFBFight = rspFBFight;
            }
        }

        pack.session.SendMsg(msg);
    }
Пример #3
0
        public void RequestBuy(MsgPack msgPack)
        {
            RequestBuy data   = msgPack.Msg.RequestBuy;
            NetMsg     netMsg = new NetMsg
            {
                cmd = (int)Command.ResponseBuy
            };

            PlayerData playerData = _cacheSvc.GetPlayerDataBySession(msgPack.Session);

            if (playerData.Diamond < data.DiamondPay)
            {
                netMsg.err = (int)ErrorCode.LockDiamond;
            }
            else
            {
                playerData.Diamond -= data.DiamondPay;
                PshTask pshTask = null;
                switch (data.Type)
                {
                case 0:
                    playerData.Power += 100;
                    pshTask           = TaskSys.Instance.GetTaskPrangs(playerData, 4);
                    break;

                case 1:
                    playerData.Coin += 1000;
                    pshTask          = TaskSys.Instance.GetTaskPrangs(playerData, 5);
                    break;
                }

                if (!_cacheSvc.UpdatePlayerData(playerData.Id, playerData))
                {
                    netMsg.err = (int)ErrorCode.UpdateDbError;
                }
                else
                {
                    ResponseBuy responseBuy = new ResponseBuy
                    {
                        Type    = data.Type,
                        Diamond = playerData.Diamond,
                        Coin    = playerData.Coin,
                        Power   = playerData.Power,
                    };

                    //并包处理
                    netMsg.ResponseBuy = responseBuy;

                    netMsg.PshTask = pshTask;
                }
            }
            msgPack.Session.SendMsg(netMsg);
        }
Пример #4
0
    public void ReqBuy(MsgPack pack)
    {
        ReqBuy     data = (ReqBuy)pack.msg;
        RspBuy     msg  = new RspBuy();
        PlayerData pd   = cacheSvc.GetPlayerDataBySession(pack.session);

        if (pd.Diamond < data.Cost)
        {
            msg.error = (int)ErrorCode.LackDiamond;
        }
        else
        {
            pd.Diamond -= data.Cost;
            PshTaskPrgs pshTaskPrgs = null;
            switch (data.Type)
            {
            case 0:
                pd.Power += 100;
                //任务进度数据更新
                pshTaskPrgs = TaskSys.Instance.GetTaskPrgs(pd, 4);
                break;

            case 1:
                pd.Coin += 1000;
                //任务进度数据更新
                pshTaskPrgs = TaskSys.Instance.GetTaskPrgs(pd, 5);
                break;
            }

            if (!cacheSvc.UpdatePlayerData(pd.Id, pd))
            {
                msg.error = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                RspBuy rspBuy = new RspBuy {
                    Type   = data.Type,
                    Dimond = pd.Diamond,
                    Coin   = pd.Coin,
                    Power  = pd.Power
                };
                msg = rspBuy;

                //并包处理
                //msg.pshTaskPrgs = pshTaskPrgs;
                if (pshTaskPrgs != null)
                {
                    pack.session.SendMsg(pshTaskPrgs);
                }
            }
        }
        pack.session.SendMsg(msg);
    }
Пример #5
0
    public void ReqBuy(MsgPack pack)
    {
        ReqBuy data = pack.msg.reqBuy;

        GameMsg msg = new GameMsg
        {
            cmd = (int)CMD.RspBuy,
        };

        PlayerData pd = cacheSvc.GetPlayerDataBySession(pack.session);

        if (pd.diamond < data.diamond)
        {
            msg.err = (int)ErrorCode.LackDiamond;
        }
        else
        {
            pd.diamond -= 10;
            switch (data.type)
            {
            case 0:
                //购买体力
                pd.power += 100;
                //更新任务进度
                TaskSys.Instance.CalcTaskPrgs(pd, 4);
                break;

            case 1:
                //购买金币
                pd.coin += 1000;
                //更新任务进度
                TaskSys.Instance.CalcTaskPrgs(pd, 5);
                break;
            }

            if (!DBMgr.Instance.UpdatePlayerData(pd.id, pd))
            {
                msg.err = (int)ErrorCode.ServerDataError;
            }
            else
            {
                msg.rspBuy = new RspBuy
                {
                    type    = data.type,
                    diamond = pd.diamond,
                    power   = pd.power,
                    coin    = pd.coin,
                };
            }
        }
        pack.session.SendMsg(msg);
    }
Пример #6
0
    public void ReqGuide(MsgPack pack)
    {
        ReqGuide data = pack.msg.reqGuide;

        GameMsg msg = new GameMsg
        {
            cmd = (int)CMD.RspGuide
        };

        PlayerData pd = cacheSvc.GetPlayerDataBySession(pack.session);
        GuideCfg   gc = cfgSvc.GetGuideCfg(data.guideid);

        // 更新引导ID
        if (pd.guideid == data.guideid)
        {
            // 检测是否是智者点拨任务
            if (pd.guideid == 1001)
            {
                TaskSys.Instance.CalcTaskPrgs(pd, 1);
            }


            pd.guideid += 1;

            // 更新玩家数据
            pd.coin += gc.coin;
            Common.CalcExp(pd, gc.exp);

            // 数据更新数据库
            if (cacheSvc.UpdatePlayerData(pd.id, pd) == false)
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                msg.rspGuide = new RspGuide
                {
                    guideid = pd.guideid,
                    coin    = pd.coin,
                    lv      = pd.lv,
                    exp     = pd.exp
                };
            }
        }
        else
        {
            msg.err = (int)ErrorCode.ServerDataError;
        }

        pack.session.SendMsg(msg);
    }
Пример #7
0
        public void RequestBattle(MsgPack msgPack)
        {
            RequestBattle data = msgPack.Msg.RequestBattle;

            NetMsg netMsg = new NetMsg
            {
                cmd = (int)Command.ResponseBattle
            };
            PlayerData playerData = _cacheSvc.GetPlayerDataBySession(msgPack.Session);
            int        power      = _resCfgSvc.GetMapData(data.BattleId).Power;

            if (playerData.Battle < data.BattleId)
            {
                netMsg.err = (int)ErrorCode.ClientDataError;
            }
            else if (playerData.Power < power)
            {
                netMsg.err = (int)ErrorCode.LackPower;
            }
            else
            {
                playerData.Power -= power;
                if (_cacheSvc.UpdatePlayerData(playerData.Id, playerData))
                {
                    ResponseBattle responseBattle = new ResponseBattle
                    {
                        BattleId = data.BattleId,
                        Power    = playerData.Power,
                    };
                    netMsg.ResponseBattle = responseBattle;
                }
                else
                {
                    netMsg.err = (int)ErrorCode.UpdateDbError;
                }
            }
            msgPack.Session.SendMsg(netMsg);
        }
Пример #8
0
    public void ReqRename(MsgPack pack)
    {
        ReqRename data = pack.Msg.reqRename;
        GameMsg   msg  = new GameMsg
        {
            cmd = (int)CMD.RspRename
        };

        if (cacheSvc.IsNameExist(data.name)) //名字是否存在
        {
            //存在:返回错误码
            msg.err = (int)ErrorCode.NameIsExist;
        }
        else
        {
            //不存在:更新缓存和数据库,再返回给客户端

            //更新缓存
            PlayerData playerData = cacheSvc.GetPlayerDataBySession(pack.Session);

            playerData.name = data.name;

            //更新数据库
            if (!cacheSvc.UpdatePlayerData(playerData.id, playerData))
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                msg.rspRename = new RspRename
                {
                    name = data.name
                };
            }
        }

        pack.Session.SendMsg(msg);
    }
Пример #9
0
    /// <summary>
    /// 引导任务请求
    /// </summary>
    public void ReqGuide(MsgPack pack)
    {
        ReqGuide reqGuide = pack.msg.reqGuide;

        GameMsg msg = new GameMsg
        {
            cmd = (int)CMD.RspGuide,
        };

        PlayerData   pd  = cacheSvc.GetPlayerDataBySession(pack.session);
        AutoGuideCfg agc = cfgSvc.GetGuideCfgData(pd.guideId);

        //校验
        if (pd.guideId == reqGuide.guideId)
        {
            //检查为智者点播任务
            if (pd.guideId == 1001)
            {
                TaskSys.Instance.CalcTaskPrgs(pd, 1);
            }

            //更新玩家数据
            pd.guideId++;
            pd.coin += agc.coin;
            PECommon.CalExp(pd, agc.exp);

            if (!cacheSvc.UpdataPlayerData(pd.id, pd))
            {
                //如果数据库更新出错
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                RspGuide rspGuide = new RspGuide
                {
                    guideId = pd.guideId,
                    coin    = pd.guideId,
                    lv      = pd.lv,
                    exp     = pd.exp,
                };
                msg.rspGuide = rspGuide;
            }
        }
        else
        {
            msg.err = (int)ErrorCode.ServerDataError;
        }

        pack.session.SendMsg(msg);
    }
Пример #10
0
    /// <summary>
    /// 处理重命名
    /// </summary>
    /// <param name="pack"></param>
    public void DoneRename(MsgPack packMsg)
    {
        RequestRename data = packMsg._msg.reqRename;
        NetMsg        msg  = new NetMsg
        {
            cmd = (int)MsgCommand.Cmd_RspRename,
        };

        //检查名字是否在数据库中已经存在了
        if (cacheSvc.IsNameExist(data.name))
        {
            //存在:返回错误码
            msg.err = (int)ErroCode.Error_NameIsExist;
        }
        else
        {
            //不存在:更新缓存和数据库,再返回给客户端
            PlayerData playerData = cacheSvc.GetPlayerDataBySession(packMsg._session);
            playerData.name = data.name;

            //更新缓存失败
            if (!cacheSvc.UpdatePlayerData(playerData.id, playerData))
            {
                msg.err = (int)ErroCode.Error_UpdateDB;
            }
            else
            {
                //成功就重命名
                msg.rspRename = new ResponseRename {
                    name = data.name,
                };
            }

            //消息发送出去
            packMsg._session.SendMsg(msg);
        }
    }
Пример #11
0
    public void ReqDungeonFight(MsgPack pack)
    {
        ReqDungeonFight data = pack.msg.reqDungeonFight;

        GameMsg msg = new GameMsg {
            cmd = (int)CMD.RspDungeonFight
        };

        PlayerData pd    = cacheSvc.GetPlayerDataBySession(pack.session);
        int        power = cfgSvc.GetMapCfg(data.dungeonId).power;

        if (pd.dungeon < data.dungeonId)   // 关卡进度是否合法
        {
            msg.err = (int)ErrorCode.ClientDataError;
        }
        else if (pd.power < power)
        {
            msg.err = (int)ErrorCode.LackPower;
        }
        else
        {
            pd.power -= power;
            if (cacheSvc.UpdatePlayerData(pd.id, pd))
            {
                RspDungeonFight rspDungeonFight = new RspDungeonFight {
                    dungeonId = data.dungeonId,
                    power     = pd.power
                };
                msg.rspDungeonFight = rspDungeonFight;
            }
            else
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
        }
        pack.session.SendMsg(msg);
    }
Пример #12
0
    /// <summary>
    /// 发送任务引导消息
    /// </summary>
    /// <param name="packMsg"></param>
    public void RequestGuideTaskMessage(MsgPack packMsg)
    {
        RequestGuideTask taskData = packMsg._msg.reqGuideTask;
        NetMsg           netMsg   = new NetMsg
        {
            cmd = (int)MsgCommand.Cmd_RspGuideTask,
        };

        PlayerData   playerData = cacheSvc.GetPlayerDataBySession(packMsg._session);
        GuideTaskCfg cfgData    = cfgSvc.GetGuideTaskData(playerData.guideid);

        //更新任务ID
        if (playerData.guideid == taskData.taskId)
        {
            //智者点拨任务
            if (playerData.guideid == 1001)
            {
                TaskRewardSys.Instance.CalcTaskProgress(playerData, Constants.cTask_WisemanTellme);
            }

            //玩家数据更新
            playerData.guideid += 1;
            playerData.coin    += cfgData.gainCoin;
            CommonTools.CalcExp(playerData, cfgData.gainExp);

            //任务奖励更新到数据库
            if (!cacheSvc.UpdatePlayerData(playerData.id, playerData))
            {
                netMsg.err = (int)ErroCode.Error_UpdateDB;
            }
            else
            {
                netMsg.rspGuideTask = new ResponseGuideTask
                {
                    taskId   = playerData.guideid,
                    gainCoin = playerData.coin,
                    roleLv   = playerData.lv,
                    gainExp  = playerData.exp
                };
            }
        }
        else
        {
            netMsg.err = (int)ErroCode.Error_ServerData;
        }

        //发给客户端
        packMsg._session.SendMsg(netMsg);
    }
Пример #13
0
    public void ReqFBFight(MsgPack pack)
    {
        ReqFBFight data = pack.msg.reqFBFight;

        GameMsg msg = new GameMsg {
            cmd = (int)CMD.RspFBFight,
        };

        PlayerData pd    = cacheSvc.GetPlayerDataBySession(pack.session);
        int        power = cfgSvc.GetMapCfg(data.fbid).power;

        if (pd.fuben < data.fbid)
        {
            msg.err = (int)ErrorCode.ClientDataError;
        }
        else if (pd.power < power)
        {
            msg.err = (int)ErrorCode.LackPower;
        }
        else
        {
            pd.power -= power;
            if (cacheSvc.UpdatePlayerData(pd.id, pd))
            {
                msg.rspFBFight = new RspFBFight {
                    fbid  = data.fbid,
                    power = pd.power,
                };
            }
            else
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
        }
        pack.session.SendMsg(msg);
    }
Пример #14
0
    public void ReqTaskReward(MsgPack msgPack)
    {
        ReqTaskReward data = msgPack.msg.reqTaskReward;
        GameMsg       msg  = new GameMsg()
        {
            cmd = (int)CMD.RspTaskReward
        };


        PlayerData pd = cacheSvc.GetPlayerDataBySession(msgPack.session);
        //获得任务模板
        TaskRewardCfg trc = cfgSvc.GetTaskRewardCfgData(data.taskId);
        //获得玩家当前任务信息
        TaskRewardData trd = CalcTaskRewardData(pd, data.taskId);

        if ((trd.prgs == trc.count) && (!trd.taked))
        {
            //任务进度完成,且奖励未被领取
            pd.coin += trc.coin;
            PECommon.CalExp(pd, trc.exp);
            trd.taked = true;
            CalcUpdatePlayerTaskArr(pd, trd);

            if (!cacheSvc.UpdataPlayerData(pd.id, pd))
            {
                //数据库写入失败
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                msg.rspTaskReward = new RspTaskReward
                {
                    coin    = pd.coin,
                    exp     = pd.exp,
                    lv      = pd.lv,
                    taskArr = pd.taskArr
                };
            }
        }
        else
        {
            //客户端数据异常
            msg.err = (int)ErrorCode.ClientDataError;
        }

        msgPack.session.SendMsg(msg);
    }
Пример #15
0
    public void ReqBuy(MsgPack pack)
    {
        ReqBuy     data = pack.gameMsg.val as ReqBuy;
        PlayerData pd   = cacheSvc.GetPlayerDataBySession(pack.session);
        GameMsg    msg  = new GameMsg()
        {
            cmd = (int)CMD.RspBuy
        };

        if (pd.diamond < data.cost)
        {
            msg.err = (int)ErrorCode.LackDiamond;
        }
        else
        {
            pd.diamond -= data.cost;
            switch (data.type)
            {
            case 0:
                TaskSys.Instance.CalcTaskPrgs(pd, 4);
                pd.power += 100;
                break;

            case 1:
                TaskSys.Instance.CalcTaskPrgs(pd, 5);
                pd.coin += 1000;
                break;
            }

            if (!cacheSvc.UpdatePlayerData(pd.id, pd))
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                msg.val = new RspBuy()
                {
                    type   = data.type,
                    dimond = pd.diamond,
                    coin   = pd.coin,
                    power  = pd.power
                };
            }
        }
        pack.session.SendMsg(msg);
    }
Пример #16
0
    public void ReqTakeTaskReward(MsgPack pack)
    {
        ReqTakeTaskReward data = pack.Msg.reqTakeTaskReward;

        GameMsg msg = new GameMsg()
        {
            cmd = (int)CMD.RspTakeTaskReward
        };

        PlayerData pd = cacheSvc.GetPlayerDataBySession(pack.Session);

        TaskRewardCfg  trc = cfgSvc.GetTaskRewardCfg(data.tid);
        TaskRewardData trd = CalcTaskRewardData(pd, data.tid);


        if (trd.prgs == trc.count && !trd.taked)
        {
            pd.coin += trc.coin;
            PECommon.CalcExp(pd, trc.exp);
            trd.taked = true;
            //更新任务进度数据
            CalcTaskArr(pd, trd);

            if (!cacheSvc.UpdatePlayerData(pd.id, pd))
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                RspTakeTaskReward rspTakeTaskReward = new RspTakeTaskReward()
                {
                    coin    = pd.coin,
                    lv      = pd.lv,
                    exp     = pd.exp,
                    taskArr = pd.taskArr
                };
                msg.rspTakeTaskReward = rspTakeTaskReward;
            }
        }
        else
        {
            msg.err = (int)ErrorCode.ClientDataError;
        }

        pack.Session.SendMsg(msg);
    }
Пример #17
0
    public void ReqFBFight(MsgPack pack)
    {
        ReqFBFight data = pack.msg.reqFBFight;

        GameMsg msg = new GameMsg()
        {
            cmd = (int)CMD.RspFBFight,
        };

        MapCfg     mcfg = cfgRvc.GetMapCfgData(data.id);
        PlayerData pd   = cacheSvc.GetPlayerDataBySession(pack.session);


        if (pd.fuben < data.id)
        {
            //玩家记录副本ID少于客户端发过来的副本ID
            //客户端数据异常
            msg.err = (int)ErrorCode.ClientDataError;
        }
        else if (pd.power < mcfg.power)
        {
            //体力不足
            msg.err = (int)ErrorCode.LackPower;
        }
        else
        {
            //扣除体力
            pd.power -= mcfg.power;
            if (!cacheSvc.UpdataPlayerData(pd.id, pd))
            {
                //数据库写入失败
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                TaskSys.Instance.CalcTaskPrgs(pd, 2);
                msg.rspFBFight = new RspFBFight()
                {
                    id    = data.id,
                    power = pd.power
                };
            }
        }

        pack.session.SendMsg(msg);
    }
Пример #18
0
    public void ReqTaskDataTake(MsgPack packMsg)
    {
        RequestTaskReward data = packMsg._msg.reqTaskReward;

        NetMsg netMsg = new NetMsg
        {
            cmd = (int)MsgCommand.Cmd_RspTaskReward,
        };

        PlayerData    playerData  = cacheSvc.GetPlayerDataBySession(packMsg._session);
        TaskRewardCfg taskDataCfg = configSvc.GetTaskRewardData(data.taskId);
        TaskData      taskData    = CalcTaskRewardData(playerData, data.taskId);

        if (taskData.progress == taskDataCfg.count && !taskData.bTaked)
        {
            playerData.coin += taskDataCfg.coin;
            CommonTools.CalcExp(playerData, taskDataCfg.exp);
            taskData.bTaked = true;

            //更新任务进度数据
            UpdateTaskProgress(playerData, taskData);
            //更新数据库
            if (!cacheSvc.UpdatePlayerData(playerData.id, playerData))
            {
                netMsg.err = (int)ErroCode.Error_UpdateDB;
            }
            else
            {
                ResponseTaskReward rspData = new ResponseTaskReward
                {
                    coin    = playerData.coin,
                    lv      = playerData.lv,
                    exp     = playerData.exp,
                    taskArr = playerData.taskReward
                };
                netMsg.rspTaskReward = rspData;
            }
        }
        else
        {
            netMsg.err = (int)ErroCode.Error_ClientData;
        }

        packMsg._session.SendMsg(netMsg);
    }
Пример #19
0
    public void ReqTakeTaskReward(MsgPack pack)
    {
        ReqTakeTaskReward data = pack.msg.reqTakeTaskReward;

        GameMsg msg = new GameMsg {
            cmd = (int)CMD.RspTakeTaskReward
        };

        PlayerData     playerData = cacheSvc.GetPlayerDataBySession(pack.session);
        TaskRewardCfg  trc        = cfgSvc.GetTaskRewardCfg(data.rid);
        TaskRewardData trd        = CalcTaskRewardData(playerData, data.rid);

        if (trd.prgs == trc.count && trd.isTakenReward == false)
        {
            playerData.coin += trc.coin;
            Common.CalcExp(playerData, trc.exp);
            trd.isTakenReward = true;

            // 更新任务进度数据
            CalcTaskArr(playerData, trd);

            if (cacheSvc.UpdatePlayerData(playerData.id, playerData) == true)
            {
                RspTakeTaskReward rspTakeTaskReward = new RspTakeTaskReward {
                    coin    = playerData.coin,
                    lv      = playerData.lv,
                    exp     = playerData.exp,
                    taskArr = playerData.taskArr
                };

                msg.rspTakeTaskReward = rspTakeTaskReward;
            }
            else
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
        }
        else
        {
            msg.err = (int)ErrorCode.ClientDataError;
        }

        pack.session.SendMsg(msg);
    }
Пример #20
0
        public void RequestTaskReward(MsgPack msgPack)
        {
            RequestTask data   = msgPack.Msg.RequestTask;
            NetMsg      netMsg = new NetMsg
            {
                cmd = (int)Command.ResponseTask
            };
            PlayerData playerData = _cacheSvc.GetPlayerDataBySession(msgPack.Session);

            TaskRewardCfg  taskCfg  = _resCfgSvc.GetTaskData(data.TaskId);
            TaskRewardData taskData = CalcTaskRewardData(playerData, data.TaskId);

            if (taskData.Prangs == taskCfg.Count && !taskData.Tasked)
            {
                playerData.Coin += taskCfg.Coin;
                PeRoot.CalcExp(playerData, taskCfg.Exp);
                playerData.Diamond += taskCfg.Diamond;
                taskData.Tasked     = true;
                CalcTaskArray(playerData, taskData);

                if (!_cacheSvc.UpdatePlayerData(playerData.Id, playerData))
                {
                    netMsg.err = (int)ErrorCode.UpdateDbError;
                }
                else
                {
                    ResponseTask responseTask = new ResponseTask
                    {
                        Coin      = playerData.Coin,
                        Level     = playerData.Level,
                        Diamond   = playerData.Diamond,
                        Exp       = playerData.Exp,
                        TaskArray = playerData.TaskArray,
                    };
                    netMsg.ResponseTask = responseTask;
                }
            }
            else
            {
                netMsg.err = (int)ErrorCode.ClientDataError;
            }

            msgPack.Session.SendMsg(netMsg);
        }
Пример #21
0
    public void RequestBuyInfo(MsgPack packMsg)
    {
        PlayerData     playerData = cacheSvc.GetPlayerDataBySession(packMsg._session);
        RequestBuyInfo data       = packMsg._msg.reqBuyInfo;
        NetMsg         netMsg     = new NetMsg
        {
            cmd = (int)MsgCommand.Cmd_RspBuyInfo,
        };

        if (playerData.diamond < data.costDiamond)
        {
            netMsg.err = (int)ErroCode.Error_DiamondLack;
            return;
        }

        playerData.diamond = data.costDiamond;
        if (data.shopType == (int)Constants.ShopType.ShopType_BuyPower)
        {
            playerData.power += 100;
            TaskRewardSys.Instance.CalcTaskProgress(playerData, Constants.cTask_BuyPower);
        }
        else if (data.shopType == (int)Constants.ShopType.ShopType_MakeCoin)
        {
            playerData.coin += 1000;
            TaskRewardSys.Instance.CalcTaskProgress(playerData, Constants.cTask_MakeCoin);
        }

        if (!cacheSvc.UpdatePlayerData(playerData.id, playerData))
        {
            netMsg.err = (int)ErroCode.Error_UpdateDB;
            return;
        }

        netMsg.rspBuyInfo = new ResponseBuyInfo
        {
            shopType    = data.shopType,
            leftDiamond = playerData.diamond,
            leftCoin    = playerData.coin,
            leftPower   = playerData.power
        };

        packMsg._session.SendMsg(netMsg);
    }
Пример #22
0
    public void SndChat(MsgPack pack)
    {
        SndChat    data = pack.msg.sndChat;
        PlayerData pd   = cacheSvc.GetPlayerDataBySession(pack.session);

        GameMsg msg = new GameMsg {
            cmd     = (int)CMD.PshChat,
            pshChat = new PshChat {
                name = pd.name,
                chat = data.chat
            },
        };

        //同样的数据包多次分发只序列化一次
        byte[] bytes = PENet.PETool.PackNetMsg(msg);

        //并包处理
        //任务进度数据更新
        msg.pshTaskPrgs = TaskSys.Instance.GetPshTaskPrgs(pd, 6);

        if (!cacheSvc.UpdatePlayerData(pd.id, pd))
        {
            msg.err = (int)ErrorCode.UpdateDBError;
            pack.session.SendMsg(msg);
        }
        else
        {
            //广播所有在线客户端
            List <ServerSession> lst = cacheSvc.GetOnLineServerSessions();
            for (int i = 0; i < lst.Count; i++)
            {
                if (lst[i] != pack.session)
                {
                    lst[i].SendMsg(bytes);
                }
                else
                {
                    //自己发的消息要更新任务进度
                    pack.session.SendMsg(msg);
                }
            }
        }
    }
Пример #23
0
        public void RequestGuide(MsgPack pack)
        {
            RequestGuide data   = pack.Msg.RequestGuide;
            NetMsg       netMsg = new NetMsg
            {
                cmd = (int)Command.RspGuide
            };
            PlayerData playerData = _cacheSvc.GetPlayerDataBySession(pack.Session);
            GuideCfg   guideCfg   = _resCfgSvc.GetGuideData(data.GuideId);

            //更新引导Id
            if (playerData.GuideId == data.GuideId)
            {
                if (playerData.GuideId == 1001)
                {
                    TaskSys.Instance.CalcTaskPrangs(playerData, 1);
                }
                playerData.GuideId += 1;

                //更新玩家数据
                playerData.Coin += guideCfg.Coin;
                PeRoot.CalcExp(playerData, guideCfg.Exp);
                if (!_cacheSvc.UpdatePlayerData(playerData.Id, playerData))
                {
                    netMsg.err = (int)ErrorCode.UpdateDbError;
                }
                else
                {
                    netMsg.ResponseGuide = new ResponseGuide
                    {
                        GuideId = playerData.GuideId,
                        Coin    = playerData.Coin,
                        Level   = playerData.Level,
                        Exp     = playerData.Exp,
                    };
                }
            }
            else
            {
                netMsg.err = (int)ErrorCode.ServerDataError;
            }
            pack.Session.SendMsg(netMsg);
        }
Пример #24
0
    public void ReqGuide(MsgPack pack)
    {
        ReqGuide   data = pack.gameMsg.val as ReqGuide;
        PlayerData pd   = cacheSvc.GetPlayerDataBySession(pack.session);
        GuideCfg   gc   = cfgSvc.GetGuideData(data.guideid);
        GameMsg    msg  = new GameMsg
        {
            cmd = (int)CMD.RspGuide
        };

        //更新引导ID
        if (pd.guideid == data.guideid)
        {
            if (pd.guideid == 1001)
            {
                TaskSys.Instance.CalcTaskPrgs(pd, 1);
            }

            pd.guideid++;
            pd.coin += gc.coin;
            Common.CalcExp(pd, gc.exp);
            if (!cacheSvc.UpdatePlayerData(pd.id, pd))
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                msg.val = new RspGuide
                {
                    guideid = pd.guideid,
                    coin    = pd.coin,
                    lv      = pd.lv,
                    exp     = pd.exp
                };
            }
        }
        else
        {
            msg.err = (int)ErrorCode.ServerDataError;
        }
        pack.session.SendMsg(msg);
    }
Пример #25
0
    public void ReqGuide(MsgPack pack)
    {
        ReqGuide data = (ReqGuide)pack.msg;

        SCPacketBase msg = new RspGuide();
        PlayerData   pd  = cacheSvc.GetPlayerDataBySession(pack.session);
        GuideCfg     gc  = cfgSvc.GetGuideCfg(data.Guideid);

        //更新引导ID
        if (pd.Guideid == data.Guideid)
        {
            //检测是否为智者点拔任务
            if (pd.Guideid == 1001)
            {
                TaskSys.Instance.CalcTaskPrgs(pd, 1);
            }
            pd.Guideid += 1;

            //更新玩家数据
            pd.Coin += gc.coin;
            KDCommon.CalcExp(pd, gc.exp);

            if (!cacheSvc.UpdatePlayerData(pd.Id, pd))
            {
                msg.error = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                msg = new RspGuide {
                    Guideid = pd.Guideid,
                    Coin    = pd.Coin,
                    Lv      = pd.Lv,
                    Exp     = pd.Exp
                };
            }
        }
        else
        {
            msg.error = (int)ErrorCode.ServerDataError;
        }
        pack.session.SendMsg(msg);
    }
Пример #26
0
    public void SndChat(MsgPack pack)
    {
        SndChat    data = (SndChat)pack.msg;
        PlayerData pd   = cacheSvc.GetPlayerDataBySession(pack.session);

        //任务进度数据更新
        TaskSys.Instance.CalcTaskPrgs(pd, 6);

        SCPacketBase msg = new PshChat {
            Name = pd.Name,
            Chat = data.Chat
        };

        //广播所有在线客户端
        List <ClientSocket> lst = cacheSvc.GetOnlineServerSessions();

        //byte[] bytes = KDNet.KDTool.PackNetMsg(msg);
        for (int i = 0; i < lst.Count; i++)
        {
            lst[i].SendMsg(msg);
        }
    }
Пример #27
0
    public void ReqTakeTaskReward(MsgPack pack)
    {
        ReqTakeTaskReward data = (ReqTakeTaskReward)pack.msg;

        SCPacketBase msg = new RspTakeTaskReward();
        PlayerData   pd  = cacheSvc.GetPlayerDataBySession(pack.session);

        TaskRewardCfg  trc = cfgSvc.GetTaskRewardCfg(data.Rid);
        TaskRewardData trd = CalcTaskRewardData(pd, data.Rid);

        if (trd.prgs == trc.count && !trd.taked)
        {
            pd.Coin += trc.coin;
            KDCommon.CalcExp(pd, trc.exp);
            trd.taked = true;
            //更新任务进度数据
            CalcTaskArr(pd, trd);

            if (!cacheSvc.UpdatePlayerData(pd.Id, pd))
            {
                msg.error = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                RspTakeTaskReward rspTakeTaskReward = new RspTakeTaskReward {
                    Coin = pd.Coin,
                    Lv   = pd.Lv,
                    Exp  = pd.Exp,
                };
                rspTakeTaskReward.TaskArr.SetRepeated <string>(pd.TaskArr);
                msg = rspTakeTaskReward;
            }
        }
        else
        {
            msg.error = (int)ErrorCode.ClientDataError;
        }
        pack.session.SendMsg(msg);
    }
Пример #28
0
    /// <summary>
    /// 接收客户端的请求
    /// </summary>
    /// <param name="pack"></param>
    public void SndChat(MsgPack pack)
    {
        SndChat    data = pack.msg.sndChat;
        PlayerData pd   = cacheSvc.GetPlayerDataBySession(pack.session);

        TaskSys.Instance.CalcTaskPrgs(pd, 6); // 任务进度数据更新
        GameMsg msg = new GameMsg {
            cmd     = (int)CMD.PshChat,
            pshChat = new PshChat {
                name = pd.name,
                chat = data.chat // 聊天数据
            }
        };

        // 广播给所有在线客户端
        List <ServerSession> lst = cacheSvc.GetOnlineServerSessions();

        byte[] bytes = PENet.PETool.PackNetMsg(msg);
        for (int i = 0; i < lst.Count; i++)
        {
            lst[i].SendMsg(bytes); // 发送二进制数据,而不是直接发送 msg,可以节省 序列化 操作
        }
    }
Пример #29
0
        public void SendChat(MsgPack pack)
        {
            SendChat   data       = pack.Msg.SendChat;
            PlayerData playerData = _cacheSvc.GetPlayerDataBySession(pack.Session);

            TaskSys.Instance.CalcTaskPrangs(playerData, 6);
            NetMsg netMsg = new NetMsg
            {
                cmd     = (int)Command.PshChat,
                PshChat = new PshChat
                {
                    Name = playerData.Name,
                    Chat = data.Chat
                }
            };

            List <ServerSession> list = _cacheSvc.GetOnLineServerSessions();

            byte[] bytes = PENet.PETool.PackNetMsg(netMsg);
            foreach (var t in list)
            {
                t.SendMsg(bytes);
            }
        }
Пример #30
0
    public void ReqStrong(MsgPack pack)
    {
        ReqStrong data = pack.Msg.reqStrong;


        GameMsg msg = new GameMsg()
        {
            cmd = (int)CMD.RspStrong
        };

        PlayerData pd            = cacheSvc.GetPlayerDataBySession(pack.Session);
        int        currentStarLv = pd.strongArr[data.pos];
        StrongCfg  nextStrongCfg = CfgSvc.Instance.GetStrongCfg(data.pos, currentStarLv + 1);

        //条件判断
        if (pd.lv < nextStrongCfg.minLv)
        {
            msg.err = (int)ErrorCode.LackLevel;
        }
        else if (pd.coin < nextStrongCfg.coin)
        {
            msg.err = (int)ErrorCode.LackCoin;
        }
        else if (pd.crystal < nextStrongCfg.crystal)
        {
            msg.err = (int)ErrorCode.LackCrystal;
        }
        else
        {
            //任务进度数据更新
            TaskSys.Instance.CalcTaskPrgs(pd, 3);

            //资源扣除
            pd.coin    -= nextStrongCfg.coin;
            pd.crystal -= nextStrongCfg.crystal;

            //星级+1
            pd.strongArr[data.pos] += 1;

            //增加属性
            pd.hp    += nextStrongCfg.addhp;
            pd.ad    += nextStrongCfg.addhurt;
            pd.ap    += nextStrongCfg.addhurt;
            pd.addef += nextStrongCfg.adddef;
            pd.apdef += nextStrongCfg.adddef;
        }

        //更新数据库
        if (!cacheSvc.UpdatePlayerData(pd.id, pd))
        {
            msg.err = (int)ErrorCode.UpdateDBError;
        }
        else
        {
            msg.rspStrong = new RspStrong()
            {
                coin      = pd.coin,
                crystal   = pd.crystal,
                hp        = pd.hp,
                ad        = pd.ad,
                ap        = pd.ap,
                addef     = pd.addef,
                apdef     = pd.apdef,
                strongArr = pd.strongArr
            };
        }

        pack.Session.SendMsg(msg);
    }