Извините за мой английский.Когда я запускаю игру ARK Survival Evolved и подключаюсь к серверу, я могу получать идентификаторы игроков и отслеживать изменения, если кто-то входит или выходит.Ниже приведен код, который дает мне эту информацию.
#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)
возвращает количество игроков, которые отображаются в оверлее в «текущей игре».
Если я завершу игру через диспетчер задач, соединение продолжится, и я продолжу получать идентификаторы и отслеживать изменения!Поэтому наличие запущенной игры необязательно.
Как я могу получить список идентификаторов игроков на сервере, не запуская игру?Я знаю IP и порт.
Функция
SteamUser()->TerminateGameConnection(1438555551, 7783);
разрывает соединение с оверлеем (friendCount == 0).Однако обратная функция
SteamUser()->InitiateGameConnection(pAuthBlob, cbMaxAuthBlob, k_steamIDNonSteamGS, 1438555551, 7783, true);
не подключается обратно (возможно, третий аргумент неверен).
Есть идеи?