如何在不启动游戏的情况下获取服务器上的玩家ID列表?

时间:2019-03-03 08:57:50

标签: steam steamworks-api

对不起,我的英语。 当我启动ARK Survival Evolved游戏并连接到服务器时,我可以接收玩家ID并跟踪有人进出的变化。 下面的代码为我提供了此信息。

#include <windows.h>
#include <iostream>
#include "include\steam\steam_api.h"
#pragma comment(lib, "steam_api.lib")
using namespace std;

int main(int argc, char* argv[])
{
    if(!SteamAPI_Init()) {
        return 0;
    } cout << "\n";

    while(true) {
        int friendCount = SteamFriends()->GetFriendCount(0x10);
        cout << "friendCount: " << friendCount << "\n";
        for (int i = 0; i < friendCount; ++i) {
            CSteamID playerID = SteamFriends()->GetFriendByIndex(i, 0x10);
            long long steamID64 = playerID.ConvertToUint64();
            //...
        }
        //...
        Sleep(500);
    }
    return 0;
}

功能

SteamFriends()->GetFriendCount(0x10)

返回“当前游戏”叠加层中显示的玩家人数。

如果我通过任务管理器终止游戏,则连接将继续,并且我将继续接收ID并跟踪更改!因此,正在运行的游戏是可选的。

如何在不启动游戏的情况下获取服务器上的玩家ID列表?我知道IP和端口。

功能

SteamUser()->TerminateGameConnection(1438555551, 7783);

断开与覆盖的连接(friendCount == 0)。但是,反函数

SteamUser()->InitiateGameConnection(pAuthBlob, cbMaxAuthBlob, k_steamIDNonSteamGS, 1438555551, 7783, true);

不重新连接(也许第三个参数不正确)。

有什么想法吗?

0 个答案:

没有答案