public void ReleasNormalAttack() { if (entityPlayer.currentAnimState == AniState.Attack) { if (comboIdx < comboArr.Length - 1) { //500ms内进行点击,存数据 double nowTime = timerSvc.GetNowTime(); if (nowTime - lastAtkTime < Constants.ComboSpace && lastAtkTime != 0) { entityPlayer.comboQue.Enqueue(comboArr[++comboIdx]); lastAtkTime = nowTime; } } else { comboIdx = 0; lastAtkTime = 0; } } else if (entityPlayer.currentAnimState == AniState.Idle || entityPlayer.currentAnimState == AniState.Move) { comboIdx = 0; lastAtkTime = timerSvc.GetNowTime(); entityPlayer.Attack(111); } }
public void ReqLogin(MsgPack pack) { ReqLogin data = pack.msg.reqLogin; // 当前账号是否已经上线 GameMsg msg = new GameMsg { cmd = (int)CMD.RspLogin }; if (cacheSvc.IsAcctOnLine(data.acct)) { // 已上线:返回错误信息 msg.err = (int)ErrorCode.AcctIsOnLine; } else { // 未上线: // 账号是否存在 PlayerData pd = cacheSvc.GetPlayerData(data.acct, data.pass); if (pd == null) { // 存在,密码错误 msg.err = (int)ErrorCode.WrongPass; } else { // 计算离线体力增长 int power = pd.power; long now = timerSvc.GetNowTime(); long milliseconds = now - pd.time; int addPower = (int)(milliseconds / (1000 * 60 * PECommon.PowerAddSpace)) * PECommon.PowerAddCount; if (addPower > 0) { int powerMax = PECommon.GetPowerLimit(pd.lv); if (pd.power < powerMax) { pd.power += addPower; if (pd.power > powerMax) { pd.power = powerMax; } } } if (power != pd.power) { cacheSvc.UpdatePlayerData(pd.id, pd); } msg.rspLogin = new RspLogin { playerData = pd }; // 缓存账号数据 cacheSvc.AcctOnLine(data.acct, pack.session, pd); } } // 回应客户端 pack.session.SendMsg(msg); }
public void ReqLogin(MsgPack pack) { ReqLogin data = pack.msg.reqLogin; GameMsg msg = new GameMsg() { cmd = (int)CMD.RspLogin, }; //如果账号已经登入 if (cacheSvc.IsAcctOnline(data.acct)) { msg.err = (int)ErrorCode.AcctIsOnline; } else { PlayerData pd = cacheSvc.GetPlayerData(data.acct, data.pass); if (pd == null) { //存在,密码错误 msg.err = (int)ErrorCode.WrongPass; } else { //登入成功 //计算体力最大值 int power = pd.power; int powerMax = PECommon.GetPowerLimit(pd.lv); if (pd.power < powerMax) { long nowTime = timerSvc.GetNowTime(); long millisecendsCount = nowTime - pd.time; //计算玩家离线时间回复体力值 int addPower = (int)(millisecendsCount / (1000 * 60 * PECommon.PowerAddSpace)) * PECommon.PowerAddCount; if (addPower > 0) { pd.power += addPower; if (pd.power > powerMax) { pd.power = powerMax; } } } if (pd.power != power) { cacheSvc.UpdataPlayerData(pd.id, pd); } msg.rspLogin = new RspLogin() { playerData = pd }; cacheSvc.AcctOnline(data.acct, pack.session, pd); } } pack.session.SendMsg(msg); }
public void ReqLogin(MsgPack pack) { ReqLogin data = (ReqLogin)pack.msg; //当前账号是否已经上线 SCPacketBase msg = new RspLogin(); if (cacheSvc.IsAcctOnLine(data.Acct)) { //己上线:返回错误信息 msg.error = (int)ErrorCode.AcctIsOnline; } else { //未上线: //账号是否存在 PlayerData pd = cacheSvc.GetPlayerData(data.Acct, data.Pass); if (pd == null) { //存在,密码错误 msg.error = (int)ErrorCode.WrongPass; } else { //计算离线体力增长 int power = pd.Power; long now = timerSvc.GetNowTime(); long milliseconds = now - pd.Time; int addPower = (int)(milliseconds / (1000 * 60 * KDCommon.PowerAddSpace)) * KDCommon.PowerAddCount; if (addPower > 0) { int powerMax = KDCommon.GetPowerLimit(pd.Lv); if (pd.Power < powerMax) { pd.Power += addPower; if (pd.Power > powerMax) { pd.Power = powerMax; } } } if (power != pd.Power) { cacheSvc.UpdatePlayerData(pd.Id, pd); } msg = new RspLogin { PlayerData = pd }; //缓存账号数据 cacheSvc.AcctOnline(data.Acct, pack.session, pd); } } //回应客户端 pack.session.SendMsg(msg); }
/// <summary> /// 响应登录的请求 /// </summary> /// <param name="pack">消息包</param> public void ReqLogin(MsgPack pack) { ReqLogin data = pack.msg.reqLogin; // 回应客户端 GameMsg msg = new GameMsg { cmd = (int)CMD.RspLogin // 操作码 }; // 判断是否在线,并做相应的处理 if (cacheSvc.IsAcctOnLine(data.acct)) // 已在线,返回错误信息 { msg.err = (int)ErrorCode.AcctIsOnLine; } else // 不在线,尝试登录 { PlayerData pd = cacheSvc.GetPlayerData(data.acct, data.pwd); // 获取玩家数据 if (pd == null) // 账号和密码不匹配 { msg.err = (int)ErrorCode.WrongPwd; } else // 登录成功 // 计算离线体力增长 { int power = pd.power; // 当前体力 long now = timerSvc.GetNowTime(); long milliseconds = now - pd.time; // 距离上一次下线的时间间隔 int addPower = (int)(milliseconds / (1000 * 60 * PECommon.PowerAddSpace)) * PECommon.PowerAddCount; // 需要增加的体力值 if (addPower > 0) { int powerMax = PECommon.GetPowerLimit(pd.lv); if (pd.power < powerMax) { pd.power += addPower; if (pd.power > powerMax) { pd.power = powerMax; } } } if (power != pd.power) { cacheSvc.UpdatePlayerData(pd.id, pd); } // 响应客户端的数据 msg.rspLogin = new RspLogin { playerData = pd // 返回玩家数据 }; // 缓存账号数据 cacheSvc.AcctOnLine(data.acct, pack.session, pd); } } // 回应客户端 pack.session.SendMsg(msg); }
/// <summary> /// 在线玩家计算体力增长与消息推送 /// </summary> /// <param name="tid"></param> public void CalcPowerAdd(int tid) { //计算体力增长 PECommon.Log("All Online Player Calc Power Incress...."); GameMsg msg = new GameMsg { cmd = (int)CMD.PshPower }; msg.pshPower = new PshPower(); //所有在线玩家获得实时的体力增长推送数据 Dictionary <ServerSession, PlayerData> onlineDic = cacheSvc.GetOnlineCache(); foreach (var item in onlineDic) { PlayerData pd = item.Value; ServerSession session = item.Key; int power = pd.power; int powerMax = PECommon.GetPowerLimit(pd); if (pd.power >= powerMax) { continue; } else { pd.power += PECommon.PowerAddCount; pd.time = timerSvc.GetNowTime(); if (pd.power > powerMax) { pd.power = powerMax; } } if (pd.power != power) { pd.time = timerSvc.GetNowTime(); if (!cacheSvc.UpdatePlayerData(pd.id, pd)) { msg.err = (int)ErrorCode.UpdateDbError; } else { msg.pshPower.power = pd.power; session.SendMsg(msg);//推送给在线玩家 } } } }
/// <summary> /// 清空下线玩家的缓存数据 /// </summary> /// <param name="session"></param> public void ClearOffLineData(ServerSession session) { PlayerData pd = cacheSvc.GetPlayerDataBySettion(session); pd.time = timerSvc.GetNowTime(); if (!cacheSvc.UpdatePlayerData(pd.id, pd)) { PECommon.Log("Update OffLine Account Time Error"); } cacheSvc.AcctOffLine(session); }
private void CalcPowerAdd(int tId) { //计算体力增长 GameMsg msg = new GameMsg { cmd = (int)CMD.PshPower, pshPower = new PshPower() }; Dictionary <ServerSession, PlayerData> onlineDic = cacheSvc.GetOnlineCache(); foreach (var item in onlineDic) { PlayerData pd = item.Value; ServerSession session = item.Key; int powerMax = PECommon.GetPowerLimit(pd.lv); if (pd.power >= powerMax) { //不回复体力 continue; } else { //回复体力 pd.power += PECommon.PowerAddCount; if (pd.power > powerMax) { //限定回复,防止溢出体力最大值 pd.power = powerMax; pd.time = timeSvc.GetNowTime(); } if (!cacheSvc.UpdataPlayerData(pd.id, pd)) { msg.err = (int)ErrorCode.UpdateDBError; } else { msg.pshPower.power = pd.power; session.SendMsg(msg); } } } }
private void CalPowerAdd(int tid) { // TODo 计算体力的增加 Common.Log("All Online Player Calc Power Increase…… ……"); GameMsg msg = new GameMsg { cmd = (int)CMD.PshPower }; msg.pshPower = new PshPower(); // 所有在线玩家获得实时的体力增长推送 Dictionary <ServerSession, PlayerData> onlineDic = cacheSvc.GetOnlineCache(); foreach (var item in onlineDic) { PlayerData pd = item.Value; ServerSession session = item.Key; int powerMax = Common.GetPowerLimit(pd.lv); if (pd.power >= powerMax) { continue; } else { pd.power += Common.PowerAddCount; // 同时更新一下时间(避免意外下线,无法更新下线时间的情况) pd.time = timerSvc.GetNowTime(); if (pd.power > powerMax) { pd.power = powerMax; } } if (cacheSvc.UpdatePlayerData(pd.id, pd) == false) { msg.err = (int)ErrorCode.UpdateDBError; } else { msg.pshPower.power = pd.power; session.SendMsg(msg); } } }
/// <summary> /// 增加体力 /// </summary> private void CalcPowerAdd(int tid) { // 计算体力增长 PECommon.Log("所有在线玩家的体力增长计算...."); GameMsg msg = new GameMsg { cmd = (int)CMD.PshPower }; msg.pshPower = new PshPower(); // 所有在线玩家获得实时的体力增长,推送数据 Dictionary <ServerSession, PlayerData> onlineDic = cacheSvc.GetOnlineCache(); foreach (var item in onlineDic) { PlayerData pd = item.Value; ServerSession session = item.Key; // 体力增长上限 int powerMax = PECommon.GetPowerLimit(pd.lv); if (pd.power >= powerMax) { continue; } else { pd.power += PECommon.PowerAddCount; pd.time = timerSvc.GetNowTime(); // 更新玩家在线时间 if (pd.power > powerMax) // 上限 { pd.power = powerMax; } } // 将更新后的数据,更新到缓存 if (!cacheSvc.UpdatePlayerData(pd.id, pd)) { msg.err = (int)ErrorCode.UpdateDBError; } else { msg.pshPower.power = pd.power; session.SendMsg(msg); } } }
private void CalcPowerAdd(int tid) { //计算体力增长 PshPower msg = new PshPower(); //所有在线玩家获得实时的体力增长推送数据 Dictionary <ClientSocket, PlayerData> onlineDic = cacheSvc.GetOnlineCache(); if (onlineDic.Count > 0) { KDCommon.Log("All Online Player Calc Power Incress...."); } foreach (var item in onlineDic) { PlayerData pd = item.Value; ClientSocket session = item.Key; int powerMax = KDCommon.GetPowerLimit(pd.Lv); if (pd.Power >= powerMax) { continue; } else { pd.Power += KDCommon.PowerAddCount; pd.Time = timerSvc.GetNowTime(); if (pd.Power > powerMax) { pd.Power = powerMax; } } if (!cacheSvc.UpdatePlayerData(pd.Id, pd)) { msg.error = (int)ErrorCode.UpdateDBError; } else { msg.Power = pd.Power; session.SendMsg(msg); } } }
public void ReqLogin(MsgPack pack) { ReqLogin data = pack.msg.reqLogin; // 当前账号是否已经上线 GameMsg msg = new GameMsg { cmd = (int)CMD.RspLogin, }; if (cacheSvc.IsOnlineAcct(data.acct) == true) { // 已上线,返回错误信息 msg.err = (int)ErrorCode.AcctIsOnline; } else { // 未上线:1、账号是否存在;存在,检测密码;不存在,则创建默认的账号密码 PlayerData playerData = cacheSvc.GetPlayerData(data.acct, data.pass); if (playerData == null) { // 存在,密码错误 msg.err = (int)ErrorCode.WrongPassword; } else { // 计算离线体力增长 int power = playerData.power; long now = timerSvc.GetNowTime(); long milliSeconds = now - playerData.time; int addPower = (int)(milliSeconds / (1000 * 60 * Common.PowerAddSpace)) * Common.PowerAddCount; if (addPower > 0) { int powerMax = Common.GetPowerLimit(playerData.lv); if (playerData.power < powerMax) { playerData.power += addPower; if (playerData.power > powerMax) { playerData.power = powerMax; } } } if (power != playerData.power) { cacheSvc.UpdatePlayerData(playerData.id, playerData); } msg.rspLogin = new RspLogin { playerData = playerData }; // 缓存账号数据 cacheSvc.AcctOnline(data.acct, pack.session, playerData); } } // 回应客户端 pack.session.SendMsg(msg); }
/// <summary> /// 响应登录请求 /// </summary> /// <param name="msg"></param> public void ReqLogin(MsgPack pack) { ReqLogin data = pack.Msg.reqLogin; GameMsg msg = new GameMsg { cmd = (int)CMD.RspLogin, }; //当前账号是否上线 if (cacheSvc.IsAcctOnLine(data.acct)) { //已上线:返回错误信息 msg.err = (int)ErrorCode.AcctIsOnLine; } else { //未上线:检测账号是否存在 PlayerData _palyerData = cacheSvc.GetPlayerData(data.acct, data.pass); if (_palyerData == null) //账号存在,密码错误 { msg.err = (int)ErrorCode.WrongPass; } else //账号密码正确 { #region 计算离线体力增长 //计算离线体力增长 int power = _palyerData.power; long now = timerSvc.GetNowTime(); long milliseconds = now - _palyerData.time; int addPower = (int)(milliseconds / (1000 * 60 * PECommon.PowerAddSpace)) * PECommon.PowerAddCount; if (addPower > 0) { int powerMax = PECommon.GetPowerLimit(_palyerData.lv); if (_palyerData.power < powerMax) { _palyerData.power += addPower; if (_palyerData.power > powerMax) { _palyerData.power = powerMax; } } } if (power != _palyerData.power) { cacheSvc.UpdatePlayerData(_palyerData.id, _palyerData); } #endregion msg.rspLogin = new RspLogin { playerData = _palyerData }; } //缓存账号数据 cacheSvc.AcctOnline(data.acct, pack.Session, _palyerData); } //回应客户端 pack.Session.SendMsg(msg); }
public void ReqLogin(PackMsg pack) { ReqLogin data = pack.msg.reqLogin; ServerSession session = pack.session; //判断当前账号是否上线 GameMsg msg = new GameMsg { cmd = (int)CMD.RspLogin, }; //已上线,返回错误信息 if (cacheSvc.IsAcctOnLine(data.acct)) { msg.err = (int)ErrorCode.AcctIsOnLine; } else { //未上线: //账号是否存在 PlayerData _playerData = cacheSvc.GetPlayerDate(data.acct, data.pwd); if (_playerData == null) { //账号存在 但密码错误 msg.err = (int)ErrorCode.WrongPwd; } //存在 返回账号数据 else { //计算离线增加体力 int stamina = _playerData.stamina; long now = timeSvc.GetNowTime(); long milliSecondsSpan = now - _playerData.time; int growStamina = (int)(milliSecondsSpan / (1000 * 60 * PECommon.StaminaAddSpace)) * PECommon.StaminaAddCount; //PECommon.Log(milliSecondsSpan / 60000+ " " + milliSecondsSpan.ToString() + " " + growStamina.ToString()); if (growStamina > 0) { int maxStamina = PECommon.GetStaminaLimitByLv(_playerData.lv); if (_playerData.stamina < maxStamina) { _playerData.stamina += growStamina; if (_playerData.stamina > maxStamina) { _playerData.stamina = maxStamina; } } } if (stamina != _playerData.stamina) { cacheSvc.UpdatePlayerData(_playerData.id, _playerData); } msg.rspLogin = new RspLogin { //将账号数据存到回应包里 playerData = _playerData }; //将账号数据存储进缓存层 cacheSvc.StoreIdOnline(data.acct, session, _playerData); } } //回应客户端 pack.session.SendMsg(msg); }