예제 #1
0
        public static void LoadFriends() //https://github.com/waylaidwanderer/Mist/tree/master/SteamBot
        {
            ListFriends.Clear();
            List <SteamID> steamIdList = new List <SteamID>();

            Console.WriteLine("[" + Program.BOTNAME + "] - Loading all friends...");
            for (int index = 0; index < steamFriends.GetFriendCount(); ++index)
            {
                steamIdList.Add(steamFriends.GetFriendByIndex(index));
                Thread.Sleep(25);
            }
            for (int index = 0; index < steamIdList.Count; ++index)
            {
                SteamID steamId = steamIdList[index];
                if (steamFriends.GetFriendRelationship(steamId) == EFriendRelationship.Friend)
                {
                    string friendPersonaName = steamFriends.GetFriendPersonaName(steamId);
                    string Relationship      = steamFriends.GetFriendRelationship(steamId).ToString();
                    string status            = steamFriends.GetFriendPersonaState(steamId).ToString();
                    ListFriends.Add(friendPersonaName, (ulong)steamId, Relationship, status);
                }
            }
            foreach (ListFriends listFriends in ListFriends.Get(false))
            {
                if (ListFriendRequests.Find(listFriends.SID))
                {
                    Console.WriteLine("[" + Program.BOTNAME + "] - Found friend {0} in list of friend requests, so let's remove the user.", (object)listFriends.Name);
                    ListFriendRequests.Remove(listFriends.SID);
                }
            }
            foreach (ListFriendRequests listFriendRequests in ListFriendRequests.Get())
            {
                if (listFriendRequests.Name == "[unknown]")
                {
                    string friendPersonaName = steamFriends.GetFriendPersonaName((SteamID)listFriendRequests.SteamID);
                    ListFriendRequests.Remove(listFriendRequests.SteamID);
                    ListFriendRequests.Add(friendPersonaName, listFriendRequests.SteamID, "Offline");
                }
                if (listFriendRequests.Name == "")
                {
                    string friendPersonaName = steamFriends.GetFriendPersonaName((SteamID)listFriendRequests.SteamID);
                    ListFriendRequests.Remove(listFriendRequests.SteamID);
                    ListFriendRequests.Add(friendPersonaName, listFriendRequests.SteamID, "Offline");
                }
            }
            Console.WriteLine("[" + Program.BOTNAME + "] - Done! {0} friends.", (object)ListFriends.Get(false).Count);
            FriendsLoaded = true;
        }
예제 #2
0
        /// <summary>
        /// Check if any of the current user's friends play this game and add the lobby to the server list if they do.
        /// </summary>
        private void GetFriendGamesList()
        {
            // Get the number of regular friends of the current local user
            var friendCount = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate);

            if (friendCount == -1)
            {
                return;
            }

            for (int i = 0; i < friendCount; ++i)
            {
                // Get the Steam ID of the friend
                var friendSteamId = SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate);

                // Get what game the friend is playing
                FriendGameInfo_t gameInfo;
                if (SteamFriends.GetFriendGamePlayed(friendSteamId, out gameInfo))
                {
                    // If they are playing this game as well then get their lobby id
                    if (gameInfo.m_gameID.AppID() == SteamUtils.GetAppID())
                    {
                        AddServer(gameInfo.m_steamIDLobby);
                    }
                }
            }
        }
예제 #3
0
        public static void RequestLobbies()
        {
            if (!SteamManager.Initialized)
            {
                Logger.Error("CONNECTION FAILED");
                return;
            }
            Logger.Debug($"Requesting list of all lobbies from steam");

            LobbyData.Clear();
            MultiplayerListing.refreshLobbyList();

            SteamMatchmaking.AddRequestLobbyListFilterSlotsAvailable(1);
            SteamMatchmaking.AddRequestLobbyListStringFilter("version", PACKET_VERSION, ELobbyComparison.k_ELobbyComparisonEqual);
            SteamAPICall_t apiCall = SteamMatchmaking.RequestLobbyList();

            OnLobbyMatchListCallResult.Set(apiCall);

            int cFriends = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate);

            for (int i = 0; i < cFriends; i++)
            {
                FriendGameInfo_t friendGameInfo;
                CSteamID         steamIDFriend = SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate); SteamFriends.GetFriendGamePlayed(steamIDFriend, out friendGameInfo);
                if (friendGameInfo.m_gameID == GetGameID() && friendGameInfo.m_steamIDLobby.IsValid())
                {
                    SteamMatchmaking.RequestLobbyData(friendGameInfo.m_steamIDLobby);
                }
            }
        }
예제 #4
0
        static void OnFriendsList(SteamFriends.FriendsListCallback callback)
        {
            // at this point, the client has received it's friends list

            int friendCount = steamFriends.GetFriendCount();

            Console.WriteLine("We have {0} friends", friendCount);

            for (int x = 0; x < friendCount; x++)
            {
                // steamids identify objects that exist on the steam network, such as friends, as an example
                SteamID steamIdFriend = steamFriends.GetFriendByIndex(x);

                // we'll just display the STEAM_ rendered version
                Console.WriteLine("Friend: {0}", steamIdFriend.Render());
            }

            // we can also iterate over our friendslist to accept or decline any pending invites

            foreach (var friend in callback.FriendList)
            {
                if (friend.Relationship == EFriendRelationship.RequestRecipient)
                {
                    // this user has added us, let's add him back
                    steamFriends.AddFriend(friend.SteamID);
                }
            }
        }
예제 #5
0
    // Update is called once per frame

    public void ListFriends()
    {
        int n = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate);

        FriendStatus = new FriendStatusID[n];

        for (int i = 0; i < n; i++)
        {
            FriendStatus[i].id     = SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate);
            FriendStatus[i].status = (int)SteamFriends.GetFriendPersonaState(SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate));

            var  fgi         = new FriendGameInfo_t();
            bool StoGiocando = SteamFriends.GetFriendGamePlayed(SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate), out fgi);

            FriendStatus[i].game = StoGiocando ? 1 : 0;
        }

        FriendStatus = FriendStatus.OrderByDescending(go => go.game).ThenByDescending(go => go.status).ToArray();



        for (int i = 0; i < n; i++) // Each RoomInfo "game" in the amount of games created "rooms" display the fallowing.
        {
            friendsList.Add((GameObject)Instantiate(FriendListButton));
            friendsList[friendsAmount].transform.SetParent(FriendListPanel.transform);
            friendsList[friendsAmount].GetComponent <RectTransform>().transform.localScale = new Vector3(1, 1, 1);



            friendsList[friendsAmount].GetComponent <FriendButton>().m_Friend = FriendStatus[i].id;
            friendsAmount++;
        }
        contatoreFriends = 0;
    }
예제 #6
0
    // Token: 0x0600096D RID: 2413 RVA: 0x0004553C File Offset: 0x0004373C
    private void RequestFriendGames()
    {
        this.m_friendServers.Clear();
        this.m_requestedFriendGames.Clear();
        int num = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate);

        if (num == -1)
        {
            ZLog.Log("GetFriendCount returned -1, the current user is not logged in.");
            num = 0;
        }
        for (int i = 0; i < num; i++)
        {
            CSteamID         friendByIndex     = SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate);
            string           friendPersonaName = SteamFriends.GetFriendPersonaName(friendByIndex);
            FriendGameInfo_t friendGameInfo_t;
            if (SteamFriends.GetFriendGamePlayed(friendByIndex, out friendGameInfo_t) && friendGameInfo_t.m_gameID == (CGameID)((ulong)SteamManager.APP_ID) && friendGameInfo_t.m_steamIDLobby != CSteamID.Nil)
            {
                ZLog.Log("Friend is in our game");
                this.m_requestedFriendGames.Add(new KeyValuePair <CSteamID, string>(friendGameInfo_t.m_steamIDLobby, friendPersonaName));
                SteamMatchmaking.RequestLobbyData(friendGameInfo_t.m_steamIDLobby);
            }
        }
        this.m_serverListRevision++;
    }
예제 #7
0
    void Start()
    {
        Callback <P2PSessionRequest_t> .Create((cb) =>
        {
            SteamNetworking.AcceptP2PSessionWithUser(cb.m_steamIDRemote);

            if (!others.ContainsKey(cb.m_steamIDRemote.m_SteamID))
            {
                others.Add(cb.m_steamIDRemote.m_SteamID, cb.m_steamIDRemote);
            }
        });

        temp1024 = GamePacket.CreatePacket(1024);
        temp768  = GamePacket.CreatePacket(768);
        temp512  = GamePacket.CreatePacket(512);
        temp256  = GamePacket.CreatePacket(256);

        int numberOfFriends = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagAll);

        for (int i = 0; i < numberOfFriends; i++)
        {
            CSteamID SteamId = SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagAll);
            for (int j = 0; j < othersToConnect.Length; j++)
            {
                if (othersToConnect[j] == SteamFriends.GetFriendPersonaName(SteamId) && !others.ContainsKey(SteamId.m_SteamID))
                {
                    others.Add(SteamId.m_SteamID, SteamId);
                    break;
                }
            }
        }
    }
예제 #8
0
        public static void FindFriendLobbies(Action <bool> OnFind)
        {
            s_OnFindLobbies       = OnFind;
            s_nLobbiesFound       = 0;
            s_nFriendLobbiesFound = 0;

            //if ( SteamMatchmaking() == 0 ) return;
            InteropHelp.TestIfAvailableClient();

            int cFriends = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate);

            for (int i = 0; i < cFriends; i++)
            {
                FriendGameInfo_t friendGameInfo;
                CSteamID         steamIDFriend = (CSteamID)SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate);
                if (SteamFriends.GetFriendGamePlayed(steamIDFriend, out friendGameInfo) && friendGameInfo.m_steamIDLobby.IsValid())
                {
                    m_friendLobbies[s_nFriendLobbiesFound++] = friendGameInfo.m_steamIDLobby;
                    SteamMatchmaking.RequestLobbyData(friendGameInfo.m_steamIDLobby);
                    //int cap = SteamMatchmaking().GetLobbyMemberLimit( friendGameInfo.m_steamIDLobby );
                    //Console.WriteLine("Found friend lobby with capacity {0}", cap);
                }
            }

            if (s_OnFindLobbies != null)
            {
                s_OnFindLobbies(false);
            }
        }
    public void Initialize()
    {
        if (!SteamManager.initializedMain)
        {
            return;
        }

        m_GameRichPresenceJoinRequested = Steamworks.Callback <GameRichPresenceJoinRequested_t> .Create(OnGameRichPresenceJoinRequested);

        m_PersonaStateChange = Steamworks.Callback <PersonaStateChange_t> .Create(OnPersonaStateChange);

        EFriendFlags friendFlags  = EFriendFlags.k_EFriendFlagImmediate;
        int          friendsCount = SteamFriends.GetFriendCount(friendFlags);

        for (int friendIndex = 0; friendIndex < friendsCount; ++friendIndex)
        {
            CSteamID friendSteamId = SteamFriends.GetFriendByIndex(friendIndex, friendFlags);

            if (!friendSteamId.IsValid())
            {
                continue;
            }

            SteamFriend steamFriend = new SteamFriend(friendSteamId);
            m_Friends.Add(friendSteamId, steamFriend);
        }
    }
예제 #10
0
 void PrintAllFriends()
 {
     for (int i = 0; i < SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagAll); i++)
     {
         print(SteamFriends.GetFriendPersonaName(SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagAll)) + " " + SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagAll).m_SteamID);
     }
 }
    // Use this for initialization
    void Start()
    {
        if (SteamManager.Initialized)
        {
            //get My steam name
            if (labelUser)
            {
                labelUser.text = "Current Steam User: " + SteamFriends.GetPersonaName();
            }

            dropdownSteamFriends.ClearOptions();
            int friendCount = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate);

            for (int i = 0; i < friendCount; ++i)
            {
                CSteamID      friendSteamId = SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate);
                string        friendName    = SteamFriends.GetFriendPersonaName(friendSteamId);
                EPersonaState friendState   = SteamFriends.GetFriendPersonaState(friendSteamId);

                Dropdown.OptionData option = new Dropdown.OptionData();
                option.text = friendName;
                if (friendState != EPersonaState.k_EPersonaStateOffline)
                {
                    dropdownSteamFriends.options.Add(option);
                    friendSteamIDs.Add(friendSteamId);
                }
            }
        }
    }
        public override void LoadFriendsList()
        {
            gameServiceFriendsList = new List <GameServiceUserInfo>();

            int friendCount = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate);

            for (int i = 0; i < friendCount; ++i)
            {
                CSteamID         friendSteamId = SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate);
                string           friendName    = SteamFriends.GetFriendPersonaName(friendSteamId);
                EPersonaState    friendState   = SteamFriends.GetFriendPersonaState(friendSteamId);
                FriendGameInfo_t currentGame;


                if (SteamFriends.GetFriendGamePlayed(friendSteamId, out currentGame))
                {
                    if (currentGame.m_gameID == m_GameID)
                    {
                        GameServiceUserInfo friend = new GameServiceUserInfo();
                        friend.NickName = friendName;
                        friend.PlayerId = friendSteamId.GetAccountID().m_AccountID.ToString();
                        friend.Status   = Status.Available;
                        friend.SetAvatarFromTexture2D(GetSmallAvatar(friendSteamId, false));
                        gameServiceFriendsList.Add(friend);
                    }
                }
            }

            RaiseGameServiceEvent(new GameServiceEvent(GameServiceEventType.FriendsListReady));
        }
예제 #13
0
        public static string FakeInvite(string strTargetName, string strConnectString)
        {
            int iFriendCount = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate);

            for (int a = 0; a < iFriendCount; a++)
            {
                CSteamID FriendID = SteamFriends.GetFriendByIndex(a, EFriendFlags.k_EFriendFlagImmediate);

                string strFriendName = SteamFriends.GetFriendPersonaName(FriendID);
                if (strFriendName.Equals(strTargetName))
                {
                    EPersonaState EState = SteamFriends.GetFriendPersonaState(FriendID);
                    if (EState == EPersonaState.k_EPersonaStateOffline || EState == EPersonaState.k_EPersonaStateSnooze)
                    {
                        return("The specified user was either Offline, or on Snooze.\n");
                    }

                    bool bTest = SteamFriends.InviteUserToGame(FriendID, strConnectString);
                    if (bTest)
                    {
                        return("Invite sent with specified launch parameters.\n");
                    }
                    else
                    {
                        return("Failed to send invite with specified launch parameters.\n");
                    }
                }
            }
            return("Failed to find friend, ensure you have them added, and you're supplying the correct name.\n");
        }
예제 #14
0
        public FriendCollection GetFriends()
        {
            EFriendFlags flags = (
                EFriendFlags.k_EFriendFlagImmediate |
                EFriendFlags.k_EFriendFlagRequestingFriendship |
                EFriendFlags.k_EFriendFlagFriendshipRequested
                );
            int friendCount            = SteamFriends.GetFriendCount(flags);
            List <FriendGamer> friends = new List <FriendGamer>(friendCount);

            for (int i = 0; i < friendCount; i += 1)
            {
                CSteamID            id           = SteamFriends.GetFriendByIndex(i, flags);
                EFriendRelationship relationship = SteamFriends.GetFriendRelationship(id);
                EPersonaState       state        = SteamFriends.GetFriendPersonaState(id);
                FriendGameInfo_t    whoCares;
                friends.Add(new FriendGamer(
                                id,
                                SteamFriends.GetFriendPersonaName(id),
                                SteamFriends.GetPlayerNickname(id),
                                state != EPersonaState.k_EPersonaStateOffline,
                                SteamFriends.GetFriendGamePlayed(id, out whoCares),
                                state == EPersonaState.k_EPersonaStateAway,
                                state == EPersonaState.k_EPersonaStateBusy,
                                relationship == EFriendRelationship.k_EFriendRelationshipRequestRecipient,
                                relationship == EFriendRelationship.k_EFriendRelationshipRequestInitiator
                                ));
            }
            return(new FriendCollection(friends));
        }
예제 #15
0
        public static Dictionary <CSteamID, string[]> GetOnlineFriends()
        {
            var friends = new Dictionary <CSteamID, string[]>(); if (!SteamManager.Initialized)

            {
                Logger.Error("CONNECTION FAILED");
                return(friends);
            }
            try
            {
                int friendCount = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate);
                for (int i = 0; i < friendCount; ++i)
                {
                    CSteamID      friendSteamId = SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate);
                    string        friendName    = SteamFriends.GetFriendPersonaName(friendSteamId);
                    EPersonaState friendState   = SteamFriends.GetFriendPersonaState(friendSteamId);
                    if (friendState != EPersonaState.k_EPersonaStateOffline)
                    {
                        var  fgi = new FriendGameInfo_t();
                        bool ret = SteamFriends.GetFriendGamePlayed(friendSteamId, out fgi);
                        friends.Add(friendSteamId, new string[] { friendName, "" + fgi.m_gameID });
                    }
                }
            } catch (Exception e)
            {
                Logger.Error(e);
            }
            return(friends);
        }
예제 #16
0
    void calculateTab()
    {
        //Узнаем общее количество друзей
        int friends_max = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate);

        if (friends_max > 0)
        {
            //получаем массив друзей
            CSteamID[] friends_ID = new CSteamID[friends_max];
            for (int num_now = 0; num_now < friends_max; num_now++)
            {
                friends_ID[num_now] = SteamFriends.GetFriendByIndex(num_now, EFriendFlags.k_EFriendFlagImmediate);
            }

            //Перебираем и добавляем пользователя в список
            for (int num_now = 0; num_now < friends_ID.Length; num_now++)
            {
                AddZvenoSteamID(friends_ID[num_now]);
            }
            AddZvenoSteamID(SteamUser.GetSteamID());
        }
        if (friends_max == 0)
        {
            need_re_update = true;
        }
    }
예제 #17
0
 public static IEnumerable <SteamID> GetFriends(this SteamFriends friends)
 {
     // yuk
     for (int i = 0; i < friends.GetFriendCount(); i++)
     {
         yield return(friends.GetFriendByIndex(i));
     }
 }
예제 #18
0
파일: Bot.cs 프로젝트: einsteinsci/SteamBot
        public void ResetFriendsList()
        {
            _friends = new List <SteamID>();
            for (int i = 0; i < SteamFriends.GetFriendCount(); i++)
            {
                _friends.Add(SteamFriends.GetFriendByIndex(i));
            }

            Log.Debug("Created friends list.");
        }
예제 #19
0
        void GetFriends(EFriendFlags flags)
        {
            int numFriends = SteamFriends.GetFriendCount(flags);

            for (int i = 0; i < numFriends; ++i)
            {
                var friend = CreateSteamPlayer(SteamFriends.GetFriendByIndex(i, flags));
                _friends.Add(friend);
                _friendSet.Add(friend.id.uuid);
            }
        }
예제 #20
0
        public List <ulong> GetFriends()
        {
            var ret = new List <ulong>();
            var cnt = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate);

            for (int i = 0; i < cnt; i++)
            {
                ret.Add(SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate).m_SteamID);
            }
            return(ret);
        }
        private string GetFriends()
        {
            int    friendCount = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagAll);
            string friends     = SteamUser.GetSteamID().m_SteamID.ToString() + ",";

            for (int i = 0; i < friendCount; i++)
            {
                CSteamID friendSteamId = SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate);
                friends = friends + friendSteamId.m_SteamID.ToString() + ",";
            }
            return(friends);
        }
예제 #22
0
        public override void OnEnter()
        {
            steamIDList.Resize(0);
            int count = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate);

            for (int i = 0; i < count; i++)
            {
                CSteamID ID = SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate);
                steamIDList.Resize(steamIDList.Length + 1);
                steamIDList.Set(steamIDList.Length - 1, ID.ToString());
            }
            Finish();
        }
예제 #23
0
        // Token: 0x06000005 RID: 5 RVA: 0x0000235C File Offset: 0x0000055C
        private static void GetFriendList()
        {
            int friendCount = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate);

            Console.WriteLine(friendCount);
            for (int i = 0; i < friendCount; i++)
            {
                CSteamID friendByIndex = SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate);
                Console.WriteLine(friendByIndex);
                Console.WriteLine(SteamFriends.GetFriendPersonaName(friendByIndex));
            }
            Program.finished = true;
        }
예제 #24
0
        private void CreateFriendsListIfNecessary()
        {
            if (friends != null)
            {
                return;
            }

            friends = new List <SteamID>();
            for (int i = 0; i < SteamFriends.GetFriendCount(); i++)
            {
                friends.Add(SteamFriends.GetFriendByIndex(i));
            }
        }
예제 #25
0
        public override void RequestFriendLobbyData()
        {
            EFriendFlags flags = EFriendFlags.k_EFriendFlagImmediate;
            int          count = SteamFriends.GetFriendCount(flags);

            for (int i = 0; i < count; i++)
            {
                if (SteamFriends.GetFriendGamePlayed(SteamFriends.GetFriendByIndex(i, flags), out FriendGameInfo_t gameInfo) && !(gameInfo.m_gameID.AppID() != SteamUtils.GetAppID()))
                {
                    SteamMatchmaking.RequestLobbyData(gameInfo.m_steamIDLobby);
                }
            }
        }
예제 #26
0
    /// <summary>
    /// Gets the steam friendslist
    /// </summary>
    /// <returns>a list of friends list names</returns>
    public string[] getfriendslist()
    {
        friendslisttemp.Clear();
        int friendscount = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagAll);

        string[] output = new string[friendscount];
        for (int i = 0; i < friendscount; i++)
        {
            output[i] = SteamFriends.GetFriendPersonaName(SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagAll));
            friendslisttemp.Add(output[i]);
        }
        return(output);
    }
예제 #27
0
        private void chatObjDropDownEvent(object sender, EventArgs e)
        {
            SteamFriends         steamFriend = this.core.Steam.SteamFriends;
            BindingList <string> chatObjSrc  = new BindingList <string>();

            this.userList.Clear();
            this.userList.Add(null);
            chatObjSrc.Add("######## Groups #######");
            for (int i = 0; i < steamFriend.GetClanCount(); i++)
            {
                this.userList.Add(steamFriend.GetClanByIndex(i));
                chatObjSrc.Add(steamFriend.GetClanName(steamFriend.GetClanByIndex(i)));
            }
            this.userList.Add(null);
            chatObjSrc.Add("####### online friends #######");
            for (int i = 0; i < this.core.Steam.SteamFriends.GetFriendCount(); i++)
            {
                if (this.core.Steam.SteamFriends.GetFriendPersonaState(steamFriend.GetFriendByIndex(i)) != EPersonaState.Offline)
                {
                    this.userList.Add(steamFriend.GetFriendByIndex(i));
                    chatObjSrc.Add(steamFriend.GetFriendPersonaName(this.core.Steam.SteamFriends.GetFriendByIndex(i)));
                }
            }
            if (this.showOfflineFriendCheck.Checked)
            {
                this.userList.Add(null);
                chatObjSrc.Add("####### offline friends #######");
                for (int i = 0; i < this.core.Steam.SteamFriends.GetFriendCount(); i++)
                {
                    if (this.core.Steam.SteamFriends.GetFriendPersonaState(steamFriend.GetFriendByIndex(i)) == EPersonaState.Offline)
                    {
                        this.userList.Add(steamFriend.GetFriendByIndex(i));
                        chatObjSrc.Add(steamFriend.GetFriendPersonaName(this.core.Steam.SteamFriends.GetFriendByIndex(i)));
                    }
                }
            }
            this.SelectChatObjCombo.DataSource = chatObjSrc;
        }
예제 #28
0
 private List <ulong> GetFriends()
 {
     if (IsOnline)
     {
         var ret = new List <ulong>();
         var cnt = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate);
         for (var i = 0; i < cnt; i++)
         {
             ret.Add(SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate).m_SteamID);
         }
         return(ret);
     }
     return(null);
 }
예제 #29
0
        private void UpdateSteam()
        {
            if (Multiplayer.Clock.ElapsedMilliseconds - lastFriendUpdate < 2000)
            {
                return;
            }

            friends.Clear();

            int friendCount = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate);

            for (int i = 0; i < friendCount; i++)
            {
                CSteamID friend = SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate);

                SteamFriends.GetFriendGamePlayed(friend, out FriendGameInfo_t friendGame);
                bool playingRimworld = friendGame.m_gameID.AppID() == SteamIntegration.RimWorldAppId;

                if (!playingRimworld)
                {
                    continue;
                }

                int    avatar       = SteamFriends.GetSmallFriendAvatar(friend);
                string username     = SteamFriends.GetFriendPersonaName(friend);
                string connectValue = SteamFriends.GetFriendRichPresence(friend, "connect");

                CSteamID serverHost = CSteamID.Nil;
                if (connectValue != null &&
                    connectValue.Contains(SteamIntegration.SteamConnectStart) &&
                    ulong.TryParse(connectValue.Substring(SteamIntegration.SteamConnectStart.Length), out ulong hostId))
                {
                    serverHost = (CSteamID)hostId;
                }

                friends.Add(new SteamPersona()
                {
                    id              = friend,
                    avatar          = avatar,
                    username        = username,
                    playingRimworld = playingRimworld,
                    serverHost      = serverHost,
                });
            }

            friends.SortByDescending(f => f.serverHost != CSteamID.Nil);

            lastFriendUpdate = Multiplayer.Clock.ElapsedMilliseconds;
        }
예제 #30
0
파일: Bot.cs 프로젝트: xaustinx/Mist
        public void LoadFriends()
        {
            ListFriends.Clear();
            var steamListFriends = new List <SteamID>();

            Console.WriteLine("Loading all friends...");
            for (int count = 0; count < SteamFriends.GetFriendCount(); count++)
            {
                steamListFriends.Add(SteamFriends.GetFriendByIndex(count));
                Thread.Sleep(25);
            }
            for (int count = 0; count < steamListFriends.Count; count++)
            {
                var friendID = steamListFriends[count];
                if (SteamFriends.GetFriendRelationship(friendID) == EFriendRelationship.Friend)
                {
                    var friendName     = SteamFriends.GetFriendPersonaName(friendID);
                    var friendNickname = PlayerNicknames.ContainsKey(friendID) ? "(" + PlayerNicknames[friendID] + ")" : "";
                    var friendState    = SteamFriends.GetFriendPersonaState(friendID).ToString();
                    ListFriends.Add(friendName, friendID, friendNickname, friendState);
                }
            }
            foreach (var item in ListFriends.Get())
            {
                if (ListFriendRequests.Find(item.SID))
                {
                    Console.WriteLine("Found friend {0} in list of friend requests, so let's remove the user.", item.Name);
                    // Not a friend request, so let's remove it
                    ListFriendRequests.Remove(item.SID);
                }
            }
            foreach (var item in ListFriendRequests.Get())
            {
                if (item.Name == "[unknown]")
                {
                    string name = SteamFriends.GetFriendPersonaName(item.SteamID);
                    ListFriendRequests.Remove(item.SteamID);
                    ListFriendRequests.Add(name, item.SteamID);
                }
                if (item.Name == "")
                {
                    string name = SteamFriends.GetFriendPersonaName(item.SteamID);
                    ListFriendRequests.Remove(item.SteamID);
                    ListFriendRequests.Add(name, item.SteamID);
                }
            }
            Console.WriteLine("Done! {0} friends.", ListFriends.Get().Count);
        }