Beispiel #1
0
        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);
        }
Beispiel #2
0
    // 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);
    }
Beispiel #3
0
        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);
        }
Beispiel #4
0
    // 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);
 }