public static void Init(AppId appid, SteamServerInit init) { uint num = 0; if (init.SteamPort == 0) { init = init.WithRandomSteamPort(); } if (init.IpAddress != null) { num = init.IpAddress.IpToInt32(); } Environment.SetEnvironmentVariable("SteamAppId", appid.ToString()); Environment.SetEnvironmentVariable("SteamGameId", appid.ToString()); int num1 = (init.Secure ? 3 : 2); if (!SteamInternal.GameServer_Init(num, init.SteamPort, init.GamePort, init.QueryPort, num1, init.VersionString)) { throw new Exception(String.Format("InitGameServer returned false ({0},{1},{2},{3},{4},\"{5}\")", new Object[] { num, init.SteamPort, init.GamePort, init.QueryPort, num1, init.VersionString })); } SteamServer.initialized = true; SteamServer.AutomaticHeartbeats = true; SteamServer.MaxPlayers = 32; SteamServer.BotCount = 0; SteamServer.Product = String.Format("{0}", appid.Value); SteamServer.ModDir = init.ModDir; SteamServer.GameDescription = init.GameDescription; SteamServer.Passworded = false; SteamServer.DedicatedServer = init.DedicatedServer; SteamServer.InstallEvents(); SteamServer.RunCallbacksAsync(); }
public virtual void InitUserless() { this.Self = SteamInternal.FindOrCreateUserInterface(0, this.InterfaceName); if (this.Self == IntPtr.Zero) { throw new Exception(String.Concat("Couldn't find interface ", this.InterfaceName)); } this.VTable = Marshal.ReadIntPtr(this.Self, 0); if (this.Self == IntPtr.Zero) { throw new Exception(String.Concat("Invalid VTable for ", this.InterfaceName)); } this.InitInternals(); }
/// <summary> /// Initialize the steam server. /// If asyncCallbacks is false you need to call RunCallbacks manually every frame. /// </summary> public static void Init(AppId appid, SteamServerInit init, bool asyncCallbacks = true) { uint ipaddress = 0; // Any Port if (init.SteamPort == 0) { init = init.WithRandomSteamPort(); } if (init.IpAddress != null) { ipaddress = Utility.IpToInt32(init.IpAddress); } System.Environment.SetEnvironmentVariable("SteamAppId", appid.ToString()); System.Environment.SetEnvironmentVariable("SteamGameId", appid.ToString()); var secure = (int)(init.Secure ? 3 : 2); // // Get other interfaces // if (!SteamInternal.GameServer_Init(ipaddress, init.SteamPort, init.GamePort, init.QueryPort, secure, init.VersionString)) { throw new System.Exception($"InitGameServer returned false ({ipaddress},{init.SteamPort},{init.GamePort},{init.QueryPort},{secure},\"{init.VersionString}\")"); } initialized = true; // // Initial settings // AutomaticHeartbeats = true; MaxPlayers = 32; BotCount = 0; Product = $"{appid.Value}"; ModDir = init.ModDir; GameDescription = init.GameDescription; Passworded = false; DedicatedServer = init.DedicatedServer; InstallEvents(); if (asyncCallbacks) { RunCallbacksAsync(); } }
public virtual void InitUserless() { Self = SteamInternal.FindOrCreateUserInterface(0, InterfaceName); if (Self == IntPtr.Zero) { throw new System.Exception($"Couldn't find interface {InterfaceName}"); } VTable = Marshal.ReadIntPtr(Self, 0); if (Self == IntPtr.Zero) { throw new System.Exception($"Invalid VTable for {InterfaceName}"); } InitInternals(); }
public void InitServer() { HSteamUser hSteamUser = SteamGameServer.GetHSteamUser(); this.Self = SteamInternal.FindOrCreateGameServerInterface(hSteamUser, this.InterfaceName); if (this.Self == IntPtr.Zero) { throw new Exception(String.Concat("Couldn't find server interface ", this.InterfaceName)); } this.VTable = Marshal.ReadIntPtr(this.Self, 0); if (this.Self == IntPtr.Zero) { throw new Exception(String.Concat("Invalid VTable for server ", this.InterfaceName)); } this.InitInternals(); SteamServer.WatchInterface(this); }
public virtual void InitServer() { var user = SteamGameServer.GetHSteamUser(); Self = SteamInternal.FindOrCreateGameServerInterface(user, InterfaceName); if (Self == IntPtr.Zero) { throw new System.Exception($"Couldn't find server interface {InterfaceName}"); } VTable = Marshal.ReadIntPtr(Self, 0); if (Self == IntPtr.Zero) { throw new System.Exception($"Invalid VTable for server {InterfaceName}"); } InitInternals(); }
public void InitClient() { var user = SteamAPI.GetHSteamUser(); Self = SteamInternal.FindOrCreateUserInterface(user, InterfaceName); if (Self == IntPtr.Zero) { throw new System.Exception($"Couldn't find interface {InterfaceName}"); } VTable = Marshal.ReadIntPtr(Self, 0); if (Self == IntPtr.Zero) { throw new System.Exception($"Invalid VTable for {InterfaceName}"); } InitInternals(); SteamClient.WatchInterface(this); }
public static void Init(AppId appid, SteamServerInit init) { uint ipaddress = 0; // Any Port if (init.SteamPort == 0) { init = init.WithRandomSteamPort(); } if (init.IpAddress != null) { ipaddress = Utility.IpToInt32(init.IpAddress); } // // Get other interfaces // if (!SteamInternal.GameServer_Init(ipaddress, init.SteamPort, init.GamePort, init.QueryPort, (int)(init.Secure ? 3 : 2), init.VersionString)) { throw new System.Exception("InitGameServer returned false"); } initialized = true; // // Initial settings // Internal.EnableHeartbeats(true); MaxPlayers = 32; BotCount = 0; Product = $"{appid.Value}"; ModDir = init.ModDir; GameDescription = init.GameDescription; Passworded = false; DedicatedServer = true; InstallEvents(); RunCallbacksAsync(); }
public void InitClient() { // // There's an issue for us using FindOrCreateUserInterface on Rust. // We have a different appid for our staging branch, but we use Rust's // appid so we can still test with the live data/setup. The issue is // if we run the staging branch and get interfaces using FindOrCreate // then some callbacks don't work. I assume this is because these interfaces // have already been initialized using the old appid pipe, but since I // can't see inside Steam this is just a gut feeling. Either way using // CreateInterface doesn't seem to have caused any fires, so we'll just use that. // // // var pipe = SteamAPI.GetHSteamPipe(); // Self = SteamInternal.CreateInterface(InterfaceName); if (Self == IntPtr.Zero) { var user = SteamAPI.GetHSteamUser(); Self = SteamInternal.FindOrCreateUserInterface(user, InterfaceName); } if (Self == IntPtr.Zero) { throw new System.Exception($"Couldn't find interface {InterfaceName}"); } VTable = Marshal.ReadIntPtr(Self, 0); if (Self == IntPtr.Zero) { throw new System.Exception($"Invalid VTable for {InterfaceName}"); } InitInternals(); SteamClient.WatchInterface(this); }
public SteamInterface(bool server = false) { // // If teh client isn't initialized but the server is, // try to open this interface in server mode // if (!SteamClient.IsValid && SteamServer.IsValid) { server = true; } var hUser = server ? SteamGameServer.GetHSteamUser() : SteamAPI.GetHSteamUser(); if (hUser == 0) { throw new System.Exception("Steamworks is uninitialized"); } Self = server ? SteamInternal.FindOrCreateGameServerInterface(hUser, InterfaceName) : SteamInternal.FindOrCreateUserInterface(hUser, InterfaceName); if (Self == IntPtr.Zero) { throw new System.Exception($"Couldn't find interface {InterfaceName} (server:{server})"); } VTable = Marshal.ReadIntPtr(Self, 0); if (Self == IntPtr.Zero) { throw new System.Exception($"Invalid VTable for {InterfaceName}"); } InitInternals(); }
/// <summary> /// Initialize the steam server. /// If <paramref name="asyncCallbacks"/> is <see langword="false"/> you need to call <see cref="RunCallbacks"/> manually every frame. /// </summary> public static void Init(AppId appid, SteamServerInit init, bool asyncCallbacks = true) { if (IsValid) { throw new System.Exception("Calling SteamServer.Init but is already initialized"); } uint ipaddress = 0; // Any Port if (init.IpAddress != null) { ipaddress = Utility.IpToInt32(init.IpAddress); } System.Environment.SetEnvironmentVariable("SteamAppId", appid.ToString()); System.Environment.SetEnvironmentVariable("SteamGameId", appid.ToString()); var secure = (int)(init.Secure ? 3 : 2); // // Get other interfaces // if (!SteamInternal.GameServer_Init(ipaddress, 0, init.GamePort, init.QueryPort, secure, init.VersionString)) { throw new System.Exception($"InitGameServer returned false ({ipaddress},{0},{init.GamePort},{init.QueryPort},{secure},\"{init.VersionString}\")"); } // // Dispatch is responsible for pumping the // event loop. // Dispatch.Init(); Dispatch.ServerPipe = SteamGameServer.GetHSteamPipe(); AddInterface <SteamServer>(); AddInterface <SteamUtils>(); AddInterface <SteamNetworking>(); AddInterface <SteamServerStats>(); //AddInterface<ISteamHTTP>(); AddInterface <SteamInventory>(); AddInterface <SteamUGC>(); AddInterface <SteamApps>(); AddInterface <SteamNetworkingUtils>(); AddInterface <SteamNetworkingSockets>(); // // Initial settings // AdvertiseServer = true; MaxPlayers = 32; BotCount = 0; Product = $"{appid.Value}"; ModDir = init.ModDir; GameDescription = init.GameDescription; Passworded = false; DedicatedServer = init.DedicatedServer; if (asyncCallbacks) { // // This will keep looping in the background every 16 ms // until we shut down. // Dispatch.LoopServerAsync(); } }
/// <summary> /// Initialize the steam server. /// If asyncCallbacks is false you need to call RunCallbacks manually every frame. /// </summary> public static void Init(AppId appid, SteamServerInit init, bool asyncCallbacks = true) { uint ipaddress = 0; // Any Port if (init.SteamPort == 0) { init = init.WithRandomSteamPort(); } if (init.IpAddress != null) { ipaddress = Utility.IpToInt32(init.IpAddress); } System.Environment.SetEnvironmentVariable("SteamAppId", appid.ToString()); System.Environment.SetEnvironmentVariable("SteamGameId", appid.ToString()); var secure = (int)(init.Secure ? 3 : 2); // // Get other interfaces // if (!SteamInternal.GameServer_Init(ipaddress, init.SteamPort, init.GamePort, init.QueryPort, secure, init.VersionString)) { throw new System.Exception($"InitGameServer returned false ({ipaddress},{init.SteamPort},{init.GamePort},{init.QueryPort},{secure},\"{init.VersionString}\")"); } // // Dispatch is responsible for pumping the // event loop. // Dispatch.Init(); Dispatch.ServerPipe = SteamGameServer.GetHSteamPipe(); Console.WriteLine($"Dispatch.ServerPipe = {Dispatch.ServerPipe.Value}"); AddInterface <SteamServer>(); AddInterface <SteamNetworkingUtils>(); AddInterface <SteamNetworkingSockets>(); // // Initial settings // AutomaticHeartbeats = true; MaxPlayers = 32; BotCount = 0; Product = $"{appid.Value}"; ModDir = init.ModDir; GameDescription = init.GameDescription; Passworded = false; DedicatedServer = init.DedicatedServer; InstallEvents(); if (asyncCallbacks) { // // This will keep looping in the background every 16 ms // until we shut down. // Dispatch.LoopServerAsync(); } }