| | |
| | | public uint worldExpRate { get; private set; }
|
| | | public List<uint> maliciousAtkPlayer = new List<uint>();// 发动恶意攻击的玩家列表
|
| | | private int m_Tick;
|
| | | private uint m_CrossServerTick;
|
| | |
|
| | | public event Action OnRoleAttrRefresh;
|
| | | public event Action<E_AttackMode> OnSwitchAttackMode;
|
| | |
| | | case PlayerDataRefresh.BillboardLV:
|
| | | break;
|
| | | case PlayerDataRefresh.Tick:
|
| | | if (GameNetSystem.Instance.crossServerSocketConnected)
|
| | | {
|
| | | if (!isMainServerData)
|
| | | {
|
| | | #if UNITY_EDITOR
|
| | | DebugEx.LogFormat("---- 收到服务端Tick: {0}", value);
|
| | | if (extersion.Tick != 0)
|
| | | {
|
| | | uint _curWorldTick = GetWorldTick();
|
| | | uint _diffValue = value > _curWorldTick ? value - _curWorldTick : _curWorldTick - value;
|
| | | DebugEx.LogFormat(" |-------- 当前客户端Tick: {0}, 差异: {1}", _curWorldTick, _diffValue);
|
| | | if (_diffValue > 5000)
|
| | | {
|
| | | DebugEx.LogFormat(" |-------- <color=red>收到服务端WorldTick与当前的客户端Tick差异超过5秒</color>");
|
| | | }
|
| | | }
|
| | | #endif
|
| | | extersion.Tick = value;
|
| | | m_Tick = Environment.TickCount;
|
| | | }
|
| | | }
|
| | | else
|
| | | DebugEx.LogFormat("---- 收到服务端Tick: {0}", value);
|
| | | if (isMainServerData)
|
| | | {
|
| | | #if UNITY_EDITOR
|
| | | DebugEx.LogFormat("---- 收到服务端Tick: {0}", value);
|
| | | if (extersion.Tick != 0)
|
| | | {
|
| | | uint _curWorldTick = GetWorldTick();
|
| | |
| | | DebugEx.LogFormat(" |-------- <color=red>收到服务端WorldTick与当前的客户端Tick差异超过5秒</color>");
|
| | | }
|
| | | }
|
| | | #endif
|
| | | extersion.Tick = value;
|
| | | m_Tick = Environment.TickCount;
|
| | | }
|
| | | else
|
| | | {
|
| | | if (m_CrossServerTick != 0)
|
| | | {
|
| | | uint _curWorldTick = GetWorldTick();
|
| | | uint _diffValue = value > _curWorldTick ? value - _curWorldTick : _curWorldTick - value;
|
| | | DebugEx.LogFormat(" |-------- 当前客户端Tick: {0}, 差异: {1}", _curWorldTick, _diffValue);
|
| | | if (_diffValue > 5000)
|
| | | {
|
| | | DebugEx.LogFormat(" |-------- <color=red>收到服务端WorldTick与当前的客户端Tick差异超过5秒</color>");
|
| | | }
|
| | | }
|
| | | }
|
| | | #endif
|
| | | if (isMainServerData)
|
| | | {
|
| | | extersion.Tick = value;
|
| | | }
|
| | | else
|
| | | {
|
| | | m_CrossServerTick = value;
|
| | | }
|
| | | m_Tick = Environment.TickCount;
|
| | |
|
| | | break;
|
| | | case PlayerDataRefresh.CurrentPlayerType:
|
| | | break;
|
| | |
| | | public void RequestWorldTick()
|
| | | {
|
| | | CA102_tagCMWorldTick _proto = new CA102_tagCMWorldTick();
|
| | | if (!GameNetSystem.Instance.crossServerSocketConnected)
|
| | | if (CrossServerUtility.IsCrossServer())
|
| | | {
|
| | | GameNetSystem.Instance.SendInfo(_proto);
|
| | | GameNetSystem.Instance.SendToCrossServer(_proto);
|
| | | }
|
| | | else
|
| | | {
|
| | | GameNetSystem.Instance.SendToCrossServer(_proto);
|
| | | GameNetSystem.Instance.SendInfo(_proto);
|
| | | }
|
| | | }
|
| | |
|
| | | public void ClearTick()
|
| | | {
|
| | | extersion.Tick = 0;
|
| | | m_CrossServerTick = 0;
|
| | | }
|
| | |
|
| | | public bool IsTickVaild()
|
| | | {
|
| | | if (CrossServerUtility.IsCrossServer())
|
| | | {
|
| | | return m_CrossServerTick != 0;
|
| | | }
|
| | | else
|
| | | {
|
| | | return extersion.Tick != 0;
|
| | | }
|
| | | }
|
| | |
|
| | | public uint GetWorldTick()
|
| | | {
|
| | | int _currentTick = Environment.TickCount - m_Tick;
|
| | | uint _tick = extersion.Tick + (uint)_currentTick;
|
| | | uint _tick = CrossServerUtility.IsCrossServer() ? m_CrossServerTick + (uint)_currentTick : extersion.Tick + (uint)_currentTick;
|
| | | return _tick;
|
| | | }
|
| | |
|