Decompiled source of ServerList v1.0.2
ServerList.dll
Decompiled 9 hours ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Net; using System.Net.Sockets; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using BepInEx; using BepInEx.Core.Logging.Interpolation; using BepInEx.Logging; using BepInEx.Unity.IL2CPP; using HarmonyLib; using Microsoft.CodeAnalysis; using Microsoft.Win32.SafeHandles; using Mirror; using Mirror.Authenticators; using ServerList; using Steamworks2; using TMPro; using UnityEngine; using UnityEngine.EventSystems; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] [assembly: AssemblyCompany("ServerList")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Server List")] [assembly: AssemblyTitle("ServerList")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace ServerList { internal class Patches { [HarmonyPatch(typeof(JoinMenu), "Connect")] public class HackyButtonFix { [HarmonyPrefix] public static bool Prefix(JoinMenu __instance) { GameObject currentSelectedGameObject = EventSystem.current.currentSelectedGameObject; if ((Object)(object)currentSelectedGameObject != (Object)null) { ServerList.Log.LogInfo((object)((Object)currentSelectedGameObject.transform.parent).name); if (((Object)currentSelectedGameObject.transform.parent).name == "Public Servers") { SteamMatchmaking.AddRequestLobbyListDistanceFilter(ELobbyDistanceFilter.k_ELobbyDistanceFilterWorldwide); SteamAPICall_t hAPICall = SteamMatchmaking.RequestLobbyList(); ServerList.m_LobbyMatchlist.Set(hAPICall); ServerList.LastPublicMenuObject.SetActive(true); ((Component)__instance).gameObject.SetActive(false); return false; } if (((Object)currentSelectedGameObject.transform).name == "Refresh") { SteamMatchmaking.AddRequestLobbyListDistanceFilter(ELobbyDistanceFilter.k_ELobbyDistanceFilterWorldwide); SteamAPICall_t hAPICall2 = SteamMatchmaking.RequestLobbyList(); ServerList.m_LobbyMatchlist.Set(hAPICall2); return false; } } return true; } } [HarmonyPatch(typeof(JoinMenu), "Awake")] public class PublicMenuButtonPatch { [HarmonyPrefix] public static bool Prefix(JoinMenu __instance) { //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) if (((Object)((Component)__instance).gameObject).name == "PublicMenu" || ((Object)((Component)__instance).gameObject).name == "PublicMenu(Clone)") { return false; } Transform val = ((Component)__instance).gameObject.transform.Find("Join_Code"); Transform val2 = ((Component)__instance).gameObject.transform.Find("Right_ScrollableArea"); RectTransform component = ((Component)val2).GetComponent<RectTransform>(); ((Transform)component).position = new Vector3(((Transform)component).position.x, ((Transform)component).position.y - 200f, ((Transform)component).position.z); component.sizeDelta = new Vector2(component.sizeDelta.x, component.sizeDelta.y - 200f); Transform val3 = Object.Instantiate<Transform>(val, ((Component)val).transform.parent); ((Object)val3).name = "Public Servers"; RectTransform component2 = ((Component)val3).GetComponent<RectTransform>(); ((Transform)component2).position = new Vector3(((Transform)component2).position.x, ((Transform)component2).position.y - 200f, ((Transform)component2).position.z); ((TMP_Text)((Component)((Component)component2).transform.Find("Subheading")).GetComponent<TextMeshProUGUI>()).text = "public servers :3"; Object.Destroy((Object)(object)((Component)((Component)component2).transform.Find("Subheading")).GetComponent<LocalizedText>()); Object.Destroy((Object)(object)((Component)((Component)component2).transform.Find("AddressField")).gameObject); Transform val4 = ((Component)component2).transform.Find("PlayButton"); ((TMP_Text)((Component)((Component)val4).transform.Find("Text (TMP)")).GetComponent<TextMeshProUGUI>()).text = "browse public servers :3"; Object.Destroy((Object)(object)((Component)((Component)val4).transform.Find("Text (TMP)")).GetComponent<LocalizedText>()); ServerList.Log.LogInfo((object)"ran"); return true; } } [HarmonyPatch(typeof(JoinMenu), "OnEnable")] public class PublicMenuStopper { [HarmonyPrefix] public static bool Prefix(JoinMenu __instance) { ServerList.Log.LogInfo((object)((Object)((Component)__instance).gameObject).name); if (((Object)((Component)__instance).gameObject).name == "PublicMenu" || ((Object)((Component)__instance).gameObject).name == "PublicMenu(Clone)") { return false; } return true; } } [HarmonyPatch(typeof(MainMenuManager), "Awake")] public class PublicMenuInitializer { [HarmonyPostfix] public static void Postfix(MainMenuManager __instance) { //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_038d: Unknown result type (might be due to invalid IL or missing references) //IL_0399: Unknown result type (might be due to invalid IL or missing references) //IL_03ab: Unknown result type (might be due to invalid IL or missing references) //IL_03b5: Unknown result type (might be due to invalid IL or missing references) //IL_0491: Unknown result type (might be due to invalid IL or missing references) //IL_04a5: Unknown result type (might be due to invalid IL or missing references) //IL_04aa: Unknown result type (might be due to invalid IL or missing references) //IL_04b9: Unknown result type (might be due to invalid IL or missing references) //IL_04c8: Unknown result type (might be due to invalid IL or missing references) //IL_04cd: Unknown result type (might be due to invalid IL or missing references) //IL_04dc: Unknown result type (might be due to invalid IL or missing references) Transform val = ((Component)__instance).transform.Find("JoinMenu"); ((Object)val).name = "PublicMenu"; GameObject val2 = Object.Instantiate<GameObject>(((Component)val).gameObject, ((Component)val).transform.parent, true); ((Object)val).name = "JoinMenu"; RectTransform component = val2.GetComponent<RectTransform>(); ((Transform)component).localPosition = new Vector3(0.5f, 0.5f, 0f); ((Transform)component).localScale = Vector3.one; component.pivot = new Vector2(0f, 0f); ((TMP_Text)((Component)val2.transform.Find("TopLeft").Find("Title")).GetComponent<TextMeshProUGUI>()).text = "public server menu yayyyy"; Object.Destroy((Object)(object)((Component)val2.transform.Find("TopLeft").Find("Title")).GetComponent<LocalizedText>()); Object.Destroy((Object)(object)((Component)val2.transform.Find("TopLeft").Find("VersionDisplay")).GetComponent<VersionDisplay>()); ((TMP_Text)((Component)val2.transform.Find("TopLeft").Find("VersionDisplay")).GetComponent<TextMeshProUGUI>()).text = "Swishes my big fluffy $$$$-ing tail around the room like a broom"; GameObject gameObject = ((Component)val2.transform.Find("Right_ScrollableArea")).gameObject; RectTransform component2 = gameObject.GetComponent<RectTransform>(); Object.Destroy((Object)(object)((Component)val2.transform.Find("Join_Code").Find("Subheading")).gameObject); Object.Destroy((Object)(object)((Component)val2.transform.Find("Join_Code").Find("AddressField")).gameObject); Object.Destroy((Object)(object)((Component)val2.transform.Find("Join_Code").Find("PlayButton").Find("Text (TMP)")).GetComponent<LocalizedText>()); ((Transform)((Component)val2.transform.Find("Join_Code").Find("PlayButton")).GetComponent<RectTransform>()).localPosition = new Vector3(0.5f, 0.5f, 0f); ((TMP_Text)((Component)val2.transform.Find("Join_Code").Find("PlayButton").Find("Text (TMP)")).GetComponent<TextMeshProUGUI>()).text = "Refresh"; ((Object)val2.transform.Find("Join_Code").Find("PlayButton")).name = "Refresh"; ((TMP_Text)((Component)gameObject.transform.Find("ScrollContents").Find("Join_Friends").Find("Subheading")).GetComponent<TextMeshProUGUI>()).text = "join public servers :33333"; Object.Destroy((Object)(object)((Component)gameObject.transform.Find("ScrollContents").Find("Join_Friends").Find("Subheading")).GetComponent<LocalizedText>()); ((TMP_Text)((Component)gameObject.transform.Find("ScrollContents").Find("NoGameMessage").Find("Line1")).GetComponent<TextMeshProUGUI>()).text = "no public servers found :("; Object.Destroy((Object)(object)((Component)gameObject.transform.Find("ScrollContents").Find("NoGameMessage").Find("Line1")).GetComponent<LocalizedText>()); GameObject gameObject2 = ((Component)((Component)__instance).transform.Find("HostMenu_Setup").Find("TopLeft").Find("VersionDisplay")).gameObject; Object.Destroy((Object)(object)gameObject2.GetComponent<VersionDisplay>()); ((TMP_Text)gameObject2.GetComponent<TextMeshProUGUI>()).text = "\n\nLeaving the password blank will make the server public!!!"; GameObject val3 = Object.Instantiate<GameObject>(((Component)val2.transform.Find("TopLeft")).gameObject, val2.transform, true); RectTransform component3 = val3.GetComponent<RectTransform>(); ((Transform)component3).position = new Vector3(((Transform)component3).position.x, ((Transform)component3).position.y - 400f, ((Transform)component3).position.z); ((TMP_Text)((Component)val3.transform.Find("Title")).GetComponent<TextMeshProUGUI>()).text = "thank you for using my mod :D yay"; Object.Destroy((Object)(object)((Component)val3.transform.Find("VersionDisplay")).GetComponent<VersionDisplay>()); ((TMP_Text)((Component)val3.transform.Find("VersionDisplay")).GetComponent<TextMeshProUGUI>()).text = "if you want to give me money for some reason you can click here"; GameObject val4 = Object.Instantiate<GameObject>(((Component)val2.transform.Find("BottomLeft").GetChild(0)).gameObject, val2.transform, true); ((Object)val4).name = "yay"; Object.Destroy((Object)(object)((Component)val4.transform.GetChild(0)).gameObject); Object.Destroy((Object)(object)((Component)val4.transform.GetChild(1)).gameObject); RectTransform component4 = val4.GetComponent<RectTransform>(); ((Transform)component4).position = ((Transform)component3).position + new Vector3(0f, 100f, 0f); component4.sizeDelta = component3.sizeDelta - new Vector2(0f, 200f); component4.pivot = component3.pivot; ServerList.LastPublicMenuObject = val2; ServerList.m_LobbyMatchlist = CallResult<LobbyMatchList_t>.Create(Steamworks2_stuffs.RenderServers); ServerList.m_LobbyCreated = CallResult<LobbyCreated_t>.Create(Steamworks2_stuffs.OnLobbyCreated); } } [HarmonyPatch(typeof(SteamManager), "Update")] public class Steamworks2Update { [HarmonyPostfix] public static void Postfix() { SteamAPI.RunCallbacks(); } } [HarmonyPatch(typeof(JoinMenu), "Back")] public class BackButtonUrlOpener { [HarmonyPrefix] public static bool Prefix() { GameObject currentSelectedGameObject = EventSystem.current.currentSelectedGameObject; if ((Object)(object)currentSelectedGameObject != (Object)null && ((Object)currentSelectedGameObject).name == "yay") { Application.OpenURL("https://ko-fi.com/foxliveswin"); return false; } return true; } } [HarmonyPatch(typeof(StatusSetter), "Start")] public class statuscatcher { [HarmonyPostfix] public static void Postfix(StatusSetter __instance) { ServerList.LastStatusSetter = __instance; } } [HarmonyPatch(typeof(JoinFriendCard), "ActionJoin")] public class ActionJoinBlocker { [HarmonyPrefix] public static bool Prefix(JoinFriendCard __instance) { ServerList.Log.LogInfo((object)"A"); if (((Object)((Component)__instance).gameObject.transform.parent.parent.parent).name == "PublicMenu" || ((Object)((Component)__instance).gameObject.transform.parent.parent.parent).name == "PublicMenu(Clone)") { ServerList.Log.LogInfo((object)"b"); ((Component)((Component)__instance).gameObject.transform.parent.parent.parent).GetComponent<JoinMenu>().ConnectTo(((Object)((Component)__instance).gameObject).name); return false; } return true; } } [HarmonyPatch(typeof(HouseNetworkManager), "OnStartHost")] public class LobbyBroadcast { [HarmonyPostfix] public static void Postfix(HouseNetworkManager __instance) { if (string.IsNullOrEmpty(Password.GetValue(((Component)NetworkManager.singleton).GetComponent<HouseAuthenticator>()) as string)) { Steamworks2_stuffs.JoinCode = FriendsPlatform.GetFriendJoinCode(); SteamAPICall_t hAPICall = SteamMatchmaking.CreateLobby(ELobbyType.k_ELobbyTypePublic, 128); ServerList.m_LobbyCreated.Set(hAPICall); } } } [HarmonyPatch(typeof(HouseNetworkManager), "OnStopHost")] public class LobbyClose { [HarmonyPostfix] public static void Postfix(HouseNetworkManager __instance) { if (Steamworks2_stuffs.CurrentLobbyID != new CSteamID(0uL)) { ServerList.Log.LogInfo((object)"Closing!"); SteamMatchmaking.LeaveLobby(Steamworks2_stuffs.CurrentLobbyID); Steamworks2_stuffs.CurrentLobbyID = new CSteamID(0uL); } } } private static PropertyInfo Password = typeof(HouseAuthenticator).GetProperty("password", BindingFlags.Instance | BindingFlags.Public); private static PropertyInfo networkAddress = typeof(NetworkManager).GetProperty("networkAddress", BindingFlags.Instance | BindingFlags.Public); } [BepInPlugin("ServerList", "Server List", "1.0.0")] public class ServerList : BasePlugin { internal static ManualLogSource Log; public static GameObject LastPublicMenuObject; public static CallResult<LobbyMatchList_t> m_LobbyMatchlist; public static CallResult<LobbyCreated_t> m_LobbyCreated; public static StatusSetter LastStatusSetter; public static MethodInfo AddCard; public override void Load() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Expected O, but got Unknown //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Expected O, but got Unknown Log = ((BasePlugin)this).Log; MethodInfo[] methods = typeof(JoinMenu).GetMethods(); foreach (MethodInfo methodInfo in methods) { if (methodInfo.Name == "AddCard") { AddCard = methodInfo; } } ManualLogSource log = Log; bool flag = default(bool); BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(21, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Plugin "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("ServerList"); ((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" is loaded uwu"); } log.LogInfo(val); Log.LogInfo((object)"Doing a beeeeeg patch"); Harmony val2 = new Harmony("com.nefariousscoundrel.ServerList"); val2.PatchAll(); SteamAPI.Init(); } } public class Steamworks2_stuffs : MonoBehaviour { private static PropertyInfo cardParent = typeof(JoinMenu).GetProperty("cardParent", BindingFlags.Instance | BindingFlags.Public); private static PropertyInfo joinFriendCardPrefab = typeof(JoinMenu).GetProperty("joinFriendCardPrefab", BindingFlags.Instance | BindingFlags.Public); private static PropertyInfo worldName = typeof(StatusSetter).GetProperty("worldName", BindingFlags.Instance | BindingFlags.Public); public static CSteamID CurrentLobbyID; public static string JoinCode; public static void OnLobbyCreated(LobbyCreated_t callback, bool bIOFailure) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown ServerList.Log.LogInfo((object)"OnLobbyCreated callback triggered."); ServerList.Log.LogInfo((object)"Lobby created successfully."); ManualLogSource log = ServerList.Log; bool flag = default(bool); BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(10, 1, ref flag); if (flag) { ((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Lobby ID: "); ((BepInExLogInterpolatedStringHandler)val).AppendFormatted<ulong>(callback.m_ulSteamIDLobby); } log.LogInfo(val); CurrentLobbyID = new CSteamID(callback.m_ulSteamIDLobby); SteamMatchmaking.SetLobbyData(CurrentLobbyID, "OwnerName", SteamFriends.GetPersonaName()); SteamMatchmaking.SetLobbyData(CurrentLobbyID, "JoinCode", JoinCode); SteamMatchmaking.SetLobbyData(CurrentLobbyID, "WorldName", worldName.GetValue(ServerList.LastStatusSetter) as string); } public static void RenderServers(LobbyMatchList_t MatchList, bool bIOFailure) { object? value = cardParent.GetValue(ServerList.LastPublicMenuObject.GetComponent<JoinMenu>()); Transform val = (Transform)((value is Transform) ? value : null); for (int i = 0; i < val.childCount; i++) { GameObject gameObject = ((Component)val.GetChild(i)).gameObject; if ((Object)(object)gameObject.GetComponent<JoinFriendCard>() != (Object)null && (Object)(object)gameObject != (Object)/*isinst with value type is only supported in some contexts*/) { Object.Destroy((Object)(object)gameObject); } } ((Component)ServerList.LastPublicMenuObject.transform.Find("Right_ScrollableArea").Find("ScrollContents").Find("NoGameMessage")).gameObject.SetActive(true); ServerList.Log.LogInfo((object)"meoooooooooooow!"); if (bIOFailure) { ServerList.Log.LogInfo((object)"AAAAAAAAAAAAAAHHHHH SCARY"); return; } for (int j = 0; j < MatchList.m_nLobbiesMatching; j++) { ((Component)ServerList.LastPublicMenuObject.transform.Find("Right_ScrollableArea").Find("ScrollContents").Find("NoGameMessage")).gameObject.SetActive(false); CSteamID lobbyByIndex = SteamMatchmaking.GetLobbyByIndex(j); int lobbyMemberLimit = SteamMatchmaking.GetLobbyMemberLimit(lobbyByIndex); int numLobbyMembers = SteamMatchmaking.GetNumLobbyMembers(lobbyByIndex); string lobbyData = SteamMatchmaking.GetLobbyData(lobbyByIndex, "OwnerName"); string lobbyData2 = SteamMatchmaking.GetLobbyData(lobbyByIndex, "JoinCode"); string lobbyData3 = SteamMatchmaking.GetLobbyData(lobbyByIndex, "WorldName"); try { object? obj = ServerList.AddCard.Invoke(((Component)ServerList.LastPublicMenuObject.transform.parent.Find("JoinMenu")).gameObject.GetComponent<JoinMenu>(), Array.Empty<object>()); GameObject gameObject2 = ((Component)((obj is JoinFriendCard) ? obj : null)).gameObject; gameObject2.transform.parent = val; ((TMP_Text)((Component)gameObject2.transform.Find("GameName")).gameObject.GetComponent<TextMeshProUGUI>()).text = lobbyData3; ((TMP_Text)((Component)gameObject2.transform.Find("HostedBy").Find("HostName")).gameObject.GetComponent<TextMeshProUGUI>()).text = lobbyData; ((Object)gameObject2.gameObject).name = lobbyData2; } catch (Exception ex) { ServerList.Log.LogInfo((object)ex); } } } } public static class MyPluginInfo { public const string PLUGIN_GUID = "ServerList"; public const string PLUGIN_NAME = "Server List"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace Steamworks2 { public static class SteamApps { public static bool BIsSubscribed() { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_BIsSubscribed(CSteamAPIContext.GetSteamApps()); } public static bool BIsLowViolence() { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_BIsLowViolence(CSteamAPIContext.GetSteamApps()); } public static bool BIsCybercafe() { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_BIsCybercafe(CSteamAPIContext.GetSteamApps()); } public static bool BIsVACBanned() { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_BIsVACBanned(CSteamAPIContext.GetSteamApps()); } public static string GetCurrentGameLanguage() { InteropHelp.TestIfAvailableClient(); return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamApps_GetCurrentGameLanguage(CSteamAPIContext.GetSteamApps())); } public static string GetAvailableGameLanguages() { InteropHelp.TestIfAvailableClient(); return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamApps_GetAvailableGameLanguages(CSteamAPIContext.GetSteamApps())); } public static bool BIsSubscribedApp(AppId_t appID) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_BIsSubscribedApp(CSteamAPIContext.GetSteamApps(), appID); } public static bool BIsDlcInstalled(AppId_t appID) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_BIsDlcInstalled(CSteamAPIContext.GetSteamApps(), appID); } public static uint GetEarliestPurchaseUnixTime(AppId_t nAppID) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_GetEarliestPurchaseUnixTime(CSteamAPIContext.GetSteamApps(), nAppID); } public static bool BIsSubscribedFromFreeWeekend() { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_BIsSubscribedFromFreeWeekend(CSteamAPIContext.GetSteamApps()); } public static int GetDLCCount() { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_GetDLCCount(CSteamAPIContext.GetSteamApps()); } public static bool BGetDLCDataByIndex(int iDLC, out AppId_t pAppID, out bool pbAvailable, out string pchName, int cchNameBufferSize) { InteropHelp.TestIfAvailableClient(); IntPtr intPtr = Marshal.AllocHGlobal(cchNameBufferSize); bool flag = NativeMethods.ISteamApps_BGetDLCDataByIndex(CSteamAPIContext.GetSteamApps(), iDLC, out pAppID, out pbAvailable, intPtr, cchNameBufferSize); pchName = (flag ? InteropHelp.PtrToStringUTF8(intPtr) : null); Marshal.FreeHGlobal(intPtr); return flag; } public static void InstallDLC(AppId_t nAppID) { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamApps_InstallDLC(CSteamAPIContext.GetSteamApps(), nAppID); } public static void UninstallDLC(AppId_t nAppID) { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamApps_UninstallDLC(CSteamAPIContext.GetSteamApps(), nAppID); } public static void RequestAppProofOfPurchaseKey(AppId_t nAppID) { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamApps_RequestAppProofOfPurchaseKey(CSteamAPIContext.GetSteamApps(), nAppID); } public static bool GetCurrentBetaName(out string pchName, int cchNameBufferSize) { InteropHelp.TestIfAvailableClient(); IntPtr intPtr = Marshal.AllocHGlobal(cchNameBufferSize); bool flag = NativeMethods.ISteamApps_GetCurrentBetaName(CSteamAPIContext.GetSteamApps(), intPtr, cchNameBufferSize); pchName = (flag ? InteropHelp.PtrToStringUTF8(intPtr) : null); Marshal.FreeHGlobal(intPtr); return flag; } public static bool MarkContentCorrupt(bool bMissingFilesOnly) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_MarkContentCorrupt(CSteamAPIContext.GetSteamApps(), bMissingFilesOnly); } public static uint GetInstalledDepots(AppId_t appID, DepotId_t[] pvecDepots, uint cMaxDepots) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_GetInstalledDepots(CSteamAPIContext.GetSteamApps(), appID, pvecDepots, cMaxDepots); } public static uint GetAppInstallDir(AppId_t appID, out string pchFolder, uint cchFolderBufferSize) { InteropHelp.TestIfAvailableClient(); IntPtr intPtr = Marshal.AllocHGlobal((int)cchFolderBufferSize); uint num = NativeMethods.ISteamApps_GetAppInstallDir(CSteamAPIContext.GetSteamApps(), appID, intPtr, cchFolderBufferSize); pchFolder = ((num != 0) ? InteropHelp.PtrToStringUTF8(intPtr) : null); Marshal.FreeHGlobal(intPtr); return num; } public static bool BIsAppInstalled(AppId_t appID) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_BIsAppInstalled(CSteamAPIContext.GetSteamApps(), appID); } public static CSteamID GetAppOwner() { InteropHelp.TestIfAvailableClient(); return (CSteamID)NativeMethods.ISteamApps_GetAppOwner(CSteamAPIContext.GetSteamApps()); } public static string GetLaunchQueryParam(string pchKey) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchKey2 = new InteropHelp.UTF8StringHandle(pchKey); return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamApps_GetLaunchQueryParam(CSteamAPIContext.GetSteamApps(), pchKey2)); } public static bool GetDlcDownloadProgress(AppId_t nAppID, out ulong punBytesDownloaded, out ulong punBytesTotal) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_GetDlcDownloadProgress(CSteamAPIContext.GetSteamApps(), nAppID, out punBytesDownloaded, out punBytesTotal); } public static int GetAppBuildId() { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_GetAppBuildId(CSteamAPIContext.GetSteamApps()); } public static void RequestAllProofOfPurchaseKeys() { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamApps_RequestAllProofOfPurchaseKeys(CSteamAPIContext.GetSteamApps()); } public static SteamAPICall_t GetFileDetails(string pszFileName) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pszFileName2 = new InteropHelp.UTF8StringHandle(pszFileName); return (SteamAPICall_t)NativeMethods.ISteamApps_GetFileDetails(CSteamAPIContext.GetSteamApps(), pszFileName2); } public static int GetLaunchCommandLine(out string pszCommandLine, int cubCommandLine) { InteropHelp.TestIfAvailableClient(); IntPtr intPtr = Marshal.AllocHGlobal(cubCommandLine); int num = NativeMethods.ISteamApps_GetLaunchCommandLine(CSteamAPIContext.GetSteamApps(), intPtr, cubCommandLine); pszCommandLine = ((num != -1) ? InteropHelp.PtrToStringUTF8(intPtr) : null); Marshal.FreeHGlobal(intPtr); return num; } public static bool BIsSubscribedFromFamilySharing() { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_BIsSubscribedFromFamilySharing(CSteamAPIContext.GetSteamApps()); } public static bool BIsTimedTrial(out uint punSecondsAllowed, out uint punSecondsPlayed) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_BIsTimedTrial(CSteamAPIContext.GetSteamApps(), out punSecondsAllowed, out punSecondsPlayed); } public static bool SetDlcContext(AppId_t nAppID) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_SetDlcContext(CSteamAPIContext.GetSteamApps(), nAppID); } public static int GetNumBetas(out int pnAvailable, out int pnPrivate) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamApps_GetNumBetas(CSteamAPIContext.GetSteamApps(), out pnAvailable, out pnPrivate); } public static bool GetBetaInfo(int iBetaIndex, out uint punFlags, out uint punBuildID, out string pchBetaName, int cchBetaName, out string pchDescription, int cchDescription, out uint punLastUpdated) { InteropHelp.TestIfAvailableClient(); IntPtr intPtr = Marshal.AllocHGlobal(cchBetaName); IntPtr intPtr2 = Marshal.AllocHGlobal(cchDescription); bool flag = NativeMethods.ISteamApps_GetBetaInfo(CSteamAPIContext.GetSteamApps(), iBetaIndex, out punFlags, out punBuildID, intPtr, cchBetaName, intPtr2, cchDescription, out punLastUpdated); pchBetaName = (flag ? InteropHelp.PtrToStringUTF8(intPtr) : null); Marshal.FreeHGlobal(intPtr); pchDescription = (flag ? InteropHelp.PtrToStringUTF8(intPtr2) : null); Marshal.FreeHGlobal(intPtr2); return flag; } public static bool SetActiveBeta(string pchBetaName) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchBetaName2 = new InteropHelp.UTF8StringHandle(pchBetaName); return NativeMethods.ISteamApps_SetActiveBeta(CSteamAPIContext.GetSteamApps(), pchBetaName2); } } public static class SteamClient { public static HSteamPipe CreateSteamPipe() { InteropHelp.TestIfAvailableClient(); return (HSteamPipe)NativeMethods.ISteamClient_CreateSteamPipe(CSteamAPIContext.GetSteamClient()); } public static bool BReleaseSteamPipe(HSteamPipe hSteamPipe) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamClient_BReleaseSteamPipe(CSteamAPIContext.GetSteamClient(), hSteamPipe); } public static HSteamUser ConnectToGlobalUser(HSteamPipe hSteamPipe) { InteropHelp.TestIfAvailableClient(); return (HSteamUser)NativeMethods.ISteamClient_ConnectToGlobalUser(CSteamAPIContext.GetSteamClient(), hSteamPipe); } public static HSteamUser CreateLocalUser(out HSteamPipe phSteamPipe, EAccountType eAccountType) { InteropHelp.TestIfAvailableClient(); return (HSteamUser)NativeMethods.ISteamClient_CreateLocalUser(CSteamAPIContext.GetSteamClient(), out phSteamPipe, eAccountType); } public static void ReleaseUser(HSteamPipe hSteamPipe, HSteamUser hUser) { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamClient_ReleaseUser(CSteamAPIContext.GetSteamClient(), hSteamPipe, hUser); } public static IntPtr GetISteamUser(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamUser(CSteamAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamGameServer(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamGameServer(CSteamAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static void SetLocalIPBinding(ref SteamIPAddress_t unIP, ushort usPort) { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamClient_SetLocalIPBinding(CSteamAPIContext.GetSteamClient(), ref unIP, usPort); } public static IntPtr GetISteamFriends(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamFriends(CSteamAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamUtils(HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamUtils(CSteamAPIContext.GetSteamClient(), hSteamPipe, pchVersion2); } public static IntPtr GetISteamMatchmaking(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamMatchmaking(CSteamAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamMatchmakingServers(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamMatchmakingServers(CSteamAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamGenericInterface(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamGenericInterface(CSteamAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamUserStats(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamUserStats(CSteamAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamGameServerStats(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamGameServerStats(CSteamAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamApps(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamApps(CSteamAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamNetworking(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamNetworking(CSteamAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamRemoteStorage(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamRemoteStorage(CSteamAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamScreenshots(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamScreenshots(CSteamAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static uint GetIPCCallCount() { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamClient_GetIPCCallCount(CSteamAPIContext.GetSteamClient()); } public static void SetWarningMessageHook(SteamAPIWarningMessageHook_t pFunction) { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamClient_SetWarningMessageHook(CSteamAPIContext.GetSteamClient(), pFunction); } public static bool BShutdownIfAllPipesClosed() { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamClient_BShutdownIfAllPipesClosed(CSteamAPIContext.GetSteamClient()); } public static IntPtr GetISteamHTTP(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamHTTP(CSteamAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamController(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamController(CSteamAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamUGC(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamUGC(CSteamAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamMusic(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamMusic(CSteamAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamHTMLSurface(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamHTMLSurface(CSteamAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamInventory(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamInventory(CSteamAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamVideo(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamVideo(CSteamAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamParentalSettings(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamParentalSettings(CSteamAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamInput(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamInput(CSteamAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamParties(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamParties(CSteamAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamRemotePlay(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamRemotePlay(CSteamAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } } public static class SteamFriends { public static string GetPersonaName() { InteropHelp.TestIfAvailableClient(); return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetPersonaName(CSteamAPIContext.GetSteamFriends())); } public static EPersonaState GetPersonaState() { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetPersonaState(CSteamAPIContext.GetSteamFriends()); } public static int GetFriendCount(EFriendFlags iFriendFlags) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetFriendCount(CSteamAPIContext.GetSteamFriends(), iFriendFlags); } public static CSteamID GetFriendByIndex(int iFriend, EFriendFlags iFriendFlags) { InteropHelp.TestIfAvailableClient(); return (CSteamID)NativeMethods.ISteamFriends_GetFriendByIndex(CSteamAPIContext.GetSteamFriends(), iFriend, iFriendFlags); } public static EFriendRelationship GetFriendRelationship(CSteamID steamIDFriend) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetFriendRelationship(CSteamAPIContext.GetSteamFriends(), steamIDFriend); } public static EPersonaState GetFriendPersonaState(CSteamID steamIDFriend) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetFriendPersonaState(CSteamAPIContext.GetSteamFriends(), steamIDFriend); } public static string GetFriendPersonaName(CSteamID steamIDFriend) { InteropHelp.TestIfAvailableClient(); return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetFriendPersonaName(CSteamAPIContext.GetSteamFriends(), steamIDFriend)); } public static bool GetFriendGamePlayed(CSteamID steamIDFriend, out FriendGameInfo2_t pFriendGameInfo2) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetFriendGamePlayed(CSteamAPIContext.GetSteamFriends(), steamIDFriend, out pFriendGameInfo2); } public static string GetFriendPersonaNameHistory(CSteamID steamIDFriend, int iPersonaName) { InteropHelp.TestIfAvailableClient(); return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetFriendPersonaNameHistory(CSteamAPIContext.GetSteamFriends(), steamIDFriend, iPersonaName)); } public static int GetFriendSteamLevel(CSteamID steamIDFriend) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetFriendSteamLevel(CSteamAPIContext.GetSteamFriends(), steamIDFriend); } public static string GetPlayerNickname(CSteamID steamIDPlayer) { InteropHelp.TestIfAvailableClient(); return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetPlayerNickname(CSteamAPIContext.GetSteamFriends(), steamIDPlayer)); } public static int GetFriendsGroupCount() { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetFriendsGroupCount(CSteamAPIContext.GetSteamFriends()); } public static FriendsGroupID_t GetFriendsGroupIDByIndex(int iFG) { InteropHelp.TestIfAvailableClient(); return (FriendsGroupID_t)NativeMethods.ISteamFriends_GetFriendsGroupIDByIndex(CSteamAPIContext.GetSteamFriends(), iFG); } public static string GetFriendsGroupName(FriendsGroupID_t friendsGroupID) { InteropHelp.TestIfAvailableClient(); return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetFriendsGroupName(CSteamAPIContext.GetSteamFriends(), friendsGroupID)); } public static int GetFriendsGroupMembersCount(FriendsGroupID_t friendsGroupID) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetFriendsGroupMembersCount(CSteamAPIContext.GetSteamFriends(), friendsGroupID); } public static void GetFriendsGroupMembersList(FriendsGroupID_t friendsGroupID, CSteamID[] pOutSteamIDMembers, int nMembersCount) { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamFriends_GetFriendsGroupMembersList(CSteamAPIContext.GetSteamFriends(), friendsGroupID, pOutSteamIDMembers, nMembersCount); } public static bool HasFriend(CSteamID steamIDFriend, EFriendFlags iFriendFlags) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_HasFriend(CSteamAPIContext.GetSteamFriends(), steamIDFriend, iFriendFlags); } public static int GetClanCount() { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetClanCount(CSteamAPIContext.GetSteamFriends()); } public static CSteamID GetClanByIndex(int iClan) { InteropHelp.TestIfAvailableClient(); return (CSteamID)NativeMethods.ISteamFriends_GetClanByIndex(CSteamAPIContext.GetSteamFriends(), iClan); } public static string GetClanName(CSteamID steamIDClan) { InteropHelp.TestIfAvailableClient(); return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetClanName(CSteamAPIContext.GetSteamFriends(), steamIDClan)); } public static string GetClanTag(CSteamID steamIDClan) { InteropHelp.TestIfAvailableClient(); return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetClanTag(CSteamAPIContext.GetSteamFriends(), steamIDClan)); } public static bool GetClanActivityCounts(CSteamID steamIDClan, out int pnOnline, out int pnInGame, out int pnChatting) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetClanActivityCounts(CSteamAPIContext.GetSteamFriends(), steamIDClan, out pnOnline, out pnInGame, out pnChatting); } public static SteamAPICall_t DownloadClanActivityCounts(CSteamID[] psteamIDClans, int cClansToRequest) { InteropHelp.TestIfAvailableClient(); return (SteamAPICall_t)NativeMethods.ISteamFriends_DownloadClanActivityCounts(CSteamAPIContext.GetSteamFriends(), psteamIDClans, cClansToRequest); } public static int GetFriendCountFromSource(CSteamID steamIDSource) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetFriendCountFromSource(CSteamAPIContext.GetSteamFriends(), steamIDSource); } public static CSteamID GetFriendFromSourceByIndex(CSteamID steamIDSource, int iFriend) { InteropHelp.TestIfAvailableClient(); return (CSteamID)NativeMethods.ISteamFriends_GetFriendFromSourceByIndex(CSteamAPIContext.GetSteamFriends(), steamIDSource, iFriend); } public static bool IsUserInSource(CSteamID steamIDUser, CSteamID steamIDSource) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_IsUserInSource(CSteamAPIContext.GetSteamFriends(), steamIDUser, steamIDSource); } public static void SetInGameVoiceSpeaking(CSteamID steamIDUser, bool bSpeaking) { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamFriends_SetInGameVoiceSpeaking(CSteamAPIContext.GetSteamFriends(), steamIDUser, bSpeaking); } public static void ActivateGameOverlay(string pchDialog) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchDialog2 = new InteropHelp.UTF8StringHandle(pchDialog); NativeMethods.ISteamFriends_ActivateGameOverlay(CSteamAPIContext.GetSteamFriends(), pchDialog2); } public static void ActivateGameOverlayToUser(string pchDialog, CSteamID steamID) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchDialog2 = new InteropHelp.UTF8StringHandle(pchDialog); NativeMethods.ISteamFriends_ActivateGameOverlayToUser(CSteamAPIContext.GetSteamFriends(), pchDialog2, steamID); } public static void ActivateGameOverlayToWebPage(string pchURL, EActivateGameOverlayToWebPageMode eMode = EActivateGameOverlayToWebPageMode.k_EActivateGameOverlayToWebPageMode_Default) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchURL2 = new InteropHelp.UTF8StringHandle(pchURL); NativeMethods.ISteamFriends_ActivateGameOverlayToWebPage(CSteamAPIContext.GetSteamFriends(), pchURL2, eMode); } public static void ActivateGameOverlayToStore(AppId_t nAppID, EOverlayToStoreFlag eFlag) { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamFriends_ActivateGameOverlayToStore(CSteamAPIContext.GetSteamFriends(), nAppID, eFlag); } public static void SetPlayedWith(CSteamID steamIDUserPlayedWith) { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamFriends_SetPlayedWith(CSteamAPIContext.GetSteamFriends(), steamIDUserPlayedWith); } public static void ActivateGameOverlayInviteDialog(CSteamID steamIDLobby) { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamFriends_ActivateGameOverlayInviteDialog(CSteamAPIContext.GetSteamFriends(), steamIDLobby); } public static int GetSmallFriendAvatar(CSteamID steamIDFriend) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetSmallFriendAvatar(CSteamAPIContext.GetSteamFriends(), steamIDFriend); } public static int GetMediumFriendAvatar(CSteamID steamIDFriend) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetMediumFriendAvatar(CSteamAPIContext.GetSteamFriends(), steamIDFriend); } public static int GetLargeFriendAvatar(CSteamID steamIDFriend) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetLargeFriendAvatar(CSteamAPIContext.GetSteamFriends(), steamIDFriend); } public static bool RequestUserInformation(CSteamID steamIDUser, bool bRequireNameOnly) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_RequestUserInformation(CSteamAPIContext.GetSteamFriends(), steamIDUser, bRequireNameOnly); } public static SteamAPICall_t RequestClanOfficerList(CSteamID steamIDClan) { InteropHelp.TestIfAvailableClient(); return (SteamAPICall_t)NativeMethods.ISteamFriends_RequestClanOfficerList(CSteamAPIContext.GetSteamFriends(), steamIDClan); } public static CSteamID GetClanOwner(CSteamID steamIDClan) { InteropHelp.TestIfAvailableClient(); return (CSteamID)NativeMethods.ISteamFriends_GetClanOwner(CSteamAPIContext.GetSteamFriends(), steamIDClan); } public static int GetClanOfficerCount(CSteamID steamIDClan) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetClanOfficerCount(CSteamAPIContext.GetSteamFriends(), steamIDClan); } public static CSteamID GetClanOfficerByIndex(CSteamID steamIDClan, int iOfficer) { InteropHelp.TestIfAvailableClient(); return (CSteamID)NativeMethods.ISteamFriends_GetClanOfficerByIndex(CSteamAPIContext.GetSteamFriends(), steamIDClan, iOfficer); } public static bool SetRichPresence(string pchKey, string pchValue) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchKey2 = new InteropHelp.UTF8StringHandle(pchKey); using InteropHelp.UTF8StringHandle pchValue2 = new InteropHelp.UTF8StringHandle(pchValue); return NativeMethods.ISteamFriends_SetRichPresence(CSteamAPIContext.GetSteamFriends(), pchKey2, pchValue2); } public static void ClearRichPresence() { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamFriends_ClearRichPresence(CSteamAPIContext.GetSteamFriends()); } public static string GetFriendRichPresence(CSteamID steamIDFriend, string pchKey) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchKey2 = new InteropHelp.UTF8StringHandle(pchKey); return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetFriendRichPresence(CSteamAPIContext.GetSteamFriends(), steamIDFriend, pchKey2)); } public static int GetFriendRichPresenceKeyCount(CSteamID steamIDFriend) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetFriendRichPresenceKeyCount(CSteamAPIContext.GetSteamFriends(), steamIDFriend); } public static string GetFriendRichPresenceKeyByIndex(CSteamID steamIDFriend, int iKey) { InteropHelp.TestIfAvailableClient(); return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetFriendRichPresenceKeyByIndex(CSteamAPIContext.GetSteamFriends(), steamIDFriend, iKey)); } public static void RequestFriendRichPresence(CSteamID steamIDFriend) { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamFriends_RequestFriendRichPresence(CSteamAPIContext.GetSteamFriends(), steamIDFriend); } public static bool InviteUserToGame(CSteamID steamIDFriend, string pchConnectString) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchConnectString2 = new InteropHelp.UTF8StringHandle(pchConnectString); return NativeMethods.ISteamFriends_InviteUserToGame(CSteamAPIContext.GetSteamFriends(), steamIDFriend, pchConnectString2); } public static int GetCoplayFriendCount() { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetCoplayFriendCount(CSteamAPIContext.GetSteamFriends()); } public static CSteamID GetCoplayFriend(int iCoplayFriend) { InteropHelp.TestIfAvailableClient(); return (CSteamID)NativeMethods.ISteamFriends_GetCoplayFriend(CSteamAPIContext.GetSteamFriends(), iCoplayFriend); } public static int GetFriendCoplayTime(CSteamID steamIDFriend) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetFriendCoplayTime(CSteamAPIContext.GetSteamFriends(), steamIDFriend); } public static AppId_t GetFriendCoplayGame(CSteamID steamIDFriend) { InteropHelp.TestIfAvailableClient(); return (AppId_t)NativeMethods.ISteamFriends_GetFriendCoplayGame(CSteamAPIContext.GetSteamFriends(), steamIDFriend); } public static SteamAPICall_t JoinClanChatRoom(CSteamID steamIDClan) { InteropHelp.TestIfAvailableClient(); return (SteamAPICall_t)NativeMethods.ISteamFriends_JoinClanChatRoom(CSteamAPIContext.GetSteamFriends(), steamIDClan); } public static bool LeaveClanChatRoom(CSteamID steamIDClan) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_LeaveClanChatRoom(CSteamAPIContext.GetSteamFriends(), steamIDClan); } public static int GetClanChatMemberCount(CSteamID steamIDClan) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetClanChatMemberCount(CSteamAPIContext.GetSteamFriends(), steamIDClan); } public static CSteamID GetChatMemberByIndex(CSteamID steamIDClan, int iUser) { InteropHelp.TestIfAvailableClient(); return (CSteamID)NativeMethods.ISteamFriends_GetChatMemberByIndex(CSteamAPIContext.GetSteamFriends(), steamIDClan, iUser); } public static bool SendClanChatMessage(CSteamID steamIDClanChat, string pchText) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchText2 = new InteropHelp.UTF8StringHandle(pchText); return NativeMethods.ISteamFriends_SendClanChatMessage(CSteamAPIContext.GetSteamFriends(), steamIDClanChat, pchText2); } public static int GetClanChatMessage(CSteamID steamIDClanChat, int iMessage, out string prgchText, int cchTextMax, out EChatEntryType peChatEntryType, out CSteamID psteamidChatter) { InteropHelp.TestIfAvailableClient(); IntPtr intPtr = Marshal.AllocHGlobal(cchTextMax); int num = NativeMethods.ISteamFriends_GetClanChatMessage(CSteamAPIContext.GetSteamFriends(), steamIDClanChat, iMessage, intPtr, cchTextMax, out peChatEntryType, out psteamidChatter); prgchText = ((num != 0) ? InteropHelp.PtrToStringUTF8(intPtr) : null); Marshal.FreeHGlobal(intPtr); return num; } public static bool IsClanChatAdmin(CSteamID steamIDClanChat, CSteamID steamIDUser) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_IsClanChatAdmin(CSteamAPIContext.GetSteamFriends(), steamIDClanChat, steamIDUser); } public static bool IsClanChatWindowOpenInSteam(CSteamID steamIDClanChat) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_IsClanChatWindowOpenInSteam(CSteamAPIContext.GetSteamFriends(), steamIDClanChat); } public static bool OpenClanChatWindowInSteam(CSteamID steamIDClanChat) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_OpenClanChatWindowInSteam(CSteamAPIContext.GetSteamFriends(), steamIDClanChat); } public static bool CloseClanChatWindowInSteam(CSteamID steamIDClanChat) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_CloseClanChatWindowInSteam(CSteamAPIContext.GetSteamFriends(), steamIDClanChat); } public static bool SetListenForFriendsMessages(bool bInterceptEnabled) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_SetListenForFriendsMessages(CSteamAPIContext.GetSteamFriends(), bInterceptEnabled); } public static bool ReplyToFriendMessage(CSteamID steamIDFriend, string pchMsgToSend) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchMsgToSend2 = new InteropHelp.UTF8StringHandle(pchMsgToSend); return NativeMethods.ISteamFriends_ReplyToFriendMessage(CSteamAPIContext.GetSteamFriends(), steamIDFriend, pchMsgToSend2); } public static int GetFriendMessage(CSteamID steamIDFriend, int iMessageID, out string pvData, int cubData, out EChatEntryType peChatEntryType) { InteropHelp.TestIfAvailableClient(); IntPtr intPtr = Marshal.AllocHGlobal(cubData); int num = NativeMethods.ISteamFriends_GetFriendMessage(CSteamAPIContext.GetSteamFriends(), steamIDFriend, iMessageID, intPtr, cubData, out peChatEntryType); pvData = ((num != 0) ? InteropHelp.PtrToStringUTF8(intPtr) : null); Marshal.FreeHGlobal(intPtr); return num; } public static SteamAPICall_t GetFollowerCount(CSteamID steamID) { InteropHelp.TestIfAvailableClient(); return (SteamAPICall_t)NativeMethods.ISteamFriends_GetFollowerCount(CSteamAPIContext.GetSteamFriends(), steamID); } public static SteamAPICall_t IsFollowing(CSteamID steamID) { InteropHelp.TestIfAvailableClient(); return (SteamAPICall_t)NativeMethods.ISteamFriends_IsFollowing(CSteamAPIContext.GetSteamFriends(), steamID); } public static SteamAPICall_t EnumerateFollowingList(uint unStartIndex) { InteropHelp.TestIfAvailableClient(); return (SteamAPICall_t)NativeMethods.ISteamFriends_EnumerateFollowingList(CSteamAPIContext.GetSteamFriends(), unStartIndex); } public static bool IsClanPublic(CSteamID steamIDClan) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_IsClanPublic(CSteamAPIContext.GetSteamFriends(), steamIDClan); } public static bool IsClanOfficialGameGroup(CSteamID steamIDClan) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_IsClanOfficialGameGroup(CSteamAPIContext.GetSteamFriends(), steamIDClan); } public static int GetNumChatsWithUnreadPriorityMessages() { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetNumChatsWithUnreadPriorityMessages(CSteamAPIContext.GetSteamFriends()); } public static void ActivateGameOverlayRemotePlayTogetherInviteDialog(CSteamID steamIDLobby) { InteropHelp.TestIfAvailableClient(); NativeMethods.ISteamFriends_ActivateGameOverlayRemotePlayTogetherInviteDialog(CSteamAPIContext.GetSteamFriends(), steamIDLobby); } public static bool RegisterProtocolInOverlayBrowser(string pchProtocol) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchProtocol2 = new InteropHelp.UTF8StringHandle(pchProtocol); return NativeMethods.ISteamFriends_RegisterProtocolInOverlayBrowser(CSteamAPIContext.GetSteamFriends(), pchProtocol2); } public static void ActivateGameOverlayInviteDialogConnectString(string pchConnectString) { InteropHelp.TestIfAvailableClient(); using InteropHelp.UTF8StringHandle pchConnectString2 = new InteropHelp.UTF8StringHandle(pchConnectString); NativeMethods.ISteamFriends_ActivateGameOverlayInviteDialogConnectString(CSteamAPIContext.GetSteamFriends(), pchConnectString2); } public static SteamAPICall_t RequestEquippedProfileItems(CSteamID steamID) { InteropHelp.TestIfAvailableClient(); return (SteamAPICall_t)NativeMethods.ISteamFriends_RequestEquippedProfileItems(CSteamAPIContext.GetSteamFriends(), steamID); } public static bool BHasEquippedProfileItem(CSteamID steamID, ECommunityProfileItemType itemType) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_BHasEquippedProfileItem(CSteamAPIContext.GetSteamFriends(), steamID, itemType); } public static string GetProfileItemPropertyString(CSteamID steamID, ECommunityProfileItemType itemType, ECommunityProfileItemProperty prop) { InteropHelp.TestIfAvailableClient(); return InteropHelp.PtrToStringUTF8(NativeMethods.ISteamFriends_GetProfileItemPropertyString(CSteamAPIContext.GetSteamFriends(), steamID, itemType, prop)); } public static uint GetProfileItemPropertyUint(CSteamID steamID, ECommunityProfileItemType itemType, ECommunityProfileItemProperty prop) { InteropHelp.TestIfAvailableClient(); return NativeMethods.ISteamFriends_GetProfileItemPropertyUint(CSteamAPIContext.GetSteamFriends(), steamID, itemType, prop); } } public static class SteamGameServer { public static void SetProduct(string pszProduct) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pszProduct2 = new InteropHelp.UTF8StringHandle(pszProduct); NativeMethods.ISteamGameServer_SetProduct(CSteamGameServerAPIContext.GetSteamGameServer(), pszProduct2); } public static void SetGameDescription(string pszGameDescription) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pszGameDescription2 = new InteropHelp.UTF8StringHandle(pszGameDescription); NativeMethods.ISteamGameServer_SetGameDescription(CSteamGameServerAPIContext.GetSteamGameServer(), pszGameDescription2); } public static void SetModDir(string pszModDir) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pszModDir2 = new InteropHelp.UTF8StringHandle(pszModDir); NativeMethods.ISteamGameServer_SetModDir(CSteamGameServerAPIContext.GetSteamGameServer(), pszModDir2); } public static void SetDedicatedServer(bool bDedicated) { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamGameServer_SetDedicatedServer(CSteamGameServerAPIContext.GetSteamGameServer(), bDedicated); } public static void LogOn(string pszToken) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pszToken2 = new InteropHelp.UTF8StringHandle(pszToken); NativeMethods.ISteamGameServer_LogOn(CSteamGameServerAPIContext.GetSteamGameServer(), pszToken2); } public static void LogOnAnonymous() { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamGameServer_LogOnAnonymous(CSteamGameServerAPIContext.GetSteamGameServer()); } public static void LogOff() { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamGameServer_LogOff(CSteamGameServerAPIContext.GetSteamGameServer()); } public static bool BLoggedOn() { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamGameServer_BLoggedOn(CSteamGameServerAPIContext.GetSteamGameServer()); } public static bool BSecure() { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamGameServer_BSecure(CSteamGameServerAPIContext.GetSteamGameServer()); } public static CSteamID GetSteamID() { InteropHelp.TestIfAvailableGameServer(); return (CSteamID)NativeMethods.ISteamGameServer_GetSteamID(CSteamGameServerAPIContext.GetSteamGameServer()); } public static bool WasRestartRequested() { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamGameServer_WasRestartRequested(CSteamGameServerAPIContext.GetSteamGameServer()); } public static void SetMaxPlayerCount(int cPlayersMax) { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamGameServer_SetMaxPlayerCount(CSteamGameServerAPIContext.GetSteamGameServer(), cPlayersMax); } public static void SetBotPlayerCount(int cBotplayers) { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamGameServer_SetBotPlayerCount(CSteamGameServerAPIContext.GetSteamGameServer(), cBotplayers); } public static void SetServerName(string pszServerName) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pszServerName2 = new InteropHelp.UTF8StringHandle(pszServerName); NativeMethods.ISteamGameServer_SetServerName(CSteamGameServerAPIContext.GetSteamGameServer(), pszServerName2); } public static void SetMapName(string pszMapName) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pszMapName2 = new InteropHelp.UTF8StringHandle(pszMapName); NativeMethods.ISteamGameServer_SetMapName(CSteamGameServerAPIContext.GetSteamGameServer(), pszMapName2); } public static void SetPasswordProtected(bool bPasswordProtected) { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamGameServer_SetPasswordProtected(CSteamGameServerAPIContext.GetSteamGameServer(), bPasswordProtected); } public static void SetSpectatorPort(ushort unSpectatorPort) { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamGameServer_SetSpectatorPort(CSteamGameServerAPIContext.GetSteamGameServer(), unSpectatorPort); } public static void SetSpectatorServerName(string pszSpectatorServerName) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pszSpectatorServerName2 = new InteropHelp.UTF8StringHandle(pszSpectatorServerName); NativeMethods.ISteamGameServer_SetSpectatorServerName(CSteamGameServerAPIContext.GetSteamGameServer(), pszSpectatorServerName2); } public static void ClearAllKeyValues() { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamGameServer_ClearAllKeyValues(CSteamGameServerAPIContext.GetSteamGameServer()); } public static void SetKeyValue(string pKey, string pValue) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pKey2 = new InteropHelp.UTF8StringHandle(pKey); using InteropHelp.UTF8StringHandle pValue2 = new InteropHelp.UTF8StringHandle(pValue); NativeMethods.ISteamGameServer_SetKeyValue(CSteamGameServerAPIContext.GetSteamGameServer(), pKey2, pValue2); } public static void SetGameTags(string pchGameTags) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchGameTags2 = new InteropHelp.UTF8StringHandle(pchGameTags); NativeMethods.ISteamGameServer_SetGameTags(CSteamGameServerAPIContext.GetSteamGameServer(), pchGameTags2); } public static void SetGameData(string pchGameData) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchGameData2 = new InteropHelp.UTF8StringHandle(pchGameData); NativeMethods.ISteamGameServer_SetGameData(CSteamGameServerAPIContext.GetSteamGameServer(), pchGameData2); } public static void SetRegion(string pszRegion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pszRegion2 = new InteropHelp.UTF8StringHandle(pszRegion); NativeMethods.ISteamGameServer_SetRegion(CSteamGameServerAPIContext.GetSteamGameServer(), pszRegion2); } public static void SetAdvertiseServerActive(bool bActive) { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamGameServer_SetAdvertiseServerActive(CSteamGameServerAPIContext.GetSteamGameServer(), bActive); } public static HAuthTicket GetAuthSessionTicket(byte[] pTicket, int cbMaxTicket, out uint pcbTicket, ref SteamNetworkingIdentity pSnid) { InteropHelp.TestIfAvailableGameServer(); return (HAuthTicket)NativeMethods.ISteamGameServer_GetAuthSessionTicket(CSteamGameServerAPIContext.GetSteamGameServer(), pTicket, cbMaxTicket, out pcbTicket, ref pSnid); } public static EBeginAuthSessionResult BeginAuthSession(byte[] pAuthTicket, int cbAuthTicket, CSteamID steamID) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamGameServer_BeginAuthSession(CSteamGameServerAPIContext.GetSteamGameServer(), pAuthTicket, cbAuthTicket, steamID); } public static void EndAuthSession(CSteamID steamID) { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamGameServer_EndAuthSession(CSteamGameServerAPIContext.GetSteamGameServer(), steamID); } public static void CancelAuthTicket(HAuthTicket hAuthTicket) { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamGameServer_CancelAuthTicket(CSteamGameServerAPIContext.GetSteamGameServer(), hAuthTicket); } public static EUserHasLicenseForAppResult UserHasLicenseForApp(CSteamID steamID, AppId_t appID) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamGameServer_UserHasLicenseForApp(CSteamGameServerAPIContext.GetSteamGameServer(), steamID, appID); } public static bool RequestUserGroupStatus(CSteamID steamIDUser, CSteamID steamIDGroup) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamGameServer_RequestUserGroupStatus(CSteamGameServerAPIContext.GetSteamGameServer(), steamIDUser, steamIDGroup); } public static void GetGameplayStats() { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamGameServer_GetGameplayStats(CSteamGameServerAPIContext.GetSteamGameServer()); } public static SteamAPICall_t GetServerReputation() { InteropHelp.TestIfAvailableGameServer(); return (SteamAPICall_t)NativeMethods.ISteamGameServer_GetServerReputation(CSteamGameServerAPIContext.GetSteamGameServer()); } public static SteamIPAddress_t GetPublicIP() { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamGameServer_GetPublicIP(CSteamGameServerAPIContext.GetSteamGameServer()); } public static bool HandleIncomingPacket(byte[] pData, int cbData, uint srcIP, ushort srcPort) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamGameServer_HandleIncomingPacket(CSteamGameServerAPIContext.GetSteamGameServer(), pData, cbData, srcIP, srcPort); } public static int GetNextOutgoingPacket(byte[] pOut, int cbMaxOut, out uint pNetAdr, out ushort pPort) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamGameServer_GetNextOutgoingPacket(CSteamGameServerAPIContext.GetSteamGameServer(), pOut, cbMaxOut, out pNetAdr, out pPort); } public static SteamAPICall_t AssociateWithClan(CSteamID steamIDClan) { InteropHelp.TestIfAvailableGameServer(); return (SteamAPICall_t)NativeMethods.ISteamGameServer_AssociateWithClan(CSteamGameServerAPIContext.GetSteamGameServer(), steamIDClan); } public static SteamAPICall_t ComputeNewPlayerCompatibility(CSteamID steamIDNewPlayer) { InteropHelp.TestIfAvailableGameServer(); return (SteamAPICall_t)NativeMethods.ISteamGameServer_ComputeNewPlayerCompatibility(CSteamGameServerAPIContext.GetSteamGameServer(), steamIDNewPlayer); } public static bool SendUserConnectAndAuthenticate_DEPRECATED(uint unIPClient, byte[] pvAuthBlob, uint cubAuthBlobSize, out CSteamID pSteamIDUser) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamGameServer_SendUserConnectAndAuthenticate_DEPRECATED(CSteamGameServerAPIContext.GetSteamGameServer(), unIPClient, pvAuthBlob, cubAuthBlobSize, out pSteamIDUser); } public static CSteamID CreateUnauthenticatedUserConnection() { InteropHelp.TestIfAvailableGameServer(); return (CSteamID)NativeMethods.ISteamGameServer_CreateUnauthenticatedUserConnection(CSteamGameServerAPIContext.GetSteamGameServer()); } public static void SendUserDisconnect_DEPRECATED(CSteamID steamIDUser) { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamGameServer_SendUserDisconnect_DEPRECATED(CSteamGameServerAPIContext.GetSteamGameServer(), steamIDUser); } public static bool BUpdateUserData(CSteamID steamIDUser, string pchPlayerName, uint uScore) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchPlayerName2 = new InteropHelp.UTF8StringHandle(pchPlayerName); return NativeMethods.ISteamGameServer_BUpdateUserData(CSteamGameServerAPIContext.GetSteamGameServer(), steamIDUser, pchPlayerName2, uScore); } } public static class SteamGameServerClient { public static HSteamPipe CreateSteamPipe() { InteropHelp.TestIfAvailableGameServer(); return (HSteamPipe)NativeMethods.ISteamClient_CreateSteamPipe(CSteamGameServerAPIContext.GetSteamClient()); } public static bool BReleaseSteamPipe(HSteamPipe hSteamPipe) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamClient_BReleaseSteamPipe(CSteamGameServerAPIContext.GetSteamClient(), hSteamPipe); } public static HSteamUser ConnectToGlobalUser(HSteamPipe hSteamPipe) { InteropHelp.TestIfAvailableGameServer(); return (HSteamUser)NativeMethods.ISteamClient_ConnectToGlobalUser(CSteamGameServerAPIContext.GetSteamClient(), hSteamPipe); } public static HSteamUser CreateLocalUser(out HSteamPipe phSteamPipe, EAccountType eAccountType) { InteropHelp.TestIfAvailableGameServer(); return (HSteamUser)NativeMethods.ISteamClient_CreateLocalUser(CSteamGameServerAPIContext.GetSteamClient(), out phSteamPipe, eAccountType); } public static void ReleaseUser(HSteamPipe hSteamPipe, HSteamUser hUser) { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamClient_ReleaseUser(CSteamGameServerAPIContext.GetSteamClient(), hSteamPipe, hUser); } public static IntPtr GetISteamUser(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamUser(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamGameServer(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamGameServer(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static void SetLocalIPBinding(ref SteamIPAddress_t unIP, ushort usPort) { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamClient_SetLocalIPBinding(CSteamGameServerAPIContext.GetSteamClient(), ref unIP, usPort); } public static IntPtr GetISteamFriends(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamFriends(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamUtils(HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamUtils(CSteamGameServerAPIContext.GetSteamClient(), hSteamPipe, pchVersion2); } public static IntPtr GetISteamMatchmaking(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamMatchmaking(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamMatchmakingServers(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamMatchmakingServers(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamGenericInterface(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamGenericInterface(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamUserStats(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamUserStats(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamGameServerStats(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamGameServerStats(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamApps(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamApps(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamNetworking(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamNetworking(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamRemoteStorage(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamRemoteStorage(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamScreenshots(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamScreenshots(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static uint GetIPCCallCount() { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamClient_GetIPCCallCount(CSteamGameServerAPIContext.GetSteamClient()); } public static void SetWarningMessageHook(SteamAPIWarningMessageHook_t pFunction) { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamClient_SetWarningMessageHook(CSteamGameServerAPIContext.GetSteamClient(), pFunction); } public static bool BShutdownIfAllPipesClosed() { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamClient_BShutdownIfAllPipesClosed(CSteamGameServerAPIContext.GetSteamClient()); } public static IntPtr GetISteamHTTP(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamHTTP(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamController(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamController(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamUGC(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamUGC(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamMusic(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamMusic(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamHTMLSurface(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamHTMLSurface(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamInventory(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamInventory(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamVideo(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamVideo(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamParentalSettings(HSteamUser hSteamuser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamParentalSettings(CSteamGameServerAPIContext.GetSteamClient(), hSteamuser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamInput(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamInput(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamParties(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamParties(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } public static IntPtr GetISteamRemotePlay(HSteamUser hSteamUser, HSteamPipe hSteamPipe, string pchVersion) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchVersion2 = new InteropHelp.UTF8StringHandle(pchVersion); return NativeMethods.ISteamClient_GetISteamRemotePlay(CSteamGameServerAPIContext.GetSteamClient(), hSteamUser, hSteamPipe, pchVersion2); } } public static class SteamGameServerHTTP { public static HTTPRequestHandle CreateHTTPRequest(EHTTPMethod eHTTPRequestMethod, string pchAbsoluteURL) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchAbsoluteURL2 = new InteropHelp.UTF8StringHandle(pchAbsoluteURL); return (HTTPRequestHandle)NativeMethods.ISteamHTTP_CreateHTTPRequest(CSteamGameServerAPIContext.GetSteamHTTP(), eHTTPRequestMethod, pchAbsoluteURL2); } public static bool SetHTTPRequestContextValue(HTTPRequestHandle hRequest, ulong ulContextValue) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamHTTP_SetHTTPRequestContextValue(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, ulContextValue); } public static bool SetHTTPRequestNetworkActivityTimeout(HTTPRequestHandle hRequest, uint unTimeoutSeconds) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamHTTP_SetHTTPRequestNetworkActivityTimeout(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, unTimeoutSeconds); } public static bool SetHTTPRequestHeaderValue(HTTPRequestHandle hRequest, string pchHeaderName, string pchHeaderValue) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchHeaderName2 = new InteropHelp.UTF8StringHandle(pchHeaderName); using InteropHelp.UTF8StringHandle pchHeaderValue2 = new InteropHelp.UTF8StringHandle(pchHeaderValue); return NativeMethods.ISteamHTTP_SetHTTPRequestHeaderValue(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, pchHeaderName2, pchHeaderValue2); } public static bool SetHTTPRequestGetOrPostParameter(HTTPRequestHandle hRequest, string pchParamName, string pchParamValue) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchParamName2 = new InteropHelp.UTF8StringHandle(pchParamName); using InteropHelp.UTF8StringHandle pchParamValue2 = new InteropHelp.UTF8StringHandle(pchParamValue); return NativeMethods.ISteamHTTP_SetHTTPRequestGetOrPostParameter(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, pchParamName2, pchParamValue2); } public static bool SendHTTPRequest(HTTPRequestHandle hRequest, out SteamAPICall_t pCallHandle) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamHTTP_SendHTTPRequest(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, out pCallHandle); } public static bool SendHTTPRequestAndStreamResponse(HTTPRequestHandle hRequest, out SteamAPICall_t pCallHandle) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamHTTP_SendHTTPRequestAndStreamResponse(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, out pCallHandle); } public static bool DeferHTTPRequest(HTTPRequestHandle hRequest) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamHTTP_DeferHTTPRequest(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest); } public static bool PrioritizeHTTPRequest(HTTPRequestHandle hRequest) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamHTTP_PrioritizeHTTPRequest(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest); } public static bool GetHTTPResponseHeaderSize(HTTPRequestHandle hRequest, string pchHeaderName, out uint unResponseHeaderSize) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchHeaderName2 = new InteropHelp.UTF8StringHandle(pchHeaderName); return NativeMethods.ISteamHTTP_GetHTTPResponseHeaderSize(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, pchHeaderName2, out unResponseHeaderSize); } public static bool GetHTTPResponseHeaderValue(HTTPRequestHandle hRequest, string pchHeaderName, byte[] pHeaderValueBuffer, uint unBufferSize) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchHeaderName2 = new InteropHelp.UTF8StringHandle(pchHeaderName); return NativeMethods.ISteamHTTP_GetHTTPResponseHeaderValue(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, pchHeaderName2, pHeaderValueBuffer, unBufferSize); } public static bool GetHTTPResponseBodySize(HTTPRequestHandle hRequest, out uint unBodySize) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamHTTP_GetHTTPResponseBodySize(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, out unBodySize); } public static bool GetHTTPResponseBodyData(HTTPRequestHandle hRequest, byte[] pBodyDataBuffer, uint unBufferSize) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamHTTP_GetHTTPResponseBodyData(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, pBodyDataBuffer, unBufferSize); } public static bool GetHTTPStreamingResponseBodyData(HTTPRequestHandle hRequest, uint cOffset, byte[] pBodyDataBuffer, uint unBufferSize) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamHTTP_GetHTTPStreamingResponseBodyData(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, cOffset, pBodyDataBuffer, unBufferSize); } public static bool ReleaseHTTPRequest(HTTPRequestHandle hRequest) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamHTTP_ReleaseHTTPRequest(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest); } public static bool GetHTTPDownloadProgressPct(HTTPRequestHandle hRequest, out float pflPercentOut) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamHTTP_GetHTTPDownloadProgressPct(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, out pflPercentOut); } public static bool SetHTTPRequestRawPostBody(HTTPRequestHandle hRequest, string pchContentType, byte[] pubBody, uint unBodyLen) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchContentType2 = new InteropHelp.UTF8StringHandle(pchContentType); return NativeMethods.ISteamHTTP_SetHTTPRequestRawPostBody(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, pchContentType2, pubBody, unBodyLen); } public static HTTPCookieContainerHandle CreateCookieContainer(bool bAllowResponsesToModify) { InteropHelp.TestIfAvailableGameServer(); return (HTTPCookieContainerHandle)NativeMethods.ISteamHTTP_CreateCookieContainer(CSteamGameServerAPIContext.GetSteamHTTP(), bAllowResponsesToModify); } public static bool ReleaseCookieContainer(HTTPCookieContainerHandle hCookieContainer) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamHTTP_ReleaseCookieContainer(CSteamGameServerAPIContext.GetSteamHTTP(), hCookieContainer); } public static bool SetCookie(HTTPCookieContainerHandle hCookieContainer, string pchHost, string pchUrl, string pchCookie) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchHost2 = new InteropHelp.UTF8StringHandle(pchHost); using InteropHelp.UTF8StringHandle pchUrl2 = new InteropHelp.UTF8StringHandle(pchUrl); using InteropHelp.UTF8StringHandle pchCookie2 = new InteropHelp.UTF8StringHandle(pchCookie); return NativeMethods.ISteamHTTP_SetCookie(CSteamGameServerAPIContext.GetSteamHTTP(), hCookieContainer, pchHost2, pchUrl2, pchCookie2); } public static bool SetHTTPRequestCookieContainer(HTTPRequestHandle hRequest, HTTPCookieContainerHandle hCookieContainer) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamHTTP_SetHTTPRequestCookieContainer(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, hCookieContainer); } public static bool SetHTTPRequestUserAgentInfo(HTTPRequestHandle hRequest, string pchUserAgentInfo) { InteropHelp.TestIfAvailableGameServer(); using InteropHelp.UTF8StringHandle pchUserAgentInfo2 = new InteropHelp.UTF8StringHandle(pchUserAgentInfo); return NativeMethods.ISteamHTTP_SetHTTPRequestUserAgentInfo(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, pchUserAgentInfo2); } public static bool SetHTTPRequestRequiresVerifiedCertificate(HTTPRequestHandle hRequest, bool bRequireVerifiedCertificate) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamHTTP_SetHTTPRequestRequiresVerifiedCertificate(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, bRequireVerifiedCertificate); } public static bool SetHTTPRequestAbsoluteTimeoutMS(HTTPRequestHandle hRequest, uint unMilliseconds) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamHTTP_SetHTTPRequestAbsoluteTimeoutMS(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, unMilliseconds); } public static bool GetHTTPRequestWasTimedOut(HTTPRequestHandle hRequest, out bool pbWasTimedOut) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamHTTP_GetHTTPRequestWasTimedOut(CSteamGameServerAPIContext.GetSteamHTTP(), hRequest, out pbWasTimedOut); } } public static class SteamGameServerInventory { public static EResult GetResultStatus(SteamInventoryResult_t resultHandle) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamInventory_GetResultStatus(CSteamGameServerAPIContext.GetSteamInventory(), resultHandle); } public static bool GetResultItems(SteamInventoryResult_t resultHandle, SteamItemDetails_t[] pOutItemsArray, ref uint punOutItemsArraySize) { InteropHelp.TestIfAvailableGameServer(); if (pOutItemsArray != null && pOutItemsArray.Length != punOutItemsArraySize) { throw new ArgumentException("pOutItemsArray must be the same size as punOutItemsArraySize!"); } return NativeMethods.ISteamInventory_GetResultItems(CSteamGameServerAPIContext.GetSteamInventory(), resultHandle, pOutItemsArray, ref punOutItemsArraySize); } public static bool GetResultItemProperty(SteamInventoryResult_t resultHandle, uint unItemIndex, string pchPropertyName, out string pchValueBuffer, ref uint punValueBufferSizeOut) { InteropHelp.TestIfAvailableGameServer(); IntPtr intPtr = Marshal.AllocHGlobal((int)punValueBufferSizeOut); using InteropHelp.UTF8StringHandle pchPropertyName2 = new InteropHelp.UTF8StringHandle(pchPropertyName); bool flag = NativeMethods.ISteamInventory_GetResultItemProperty(CSteamGameServerAPIContext.GetSteamInventory(), resultHandle, unItemIndex, pchPropertyName2, intPtr, ref punValueBufferSizeOut); pchValueBuffer = (flag ? InteropHelp.PtrToStringUTF8(intPtr) : null); Marshal.FreeHGlobal(intPtr); return flag; } public static uint GetResultTimestamp(SteamInventoryResult_t resultHandle) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamInventory_GetResultTimestamp(CSteamGameServerAPIContext.GetSteamInventory(), resultHandle); } public static bool CheckResultSteamID(SteamInventoryResult_t resultHandle, CSteamID steamIDExpected) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamInventory_CheckResultSteamID(CSteamGameServerAPIContext.GetSteamInventory(), resultHandle, steamIDExpected); } public static void DestroyResult(SteamInventoryResult_t resultHandle) { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamInventory_DestroyResult(CSteamGameServerAPIContext.GetSteamInventory(), resultHandle); } public static bool GetAllItems(out SteamInventoryResult_t pResultHandle) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamInventory_GetAllItems(CSteamGameServerAPIContext.GetSteamInventory(), out pResultHandle); } public static bool GetItemsByID(out SteamInventoryResult_t pResultHandle, SteamItemInstanceID_t[] pInstanceIDs, uint unCountInstanceIDs) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamInventory_GetItemsByID(CSteamGameServerAPIContext.GetSteamInventory(), out pResultHandle, pInstanceIDs, unCountInstanceIDs); } public static bool SerializeResult(SteamInventoryResult_t resultHandle, byte[] pOutBuffer, out uint punOutBufferSize) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamInventory_SerializeResult(CSteamGameServerAPIContext.GetSteamInventory(), resultHandle, pOutBuffer, out punOutBufferSize); } public static bool DeserializeResult(out SteamInventoryResult_t pOutResultHandle, byte[] pBuffer, uint unBufferSize, bool bRESERVED_MUST_BE_FALSE = false) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamInventory_DeserializeResult(CSteamGameServerAPIContext.GetSteamInventory(), out pOutResultHandle, pBuffer, unBufferSize, bRESERVED_MUST_BE_FALSE); } public static bool GenerateItems(out SteamInventoryResult_t pResultHandle, SteamItemDef_t[] pArrayItemDefs, uint[] punArrayQuantity, uint unArrayLength) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamInventory_GenerateItems(CSteamGameServerAPIContext.GetSteamInventory(), out pResultHandle, pArrayItemDefs, punArrayQuantity, unArrayLength); } public static bool GrantPromoItems(out SteamInventoryResult_t pResultHandle) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamInventory_GrantPromoItems(CSteamGameServerAPIContext.GetSteamInventory(), out pResultHandle); } public static bool AddPromoItem(out SteamInventoryResult_t pResultHandle, SteamItemDef_t itemDef) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamInventory_AddPromoItem(CSteamGameServerAPIContext.GetSteamInventory(), out pResultHandle, itemDef); } public static bool AddPromoItems(out SteamInventoryResult_t pResultHandle, SteamItemDef_t[] pArrayItemDefs, uint unArrayLength) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamInventory_AddPromoItems(CSteamGameServerAPIContext.GetSteamInventory(), out pResultHandle, pArrayItemDefs, unArrayLength); } public static bool ConsumeItem(out SteamInventoryResult_t pResultHandle, SteamItemInstanceID_t itemConsume, uint unQuantity) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamInventory_ConsumeItem(CSteamGameServerAPIContext.GetSteamInventory(), out pResultHandle, itemConsume, unQuantity); } public static bool ExchangeItems(out SteamInventoryResult_t pResultHandle, SteamItemDef_t[] pArrayGenerate, uint[] punArrayGenerateQuantity, uint unArrayGenerateLength, SteamItemInstanceID_t[] pArrayDestroy, uint[] punArrayDestroyQuantity, uint unArrayDestroyLength) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamInventory_ExchangeItems(CSteamGameServerAPIContext.GetSteamInventory(), out pResultHandle, pArrayGenerate, punArrayGenerateQuantity, unArrayGenerateLength, pArrayDestroy, punArrayDestroyQuantity, unArrayDestroyLength); } public static bool TransferItemQuantity(out SteamInventoryResult_t pResultHandle, SteamItemInstanceID_t itemIdSource, uint unQuantity, SteamItemInstanceID_t itemIdDest) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamInventory_TransferItemQuantity(CSteamGameServerAPIContext.GetSteamInventory(), out pResultHandle, itemIdSource, unQuantity, itemIdDest); } public static void SendItemDropHeartbeat() { InteropHelp.TestIfAvailableGameServer(); NativeMethods.ISteamInventory_SendItemDropHeartbeat(CSteamGameServerAPIContext.GetSteamInventory()); } public static bool TriggerItemDrop(out SteamInventoryResult_t pResultHandle, SteamItemDef_t dropListDefinition) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamInventory_TriggerItemDrop(CSteamGameServerAPIContext.GetSteamInventory(), out pResultHandle, dropListDefinition); } public static bool TradeItems(out SteamInventoryResult_t pResultHandle, CSteamID steamIDTradePartner, SteamItemInstanceID_t[] pArrayGive, uint[] pArrayGiveQuantity, uint nArrayGiveLength, SteamItemInstanceID_t[] pArrayGet, uint[] pArrayGetQuantity, uint nArrayGetLength) { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamInventory_TradeItems(CSteamGameServerAPIContext.GetSteamInventory(), out pResultHandle, steamIDTradePartner, pArrayGive, pArrayGiveQuantity, nArrayGiveLength, pArrayGet, pArrayGetQuantity, nArrayGetLength); } public static bool LoadItemDefinitions() { InteropHelp.TestIfAvailableGameServer(); return NativeMethods.ISteamInventory_LoadItemDefinitions(CSteamGameServerAPIContext.GetSteamInventory()); } public static bool GetItemDefinitionIDs(SteamItemDef_t[] pItemDefIDs, ref uint punItemDefIDsArraySize) { InteropHelp.TestIfAvailableGameServer(); if (pItemDefIDs != null && pItemDefIDs.Length != punItemDefIDsArraySize) { throw new ArgumentException("pItemDefIDs must be the same size as punItemDefIDsArraySize!"); } return NativeMethods.ISteamInventory_GetItemDefinitionIDs(CSteamGameServerAPIContext.GetSteamInventory(), pItemDefIDs, ref punItemDefIDsArraySize); } public static bool GetItemDefinitionProperty(SteamItemDef_t iDefinition, string pchPropertyName, out string pchValueBuffer, ref uint punValueBufferSizeOut) { InteropHelp.TestIfAvailableGameServer(); IntPtr intPtr = Marshal.AllocHGlobal((int)punValueBufferSizeOut); using InteropHelp.UTF8StringHandle pchPropertyName2 = new InteropHelp.UTF8StringHandle(pchPropertyName); bool flag = NativeMethods.ISteamInventory_GetItemDefinitionPropert