示例#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
    /// <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);
    }
示例#5
0
 public void SetPlayerDataByPshTaskProgs(PshTaskProgs pshTaskProgs)
 {
     PlayerData.taskArr = pshTaskProgs.taskArr;
 }