示例#1
0
        public PshTaskPrgs CalcTaskPrg(PlayerData pd, int id)
        {
            TaskRewardData trd = CalcTaskRewardData(pd, id);
            TaskRewardCfg  cfg = cfgService.GetTaskRewardCfg(id);
            PshTaskPrgs    psh = null;

            if (trd.prgs < cfg.count)
            {
                ++trd.prgs;
                CalcTaskArr(pd, trd);
                psh = new PshTaskPrgs
                {
                    taskAr = pd.taskArr
                };
            }
            return(psh);
        }
示例#2
0
        private TaskRewardData CalcTaskRewardData(PlayerData data, int id)
        {
            for (int i = 0; i < data.taskArr.Length; i++)
            {
                if (data.taskArr[i][0] - 48 == id)
                {
                    TaskRewardData trd = new TaskRewardData
                    {
                        ID   = id,
                        prgs = data.taskArr[i][2] - 48,
                        take = data.taskArr[i][4] - 48 == 1
                    };
                    return(trd);
                }
            }

            return(null);
        }
示例#3
0
        private void CalcTaskArr(PlayerData pd, TaskRewardData trd)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(trd.ID.ToString());
            sb.Append('|');
            sb.Append(trd.prgs);
            sb.Append('|');
            sb.Append(trd.take ? '1' : '0');
            string res = sb.ToString();

            sb.Clear();
            for (int i = 0; i < pd.taskArr.Length; i++)
            {
                if (pd.taskArr[i][0] - 48 == trd.ID)
                {
                    pd.taskArr[i] = res;
                    return;
                }
            }
        }
示例#4
0
        public void ReqTakeTaskReward(MsgPack pack)
        {
            ReqTakeTaskReward data = pack.msg.reqTakeTask;

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

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

            TaskRewardCfg  cfg = cfgService.GetTaskRewardCfg(data.id);
            TaskRewardData trd = CalcTaskRewardData(pd, data.id);

            if (trd.prgs != cfg.count || trd.take)
            {
                msg.err = (int)ErrorCode.TakeTaskError;
                pack.session.SendMsg(msg);
                return;
            }

            pd.coin += cfg.coin;
            NETCommon.CalcExp(pd, cfg.exp);
            trd.take = true;
            CalcTaskArr(pd, trd);
            if (!cacheSev.UpdatePlayerData(pd))
            {
                msg.err = (int)ErrorCode.UpdateDBError;
                pack.session.SendMsg(msg);
                return;
            }
            msg.rspTakeTask = new RspTakeTaskReward
            {
                coin    = pd.coin,
                exp     = pd.exp,
                lv      = pd.lv,
                taskArr = pd.taskArr
            };
            pack.session.SendMsg(msg);
        }