public void RequestBattleEnd(MsgPack msgPack) { RequestBattleEnd data = msgPack.Msg.RequestBattleEnd; NetMsg netMsg = new NetMsg { cmd = (int)Command.ResponseBattleEnd }; //校验战斗是否合法 if (data.IsWin) { if (data.CostTime > 0 && data.RestHp > 0) { //获取战斗副本相应的奖励 MapCfg mapCfg = _resCfgSvc.GetMapData(data.BattleId); PlayerData playerData = _cacheSvc.GetPlayerDataBySession(msgPack.Session); TaskSys.Instance.CalcTaskPrangs(playerData, 2); playerData.Coin += mapCfg.Coin; playerData.Crystal += mapCfg.Crystal; PeRoot.CalcExp(playerData, mapCfg.Exp); if (playerData.Battle == data.BattleId) { playerData.Battle += 1; } if (!_cacheSvc.UpdatePlayerData(playerData.Id, playerData)) { netMsg.err = (int)ErrorCode.UpdateDbError; } else { ResponseBattleEnd battleEnd = new ResponseBattleEnd { IsWin = data.IsWin, Battle = data.BattleId, CostTime = data.CostTime, RestHp = data.RestHp, Coin = playerData.Coin, Level = playerData.Level, Exp = playerData.Exp, Crystal = playerData.Crystal, BattleId = playerData.Battle, }; netMsg.ResponseBattleEnd = battleEnd; } } } else { netMsg.err = (int)ErrorCode.ClientDataError; } msgPack.Session.SendMsg(netMsg); }
public void Init() { _cacheSvc = CacheSvc.Instance; _timeSvc = TimeSvc.Instance; TimeSvc.Instance.AddTimeTask(CalcPowerAdd, PeRoot.PowerAddSpace, PETimeUnit.Minute, 0); PeRoot.Log("PowerSys Init Done.||体力恢复系统."); }
public void ReqLogin(MsgPack pack) { RequestLogin data = pack.Msg.RequestLogin; //账号是否上线 NetMsg netMsg = new NetMsg { cmd = (int)Command.ResponseLogin }; if (_cacheSvc.IsAcctOnline(data.Acct)) { //己上线:返回错误信息 netMsg.err = (int)ErrorCode.AcctIsOnline; } else { //账号不在线 || 账号是否已经存在 PlayerData playerData = _cacheSvc.GetPlayerData(data.Acct, data.Pass); if (playerData == null) { //账号存在,密码错误 netMsg.err = (int)ErrorCode.WrongPass; } else { #region 计算离线玩家体力值 int power = playerData.Power; long timeNow = _timeSvc.GetNowTime(); long milliseconds = timeNow - playerData.Time; int addPower = (int)(milliseconds / (1000 * 60 * PeRoot.PowerAddSpace)) * PeRoot.PowerAddCount; if (addPower > 0) { int powerMax = PeRoot.GetPowerLimit(playerData.Level); if (playerData.Power < powerMax) { playerData.Power += addPower; if (playerData.Power > powerMax) { playerData.Power = powerMax; } } } if (power != playerData.Power) { _cacheSvc.UpdatePlayerData(playerData.Id, playerData); } #endregion netMsg.ResponseLogin = new ResponseLogin { PlayerData = playerData }; //缓存账号数据 _cacheSvc.AcctOnLine(data.Acct, pack.Session, playerData); } } pack.Session.SendMsg(netMsg); }
public void ClearOffLineData(ServerSession session) { PlayerData playerData = _cacheSvc.GetPlayerDataBySession(session); if (playerData != null) { playerData.Time = _timeSvc.GetNowTime(); if (!_cacheSvc.UpdatePlayerData(playerData.Id, playerData)) { PeRoot.Log("Update offline time error", LogType.LogError); } _cacheSvc.AcctOffLine(session); } }
public void RequestTaskReward(MsgPack msgPack) { RequestTask data = msgPack.Msg.RequestTask; NetMsg netMsg = new NetMsg { cmd = (int)Command.ResponseTask }; PlayerData playerData = _cacheSvc.GetPlayerDataBySession(msgPack.Session); TaskRewardCfg taskCfg = _resCfgSvc.GetTaskData(data.TaskId); TaskRewardData taskData = CalcTaskRewardData(playerData, data.TaskId); if (taskData.Prangs == taskCfg.Count && !taskData.Tasked) { playerData.Coin += taskCfg.Coin; PeRoot.CalcExp(playerData, taskCfg.Exp); playerData.Diamond += taskCfg.Diamond; taskData.Tasked = true; CalcTaskArray(playerData, taskData); if (!_cacheSvc.UpdatePlayerData(playerData.Id, playerData)) { netMsg.err = (int)ErrorCode.UpdateDbError; } else { ResponseTask responseTask = new ResponseTask { Coin = playerData.Coin, Level = playerData.Level, Diamond = playerData.Diamond, Exp = playerData.Exp, TaskArray = playerData.TaskArray, }; netMsg.ResponseTask = responseTask; } } else { netMsg.err = (int)ErrorCode.ClientDataError; } msgPack.Session.SendMsg(netMsg); }
private void CalcPowerAdd(int timeId) { PeRoot.Log("All Online Player Calc Power Incress...."); NetMsg netMsg = new NetMsg { cmd = (int)Command.PshPower }; netMsg.PshPower = new PshPower(); Dictionary <ServerSession, PlayerData> onLineDictionary = _cacheSvc.GetOnLine(); foreach (var item in onLineDictionary) { PlayerData playerData = item.Value; ServerSession session = item.Key; int powerMax = PeRoot.GetPowerLimit(playerData.Level); if (playerData.Power >= powerMax) { continue; } else { playerData.Power += PeRoot.PowerAddCount; playerData.Time = _timeSvc.GetNowTime(); if (playerData.Power > powerMax) { playerData.Power = powerMax; } } if (!_cacheSvc.UpdatePlayerData(playerData.Id, playerData)) { netMsg.err = (int)ErrorCode.UpdateDbError; } else { netMsg.PshPower.Power = playerData.Power; session.SendMsg(netMsg); } } }
public void Init() { //服务层 NetSvc.Instance.Init(); //数据层 DbMgr.Instance.Init(); //缓存层 CacheSvc.Instance.Init(); //计时器 TimeSvc.Instance.Init(); //配置层 ResCfgSvc.Instance.Init(); //业务系统层 PeRoot.Log("ServerRoot Init Done.||业务系统:", LogType.Info); LoginSys.Instance.Init(); GuideSys.Instance.Init(); StrongSys.Instance.Init(); ChatSys.Instance.Init(); BuySys.Instance.Init(); PowerSys.Instance.Init(); TaskSys.Instance.Init(); BattleSys.Instance.Init(); PeRoot.Log("等待客户端连接", LogType.Info); }
public void Init() { _cacheSvc = CacheSvc.Instance; PeRoot.Log("ChatSys Init Done.||聊天业务系统."); }
public void Init() { _cacheSvc = CacheSvc.Instance; _timeSvc = TimeSvc.Instance; PeRoot.Log("LoginSys Init Done.||登入业务系统."); }
public void Init() { _cacheSvc = CacheSvc.Instance; PeRoot.Log("BuySys Init Done.||购买业务系统."); }