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 { } }
/// <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); } } }
public static string GetMessage(SNetMessage message) { message.n = message.Name(); return(JsonUtility.ToJson(message)); }