Beispiel #1
0
        public static void send(CSteamID steamID, ESteamPacket type, byte[] packet, int size, int channel)
        {
            if (!Provider.isConnected)
            {
                return;
            }
            bool cancel = false;

            ServerEvents.RunPacketSent(ref steamID, ref type, ref packet, ref size, ref channel, ref cancel);
            if (cancel)
            {
                return;
            }
            if (steamID == Provider.server)
            {
                miReceiveServer.Invoke(null, new object[] { Provider.server, packet, 0, size, channel });
                return;
            }
            if (steamID.m_SteamID == 0uL)
            {
                Debug.LogError("Failed to send to invalid steam ID.");
                return;
            }
            if ((bool)miIsUnreliable.Invoke(null, new object[] { type }))
            {
                for (int i = 0; i < 3; i++) // Fix for the queue #1 stuck position
                {
                    if (SteamGameServerNetworking.SendP2PPacket(steamID, packet, (uint)size, (!(bool)miIsInstant.Invoke(null, new object[] { type })) ? EP2PSend.k_EP2PSendUnreliable : EP2PSend.k_EP2PSendUnreliableNoDelay, channel))
                    {
                        break;
                    }
                }
                return;
            }
            for (int i = 0; i < 3; i++) // Fix for the queue #1 stuck position
            {
                if (SteamGameServerNetworking.SendP2PPacket(steamID, packet, (uint)size, (!(bool)miIsInstant.Invoke(null, new object[] { type })) ? EP2PSend.k_EP2PSendReliableWithBuffering : EP2PSend.k_EP2PSendReliable, channel))
                {
                    break;
                }
            }
        }