コード例 #1
0
    void OnEncryptedAppTicketResponse(EncryptedAppTicketResponse_t pCallback, bool bIOFailure)
    {
        Debug.Log("[" + EncryptedAppTicketResponse_t.k_iCallback + " - EncryptedAppTicketResponse] - " + pCallback.m_eResult);

        // This code is taken directly from SteamworksExample/SpaceWar
        if (pCallback.m_eResult == EResult.k_EResultOK)
        {
            byte[] rgubTicket = new byte[1024];
            uint   cubTicket;
            SteamUser.GetEncryptedAppTicket(rgubTicket, 1024, out cubTicket);

            // normally at this point you transmit the encrypted ticket to the service that knows the decryption key
            // this code is just to demonstrate the ticket cracking library

            // included is the "secret" key for spacewar. normally this is secret
            byte[] rgubKey = new byte[32] {
                0xed, 0x93, 0x86, 0x07, 0x36, 0x47, 0xce, 0xa5, 0x8b, 0x77, 0x21, 0x49, 0x0d, 0x59, 0xed, 0x44, 0x57, 0x23, 0xf0, 0xf6, 0x6e, 0x74, 0x14, 0xe1, 0x53, 0x3b, 0xa3, 0x3c, 0xd8, 0x03, 0xbd, 0xbd
            };

            byte[] rgubDecrypted = new byte[1024];
            uint   cubDecrypted  = 1024;
            if (!SteamEncryptedAppTicket.BDecryptTicket(rgubTicket, cubTicket, rgubDecrypted, ref cubDecrypted, rgubKey, rgubKey.Length))
            {
                Debug.Log("Ticket failed to decrypt");
                return;
            }

            if (!SteamEncryptedAppTicket.BIsTicketForApp(rgubDecrypted, cubDecrypted, SteamUtils.GetAppID()))
            {
                Debug.Log("Ticket for wrong app id");
            }

            CSteamID steamIDFromTicket;
            SteamEncryptedAppTicket.GetTicketSteamID(rgubDecrypted, cubDecrypted, out steamIDFromTicket);
            if (steamIDFromTicket != SteamUser.GetSteamID())
            {
                Debug.Log("Ticket for wrong user");
            }

            uint   cubData;
            byte[] punSecretData = SteamEncryptedAppTicket.GetUserVariableData(rgubDecrypted, cubDecrypted, out cubData);
            if (cubData != sizeof(uint))
            {
                Debug.Log("Secret data size is wrong.");
            }
            Debug.Log(punSecretData.Length);
            Debug.Log(System.BitConverter.ToUInt32(punSecretData, 0));
            if (System.BitConverter.ToUInt32(punSecretData, 0) != 0x5444)
            {
                Debug.Log("Failed to retrieve secret data");
                return;
            }

            Debug.Log("Successfully retrieved Encrypted App Ticket");
        }
    }
コード例 #2
0
ファイル: SteamHelper.cs プロジェクト: s-yi/StardewValley
 private void onEncryptedAppTicketResponse(EncryptedAppTicketResponse_t response, bool ioFailure)
 {
     if (response.m_eResult == EResult.k_EResultOK)
     {
         byte[] ticket = new byte[1024];
         SteamUser.GetEncryptedAppTicket(ticket, 1024, out uint ticketSize);
         Console.WriteLine("Signing into GalaxySDK");
         GalaxyInstance.User().SignInSteam(ticket, ticketSize, SteamFriends.GetPersonaName());
         ConnectionProgress++;
     }
     else
     {
         Console.WriteLine("Failed to retrieve encrypted app ticket: " + response.m_eResult + ", " + ioFailure.ToString());
         ConnectionFinished = true;
     }
 }
コード例 #3
0
        public static void InitSteam()
        {
            if (!String.IsNullOrEmpty(SessionTicket))
            {
                return;
            }
            if (!System.IO.File.Exists("steam_appid.txt"))
            {
                System.IO.File.WriteAllText("steam_appid.txt", "745920");
            }
            var steamInited = SteamAPI.Init();

            System.IO.File.Delete("steam_appid.txt");
            var rgubTicket = new byte[1024];

            SteamUser.GetEncryptedAppTicket(rgubTicket, 1024, out UInt32 cubTicket);
            SessionTicket = Convert.ToBase64String(rgubTicket, 0, (Int32)cubTicket);
        }
コード例 #4
0
    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();
    }
コード例 #5
0
    //public void playVoiceIfAvailable()
    //{
    //    uint Compressed;
    //    uint Uncompressed;
    //    ret = SteamUser.GetAvailableVoice(out Compressed, out Uncompressed, 11025);


    //    if (ret == EVoiceResult.k_EVoiceResultOK && Compressed > 0)
    //    {
    //        //Console.WriteLine("GetAvailableVoice(out Compressed, out Uncompressed, 11025) : " + ret + " -- " + Compressed + " -- " + Uncompressed);
    //        uint BytesWritten;
    //        uint UncompressedBytesWritten;
    //        ret = SteamUser.GetVoice(true, DestBuffer, 1024, out BytesWritten, true, UncompressedDestBuffer, (uint)DestBuffer.Length, out UncompressedBytesWritten, 11025);
    //        //Console.WriteLine("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)
    //        {

    //            uint BytesWritten2;
    //            ret = SteamUser.DecompressVoice(DestBuffer, BytesWritten, DestBuffer2, (uint)DestBuffer2.Length, out BytesWritten2, 11025);
    //            //Console.WriteLine("SteamUser.DecompressVoice(DestBuffer, BytesWritten, DestBuffer2, (uint)DestBuffer2.Length, out BytesWritten2, 11025) - " + ret + " -- " + BytesWritten2);

    //            if (ret == EVoiceResult.k_EVoiceResultOK && BytesWritten2 > 0)
    //            {

    //                //converts to doubles?
    //                //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);

    //                MemoryStream stream = new MemoryStream(DestBuffer2);

    //                SoundEffect sound = new SoundEffect(stream.ToArray(), 11025, AudioChannels.Mono);
    //                sound.Play();

    //                stream.Dispose();
    //                //sound.Dispose();

    //                ////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>();
    //                //}


    //                //source.Play();
    //            }
    //        }
    //    }
    //}



    //Client A must retrieve a session ticket by calling SteamUser()->GetAuthSessionTicket().
    //Client A must send its session ticket to client B.
    //Client B must pass client A's ticket to SteamUser()->BeginAuthSession(), which will perform a quick validity check. If the ticket is valid, BeginAuthSession() will forward the ticket to then the Steam backend to verify that the ticket has not been reused and was issued by the account owner of client A. The result of this verification will be returned in a ValidateAuthTicketResponse_t callback.
    //When the multiplayer session terminates:
    //    Client A must pass the handle initially returned from GetAuthSessionTicket() to SteamUser()->CancelAuthTicket().
    //    Client B must pass the SteamID of client A to SteamUser()->EndAuthSession().


    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);
            Console.WriteLine("GetUserDataFolder(out Buffer, 260) : " + ret + " -- " + Buffer);
        }

        //if (GUILayout.Button("StartVoiceRecording()"))
        {
            SteamUser.StartVoiceRecording();
            Console.WriteLine("SteamUser.StartVoiceRecording()");
        }

        //if (GUILayout.Button("StopVoiceRecording()"))
        {
            SteamUser.StopVoiceRecording();
            Console.WriteLine("SteamUser.StopVoiceRecording()");
        }

        {
            //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);
                    Console.WriteLine("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());
                        Console.WriteLine("SteamUser.BeginAuthSession(m_Ticket, " + (int)m_pcbTicket + ", " + SteamUser.GetSteamID() + ") - " + ret);
                    }
                    else
                    {
                        Console.WriteLine("Call GetAuthSessionTicket first!");
                    }
                }
            }

            //if (GUILayout.Button("EndAuthSession(SteamUser.GetSteamID())"))
            {
                SteamUser.EndAuthSession(SteamUser.GetSteamID());
                Console.WriteLine("SteamUser.EndAuthSession(" + SteamUser.GetSteamID() + ")");
            }

            //if (GUILayout.Button("CancelAuthTicket(m_HAuthTicket)"))
            {
                SteamUser.CancelAuthTicket(m_HAuthTicket);
                Console.WriteLine("SteamUser.CancelAuthTicket(" + m_HAuthTicket + ")");
            }

            Console.WriteLine("UserHasLicenseForApp(SteamUser.GetSteamID(), SteamUtils.GetAppID()) : " + SteamUser.UserHasLicenseForApp(SteamUser.GetSteamID(), SteamUtils.GetAppID()));
            Console.WriteLine("BIsBehindNAT() : " + SteamUser.BIsBehindNAT());

            //if (GUILayout.Button("AdvertiseGame(2, 127.0.0.1, 27015)"))
            {
                SteamUser.AdvertiseGame(CSteamID.NonSteamGS, 2130706433, 27015);
                Console.WriteLine("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);
                Console.WriteLine("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);
                Console.WriteLine("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.
            Console.WriteLine("GetPlayerSteamLevel() : " + SteamUser.GetPlayerSteamLevel());

            //if (GUILayout.Button("RequestStoreAuthURL(\"https://steampowered.com\")"))
            {
                SteamAPICall_t handle = SteamUser.RequestStoreAuthURL("https://steampowered.com");
                OnStoreAuthURLResponseCallResult.Set(handle);
                Console.WriteLine("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
        }
    }
コード例 #6
0
    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
    }
コード例 #7
0
        private static async Task Login()
        {
            ////var appId = new AppId_t(367500);
            ////if (SteamAPI.RestartAppIfNecessary(appId))
            ////{
            ////    Debug.WriteLine("Could not init steam");
            ////    return;
            ////}

            if (!SteamAPI.Init())
            {
                Debug.WriteLine("Could not initialize steam");
                return;
            }

            SteamClient.SetWarningMessageHook((severity, text) => Console.WriteLine(text));

            if (!SteamUser.BLoggedOn())
            {
                Debug.WriteLine("Steam user not logged in");
                return;
            }

            CSteamID userSteamId = SteamUser.GetSteamID();
            ////if (SteamApps.BIsSubscribed())
            ////{
            ////    Debug.WriteLine("Steam user has no license");
            ////    return;
            ////}

            ////if (SteamApps.BIsSubscribedApp(appId))
            ////{
            ////    Debug.WriteLine("Steam user has no license");
            ////    return;
            ////}

            var  cts            = new CancellationTokenSource(10000);
            bool receivedTicket = false;

            byte[]         rgubTicket = new byte[1024];
            SteamAPICall_t handle     = SteamUser.RequestEncryptedAppTicket(null, 0);
            var            callback   = CallResult <EncryptedAppTicketResponse_t> .Create((response, bIoFailure) =>
            {
                if (response.m_eResult == EResult.k_EResultOK)
                {
                    uint ticketLen;
                    SteamUser.GetEncryptedAppTicket(rgubTicket, 1024, out ticketLen);
                    Array.Resize(ref rgubTicket, (int)ticketLen);
                    receivedTicket = true;
                }
                else
                {
                    cts.Cancel();
                }
            });

            callback.Set(handle);

            while (!receivedTicket && !cts.Token.IsCancellationRequested)
            {
                SteamAPI.RunCallbacks();
                await Task.Delay(1000);
            }

            if (receivedTicket)
            {
                _steamId = userSteamId.m_SteamID;
                _ticket  = rgubTicket;
            }

            SteamAPI.Shutdown();
        }