// Token: 0x060007B8 RID: 1976 RVA: 0x0003C9F0 File Offset: 0x0003ABF0 public void SaveAsync(BinaryWriter writer) { writer.Write(this.m_saveData.m_myid); writer.Write(this.m_saveData.m_nextUid); ZPackage zpackage = new ZPackage(); writer.Write(this.m_saveData.m_zdos.Count); foreach (ZDO zdo in this.m_saveData.m_zdos) { writer.Write(zdo.m_uid.userID); writer.Write(zdo.m_uid.id); zpackage.Clear(); zdo.Save(zpackage); byte[] array = zpackage.GetArray(); writer.Write(array.Length); writer.Write(array); } writer.Write(this.m_saveData.m_deadZDOs.Count); foreach (KeyValuePair <ZDOID, long> keyValuePair in this.m_saveData.m_deadZDOs) { writer.Write(keyValuePair.Key.userID); writer.Write(keyValuePair.Key.id); writer.Write(keyValuePair.Value); } ZLog.Log("Saved " + this.m_saveData.m_zdos.Count + " zdos"); this.m_saveData = null; }
public void ReadPackage(ref ZPackage pkg) { byte[] buffer = this.m_reader.ReadBytes(this.m_reader.ReadInt32()); pkg.Clear(); pkg.m_stream.Write(buffer, 0, buffer.Length); pkg.m_stream.Position = 0L; }
// Token: 0x060008E9 RID: 2281 RVA: 0x00042BC4 File Offset: 0x00040DC4 public void ReadPackage(ref ZPackage pkg) { int count = this.m_reader.ReadInt32(); byte[] array = this.m_reader.ReadBytes(count); pkg.Clear(); pkg.m_stream.Write(array, 0, array.Length); pkg.m_stream.Position = 0L; }
public static void RPC_RequestSetTime(long sender, ZPackage pkg) { if (pkg != null && pkg.Size() > 0) { // Check that our Package is not null, and if it isn't check that it isn't empty. ZNetPeer peer = ZNet.instance.GetPeer(sender); // Get the Peer from the sender, to later check the SteamID against our Adminlist. if (peer != null) { // Confirm the peer exists string peerSteamID = ((ZSteamSocket)peer.m_socket).GetPeerID().m_SteamID.ToString(); // Get the SteamID from peer. if ( ZNet.instance.m_adminList != null && ZNet.instance.m_adminList.Contains(peerSteamID) ) { // Check that the SteamID is in our Admin List. // set server tod String tod_str = pkg.ReadString(); if (tod_str == "sync") { pkg.Clear(); tod_str = EnvMan.instance.m_debugTime.ToString(); pkg.Write(tod_str); } float tod = float.Parse(tod_str); if (tod < 0f) { EnvMan.instance.m_debugTimeOfDay = false; } else { EnvMan.instance.m_debugTimeOfDay = true; EnvMan.instance.m_debugTime = Mathf.Clamp01(tod); } pkg.SetPos(0); string msg = pkg.ReadString(); // Read the message from the user. pkg.SetPos(0); // Reset the position of our cursor so the client's can re-read the package. ZRoutedRpc.instance.InvokeRoutedRPC(0L, "EventSetTime", new object[] { pkg }); // Send our Event to all Clients. 0L specifies that it will be sent to everybody UnityEngine.Debug.Log("changing time of day..."); } } else { ZPackage newPkg = new ZPackage(); // Create a new ZPackage. newPkg.Write("You aren't an Admin!"); // Tell them what's going on. ZRoutedRpc.instance.InvokeRoutedRPC(sender, "BadRequestMsg", new object[] { newPkg }); // Send the error message. } } }
public static void Postfix() { try { // proof of concept persistence, don't want to include or test it now return; //TODO: Only do this if we're the server. Plugin.Logger.LogInfo("Persisting armorstand db"); var armorStandsZDOs = new List <ZDO>(); ZDOMan.instance.GetAllZDOsWithPrefab("FullArmorStand", armorStandsZDOs); var zpkg = new ZPackage(); var fileName = ZNet.m_world.m_name + ".armorstands.db"; //make a variable using (BinaryWriter writer = new BinaryWriter(File.Open(World.GetWorldSavePath() + "/" + fileName, FileMode.OpenOrCreate))) { writer.Write(Version.m_worldVersion); //int32 writer.Write(armorStandsZDOs.Count); //int32 foreach (var zdo in armorStandsZDOs) { writer.Write(zdo.m_uid.userID); //long writer.Write(zdo.m_uid.id); //uint32 zpkg.Clear(); zdo.Save(zpkg); byte[] array = zpkg.GetArray(); writer.Write(array.Length);//int32 writer.Write(array); Plugin.Logger.LogInfo("Persisting armor stand with id " + zdo.m_uid); } } }catch (Exception exc) { Plugin.Logger.LogError("Error saving backup data: " + exc); } }
// Token: 0x060007D2 RID: 2002 RVA: 0x0003D744 File Offset: 0x0003B944 private bool SendZDOs(ZDOMan.ZDOPeer peer, bool flush) { int sendQueueSize = peer.m_peer.m_socket.GetSendQueueSize(); if (!flush && sendQueueSize > 10240) { return(false); } int num = 10240 - sendQueueSize; if (num < 2048) { return(false); } this.m_tempToSync.Clear(); this.CreateSyncList(peer, this.m_tempToSync); if (this.m_tempToSync.Count == 0 && peer.m_invalidSector.Count == 0) { return(false); } ZPackage zpackage = new ZPackage(); bool flag = false; if (peer.m_invalidSector.Count > 0) { flag = true; zpackage.Write(peer.m_invalidSector.Count); foreach (ZDOID id in peer.m_invalidSector) { zpackage.Write(id); } peer.m_invalidSector.Clear(); } else { zpackage.Write(0); } float time = Time.time; ZPackage zpackage2 = new ZPackage(); bool flag2 = false; int num2 = 0; while (num2 < this.m_tempToSync.Count && zpackage.Size() <= num) { ZDO zdo = this.m_tempToSync[num2]; peer.m_forceSend.Remove(zdo.m_uid); if (!ZNet.instance.IsServer()) { this.m_clientChangeQueue.Remove(zdo.m_uid); } if (peer.ShouldSend(zdo)) { zpackage.Write(zdo.m_uid); zpackage.Write(zdo.m_ownerRevision); zpackage.Write(zdo.m_dataRevision); zpackage.Write(zdo.m_owner); zpackage.Write(zdo.GetPosition()); zpackage2.Clear(); zdo.Serialize(zpackage2); zpackage.Write(zpackage2); peer.m_zdos[zdo.m_uid] = new ZDOMan.ZDOPeer.PeerZDOInfo(zdo.m_dataRevision, zdo.m_ownerRevision, time); flag2 = true; this.m_zdosSent++; } num2++; } zpackage.Write(ZDOID.None); if (flag2 || flag) { peer.m_peer.m_rpc.Invoke("ZDOData", new object[] { zpackage }); } return(flag2 || flag); }