Beispiel #1
0
    public void RefreshUI(TaskRewardCfg trf, TaskRewardData trc)
    {
        rewardID     = trf.ID;
        txtName.text = trf.taskName;
        txtExp.text  = trf.exp.ToString();
        txtCoin.text = "金币 " + trf.coin.ToString();
        txtPrg.text  = trc.progress + "/" + trf.count;
        float pec = trc.progress * 1.0f / trf.count;

        proVal.fillAmount = pec;
        bool taked = trc.taked;

        if (taked == false)
        {
            compTrans.gameObject.SetActive(false);
            if (trf.count != trc.progress)
            {
                takeBtn.interactable = false;
            }
            else
            {
                takeBtn.interactable = true;
            }
        }
        else
        {
            takeBtn.interactable = false;
            compTrans.gameObject.SetActive(true);
        }
    }
Beispiel #2
0
    public void CalcTaskPrgs(int tid)
    {
        TaskRewardCfg trd = resSvc.GetTaskRewardCfg(tid);
        string[] taskInfo = new string[5];
        for (int i = 0; i < PlayerData.TaskArr.Length; i++)
        {

            taskInfo = PlayerData.TaskArr[i].Split('|');
            //1|0|0
            if (int.Parse(taskInfo[0]) == tid)
            {
                if (int.Parse(taskInfo[1])>=trd.count)
                {
                    
                    taskInfo[1] = trd.count.ToString();
                    break;
                }
                else
                {
                    int index = int.Parse(taskInfo[1]);
                  
                    index += 1;
                    taskInfo[1] = index.ToString();
                    
                }

                PlayerData.TaskArr[i]= taskInfo[0] + "|" + taskInfo[1] + "|" + taskInfo[2];
                NetTask netTask = new NetTask();
                break;
            }
        }
        
    }
Beispiel #3
0
    public PshTaskPrgs GetTaskPrgs(PlayerData pd, int tid)
    {
        TaskRewardData trd = CalcTaskRewardData(pd, tid);
        TaskRewardCfg  trc = cfgSvc.GetTaskRewardCfg(tid);

        if (trd.prgs < trc.count)
        {
            trd.prgs += 1;
            // 更新任务进度
            CalcTaskArr(pd, trd);

            return(new PshTaskPrgs
            {
                taskArr = pd.taskArr
            });

            //ServerSession session = cacheSvc.GetOnlineServerSessions(pd.id);
            //if (session != null)
            //{
            //    session.SendMsg(new GameMsg
            //    {
            //        cmd = (int)CMD.PshTaskPrgs,
            //        pshTaskPrgs = new PshTaskPrgs
            //        {
            //            taskArr = pd.taskArr
            //        }
            //    });
            //}
        }
        else
        {
            return(null);
        }
    }
Beispiel #4
0
    public void CalcTaskProgress(PlayerData playerData, int taskId)
    {
        TaskData      taskData    = CalcTaskRewardData(playerData, taskId);
        TaskRewardCfg taskDataCfg = configSvc.GetTaskRewardData(taskId);

        if (taskData.progress < taskDataCfg.count)
        {
            taskData.progress += 1;
            UpdateTaskProgress(playerData, taskData);

            //告诉客户端
            ServerSession session = cacheSvc.GetSessionByPlayerID(playerData.id);
            if (session != null)
            {
                session.SendMsg(new NetMsg
                {
                    cmd             = (int)MsgCommand.Cmd_PshTaskProgress,
                    pshTaskProgress = new PushTaskProgress
                    {
                        taskArr = playerData.taskReward
                    }
                });
            }
        }
    }
Beispiel #5
0
    public void CalcTaskPrgs(PlayerData pd, int tid)
    {
        TaskRewardData trd = CalcTaskRewardData(pd, tid);
        TaskRewardCfg  trc = cfgSvc.GetTaskRewardCfg(tid);


        if (trd.prgs < trc.count)
        {
            trd.prgs += 1;

            //更新任务进度
            CalcTaskArr(pd, trd);

            ServerSession session = cacheSvc.GetOnlineServerSession(pd.id);
            if (session != null)
            {
                session.SendMsg(new GameMsg()
                {
                    cmd         = (int)CMD.PshTaskPrgs,
                    pshTaskPrgs = new PshTaskPrgs()
                    {
                        taskArr = pd.taskArr
                    }
                });
            }
        }
    }
Beispiel #6
0
    private void InitTaskRewardCfgData(string xmlPath)
    {
        TextAsset xmlText = Resources.Load <TextAsset>(xmlPath);

        if (!xmlText)
        {
            CommonTools.Log("xml file: " + PathDefine.cPath_RandomNameCfg + "not exits!",
                            LogType.LogType_Error);
            return;
        }

        //开始解析xml文件
        XmlDocument doc = new XmlDocument();

        doc.LoadXml(xmlText.text);

        XmlNodeList nodeList = doc.SelectSingleNode("root").ChildNodes;

        for (int i = 0; i < nodeList.Count; i++)
        {
            XmlElement element = nodeList[i] as XmlElement;

            if (element.GetAttributeNode("ID") == null)
            {
                continue;
            }
            int id = Convert.ToInt32(element.GetAttributeNode("ID").InnerText);

            TaskRewardCfg taskData = new TaskRewardCfg
            {
                ID = id,
            };

            #region 遍历解析
            foreach (XmlElement elem in nodeList[i].ChildNodes)
            {
                switch (elem.Name)
                {
                case "taskName":
                    taskData.taskName = elem.InnerText;
                    break;

                case "count":
                    taskData.count = int.Parse(elem.InnerText);
                    break;

                case "coin":
                    taskData.coin = int.Parse(elem.InnerText);
                    break;

                case "exp":
                    taskData.exp = int.Parse(elem.InnerText);
                    break;
                }
            }
            #endregion

            dictTaskRewardCfgData.Add(id, taskData);
        }
    }
Beispiel #7
0
    /// <summary>
    /// 更新玩家数据的任务进度
    /// </summary>
    /// <param name="pd">玩家数据</param>
    /// <param name="tid">进度id</param>
    public void CalcTaskPrgs(PlayerData pd, int tid)
    {
        TaskRewardData trd = CalcTaskRewardData(pd, tid);      //获得玩家当前任务信息
        TaskRewardCfg  trc = cfgSvc.GetTaskRewardCfgData(tid); //获得任务模板

        if (trd.prgs < trc.count)
        {
            //更新任务进度
            trd.prgs++;
            CalcUpdatePlayerTaskArr(pd, trd);

            ServerSession session = cacheSvc.GetOnlineServerSession(pd.id);
            if (session != null)
            {
                session.SendMsg(
                    new GameMsg
                {
                    cmd         = (int)CMD.PshTaskPrgs,
                    pshTaskPrgs = new PshTaskPrgs
                    {
                        taskArr = pd.taskArr
                    }
                }
                    );
            }
        }
    }
Beispiel #8
0
    public void CalcTaskPrgs(PlayerData pd, int rid)
    {
        TaskRewardData trd   = TaskSys.instance.GetTaskRewardData(pd, rid);
        TaskRewardCfg  trcfg = CfgSvc.Instance.GetTaskRewardCfg(rid);

        if (trd.prgs < trcfg.count)
        {
            trd.prgs += 1;
            CalcTaskArr(pd, trd);

            ServerSession session = CacheSvc.Instance.GetServerSessionByID(pd.id);
            if (session != null)
            {
                GameMsg msg = new GameMsg
                {
                    cmd         = (int)CMD.PshTaskPrgs,
                    pshTaskPrgs = new PshTaskPrgs
                    {
                        taskArr = pd.taskArr
                    }
                };

                session.SendMsg(msg);
            }
        }
    }
Beispiel #9
0
    public TaskRewardCfg GetTaskRewardCfg(int id)
    {
        TaskRewardCfg trc = null;

        taskRewardDic.TryGetValue(id, out trc);

        return(trc);
    }
Beispiel #10
0
    public void RefreshUI()
    {
        curTaskDataList.Clear();
        verticalScrollBar.GetComponent <Scrollbar>().value = 1;
        for (int i = 0; i < itemGroupTrans.childCount; i++)
        {
            Destroy(itemGroupTrans.GetChild(i).gameObject);
        }

        List <TaskRewardData> todoList     = new List <TaskRewardData>();
        List <TaskRewardData> waitDoneList = new List <TaskRewardData>();
        List <TaskRewardData> doneList     = new List <TaskRewardData>();

        for (int i = 0; i < playerData.taskArr.Length; i++)
        {
            string[]       taskInfo = playerData.taskArr[i].Split('|');
            TaskRewardData data     = new TaskRewardData
            {
                ID       = int.Parse(taskInfo[0]),
                progress = int.Parse(taskInfo[1]),
                taked    = taskInfo[2].Equals("1"),
            };

            if (data.taked == false)
            {
                if (data.progress == resSvc.GetTaskRewardCfg(data.ID).count)
                {
                    waitDoneList.Add(data);
                }
                else
                {
                    todoList.Add(data);
                }
            }
            else
            {
                doneList.Add(data);
            }
        }


        //将未完成任务、待领取任务与已完成任务按顺序加入列表
        curTaskDataList.AddRange(waitDoneList);
        curTaskDataList.AddRange(todoList);
        curTaskDataList.AddRange(doneList);
        for (int j = 0; j < curTaskDataList.Count; j++)
        {
            GameObject itemTask = resSvc.LoadPrefab(PathDefine.ItemTaskPrefab);
            itemTask.transform.SetParent(itemGroupTrans);
            itemTask.transform.localPosition = Vector3.zero;
            itemTask.transform.localScale    = Vector3.one;
            itemTask.name = "itemTask_" + j;

            TaskRewardData data = curTaskDataList[j];
            TaskRewardCfg  trf  = resSvc.GetTaskRewardCfg(data.ID);
            itemTask.GetComponent <ItemTask>().RefreshUI(trf, data);
        }
    }
Beispiel #11
0
    private void InitTaskRewardCfg(string path)
    {
        TextAsset xml = Resources.Load <TextAsset>(path);

        if (xml == false)
        {
            Debug.LogError(GetType() + "/InitTaskRewardCfg()/xml file:" + path + " not exist");
        }
        else
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml.text);

            XmlNodeList nodLst = doc.SelectSingleNode("root").ChildNodes;

            for (int i = 0; i < nodLst.Count; i++)
            {
                XmlElement ele = nodLst[i] as XmlElement;

                if (ele.GetAttributeNode("ID") == null)
                {
                    continue;
                }

                int ID = Convert.ToInt32(ele.GetAttributeNode("ID").InnerText);

                TaskRewardCfg trc = new TaskRewardCfg
                {
                    ID = ID
                };

                foreach (XmlElement e in nodLst[i].ChildNodes)
                {
                    switch (e.Name)
                    {
                    case "taskName":
                        trc.taskName = e.InnerText;
                        break;

                    case "coin":
                        trc.coin = int.Parse(e.InnerText);
                        break;

                    case "exp":
                        trc.exp = int.Parse(e.InnerText);
                        break;

                    case "count":
                        trc.count = int.Parse(e.InnerText);
                        break;
                    }
                }

                taskRwdDic.Add(ID, trc);
            }
        }
    }
Beispiel #12
0
    public TaskRewardCfg GetTaskRewardCfg(int ID)
    {
        TaskRewardCfg taskRewardCfg = null;

        if (taskRewardCfgDic.TryGetValue(ID, out taskRewardCfg))
        {
            return(taskRewardCfg);
        }
        return(null);
    }
Beispiel #13
0
    public TaskRewardCfg GetTaskRewardCfg(int id)
    {
        TaskRewardCfg taskRewardCfg = null;

        if (taskRewardCfgDicts.TryGetValue(id, out taskRewardCfg))
        {
            return(taskRewardCfg);
        }
        return(null);
    }
Beispiel #14
0
    public TaskRewardCfg GetTaskRewardCfg(int id)
    {
        TaskRewardCfg trc = null;

        if (taskDic.TryGetValue(id, out trc))
        {
            return(trc);
        }
        return(null);
    }
Beispiel #15
0
    public TaskRewardCfg GetTaskRewardCfg(int id)
    {
        TaskRewardCfg agc = null;

        if (taskRewardDic.TryGetValue(id, out agc))
        {
            return(agc);
        }
        return(agc);
    }
Beispiel #16
0
    private void LoadAssetSucessCallBack(string assetName, object asset, float duration, object userData)
    {
        GameObject go    = asset as GameObject;
        int        index = -1;

        if (!go || !int.TryParse(userData.ToString(), out index))
        {
            Debug.LogError("Sprite:" + assetName + "资源不存在");
        }
        else
        {
            go = Instantiate(go);
            go.transform.SetParent(scrollTrans);
            go.transform.localPosition = Vector3.zero;
            go.transform.localScale    = Vector3.one;
            go.name = "taskItem_" + index;

            TaskRewardData trd = trdLst[index];
            TaskRewardCfg  trf = GameEntry.Res.GetTaskRewardCfg(trd.ID);

            SetText(GetTrans(go.transform, "txtName"), trf.taskName);
            SetText(GetTrans(go.transform, "txtPrg"), trd.prgs + "/" + trf.count);
            SetText(GetTrans(go.transform, "txtExp"), "奖励:    经验" + trf.exp);
            SetText(GetTrans(go.transform, "txtCoin"), "金币" + trf.coin);
            Image imgPrg = GetTrans(go.transform, "prgBar/prgVal").GetComponent <Image>();
            float prgVal = trd.prgs * 1.0f / trf.count;
            imgPrg.fillAmount = prgVal;

            Button btnTake = GetTrans(go.transform, "btnTake").GetComponent <Button>();
            btnTake.onClick.AddListener(() => {
                ClickTakeBtn(go.name);
            });

            Transform transComp = GetTrans(go.transform, "imgComp");
            if (trd.taked)
            {
                btnTake.interactable = false;
                SetActive(transComp);
            }
            else
            {
                SetActive(transComp, false);
                if (trd.prgs == trf.count)
                {
                    btnTake.interactable = true;
                }
                else
                {
                    btnTake.interactable = false;
                }
            }
            GameEntry.Resource.UnloadAsset(asset);
        }
    }
Beispiel #17
0
    public TaskRewardCfg GetTaskRewardCfg(int id)
    {
        TaskRewardCfg cfg = null;

        if (taskRewardCfgDic.TryGetValue(id, out cfg))
        {
            return(cfg);
        }
        NETCommon.Log("获取 TaskRewardCfg 失败,ID:" + id);
        return(null);
    }
Beispiel #18
0
    /// <summary>
    /// 获取任务奖励
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public TaskRewardCfg GetTaskRewardData(int id)
    {
        TaskRewardCfg data = null;

        if (_dictTaskRewardCfgData.TryGetValue(id, out data))
        {
            return(data);
        }

        return(null);
    }
Beispiel #19
0
    private void InitTaskRewardCfg(string assetName, object asset, float duration, object userData)
    {
        TextAsset xml = asset as TextAsset;

        if (!xml)
        {
            PECommon.Log("xml file:" + assetName + " not exist", LogType.Error);
        }
        else
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml.text);

            XmlNodeList nodLst = doc.SelectSingleNode("root").ChildNodes;

            for (int i = 0; i < nodLst.Count; i++)
            {
                XmlElement ele = nodLst[i] as XmlElement;

                if (ele.GetAttributeNode("ID") == null)
                {
                    continue;
                }
                int           ID  = Convert.ToInt32(ele.GetAttributeNode("ID").InnerText);
                TaskRewardCfg trc = new TaskRewardCfg {
                    ID = ID
                };

                foreach (XmlElement e in nodLst[i].ChildNodes)
                {
                    switch (e.Name)
                    {
                    case "taskName":
                        trc.taskName = e.InnerText;
                        break;

                    case "count":
                        trc.count = int.Parse(e.InnerText);
                        break;

                    case "exp":
                        trc.exp = int.Parse(e.InnerText);
                        break;

                    case "coin":
                        trc.coin = int.Parse(e.InnerText);
                        break;
                    }
                }
                taskRewareDic.Add(ID, trc);
            }
        }
        GameEntry.Resource.UnloadAsset(asset);
    }
Beispiel #20
0
    private void ClickTakeBtn(string name)
    {
        string[] nameArr = name.Split('_');
        int      index   = int.Parse(nameArr[1]);
        int      taskId  = trdLst[index].ID;

        m_TaskFormData.OnClickTakeTask(taskId);
        TaskRewardCfg trc  = GameEntry.Res.GetTaskRewardCfg(trdLst[index].ID);
        int           coin = trc.coin;
        int           exp  = trc.exp;

        GameEntry.UI.AddTips(Constants.Color("获得奖励:", TxtColor.Blue) + Constants.Color(" 金币 +" + coin + " 经验 +" + exp, TxtColor.Green));
    }
Beispiel #21
0
    public override void OnOperationResponse(OperationResponse operationResponse)
    {
        if (operationResponse.ReturnCode == (byte)ReturnCode.Success)
        {
            TaskRewardCfg trc = ResSvc.Instance.GetTaskRewardCfg(_tid);
            GameRoot.AddTips("任务奖励领取成功!金币+" + trc.coin + "--经验+" + trc.exp);

            ComTools.CalcExp(trc.exp);
        }

        NetGetPlayerData netGetPlayerData2 = new NetGetPlayerData(PlayerData.playerID, LoadPlayeDataOverCode.RefreshUIByTaskWnd);


        NetSvc.Instance.RemoveRequest(this);
    }
Beispiel #22
0
    private void InitTaskCfgData()
    {
        XmlDocument xmlDocument = new XmlDocument();

        xmlDocument.Load("D:\\UNITY\\DarkGod\\Assets\\Resources\\ResCfgs\\taskreward.xml");

        XmlNodeList xmlNodeList = xmlDocument.SelectSingleNode("root")?.ChildNodes;

        for (int i = 0; i < xmlNodeList?.Count; i++)
        {
            XmlElement xmlElement = xmlNodeList[i] as XmlElement;

            if (xmlElement?.GetAttributeNode("ID") == null)
            {
                continue;
            }

            int           id      = Convert.ToInt32(xmlElement.GetAttributeNode("ID")?.InnerText);
            TaskRewardCfg taskCfg = new TaskRewardCfg
            {
                Id = id
            };

            foreach (XmlElement e in xmlNodeList[i].ChildNodes)
            {
                switch (e.Name)
                {
                case "coin":
                    taskCfg.Coin = int.Parse(e.InnerText);
                    break;

                case "exp":
                    taskCfg.Exp = int.Parse(e.InnerText);
                    break;

                case "count":
                    taskCfg.Count = int.Parse(e.InnerText);
                    break;

                case "diamond":
                    taskCfg.Diamond = int.Parse(e.InnerText);
                    break;
                }
            }
            taskDictionary.Add(id, taskCfg);
        }
        PeRoot.Log("TaskRewardCfg Init Done.||日常任务数据配置.");
    }
Beispiel #23
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);
    }
Beispiel #24
0
    private void InitTaskRewardCfgData()
    {
        //开始解析xml文件
        XmlDocument doc = new XmlDocument();

        doc.Load(@"..\..\..\Configs\taskreward.xml");

        XmlNodeList nodeList = doc.SelectSingleNode("root").ChildNodes;

        for (int i = 0; i < nodeList.Count; i++)
        {
            XmlElement element = nodeList[i] as XmlElement;

            if (element.GetAttributeNode("ID") == null)
            {
                continue;
            }
            int id = Convert.ToInt32(element.GetAttributeNode("ID").InnerText);

            TaskRewardCfg taskData = new TaskRewardCfg
            {
                ID = id,
            };

            #region 遍历解析
            foreach (XmlElement elem in nodeList[i].ChildNodes)
            {
                switch (elem.Name)
                {
                case "count":
                    taskData.count = int.Parse(elem.InnerText);
                    break;

                case "coin":
                    taskData.coin = int.Parse(elem.InnerText);
                    break;

                case "exp":
                    taskData.exp = int.Parse(elem.InnerText);
                    break;
                }
            }
            #endregion

            _dictTaskRewardCfgData.Add(id, taskData);
        }
    }
Beispiel #25
0
    private void InitTaskRewardCfg(string path)
    {
        XmlDocument doc = new XmlDocument();

        doc.Load(path);

        XmlNodeList nodLst = doc.SelectSingleNode("root").ChildNodes;

        for (int i = 0; i < nodLst.Count; i++)
        {
            XmlElement ele = nodLst[i] as XmlElement;

            if (ele.GetAttributeNode("ID") == null)
            {
                continue;
            }

            int ID = Convert.ToInt32(ele.GetAttributeNode("ID").InnerText);

            TaskRewardCfg trc = new TaskRewardCfg
            {
                ID = ID
            };

            foreach (XmlElement e in nodLst[i].ChildNodes)
            {
                switch (e.Name)
                {
                case "count":
                    trc.count = int.Parse(e.InnerText);
                    break;

                case "coin":
                    trc.coin = int.Parse(e.InnerText);
                    break;

                case "exp":
                    trc.exp = int.Parse(e.InnerText);
                    break;
                }
            }

            taskRewardDic.Add(ID, trc);
        }

        Common.Log("TaskReward Cfg Init Done.");
    }
Beispiel #26
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);
    }
Beispiel #27
0
    private void InitTaskRewardCfg(string path)
    {
        XmlNodeList nodList = null;

        if (TryGetRootNodeList(path, out nodList))
        {
            for (int i = 0; i < nodList.Count; i++)
            {
                XmlElement ele = nodList[i] as XmlElement;

                if (ele.GetAttributeNode("ID") == null)
                {
                    continue;
                }
                int ID = Convert.ToInt32(ele.GetAttributeNode("ID").InnerText);

                TaskRewardCfg rec = new TaskRewardCfg()
                {
                    ID = ID
                };

                foreach (XmlElement e in nodList[i].ChildNodes)
                {
                    switch (e.Name)
                    {
                    case "taskName":
                        rec.taskName = e.InnerText;
                        break;

                    case "count":
                        rec.count = int.Parse(e.InnerText);
                        break;

                    case "coin":
                        rec.coin = int.Parse(e.InnerText);
                        break;

                    case "exp":
                        rec.exp = int.Parse(e.InnerText);
                        break;
                    }
                }
                taskRewardCfgDic.Add(ID, rec);
            }
        }
    }
Beispiel #28
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;
        }
    }
Beispiel #29
0
    private void InitTaskRewardCfg()
    {
        XmlDocument doc = new XmlDocument();

        doc.Load(@"D:\GitDirectory\暗黑战神\Assets\Resources\ResCfgs\taskreward.xml");
        XmlNodeList nodLst = doc.SelectSingleNode("root").ChildNodes;

        for (int i = 0; i < nodLst.Count; i++)
        {
            XmlElement ele = nodLst[i] as XmlElement;
            if (ele.GetAttributeNode("ID") == null)
            {
                continue;
            }
            int ID = Convert.ToInt32(ele.GetAttributeNode("ID").InnerText);

            TaskRewardCfg trc = new TaskRewardCfg()
            {
                id = ID
            };

            foreach (XmlElement e in nodLst[i].ChildNodes)
            {
                switch (e.Name)
                {
                case "taskName":
                    trc.taskName = e.InnerText;
                    break;

                case "coin":
                    trc.coin = int.Parse(e.InnerText);
                    break;

                case "exp":
                    trc.exp = int.Parse(e.InnerText);
                    break;

                case "count":
                    trc.count = int.Parse(e.InnerText);
                    break;
                }
            }
            TaskDic.Add(ID, trc);
        }
    }
Beispiel #30
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);
    }