Пример #1
0
    public void SndChat(PackMsg pack)
    {
        SndChat      data         = pack.msg.sndChat;
        PlayerData   pd           = cacheSvc.GetPlayerDataCache(pack.session);
        PshTaskProgs pshTaskProgs = null;

        //更新任务进度
        pshTaskProgs = TaskSys.Instance.CalcTaskProgs(pd, 6);

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

        if (pshTaskProgs != null)
        {
            msg.pshTaskProgs = pshTaskProgs;
        }

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

        foreach (ServerSession session in sessionList)
        {
            session.SendMsg(msg);
        }
    }
Пример #2
0
    public void ReqPurchase(PackMsg pack)
    {
        ReqPurchase   data    = pack.msg.reqPurchase;
        ServerSession session = pack.session;

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

        PlayerData playerData = cacheSvc.GetPlayerDataCache(session);

        //钻石不够
        if (playerData.diamond < data.costDiamond)
        {
            msg.err = (int)ErrorCode.LackCrystal;
        }
        else
        {
            playerData.diamond -= data.costDiamond;
            PshTaskProgs pshTaskPrgs = null;
            switch (data.buyType)
            {
            case 0:
                //更新任务进度
                pshTaskPrgs         = TaskSys.Instance.CalcTaskProgs(playerData, 4);
                playerData.stamina += 100;
                break;

            case 1:
                //更新任务进度
                pshTaskPrgs      = TaskSys.Instance.CalcTaskProgs(playerData, 5);
                playerData.coin += 100;
                break;
            }

            if (!cacheSvc.UpdatePlayerData(playerData.id, playerData))
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                RspPurchase rspPurchase = new RspPurchase
                {
                    buyType = data.buyType,
                    diamond = playerData.diamond,
                    coin    = playerData.coin,
                    stamina = playerData.stamina
                };
                //并包优化
                msg.rspPurchase  = rspPurchase;
                msg.pshTaskProgs = pshTaskPrgs;
            }
        }
        session.SendMsg(msg);
    }
Пример #3
0
    /// <summary>
    /// 回应任务完成请求
    /// </summary>
    public void ReqTask(PackMsg pack)
    {
        ReqTask       data    = pack.msg.reqTask;
        ServerSession session = pack.session;

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

        PlayerData   playerData   = cacheSvc.GetPlayerDataCache(pack.session);
        AutoGuideCfg AutoGuideCfg = cfgSvc.GetAutoGuideCfg(data.taskID);

        //更新任务ID
        if (playerData.taskid == data.taskID)
        {
            PshTaskProgs pshTaskProgs = null;
            //更新任务智者点拨进度
            if (playerData.taskid == 1001)
            {
                pshTaskProgs = TaskSys.Instance.CalcTaskProgs(playerData, 1);
            }
            playerData.taskid++;
            //更新玩家数据
            playerData.coin += AutoGuideCfg.coin;
            PECommon.UpdateExp(playerData, AutoGuideCfg.exp);

            if (!cacheSvc.UpdatePlayerData(playerData.id, playerData))
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                RspTask rspTask = new RspTask
                {
                    taskID = playerData.taskid,
                    coin   = playerData.coin,
                    exp    = playerData.exp,
                    lv     = playerData.lv,
                    hp     = playerData.hp,
                };
                //发送回客户端
                msg.rspTask = rspTask;
                if (pshTaskProgs != null)
                {
                    msg.pshTaskProgs = pshTaskProgs;
                }
            }
        }
        else
        {
            msg.err = (int)ErrorCode.ServerDataError;
        }
        pack.session.SendMsg(msg);
    }
Пример #4
0
    public void ReqFBFight(PackMsg pack)
    {
        ReqFBFight    data    = pack.msg.reqFBFight;
        ServerSession session = pack.session;

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

        PlayerData playerData = cacheSvc.GetPlayerDataCache(session);
        MapCfg     mapCfg     = cfgSvc.GetMapCfg(data.fbid);

        if (playerData.fuben < data.fbid)
        {
            msg.err = (int)ErrorCode.ClientDataError;
        }
        else if (playerData.stamina < mapCfg.costStamina)
        {
            msg.err = (int)ErrorCode.LackStamia;
        }
        else
        {
            playerData.stamina -= mapCfg.costStamina;
            if (!cacheSvc.UpdatePlayerData(playerData.id, playerData))
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                RspFBFight rspFBFight = new RspFBFight
                {
                    fbid    = data.fbid,
                    stamina = playerData.stamina,
                };
                msg.rspFBFight = rspFBFight;
            }
        }
        session.SendMsg(msg);
    }
Пример #5
0
    //回应重命名请求
    public void ReqRename(PackMsg pack)
    {
        ReqRename     data    = pack.msg.reqRename;
        ServerSession session = pack.session;

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

        //判断当前名字是否存在
        //若存在,返回错误码
        if (cacheSvc.IsNameExist(data.name))
        {
            msg.err = (int)ErrorCode.NameIsExist;
        }
        //若不存在,更新缓存以及数据库,返回客户端
        else
        {
            PlayerData playerData = cacheSvc.GetPlayerDataCache(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);
    }
Пример #6
0
    public void ReqTakeTaskReward(PackMsg pack)
    {
        ReqTakeTaskReward data    = pack.msg.reqTakeTaskReward;
        ServerSession     session = pack.session;
        GameMsg           msg     = new GameMsg
        {
            cmd = (int)CMD.RspTakeTaskReward,
        };
        int        rewardID   = data.rid;
        PlayerData playerData = cacheSvc.GetPlayerDataCache(session);

        TaskRewardCfg  trc = cfgSvc.GetTaskRewardCfg(rewardID);
        TaskRewardData trd = GetTaskRewardData(playerData, rewardID);

        //安全验证
        if (trd.progress == trc.count && !trd.taked)
        {
            playerData.coin += trc.coin;
            PECommon.UpdateExp(playerData, trc.exp);
            trd.taked = true;
            //更新任务进度数据
            CalcTaskArr(playerData, trd);

            if (!cacheSvc.UpdatePlayerData(playerData.id, playerData))
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                msg.rspTakeTaskReward = new RspTakeTaskReward
                {
                    coin    = playerData.coin,
                    exp     = playerData.exp,
                    lv      = playerData.lv,
                    hp      = playerData.hp,
                    taskArr = playerData.taskArr,
                };
                session.SendMsg(msg);
            }
        }
        else
        {
            msg.err = (int)ErrorCode.ClientDataError;
        }
    }
Пример #7
0
    /// <summary>
    /// 回应强化请求
    /// </summary>
    public void ReqStrong(PackMsg pack)
    {
        ReqStrong     data    = pack.msg.reqStrong;
        ServerSession session = pack.session;

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

        PlayerData playerData = cacheSvc.GetPlayerDataCache(session);

        if (playerData.strongArr[data.pos] == data.starlv)
        {
            int       nextStarLv    = data.starlv + 1;
            StrongCfg nextStrongCfg = cfgSvc.GetStrongCfg(data.pos, nextStarLv);

            if (playerData.lv < nextStrongCfg.minlv)
            {
                msg.err = (int)ErrorCode.LackLevel;
            }
            else if (playerData.coin < nextStrongCfg.coin)
            {
                msg.err = (int)ErrorCode.LackCoin;
            }
            else if (playerData.crystal < nextStrongCfg.crystal)
            {
                msg.err = (int)ErrorCode.LackCrystal;
            }
            else
            {
                //更新任务进度
                PshTaskProgs pshTaskProgs = TaskSys.Instance.CalcTaskProgs(playerData, 3);

                playerData.hp    += nextStrongCfg.addhp;
                playerData.ad    += nextStrongCfg.addhurt;
                playerData.ap    += nextStrongCfg.addhurt;
                playerData.addef += nextStrongCfg.adddef;
                playerData.apdef += nextStrongCfg.adddef;
                playerData.strongArr[data.pos] += 1;

                playerData.coin    -= nextStrongCfg.coin;
                playerData.crystal -= nextStrongCfg.crystal;

                if (!cacheSvc.UpdatePlayerData(playerData.id, playerData))
                {
                    msg.err = (int)ErrorCode.UpdateDBError;
                }
                else
                {
                    RspStrong rspStrong = new RspStrong
                    {
                        pos       = nextStrongCfg.pos,
                        starlv    = nextStrongCfg.starlv,
                        addhp     = nextStrongCfg.addhp,
                        addhurt   = nextStrongCfg.addhurt,
                        adddef    = nextStrongCfg.adddef,
                        minlv     = nextStrongCfg.minlv,
                        coin      = nextStrongCfg.coin,
                        crystal   = nextStrongCfg.crystal,
                        strongArr = playerData.strongArr
                    };
                    msg.rspStrong = rspStrong;
                    if (pshTaskProgs != null)
                    {
                        msg.pshTaskProgs = pshTaskProgs;
                    }
                }
            }
        }
        else
        {
            msg.err = (int)ErrorCode.ServerDataError;
        }
        pack.session.SendMsg(msg);
    }