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