public void Awake() { // Do not destroy on scene change. DontDestroyOnLoad(gameObject); // Tell unity what we are running on; Windows, Mac, Console, Potato... Config.ForUnity(Application.platform.ToString()); new Client(AppID); if (Client.Instance == null) { // Failed to 'start steam'. Debug.LogError("Failed to create client instance!"); return; } ServerRequest = Client.Instance.ServerList.Internet(); Client.Instance.Achievements.Refresh(); Client.Instance.Friends.Refresh(); Client.Instance.Screenshots.Trigger(); Client.Instance.Overlay.OpenProfile(Client.Instance.SteamId); SteamFriend first = null; foreach (SteamFriend f in Client.Instance.Friends.AllFriends) { if (first == null || Random.value < 0.2f) { first = f; } Debug.Log(f.Name + ": " + (f.IsOnline ? "Online" : "Offline") + ", playing: " + f.CurrentAppId); } Debug.Log("Avatar for " + first.Name); Facepunch.Steamworks.Image image = Client.Instance.Friends.GetAvatar(Friends.AvatarSize.Small, first.Id); Debug.Log(image.Width + "x" + image.Height + ": " + image.IsLoaded); Texture2D tex = new Texture2D(image.Width, image.Height); for (int x = 0; x < image.Width; x++) { for (int y = 0; y < image.Height; y++) { var c = image.GetPixel(x, (image.Height - 1) - y); tex.SetPixel(x, y, new UnityEngine.Color((float)(c.r / 255f), (float)(c.g / 255f), (float)(c.b / 255f), 1f)); } } tex.Apply(); Image.material.mainTexture = tex; }
IEnumerator Start() { // // Wait for client to start up // while (Client.Instance == null) { yield return(null); } Client.Instance.OnAnyCallback += DebugPrintSteamCallback; YourAvatar.Fetch(Client.Instance.SteamId); // // Request a list of servers // { serverRequest = Client.Instance.ServerList.Internet(); } // // Request a leaderboard // { leaderBoard = Client.Instance.GetLeaderboard("TestLeaderboard", Client.LeaderboardSortMethod.Ascending, Client.LeaderboardDisplayType.Numeric); } // // Chang to random avatar every 20 seconds, to test callbacks // while (true) { ulong steamid = 76561197960279927 + (ulong)UnityEngine.Random.Range(0, 100000); foreach (var a in RandomAvatar) { a.Fetch(steamid); } yield return(new WaitForSeconds(11)); } }
void Start() { // // Don't destroy this when loading new scenes // DontDestroyOnLoad(gameObject); // // Configure for Unity // This is VERY important - call this before // Facepunch.Steamworks.Config.ForUnity(Application.platform.ToString()); // // Create the steam client using Rust's AppId // new Facepunch.Steamworks.Client(252490); // // Make sure we started up okay // if (Client.Instance == null) { Debug.LogError("Error starting Steam!"); return; } // // Request a list of servers // { serverRequest = Client.Instance.ServerList.Internet(); } // // Request a leaderboard // { leaderBoard = Client.Instance.GetLeaderboard("TestLeaderboard", Client.LeaderboardSortMethod.Ascending, Client.LeaderboardDisplayType.Numeric); } }
private static void UpdateServerQuery(ServerList.Request query, Action <Networking.ServerInfo> onServerFound, Action <Networking.ServerInfo> onServerRulesReceived, bool includeUnresponsive) { IEnumerable <ServerList.Server> servers = includeUnresponsive ? new List <ServerList.Server>(query.Responded).Concat(query.Unresponsive) : query.Responded; foreach (ServerList.Server s in servers) { if (!ValidateServerInfo(s)) { continue; } bool responded = query.Responded.Contains(s); if (responded) { DebugConsole.Log(s.Name + " responded to server query."); } else { DebugConsole.Log(s.Name + " did not respond to server query."); } var serverInfo = new ServerInfo() { ServerName = s.Name, Port = s.ConnectionPort.ToString(), IP = s.Address.ToString(), PlayerCount = s.Players, MaxPlayers = s.MaxPlayers, HasPassword = s.Passworded, RespondedToSteamQuery = responded }; serverInfo.PingChecked = true; serverInfo.Ping = s.Ping; if (responded) { s.FetchRules(); } s.OnReceivedRules += (bool rulesReceived) => { if (!rulesReceived || s.Rules == null) { return; } if (s.Rules.ContainsKey("message")) { serverInfo.ServerMessage = s.Rules["message"]; } if (s.Rules.ContainsKey("version")) { serverInfo.GameVersion = s.Rules["version"]; } if (s.Rules.ContainsKey("playercount")) { if (int.TryParse(s.Rules["playercount"], out int playerCount)) { serverInfo.PlayerCount = playerCount; } } if (s.Rules.ContainsKey("contentpackage")) { serverInfo.ContentPackageNames.AddRange(s.Rules["contentpackage"].Split(',')); } if (s.Rules.ContainsKey("contentpackagehash")) { serverInfo.ContentPackageHashes.AddRange(s.Rules["contentpackagehash"].Split(',')); } if (s.Rules.ContainsKey("contentpackageurl")) { serverInfo.ContentPackageWorkshopUrls.AddRange(s.Rules["contentpackageurl"].Split(',')); } if (s.Rules.ContainsKey("usingwhitelist")) { serverInfo.UsingWhiteList = s.Rules["usingwhitelist"] == "True"; } if (s.Rules.ContainsKey("modeselectionmode")) { if (Enum.TryParse(s.Rules["modeselectionmode"], out SelectionMode selectionMode)) { serverInfo.ModeSelectionMode = selectionMode; } } if (s.Rules.ContainsKey("subselectionmode")) { if (Enum.TryParse(s.Rules["subselectionmode"], out SelectionMode selectionMode)) { serverInfo.SubSelectionMode = selectionMode; } } if (s.Rules.ContainsKey("allowspectating")) { serverInfo.AllowSpectating = s.Rules["allowspectating"] == "True"; } if (s.Rules.ContainsKey("allowrespawn")) { serverInfo.AllowRespawn = s.Rules["allowrespawn"] == "True"; } if (s.Rules.ContainsKey("voicechatenabled")) { serverInfo.VoipEnabled = s.Rules["voicechatenabled"] == "True"; } if (s.Rules.ContainsKey("traitors")) { if (Enum.TryParse(s.Rules["traitors"], out YesNoMaybe traitorsEnabled)) { serverInfo.TraitorsEnabled = traitorsEnabled; } } if (s.Rules.ContainsKey("gamestarted")) { serverInfo.GameStarted = s.Rules["gamestarted"] == "True"; } if (serverInfo.ContentPackageNames.Count != serverInfo.ContentPackageHashes.Count || serverInfo.ContentPackageHashes.Count != serverInfo.ContentPackageWorkshopUrls.Count) { //invalid contentpackage info serverInfo.ContentPackageNames.Clear(); serverInfo.ContentPackageHashes.Clear(); } onServerRulesReceived(serverInfo); }; onServerFound(serverInfo); } query.Responded.Clear(); }