private void SampleFrameSyncData() { if ((Singleton <FrameSynchr> .instance.bActive && ((Singleton <FrameSynchr> .instance.CurFrameNum % 500) == 0)) && Singleton <BattleLogic> .instance.isFighting) { List <PoolObjHandle <ActorRoot> > heroActors = Singleton <GameObjMgr> .instance.HeroActors; int num = 1 + (heroActors.Count * 5); int[] src = new int[num]; int num2 = 0; src[num2++] = (int)Singleton <FrameSynchr> .instance.CurFrameNum; for (int i = 0; i < heroActors.Count; i++) { PoolObjHandle <ActorRoot> handle = heroActors[i]; ActorRoot root = handle.handle; src[num2++] = (int)root.ObjID; src[num2++] = root.location.x; src[num2++] = root.location.y; src[num2++] = root.location.z; src[num2++] = (int)root.ActorControl.myBehavior; } byte[] dst = new byte[num * 4]; Buffer.BlockCopy(src, 0, dst, 0, dst.Length); MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider(); provider.Initialize(); provider.TransformFinalBlock(dst, 0, dst.Length); ulong num4 = (ulong)BitConverter.ToInt64(provider.get_Hash(), 0); ulong num5 = (ulong)BitConverter.ToInt64(provider.get_Hash(), 8); ulong num6 = num4 ^ num5; CSPkg msg = NetworkModule.CreateDefaultCSPKG(0x500); msg.stPkgData.stRelayHashChk.dwKFrapsNo = Singleton <FrameSynchr> .instance.CurFrameNum; msg.stPkgData.stRelayHashChk.ullHashToChk = num6; Singleton <NetworkModule> .instance.SendGameMsg(ref msg, 0); } }
private void SampleFrameSyncData() { if (Singleton <FrameSynchr> .get_instance().bActive&& Singleton <FrameSynchr> .get_instance().CurFrameNum % this.HashCheckFreq == 0u && Singleton <BattleLogic> .get_instance().isFighting&& !Singleton <WatchController> .GetInstance().IsWatching) { List <PoolObjHandle <ActorRoot> > heroActors = Singleton <GameObjMgr> .get_instance().HeroActors; int num = 1 + heroActors.get_Count() * 7 + 1; int[] array = new int[num]; int num2 = 0; array[num2++] = (int)Singleton <FrameSynchr> .get_instance().CurFrameNum; for (int i = 0; i < heroActors.get_Count(); i++) { ActorRoot handle = heroActors.get_Item(i).get_handle(); array[num2++] = (int)handle.ObjID; array[num2++] = handle.location.x; array[num2++] = handle.location.y; array[num2++] = handle.location.z; array[num2++] = handle.ValueComponent.actorHp; array[num2++] = handle.ValueComponent.actorHpTotal; array[num2++] = (int)(handle.ActorControl.myBehavior | (ObjBehaviMode)(((!handle.HorizonMarker.IsVisibleFor(1)) ? 0 : 1) << 5) | (ObjBehaviMode)(((!handle.HorizonMarker.IsVisibleFor(2)) ? 0 : 1) << 6)); } array[num2++] = Singleton <GameObjMgr> .GetInstance().GameActors.get_Count(); byte[] array2 = new byte[num * 4]; Buffer.BlockCopy(array, 0, array2, 0, array2.Length); MD5CryptoServiceProvider mD5CryptoServiceProvider = new MD5CryptoServiceProvider(); mD5CryptoServiceProvider.Initialize(); mD5CryptoServiceProvider.TransformFinalBlock(array2, 0, array2.Length); ulong num3 = (ulong)BitConverter.ToInt64(mD5CryptoServiceProvider.get_Hash(), 0); ulong num4 = (ulong)BitConverter.ToInt64(mD5CryptoServiceProvider.get_Hash(), 8); ulong ullHashToChk = num3 ^ num4; CSPkg cSPkg = NetworkModule.CreateDefaultCSPKG(1280u); cSPkg.stPkgData.get_stRelayHashChk().dwKFrapsNo = Singleton <FrameSynchr> .get_instance().CurFrameNum; cSPkg.stPkgData.get_stRelayHashChk().ullHashToChk = ullHashToChk; if (Singleton <GamePlayerCenter> .get_instance().GetHostPlayer() != null) { CampInfo campInfoByCamp = Singleton <BattleStatistic> .GetInstance().GetCampInfoByCamp(Singleton <GamePlayerCenter> .get_instance().GetHostPlayer().PlayerCamp); int headPoints = campInfoByCamp.HeadPoints; COM_PLAYERCAMP campType; if (campInfoByCamp.campType == 1) { campType = 2; } else { campType = 1; } CampInfo campInfoByCamp2 = Singleton <BattleStatistic> .GetInstance().GetCampInfoByCamp(campType); int headPoints2 = campInfoByCamp2.HeadPoints; int iCampKillCntDiff = headPoints - headPoints2; cSPkg.stPkgData.get_stRelayHashChk().iCampKillCntDiff = iCampKillCntDiff; } Singleton <NetworkModule> .get_instance().SendGameMsg(ref cSPkg, 0u); } }
public void ConnectLobby() { if (this.m_connectIndex < 0) { int num = 1; object param = null; if (this.ParseNodeAppAttr(this.SelectedTdir.attr, TdirNodeAttrType.UseDeviceIDChooseSvr, ref param)) { num = (int)param; } if ((num == 1) && !string.IsNullOrEmpty(SystemInfo.deviceUniqueIdentifier)) { byte[] bytes = Encoding.ASCII.GetBytes(SystemInfo.deviceUniqueIdentifier); MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider(); provider.Initialize(); provider.TransformFinalBlock(bytes, 0, bytes.Length); ulong num2 = (ulong)BitConverter.ToInt64(provider.get_Hash(), 0); ulong num3 = (ulong)BitConverter.ToInt64(provider.get_Hash(), 8); this.m_connectIndex = (int)(num2 ^ num3); if (this.m_connectIndex < 0) { this.m_connectIndex *= -1; } } else { this.m_connectIndex = UnityEngine.Random.Range(0, 0x2710); } this.m_connectIndex = this.m_connectIndex % MonoSingleton <TdirMgr> .GetInstance().SelectedTdir.addrs.Count; } else { this.m_connectIndex++; this.m_connectIndex = this.m_connectIndex % MonoSingleton <TdirMgr> .GetInstance().SelectedTdir.addrs.Count; } Singleton <LobbySvrMgr> .GetInstance().ConnectServerWithTdirDefault(this.m_connectIndex); }