/// <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); }
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("星级已经升满"); } }
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); }
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]; //判断条件是否符合 //修改数据 //发送消息 }
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); }
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); }
/// <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 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); }
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); }
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); }
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); }
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); }