public void FromPacketToAudioDataInt16(GamePacket packet, ref VoicePacketInfo info, byte[] out_audioData, int out_audioDataOffset, out int dataCount) { //reads audio data length int count = packet.ReadInt(); //Restarts packet buffer to use decompressBuffer.ResetSeekLength(); //fills buffer with only audio data from given packet decompressBuffer.WriteByteData(packet.Data, packet.CurrentSeek, count); EVoiceResult res = EVoiceResult.k_EVoiceResultUnsupportedCodec; //number of bytes written uint b = 0; //audio data is decompressed res = SteamUser.DecompressVoice(decompressBuffer.Data, (uint)decompressBuffer.CurrentLength, out_audioData, (uint)out_audioData.Length, out b, info.Frequency); dataCount = (int)b; //if an error occurred packet is invalid if (res != EVoiceResult.k_EVoiceResultOK) { info.ValidPacketInfo = false; } }
void PlaySoundFromNetworkData(ulong talkerSteamID, byte[] networkBuf, uint networkSize, byte[] inputBuffer, byte[] decompressBuffer) { if (networkSize > 0) { DateTime?dt; if (!lastPacket.TryGetValue(talkerSteamID, out dt)) { lastPacket.TryAdd(talkerSteamID, null); UserVoiceEnabled(talkerSteamID); } var flags = (ControlByteFlags)networkBuf[0]; if (networkSize > 1) { var waveProvider = mixerWrapper.GetWaveProvider(talkerSteamID); Array.Copy(networkBuf, 1, inputBuffer, 0, networkSize - 1); uint decompressSize; if ( SteamUser.DecompressVoice(inputBuffer, networkSize - 1, decompressBuffer, (uint)decompressBuffer.Length, out decompressSize, sampleRate) == EVoiceResult.k_EVoiceResultOK) { lastPacket[talkerSteamID] = DateTime.Now; if ((flags & ControlByteFlags.IsFirst) > 0) { waveProvider.AddSamples(silencer, 0, silencer.Length); // add some delay to minimize jitter on first packet UserStartsTalking(talkerSteamID); } waveProvider.AddSamples(decompressBuffer, 0, (int)decompressSize); } } } }
bool PlayVoip(byte[] voipPacket) { byte[] voipBuffer = new byte[11025 * 2]; uint byteLength; if (SteamUser.DecompressVoice(voipPacket, (uint)voipPacket.Length, voipBuffer, (uint)voipBuffer.Length, out byteLength, 11025) == EVoiceResult.k_EVoiceResultOK && byteLength > 0) { AudioSource source; if (!m_VoiceLoopback) { m_VoiceLoopback = new GameObject("Voice Loopback"); source = m_VoiceLoopback.AddComponent <AudioSource>(); DontDestroyOnLoad(source.gameObject); source.clip = AudioClip.Create("Voice Clip", 11025, 1, 11025, false); source.volume = 1.0f; } else { source = m_VoiceLoopback.GetComponent <AudioSource>(); } float[] voip = new float[11025]; for (int i = 0; i < voip.Length; ++i) { voip[i] = (short)(voipBuffer[i * 2] | voipBuffer[i * 2 + 1] << 8) / 32768.0f; } source.clip.SetData(voip, 0); source.Play(); return(true); } return(false); }
public bool GetAvailableVoice(out byte[] bufferCompressed, out byte[] bufferUncompressed) { bufferCompressed = null; bufferUncompressed = null; if (!SteamService.IsInitialized) { return(false); } if (!Recording) { return(false); } uint bytesAvailableCompressed = 0; uint bytesAvailableUncompressed = 0; // find out if there's any recorded data EVoiceResult result = SteamUser.GetAvailableVoice(out bytesAvailableCompressed, out bytesAvailableUncompressed, 0); if (result == EVoiceResult.k_EVoiceResultNotRecording) { Recording = false; return(false); } // if there's recorded data if (result == EVoiceResult.k_EVoiceResultOK && bytesAvailableCompressed > 0) { // retrieve recorded data uint bytesWrittenCompressed = 0; uint bytesWrittenUncompressed = 0; // we only care about the compressed data because that's what we'll network across result = SteamUser.GetVoice(true, _voiceBufferCompressed, (uint)_voiceBufferCompressed.Length, out bytesWrittenCompressed, false, null, 0, out bytesWrittenUncompressed, 0); // did we get it successfully? if (result == EVoiceResult.k_EVoiceResultOK && bytesWrittenCompressed > 0) { result = SteamUser.DecompressVoice(_voiceBufferCompressed, bytesWrittenCompressed, _voiceBufferUncompressed, (uint)_voiceBufferUncompressed.Length, out bytesWrittenUncompressed, (uint)11025); // was the decompress OK? if (result == EVoiceResult.k_EVoiceResultOK && bytesWrittenUncompressed > 0) { bufferCompressed = _voiceBufferCompressed.Take((int)bytesWrittenCompressed).ToArray(); bufferUncompressed = _voiceBufferUncompressed.Take((int)bytesWrittenUncompressed).ToArray(); return(true); } } } return(false); }
protected unsafe override void OnPlayerPacketReceived(IPlayer player, IBasePacket packet) { if (!(packet is CompressedVoiceData voicePacket)) { return; } if (Game.IsHost) { var packetToSend = PacketUtility.TakePacket <CompressedVoiceData>(); packetToSend.SetData(voicePacket.Data, voicePacket.DataLength); packetToSend.ClientIndex = player.ClientIndex; Server.GameServer.Instance.Socket.BroadcastPacket(packetToSend); } else { var vol = DevConsole.GetVariable <float>("audio.voiceoutput"); if (vol == 0) { return; } var clientIndex = voicePacket.ClientIndex; if (clientIndex == Game.ClientIndex && !_loopback) { return; } int uncompressedDataLength = 0; var speakingPlayer = Game.PlayerManager.FindPlayer(clientIndex); fixed(byte *src = voicePacket.Data) { fixed(byte *dst = _data) { uncompressedDataLength = SteamUser.DecompressVoice((IntPtr)src, voicePacket.DataLength, (IntPtr)dst, _data.Length); } } if (uncompressedDataLength == 0 || speakingPlayer == null) { return; } throw new System.NotImplementedException(); // _data to audio.. //UnityEngine.Debug.Log($"size: {data.Length} - group: {getChannelGroupResult} - create: {createSoundResult} - play: {playSoundResult}"); } }
public void DataReceived(byte[] data, int size) { uint num = 0u; if (SteamUser.DecompressVoice(data, (uint)size, this.vc_decomp, (uint)this.vc_decomp.Length, out num, 11025u) == EVoiceResult.k_EVoiceResultOK && num > 0u) { int num2 = (int)(num / 2u); if (num2 >= this.vc_pcm.Length) { Array.Resize <short>(ref this.vc_pcm, num2); } Array.Clear(this.vc_pcm, 0, this.vc_pcm.Length); Buffer.BlockCopy(this.vc_decomp, 0, this.vc_pcm, 0, num2 * 2); float a = 2.14748365E+09f; float a2 = -2.14748365E+09f; uint num3 = 0u; while ((ulong)num3 < (ulong)((long)num2)) { a = Mathf.Min(a, (float)this.vc_pcm[(int)((UIntPtr)num3)]); a2 = Mathf.Max(a2, (float)this.vc_pcm[(int)((UIntPtr)num3)]); num3 += 1u; } float[] buffer = CoopSteamVoicePlayer.GetBuffer(num2); uint num4 = 0u; while ((ulong)num4 < (ulong)((long)num2)) { buffer[(int)((UIntPtr)num4)] = Mathf.Clamp((float)this.vc_pcm[(int)((UIntPtr)num4)] * PlayerPreferences.MicrophoneVolume / 32767f, -1f, 1f); num4 += 1u; } this.clip.SetData(buffer, this.samplesReceived % 110250); this.samplesReceived += num2; if (this.audio && !this.audio.isPlaying) { if (this.playbackDelay > 0) { if (--this.playbackDelay == 0) { this.audio.volume = CoopSteamVoicePlayer.GLOBAL_VOLUME; this.audio.Play(); } } else { this.playbackDelay = 2; } } } }
public bool Play(AudioSource source) { byte[] voipBuffer = new byte[11025 * 2]; uint byteLength; if (SteamUser.DecompressVoice(voip, (uint)voip.Length, voipBuffer, (uint)voipBuffer.Length, out byteLength, 11025) == EVoiceResult.k_EVoiceResultOK && byteLength > 0) { float[] v = new float[11025]; for (int i = 0; i < v.Length; ++i) { v[i] = (short)(voipBuffer[i * 2] | voipBuffer[i * 2 + 1] << 8) / 32768.0f; } source.clip.SetData(v, 0); source.outputAudioMixerGroup = Utils.Assets.AudioGroup; source.Play(); return(true); } return(false); }
/// <summary> /// Players a recieved Steam Voice package through the <see cref="OutputSource"/> <see cref="AudioSource"/>. /// </summary> /// <param name="buffer"></param> public void PlayVoiceData(byte[] buffer) { uint bytesWritten; byte[] destBuffer = new byte[20000]; var result = SteamUser.DecompressVoice(buffer, (uint)buffer.Length, destBuffer, (uint)destBuffer.Length, out bytesWritten, (uint)sampleRate); var timeStamp = DateTime.Now; if (result == EVoiceResult.k_EVoiceResultBufferTooSmall) { destBuffer = new byte[bytesWritten]; result = SteamUser.DecompressVoice(buffer, (uint)buffer.Length, destBuffer, (uint)destBuffer.Length, out bytesWritten, (uint)sampleRate); } //Handle audio encoding result == EVoiceResult.k_EVoiceResultOK && if (bytesWritten > 0) { if (useAudioStreaming) { //We are currently playing so enqueue this data and let the reader handle it for (int i = 0; i < bytesWritten; i += 2) { audioBuffer.Enqueue((short)(destBuffer[i] | destBuffer[i + 1] << 8) / 32768f); } } else { float[] clipData = new float[2 + (bytesWritten / 2)]; var clipSample = 1; for (int i = 0; i < bytesWritten; i += 2) { clipData[clipSample] = (short)(destBuffer[i] | destBuffer[i + 1] << 8) / 32768f; clipSample++; } clipSample += 1; if (!OutputSource.isPlaying && OutputSource.clip != null) { Destroy(OutputSource.clip); OutputSource.clip = AudioClip.Create("VOICE", clipSample, 1, (int)sampleRate, false); OutputSource.clip.SetData(clipData, 0); OutputSource.Play(); } else { var nClip = AudioClip.Create("VOICE " + timeStamp.ToBinary().ToString(), clipSample, 1, (int)sampleRate, false); nClip.SetData(clipData, 0); clipBuffer.Enqueue(nClip); } } var clip = (DateTime.Now - timeStamp).TotalMilliseconds; if (clip > encodingTime) { encodingTime = clip; } } else { Debug.LogWarning("Unknown result message: " + result.ToString()); } }
public void RenderOnGUI() { GUILayout.BeginArea(new Rect(Screen.width - 200, 0, 200, Screen.height)); GUILayout.Label("Variables:"); GUILayout.Label("m_Ticket: " + m_Ticket); GUILayout.Label("m_pcbTicket: " + m_pcbTicket); GUILayout.Label("m_HAuthTicket: " + m_HAuthTicket); GUILayout.Label("m_VoiceLoopback: " + m_VoiceLoopback); GUILayout.EndArea(); GUILayout.BeginVertical("box"); m_ScrollPos = GUILayout.BeginScrollView(m_ScrollPos, GUILayout.Width(Screen.width - 215), GUILayout.Height(Screen.height - 33)); GUILayout.Label("GetHSteamUser() : " + SteamUser.GetHSteamUser()); GUILayout.Label("BLoggedOn() : " + SteamUser.BLoggedOn()); GUILayout.Label("GetSteamID() : " + SteamUser.GetSteamID()); //SteamUser.InitiateGameConnection() // N/A - Too Hard to test like this. //SteamUser.TerminateGameConnection() // ^ //SteamUser.TrackAppUsageEvent() // Legacy function with no documentation { string Buffer; bool ret = SteamUser.GetUserDataFolder(out Buffer, 260); GUILayout.Label("GetUserDataFolder(out Buffer, 260) : " + ret + " -- " + Buffer); } if (GUILayout.Button("StartVoiceRecording()")) { SteamUser.StartVoiceRecording(); print("SteamUser.StartVoiceRecording()"); } if (GUILayout.Button("StopVoiceRecording()")) { SteamUser.StopVoiceRecording(); print("SteamUser.StopVoiceRecording()"); } { uint Compressed; EVoiceResult ret = SteamUser.GetAvailableVoice(out Compressed); GUILayout.Label("GetAvailableVoice(out Compressed) : " + ret + " -- " + Compressed); if (ret == EVoiceResult.k_EVoiceResultOK && Compressed > 0) { byte[] DestBuffer = new byte[1024]; uint BytesWritten; ret = SteamUser.GetVoice(true, DestBuffer, 1024, out BytesWritten); //print("SteamUser.GetVoice(true, DestBuffer, 1024, out BytesWritten) : " + ret + " -- " + BytesWritten); if (ret == EVoiceResult.k_EVoiceResultOK && BytesWritten > 0) { byte[] DestBuffer2 = new byte[11025 * 2]; uint BytesWritten2; ret = SteamUser.DecompressVoice(DestBuffer, BytesWritten, DestBuffer2, (uint)DestBuffer2.Length, out BytesWritten2, 11025); //print("SteamUser.DecompressVoice(DestBuffer, BytesWritten, DestBuffer2, (uint)DestBuffer2.Length, out BytesWritten2, 11025) - " + ret + " -- " + BytesWritten2); if (ret == EVoiceResult.k_EVoiceResultOK && BytesWritten2 > 0) { AudioSource source; if (!m_VoiceLoopback) { m_VoiceLoopback = new GameObject("Voice Loopback"); source = m_VoiceLoopback.AddComponent <AudioSource>(); source.clip = AudioClip.Create("Testing!", 11025, 1, 11025, false); } else { source = m_VoiceLoopback.GetComponent <AudioSource>(); } float[] test = new float[11025]; for (int i = 0; i < test.Length; ++i) { test[i] = (short)(DestBuffer2[i * 2] | DestBuffer2[i * 2 + 1] << 8) / 32768.0f; } source.clip.SetData(test, 0); source.Play(); } } } } GUILayout.Label("GetVoiceOptimalSampleRate() : " + SteamUser.GetVoiceOptimalSampleRate()); { if (GUILayout.Button("GetAuthSessionTicket(Ticket, 1024, out pcbTicket)")) { m_Ticket = new byte[1024]; m_HAuthTicket = SteamUser.GetAuthSessionTicket(m_Ticket, 1024, out m_pcbTicket); print("SteamUser.GetAuthSessionTicket(Ticket, 1024, out pcbTicket) - " + m_HAuthTicket + " -- " + m_pcbTicket); } if (GUILayout.Button("BeginAuthSession(m_Ticket, (int)m_pcbTicket, SteamUser.GetSteamID())")) { if (m_HAuthTicket != HAuthTicket.Invalid && m_pcbTicket != 0) { EBeginAuthSessionResult ret = SteamUser.BeginAuthSession(m_Ticket, (int)m_pcbTicket, SteamUser.GetSteamID()); print("SteamUser.BeginAuthSession(m_Ticket, " + (int)m_pcbTicket + ", " + SteamUser.GetSteamID() + ") - " + ret); } else { print("Call GetAuthSessionTicket first!"); } } } if (GUILayout.Button("EndAuthSession(SteamUser.GetSteamID())")) { SteamUser.EndAuthSession(SteamUser.GetSteamID()); print("SteamUser.EndAuthSession(" + SteamUser.GetSteamID() + ")"); } if (GUILayout.Button("CancelAuthTicket(m_HAuthTicket)")) { SteamUser.CancelAuthTicket(m_HAuthTicket); print("SteamUser.CancelAuthTicket(" + m_HAuthTicket + ")"); } GUILayout.Label("UserHasLicenseForApp(SteamUser.GetSteamID(), SteamUtils.GetAppID()) : " + SteamUser.UserHasLicenseForApp(SteamUser.GetSteamID(), SteamUtils.GetAppID())); GUILayout.Label("BIsBehindNAT() : " + SteamUser.BIsBehindNAT()); if (GUILayout.Button("AdvertiseGame(CSteamID.NonSteamGS, TestConstants.k_IpAdress127_0_0_1, TestConstants.k_Port27015)")) { SteamUser.AdvertiseGame(CSteamID.NonSteamGS, TestConstants.k_IpAdress127_0_0_1, TestConstants.k_Port27015); print("SteamUser.AdvertiseGame(" + CSteamID.NonSteamGS + ", " + TestConstants.k_IpAdress127_0_0_1 + ", " + TestConstants.k_Port27015 + ")"); } if (GUILayout.Button("RequestEncryptedAppTicket(k_unSecretData, sizeof(uint))")) { byte[] k_unSecretData = System.BitConverter.GetBytes(0x5444); SteamAPICall_t handle = SteamUser.RequestEncryptedAppTicket(k_unSecretData, sizeof(uint)); OnEncryptedAppTicketResponseCallResult.Set(handle); print("SteamUser.RequestEncryptedAppTicket(" + k_unSecretData + ", " + sizeof(uint) + ") : " + handle); } if (GUILayout.Button("GetEncryptedAppTicket(rgubTicket, 1024, out cubTicket)")) { byte[] rgubTicket = new byte[1024]; uint cubTicket; bool ret = SteamUser.GetEncryptedAppTicket(rgubTicket, 1024, out cubTicket); print("SteamUser.GetEncryptedAppTicket(" + rgubTicket + ", " + 1024 + ", " + "out cubTicket" + ") : " + ret + " -- " + cubTicket); } // SpaceWar does not have trading cards, so this function will only ever return 0 and produce an annoying warning. if (GUILayout.Button("GetGameBadgeLevel(1, false)")) { int ret = SteamUser.GetGameBadgeLevel(1, false); print("SteamUser.GetGameBadgeLevel(" + 1 + ", " + false + ") : " + ret); } GUILayout.Label("GetPlayerSteamLevel() : " + SteamUser.GetPlayerSteamLevel()); if (GUILayout.Button("RequestStoreAuthURL(\"https://steampowered.com\")")) { SteamAPICall_t handle = SteamUser.RequestStoreAuthURL("https://steampowered.com"); OnStoreAuthURLResponseCallResult.Set(handle); print("SteamUser.RequestStoreAuthURL(" + "\"https://steampowered.com\"" + ") : " + handle); } GUILayout.Label("BIsPhoneVerified() : " + SteamUser.BIsPhoneVerified()); GUILayout.Label("BIsTwoFactorEnabled() : " + SteamUser.BIsTwoFactorEnabled()); GUILayout.Label("BIsPhoneIdentifying() : " + SteamUser.BIsPhoneIdentifying()); GUILayout.Label("BIsPhoneRequiringVerification() : " + SteamUser.BIsPhoneRequiringVerification()); if (GUILayout.Button("GetMarketEligibility()")) { SteamAPICall_t handle = SteamUser.GetMarketEligibility(); OnMarketEligibilityResponseCallResult.Set(handle); print("SteamUser.GetMarketEligibility() : " + handle); } GUILayout.EndScrollView(); GUILayout.EndVertical(); }
public void RenderOnGUI() { GUILayout.BeginArea(new Rect(Screen.width - 200, 0, 200, Screen.height)); GUILayout.Label("m_HAuthTicket: " + m_HAuthTicket); GUILayout.Label("m_pcbTicket: " + m_pcbTicket); GUILayout.EndArea(); GUILayout.Label("GetHSteamUser() : " + SteamUser.GetHSteamUser()); GUILayout.Label("BLoggedOn() : " + SteamUser.BLoggedOn()); GUILayout.Label("GetSteamID() : " + SteamUser.GetSteamID()); //GUILayout.Label("InitiateGameConnection() : " + SteamUser.InitiateGameConnection()); // N/A - Too Hard to test like this. //GUILayout.Label("TerminateGameConnection() : " + SteamUser.TerminateGameConnection()); // ^ //GUILayout.Label("TrackAppUsageEvent() : " + SteamUser.TrackAppUsageEvent()); // Legacy function with no documentation { string Buffer; bool ret = SteamUser.GetUserDataFolder(out Buffer, 260); GUILayout.Label("GetUserDataFolder(out Buffer, 260) : " + ret + " -- " + Buffer); } if (GUILayout.Button("StartVoiceRecording()")) { SteamUser.StartVoiceRecording(); print("SteamUser.StartVoiceRecording()"); } if (GUILayout.Button("StopVoiceRecording()")) { SteamUser.StopVoiceRecording(); print("SteamUser.StopVoiceRecording()"); } { uint Compressed; uint Uncompressed; EVoiceResult ret = SteamUser.GetAvailableVoice(out Compressed, out Uncompressed, 11025); GUILayout.Label("GetAvailableVoice(out Compressed, out Uncompressed, 11025) : " + ret + " -- " + Compressed + " -- " + Uncompressed); if (ret == EVoiceResult.k_EVoiceResultOK && Compressed > 0) { byte[] DestBuffer = new byte[1024]; byte[] UncompressedDestBuffer = new byte[1024]; uint BytesWritten; uint UncompressedBytesWritten; ret = SteamUser.GetVoice(true, DestBuffer, 1024, out BytesWritten, true, UncompressedDestBuffer, (uint)DestBuffer.Length, out UncompressedBytesWritten, 11025); //print("SteamUser.GetVoice(true, DestBuffer, 1024, out BytesWritten, true, UncompressedDestBuffer, (uint)DestBuffer.Length, out UncompressedBytesWritten, 11025) : " + ret + " -- " + BytesWritten + " -- " + UncompressedBytesWritten); if (ret == EVoiceResult.k_EVoiceResultOK && BytesWritten > 0) { byte[] DestBuffer2 = new byte[11025 * 2]; uint BytesWritten2; ret = SteamUser.DecompressVoice(DestBuffer, BytesWritten, DestBuffer2, (uint)DestBuffer2.Length, out BytesWritten2, 11025); //print("SteamUser.DecompressVoice(DestBuffer, BytesWritten, DestBuffer2, (uint)DestBuffer2.Length, out BytesWritten2, 11025) - " + ret + " -- " + BytesWritten2); if (ret == EVoiceResult.k_EVoiceResultOK && BytesWritten2 > 0) { AudioSource source; if (!m_VoiceLoopback) { m_VoiceLoopback = new GameObject("Voice Loopback"); source = m_VoiceLoopback.AddComponent <AudioSource>(); source.clip = AudioClip.Create("Testing!", 11025, 1, 11025, false, false); } else { source = m_VoiceLoopback.GetComponent <AudioSource>(); } float[] test = new float[11025]; for (int i = 0; i < test.Length; ++i) { test[i] = (short)(DestBuffer2[i * 2] | DestBuffer2[i * 2 + 1] << 8) / 32768.0f; } source.clip.SetData(test, 0); source.Play(); } } } } GUILayout.Label("GetVoiceOptimalSampleRate() : " + SteamUser.GetVoiceOptimalSampleRate()); { if (GUILayout.Button("GetAuthSessionTicket(Ticket, 1024, out pcbTicket)")) { m_Ticket = new byte[1024]; m_HAuthTicket = SteamUser.GetAuthSessionTicket(m_Ticket, 1024, out m_pcbTicket); print("SteamUser.GetAuthSessionTicket(Ticket, 1024, out pcbTicket) - " + m_HAuthTicket + " -- " + m_pcbTicket); } if (GUILayout.Button("BeginAuthSession(m_Ticket, (int)m_pcbTicket, SteamUser.GetSteamID())")) { if (m_HAuthTicket != HAuthTicket.Invalid && m_pcbTicket != 0) { EBeginAuthSessionResult ret = SteamUser.BeginAuthSession(m_Ticket, (int)m_pcbTicket, SteamUser.GetSteamID()); print("SteamUser.BeginAuthSession(m_Ticket, " + (int)m_pcbTicket + ", " + SteamUser.GetSteamID() + ") - " + ret); } else { print("Call GetAuthSessionTicket first!"); } } } if (GUILayout.Button("EndAuthSession(SteamUser.GetSteamID())")) { SteamUser.EndAuthSession(SteamUser.GetSteamID()); print("SteamUser.EndAuthSession(" + SteamUser.GetSteamID() + ")"); } if (GUILayout.Button("CancelAuthTicket(m_HAuthTicket)")) { SteamUser.CancelAuthTicket(m_HAuthTicket); print("SteamUser.CancelAuthTicket(" + m_HAuthTicket + ")"); } GUILayout.Label("UserHasLicenseForApp(SteamUser.GetSteamID(), SteamUtils.GetAppID()) : " + SteamUser.UserHasLicenseForApp(SteamUser.GetSteamID(), SteamUtils.GetAppID())); GUILayout.Label("BIsBehindNAT() : " + SteamUser.BIsBehindNAT()); if (GUILayout.Button("AdvertiseGame(2, 127.0.0.1, 27015)")) { SteamUser.AdvertiseGame(CSteamID.NonSteamGS, 2130706433, 27015); print("SteamUser.AdvertiseGame(2, 2130706433, 27015)"); } if (GUILayout.Button("RequestEncryptedAppTicket()")) { byte[] k_unSecretData = System.BitConverter.GetBytes(0x5444); SteamAPICall_t handle = SteamUser.RequestEncryptedAppTicket(k_unSecretData, sizeof(uint)); OnEncryptedAppTicketResponseCallResult.Set(handle); print("SteamUser.RequestEncryptedAppTicket(k_unSecretData, " + sizeof(uint) + ") - " + handle); } if (GUILayout.Button("GetEncryptedAppTicket()")) { byte[] rgubTicket = new byte[1024]; uint cubTicket; bool ret = SteamUser.GetEncryptedAppTicket(rgubTicket, 1024, out cubTicket); print("SteamUser.GetEncryptedAppTicket() - " + ret + " -- " + cubTicket); } //GUILayout.Label("GetGameBadgeLevel(1, false) : " + SteamUser.GetGameBadgeLevel(1, false)); // SpaceWar does not have trading cards, so this function will only ever return 0 and produce an annoying warning. GUILayout.Label("GetPlayerSteamLevel() : " + SteamUser.GetPlayerSteamLevel()); if (GUILayout.Button("RequestStoreAuthURL(\"https://steampowered.com\")")) { SteamAPICall_t handle = SteamUser.RequestStoreAuthURL("https://steampowered.com"); OnStoreAuthURLResponseCallResult.Set(handle); print("SteamUser.RequestStoreAuthURL(\"https://steampowered.com\") - " + handle); } #if _PS3 //GUILayout.Label("LogOn() : " + SteamUser.LogOn()); //GUILayout.Label("LogOnAndLinkSteamAccountToPSN : " + SteamUser.LogOnAndLinkSteamAccountToPSN()); //GUILayout.Label("LogOnAndCreateNewSteamAccountIfNeeded : " + SteamUser.LogOnAndCreateNewSteamAccountIfNeeded()); //GUILayout.Label("GetConsoleSteamID : " + SteamUser.GetConsoleSteamID()); #endif }
public void tellVoice(CSteamID steamID, byte[] data, int length) { if (this.bufferReceive == null || this.received == null) { return; } if (base.channel.checkOwner(steamID) && !Provider.isServer) { if (!OptionsSettings.chatVoiceIn || base.channel.owner.isMuted) { return; } if (base.player.life.isDead) { return; } if (length <= 5) { return; } this.usingWalkieTalkie = (data[4] == 1); if (this.usingWalkieTalkie) { if (!this.canHearRadio) { return; } if (Player.player != null && Player.player.quests.radioFrequency != base.player.quests.radioFrequency) { return; } } for (int i = 0; i < length; i++) { data[i] = data[i + 5]; } uint num; if (SteamUser.DecompressVoice(data, (uint)length, this.bufferReceive, (uint)this.bufferReceive.Length, ref num, PlayerVoice.FREQUENCY) == null) { float num2 = num / 2u / PlayerVoice.FREQUENCY; this.playback += num2; int num3 = 0; while ((long)num3 < (long)((ulong)num)) { this.received[this.write] = (float)BitConverter.ToInt16(this.bufferReceive, num3) / 32767f; this.received[this.write] *= OptionsSettings.voice; this.write++; if ((long)this.write >= (long)((ulong)PlayerVoice.SAMPLES)) { this.write = 0; } num3 += 2; } this.audioSource.clip.SetData(this.received, 0); if (!this.isPlaying) { this.needsPlay = true; if (this.delayPlay <= 0f) { this.delayPlay = 0.3f; } } } } }