private static void SendModVersionToClient(long peerID, string instancePluginVersion) { if (!ZNet.instance.IsDedicated() || !ZNet.instance.IsServer()) { return; } ZPackage zpg = new ZPackage(); var version = new object[] { instancePluginVersion }; ZRpc.Serialize(version, ref zpg); zpg.SetPos(0); Utils.Log($"Sending mod version {version} to client to be checked."); ZNet.instance.m_routedRpc.InvokeRoutedRPC(peerID, "CheckMapSharingModVersion", (object)zpg); }
// Token: 0x06000914 RID: 2324 RVA: 0x000434A4 File Offset: 0x000416A4 public void Invoke(string method, params object[] parameters) { if (!this.IsConnected()) { return; } this.m_pkg.Clear(); int stableHashCode = method.GetStableHashCode(); this.m_pkg.Write(stableHashCode); if (ZRpc.m_DEBUG) { this.m_pkg.Write(method); } ZRpc.Serialize(parameters, ref this.m_pkg); this.SendPackage(this.m_pkg); }
private static void SendConfigToClient(long peerID) { if (!ZNet.instance.IsDedicated() || !ZNet.instance.IsServer()) { return; } Utils.Log("Sending server side configs to client."); ZPackage zpg = new ZPackage(); var configSettings = Settings.MapSettings.ServerConfigs; var settings = new List <object>(); foreach (var configSetting in configSettings) { Utils.Log($"Forcing server config on client: {configSetting.Key}: {Settings.MapSettings.ConfigEntries[configSetting.Key].BoxedValue}"); var settingsValue = Settings.MapSettings.ConfigEntries[configSetting.Key].BoxedValue; settings.Add(settingsValue); } ZRpc.Serialize(settings.ToArray(), ref zpg); zpg.SetPos(0); ZNet.instance.m_routedRpc.InvokeRoutedRPC(peerID, "SetMapSharingConfigValues", (object)zpg); }
// Token: 0x060008FB RID: 2299 RVA: 0x00042E44 File Offset: 0x00041044 public void InvokeRoutedRPC(long targetPeerID, ZDOID targetZDO, string methodName, params object[] parameters) { ZRoutedRpc.RoutedRPCData routedRPCData = new ZRoutedRpc.RoutedRPCData(); ZRoutedRpc.RoutedRPCData routedRPCData2 = routedRPCData; long id = this.m_id; int rpcMsgID = this.m_rpcMsgID; this.m_rpcMsgID = rpcMsgID + 1; routedRPCData2.m_msgID = id + (long)rpcMsgID; routedRPCData.m_senderPeerID = this.m_id; routedRPCData.m_targetPeerID = targetPeerID; routedRPCData.m_targetZDO = targetZDO; routedRPCData.m_methodHash = methodName.GetStableHashCode(); ZRpc.Serialize(parameters, ref routedRPCData.m_parameters); routedRPCData.m_parameters.SetPos(0); if (targetPeerID == this.m_id || targetPeerID == 0L) { this.HandleRoutedRPC(routedRPCData); } if (targetPeerID != this.m_id) { this.RouteRPC(routedRPCData); } }
public static bool Prefix(ref ZRoutedRpc __instance, ref ZRoutedRpc.RoutedRPCData rpcData) { if (VPlusChatFilter.isEnabled.Value) { if (rpcData.m_methodHash == "ChatMessage".GetStableHashCode()) { ZPackage payload = rpcData.m_parameters; VPlusChatFilter.chatFilterLogger.LogDebug("ChatMessage Sent"); payload.SetPos(0); VPlusChatFilter.chatFilterLogger.LogDebug("Size of package is " + payload.Size()); VPlusChatFilter.chatFilterLogger.LogDebug("Read byte test : " + payload.ReadInt()); payload.SetPos(0); Vector3 headPoint = payload.ReadVector3(); VPlusChatFilter.chatFilterLogger.LogDebug("Read head : " + headPoint.ToString()); int messageType = payload.ReadInt(); VPlusChatFilter.chatFilterLogger.LogDebug("Read type : " + messageType); string playerName = payload.ReadString(); VPlusChatFilter.chatFilterLogger.LogDebug("Read name : " + playerName); string message = payload.ReadString(); VPlusChatFilter.chatFilterLogger.LogDebug("Read message : " + message); var profanities = FamilyFriendlyfier.filter.DetectAllProfanities(message, true); if (profanities.Count > 0) { foreach (string bannable in profanities) { VPlusChatFilter.chatFilterLogger.LogInfo("Bad word from " + playerName + " : " + bannable); } message = FamilyFriendlyfier.filter.CensorString(message, VPlusChatFilter.replaceKey.Value[0]); } VPlusChatFilter.chatFilterLogger.LogDebug("New message : " + message); ZPackage newpayload = new ZPackage(); ZRpc.Serialize(new object[] { headPoint, messageType, playerName, message }, ref newpayload); rpcData.m_parameters = newpayload; } else if (rpcData.m_methodHash == "Say".GetStableHashCode()) { ZPackage payload = rpcData.m_parameters; VPlusChatFilter.chatFilterLogger.LogDebug("Say Sent"); payload.SetPos(0); VPlusChatFilter.chatFilterLogger.LogDebug("Size of package is " + payload.Size()); VPlusChatFilter.chatFilterLogger.LogDebug("Read byte test : " + payload.ReadInt()); payload.SetPos(0); int messageType = payload.ReadInt(); VPlusChatFilter.chatFilterLogger.LogDebug("Read type : " + messageType); string playerName = payload.ReadString(); VPlusChatFilter.chatFilterLogger.LogDebug("Read name : " + playerName); string message = payload.ReadString(); VPlusChatFilter.chatFilterLogger.LogDebug("Read message : " + message); var profanities = FamilyFriendlyfier.filter.DetectAllProfanities(message, true); if (profanities.Count > 0) { foreach (string bannable in profanities) { VPlusChatFilter.chatFilterLogger.LogInfo("Bad word from " + playerName + " : " + bannable); } message = FamilyFriendlyfier.filter.CensorString(message, VPlusChatFilter.replaceKey.Value[0]); } VPlusChatFilter.chatFilterLogger.LogDebug("New message : " + message); ZPackage newpayload = new ZPackage(); ZRpc.Serialize(new object[] { messageType, playerName, message }, ref newpayload); rpcData.m_parameters = newpayload; } ZPackage zpackage = new ZPackage(); rpcData.Serialize(zpackage); if (__instance.m_server) { if (rpcData.m_targetPeerID != 0L) { ZNetPeer peer = __instance.GetPeer(rpcData.m_targetPeerID); if (peer != null && peer.IsReady()) { peer.m_rpc.Invoke("RoutedRPC", new object[] { zpackage }); return(false); } return(false); } else { using (List <ZNetPeer> .Enumerator enumerator = __instance.m_peers.GetEnumerator()) { while (enumerator.MoveNext()) { ZNetPeer znetPeer = enumerator.Current; if (rpcData.m_senderPeerID != znetPeer.m_uid && znetPeer.IsReady()) { znetPeer.m_rpc.Invoke("RoutedRPC", new object[] { zpackage }); } } return(false); } } } foreach (ZNetPeer znetPeer2 in __instance.m_peers) { if (znetPeer2.IsReady()) { znetPeer2.m_rpc.Invoke("RoutedRPC", new object[] { zpackage }); } } } return(true); }