示例#1
0
    public void Incoming_Message(byte[] message, int length, ulong steamid)
    {
        incoming += length;

        message = Extensions.Get(message, 0, length);
        message = CLZF2.Decompress(message);
        string json = Encoding.UTF8.GetString(message, 0, message.Length);

        try
        {
            SNetMessage readMessage = JsonUtility.FromJson <SNetMessage>(json);

            string[] data = new string[2];
            data[0] = json;
            data[1] = steamid.ToString();

            if (handlers.ContainsKey(readMessage.n)) // If there is a handler
            {
                handlers[readMessage.n] (data);
            }
            else
            {
                Debug.Log("Unknown message type: " + readMessage.n);
            }
        }
        catch
        {
        }
    }
示例#2
0
    /// <summary>
    /// Send message to all players in lobby.
    /// </summary>
    /// <param name="message">Message to send</param>
    /// <param name="specificuser">If you want to send this to a specific user. Enter its steamid.</param>
    public void Send_Message(SNetMessage message, ulong specificuser = 0, Networking.SendType type = Networking.SendType.Unreliable, int channel = 0)
    {
        if (Client.Instance == null || !Client.Instance.Lobby.IsValid)
        {
            return;
        }

        string json = SNetMessage.GetMessage(message);

        byte[] data = Encoding.UTF8.GetBytes(json);

        ulong[] members = Client.Instance.Lobby.GetMemberIDs();
        if (specificuser != 0)
        {
            members = new ulong[1] {
                specificuser
            }
        }
        ;

        int membersLength = members.Length;

        bool validationRequired = false;

        if (message.n != "Auth_H")
        {
            validationRequired = true;
        }

        data = CLZF2.Compress(data);

        for (int i = 0; i < membersLength; i++)
        {
            if (!SNet_Auth.current.validatedIds.Contains(members[i]) && validationRequired)
            {
                continue; // Skip this user. Hes not validated.
            }
            Client.Instance.Networking.SendP2PPacket(members[i], data, data.Length, type, channel);
        }
    }
}
示例#3
0
 public static string GetMessage(SNetMessage message)
 {
     message.n = message.Name();
     return(JsonUtility.ToJson(message));
 }