Esempio n. 1
0
    /// <summary>
    /// 处理请求升级逻辑
    /// </summary>
    /// <param name="pack"></param>
    public void ReqStrong(MsgPack pack)
    {
        ReqStrong data = pack.msg.reqStrong;
        GameMsg   msg  = new GameMsg
        {
            cmd = (int)CMD.RspStrong,
        };
        PlayerData pd          = cacheSvc.GetPlayerDataBySettion(pack.session);
        int        curtStartLv = pd.strongArr[data.pos];//请求升级的武器
        StrongCfg  nextSd      = cfgSvc.GetStrongCfg(data.pos, curtStartLv + 1);

        //数据校验(这是必须的,如果客户端均已校验,则此校验结果可以作为玩家是否作弊的依据)
        if (pd.lv < nextSd.minlv)
        {
            msg.err = (int)ErrorCode.LackLevel;
        }
        else if (pd.coin < nextSd.coin)
        {
            msg.err = (int)ErrorCode.LackCoin;
        }
        else if (pd.crystal < nextSd.crystal)
        {
            msg.err = (int)ErrorCode.LackCrystal;
        }
        else//校验通过
        {
            //资产变化
            pd.coin                -= nextSd.coin;
            pd.crystal             -= nextSd.crystal;
            pd.strongArr[data.pos] += 1;
            //属性变化
            pd.hp    += nextSd.addhp;
            pd.ad    += nextSd.addhurt;
            pd.ap    += nextSd.addhurt;
            pd.addef += nextSd.adddef;
            pd.apdef += nextSd.adddef;
            //任务进度更新
            TaskSys.Instance.CalcTaskPrgs(pd, 3);
            //数据库更新
            if (cacheSvc.UpdatePlayerData(pd.id, pd))
            {
                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
                };
            }
            else
            {
                msg.err = (int)ErrorCode.UpdateDbError;
            }
        }
        pack.session.SendMsg(msg);
    }
Esempio n. 2
0
    public void ClickStrongBtn()
    {
        GameEntry.Sound.PlayUISound(Constants.UIClickBtn);
        if (pd.StrongArr[currentIndex] < 10)
        {
            if (pd.Lv < nextSd.minlv)
            {
                GameEntry.UI.AddTips("角色等级不够");
                return;
            }
            if (pd.Coin < nextSd.coin)
            {
                GameEntry.UI.AddTips("金币数量不够");
                return;
            }
            if (pd.Crystal < nextSd.crystal)
            {
                GameEntry.UI.AddTips("水晶不够");
                return;
            }
            ReqStrong reqStrong = new ReqStrong();
            reqStrong.Pos = currentIndex;

            GameEntry.Net.SendMsg(reqStrong);
        }
        else
        {
            GameEntry.UI.AddTips("星级已经升满");
        }
    }
Esempio n. 3
0
    public void ReqStrong(MsgPack pack)
    {
        ReqStrong data = pack.gameMsg.val as ReqStrong;
        GameMsg   msg  = new GameMsg()
        {
            cmd = (int)CMD.RspStrong
        };

        PlayerData pd         = cacheSvc.GetPlayerDataBySession(pack.session);
        int        curtStarLv = pd.strongArr[data.pos];
        StrongCfg  nextSD     = cfgSvc.GetStrongData(data.pos, curtStarLv + 1);

        if (pd.lv < nextSD.minlv)
        {
            msg.err = (int)ErrorCode.LackLevel;
        }
        else if (pd.coin < nextSD.coin)
        {
            msg.err = (int)ErrorCode.LackCoin;
        }
        else if (pd.crystal < nextSD.crystal)
        {
            msg.err = (int)ErrorCode.LackCrystal;
        }
        else
        {
            TaskSys.Instance.CalcTaskPrgs(pd, 3);

            pd.coin                -= nextSD.coin;
            pd.crystal             -= nextSD.crystal;
            pd.strongArr[data.pos] += 1;
            pd.hp    += nextSD.addhp;
            pd.ad    += nextSD.addhurt;
            pd.ap    += nextSD.addhurt;
            pd.addef += nextSD.adddef;
            pd.apdef += nextSD.adddef;
        }

        if (cacheSvc.UpdatePlayerData(pd.id, pd))
        {
            msg.val = new RspStrong()
            {
                coin    = pd.coin,
                crystal = pd.crystal,
                hp      = pd.hp,
                ad      = pd.ad,
                ap      = pd.ap,
                addef   = pd.addef,
                apdef   = pd.apdef,
                strong  = pd.strongArr
            };
        }
        else
        {
            msg.err = (int)ErrorCode.UpdateDBError;
        }

        pack.session.SendMsg(msg);
    }
Esempio n. 4
0
    public void ReqStrong(MsgPack msgPack)
    {
        ReqStrong data = msgPack.msg.reqStrong;

        GameMsg msg = new GameMsg
        {
            cmd = (int)CMD.ResStrong,
        };
        PlayerData pd         = cacheSrv.GetPlayerDataBySession(msgPack.serverSession);
        int        curtStarLv = pd.strengthArray[data.pos];
        //判断条件是否符合

        //修改数据

        //发送消息
    }
Esempio n. 5
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);
    }
Esempio n. 6
0
    public void ReqStrong(MsgPack pack)
    {
        ReqStrong data = (ReqStrong)pack.msg;

        RspStrong  msg         = new RspStrong();
        PlayerData pd          = cacheSvc.GetPlayerDataBySession(pack.session);
        int        curtStartLv = pd.StrongArr[data.Pos];
        StrongCfg  nextSd      = CfgSvc.Instance.GetStrongCfg(data.Pos, curtStartLv + 1);

        //条件判断
        if (pd.Lv < nextSd.minlv)
        {
            msg.error = (int)ErrorCode.LackLevel;
        }
        else if (pd.Coin < nextSd.coin)
        {
            msg.error = (int)ErrorCode.LackCoin;
        }
        else if (pd.Crystal < nextSd.crystal)
        {
            msg.error = (int)ErrorCode.LackCrystal;
        }
        else
        {
            //任务进度数据更新
            TaskSys.Instance.CalcTaskPrgs(pd, 3);

            //资源扣除
            pd.Coin    -= nextSd.coin;
            pd.Crystal -= nextSd.crystal;

            pd.StrongArr[data.Pos] += 1;

            //增加属性
            pd.Hp    += nextSd.addhp;
            pd.Ad    += nextSd.addhurt;
            pd.Ap    += nextSd.addhurt;
            pd.Addef += nextSd.adddef;
            pd.Apdef += nextSd.adddef;
        }

        //更新数据库
        if (!cacheSvc.UpdatePlayerData(pd.Id, pd))
        {
            msg.error = (int)ErrorCode.UpdateDBError;
        }
        else
        {
            msg = new RspStrong {
                Coin    = pd.Coin,
                Crystal = pd.Crystal,
                Hp      = pd.Hp,
                Ad      = pd.Ad,
                Ap      = pd.Ap,
                Addef   = pd.Addef,
                Apdef   = pd.Apdef,
            };
            msg.StrongArr.SetRepeated <int>(pd.StrongArr);
        }
        pack.session.SendMsg(msg);
    }
Esempio n. 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);
    }
Esempio n. 8
0
    public void HandleReqStrong(MsgPack pack)
    {
        ReqStrong reqData = pack.msg.ReqStrong;
        NetMsg    newMsg  = new NetMsg
        {
            cmd = (int)MsgType.RspStrong,
        };

        int        pos       = reqData.pos;
        PlayerData pd        = CacheSvc.Instance.GetPlayerDataBySession(pack.session);
        int        curStarLv = pd.Strong[pos];

        CfgStrong nextCfg = CfgSvc.Instance.GetStrongCfg(pos, curStarLv + 1);

        if (nextCfg != null)
        {
            if (pd.Coin < nextCfg.coin)
            {
                newMsg.err = (int)ErrorCode.LackCoin;
            }
            else if (pd.Level < nextCfg.minLv)
            {
                newMsg.err = (int)ErrorCode.LackLevel;
            }
            else if (pd.Crystal < nextCfg.crystal)
            {
                newMsg.err = (int)ErrorCode.LackCrystal;
            }
            else
            {
                //修改缓存,更新数据库
                pd.Strong[pos] += 1;
                pd.Hp          += nextCfg.addHp;
                pd.Ad          += nextCfg.addHurt;
                pd.Ap          += nextCfg.addHurt;
                pd.Addef       += nextCfg.addDef;
                pd.Apdef       += nextCfg.addDef;
                pd.Coin        -= nextCfg.coin;
                pd.Crystal     -= nextCfg.crystal;

                if (CacheSvc.Instance.UpdatePlayerDataToDB(pd.ID, pd))
                {
                    newMsg.RspStrong = new RspStrong
                    {
                        data = pd,
                    };
                }
                else
                {
                    newMsg.err = (int)ErrorCode.UpdateDBFailed;
                }
            }
        }
        else
        {
            //这里防止客户端在已经升满级的情况下发起强化请求
            PECommonTool.Log("获取强化配置错误", LogType.Error);
            return;
        }

        pack.session.SendMsg(newMsg);
    }
Esempio n. 9
0
    public void ReqStrong(MsgPack pack)
    {
        ReqStrong data = pack.msg.reqStrong;

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

        PlayerData pd        = CacheSvc.Instance.GetPlayerDataBySession(pack.session);
        int        curStarlv = pd.strongArr[data.pos];
        StrongCfg  nextsd    = CfgSvc.Instance.GetStrongCfg(data.pos, curStarlv + 1);

        //判断资源是否足够
        if (pd.lv < nextsd.minlv)
        {
            msg.err = (int)ErrorCode.LackLevel;
        }
        else if (pd.coin < nextsd.coin)
        {
            msg.err = (int)ErrorCode.LackCoin;
        }
        else if (pd.crystal < nextsd.crystal)
        {
            msg.err = (int)ErrorCode.LackCrystal;
        }
        else
        {
            //资源扣除
            pd.coin    -= nextsd.coin;
            pd.crystal -= nextsd.crystal;
            //增加属性
            pd.strongArr[data.pos] += 1;
            pd.hp    += nextsd.addhp;
            pd.ad    += nextsd.addhurt;
            pd.ap    += nextsd.addhurt;
            pd.addef += nextsd.adddef;
            pd.apdef += nextsd.adddef;
            //更新任务进度数据
            TaskSys.Instance.CalcTaskPrgs(pd, 3);

            if (!CacheSvc.Instance.UpdatePlayerData(pd.id, pd, pack.session))
            {
                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);
    }
Esempio n. 10
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);
        StrongCfg  nextSc = cfgSvc.GetStrongCfgData(data.pos, pd.strongArr[data.pos] + 1);

        if (nextSc == null)
        {
            //错误码:满星
            msg.err = (int)ErrorCode.MaxStar;
        }
        else if (pd.lv < nextSc.minlv)
        {
            //错误码:等级不够
            msg.err = (int)ErrorCode.LackLevel;
        }
        else if (pd.coin < nextSc.coin)
        {
            //错误码:金币不够
            msg.err = (int)ErrorCode.LackCoin;
        }
        else if (pd.crystal < nextSc.crystal)
        {
            //错误码:水晶不够
            msg.err = (int)ErrorCode.LackCrystal;
        }
        else
        {
            //任务进度数据更新
            TaskSys.Instance.CalcTaskPrgs(pd, 3);

            //满足条件
            //消耗金币和水晶
            pd.coin    -= nextSc.coin;
            pd.crystal -= nextSc.crystal;

            //增加属性
            pd.hp    += nextSc.addhp;
            pd.ad    += nextSc.addhurt;
            pd.ap    += nextSc.addhurt;
            pd.addef += nextSc.adddef;
            pd.apdef += nextSc.adddef;
            pd.strongArr[data.pos] += 1;

            if (DBMgr.Instance.UpdatePlayerData(pd.id, pd))
            {
                //发送协议更新客户端内容
                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,
                };
            }
            else
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
        }


        pack.session.SendMsg(msg);
    }
Esempio n. 11
0
        public void ReqStrong(MsgPack pack)
        {
            ServerSession session = pack.session;
            ReqStrong     data    = pack.msg.reqStrong;

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

            PlayerData pd      = cacheSev.GetPlayerDataBySession(session);
            int        curStar = pd.strongArr[data.pos];
            StrongCfg  nextSc  = cfgSev.GetStrongCfgData(data.pos, curStar + 1);

            // 条件判断
            if (pd.lv < nextSc.minLv)
            {
                msg.err = (int)ErrorCode.LackLevel;
                session.SendMsg(msg);
                return;
            }
            if (pd.coin < nextSc.coin)
            {
                msg.err = (int)ErrorCode.LackCoin;
                session.SendMsg(msg);
                return;
            }
            if (pd.crystal < nextSc.crystal)
            {
                msg.err = (int)ErrorCode.LackCrystal;
                session.SendMsg(msg);
                return;
            }

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

            // 属性增益
            pd.strongArr[data.pos] += 1;
            pd.hp    += nextSc.addHp;
            pd.ad    += nextSc.addHurt * (1 + 1 / (data.pos + 1));
            pd.ap    += nextSc.addHurt;
            pd.addef += nextSc.addDef;
            pd.apdef += nextSc.addDef;

            // 任务进度更新
            msg.pshTaskPrgs = TaskSystem.Instance.CalcTaskPrg(pd, 3);

            // 更新数据库
            if (!cacheSev.UpdatePlayerData(pd))
            {
                msg.err = (int)ErrorCode.UpdateDBError;
                session.SendMsg(msg);
                return;
            }

            // 返回消息
            msg.rspStrong = new RspStrong
            {
                coin      = pd.coin,
                crystal   = pd.crystal,
                hp        = pd.hp,
                ad        = pd.ad,
                ap        = pd.ap,
                adddef    = pd.addef,
                apdef     = pd.apdef,
                strongArr = pd.strongArr
            };
            session.SendMsg(msg);
        }
Esempio n. 12
0
    public void ReqStrong(MsgPack pack)
    {
        ReqStrong data = pack.msg.reqStrong;

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

        PlayerData playerData = cacheSvc.GetPlayerDataBySession(pack.session);
        int        curStarLv  = playerData.strongArr[data.pos];

        StrongCfg nextSc = CfgSvc.Instance.GetStrongCfg(data.pos, curStarLv + 1);

        // 条件判断
        if (playerData.lv < nextSc.minlv)
        {
            msg.err = (int)ErrorCode.LackLevel;
        }
        else if (playerData.coin < nextSc.coin)
        {
            msg.err = (int)ErrorCode.LackCoin;
        }
        else if (playerData.crystal < nextSc.crystal)
        {
            msg.err = (int)ErrorCode.LackCrystal;
        }
        else
        {
            // 资源扣除
            playerData.coin    -= nextSc.coin;
            playerData.crystal -= nextSc.crystal;

            // 属性修改
            playerData.strongArr[data.pos] += 1;
            playerData.hp    += nextSc.addhp;
            playerData.ad    += nextSc.addhurt;
            playerData.ap    += nextSc.addhurt;
            playerData.addef += nextSc.adddef;
            playerData.apdef += nextSc.adddef;

            // 任务进度更新
            TaskSys.Instance.CalcTaskPrgs(playerData, 3);
        }


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

        pack.session.SendMsg(msg);
    }