Нужен именно Steam Id до принятия матча или загрузки карты/лобби. Как было в овервульфе.
Заранее спасибо за ответ. Если выгорит, то выложу исходники своего овервульфа.
там вроде незадолго до того как игру находит от гс прилетает протобаф пакет с лобби(UpdateMultiple по-моему) там лобби лежит. в общем консоль открой игру ищи и смотри че там высирает, пакет должен быть большой(сотни/тысячи байт вроде). вот его распарси и вот тебе твое лобби
Можешь у мя глянуть, конечно оно не дописано, но думаю то что тебе надо найдёшь там
auto& gc = CGCClient::get( );
if ( &gc && gc.GetLobbyManager( )->lobby_data )
референс это ненулевой указатель. не надо его чекать на ноль(подразумевается что он уже чекнут гдето на ноль и соответствующие действия уже приняты). если тебе надо его чекать на ноль - значит это не референс, не возвращай референс с get, возвращай указатель.
void COverWolf::process_lobby_members(CGCClient& gc)//функция нам заявляет что она не собирается проверять на ноль это обязанность того кто вызывает. еще лучше сразу lobby_data референсом(т.е. чекнуть перед вызовом) передать вместо гс так как тут гс токо для лобби даты нужен
{
if (gc.GetLobbyManager( )->lobby_data ) ...
}
...
if(CGCClient* gc = CGCClient::get(); gc != nullptr)
overwolf.process_lobby_members(*gc);
указатель это специальная фиговина которая тебе говорит "ПРОВЕРЬТЕ МЕНЯ НА НОЛЬ ПРЕЖДЕ ЧЕМ ЧТО-ТО СО МНОЙ ДЕЛАТЬ". референс говорит наоборот что проверять не надо проверка уже была перед тем как указатель в референс звездочкой переделали. так вот если твой гет возвращает то что нужно протом проверить на ноль то это указатель а не референс
также последний символ в строке это .back() (передний это .front())
if ( url[ url.size( ) - 1 ] == ',' ) url.pop_back( );
->
if ( url.back() == ',' ) url.pop_back( );
ну и перед тем как бек/фронт(или [0] или [сайз - 1]) использовать нужно убедиться что сайз не равен 0(т.е. !url.empty()). тут то у тебя конечно оно не может быть нулем(т.к. у тебя std::string url = "
"), но просто на будущее/другим пишу мало ли в другом месте напишешь где строка может быть нулевая(например цикл 0 итераций пробежался и не добавил ваще нихуя в строку которая изначально пустая была)
ну и если curl собираешь именно с openssl(на будущее/для других)(хз насчет других бекендов), то у опенссл в ините хуета есть вот такая, и она естественно при отсутствии дллки в PEB(ммап и тд) будет фейлить и опенссл будет выебываться, надо компилить с OPENSSL_NO_PINSHARED например
#if !defined(OPENSSL_USE_NODELETE) \
&& !defined(OPENSSL_NO_PINSHARED)
# if defined(DSO_WIN32) && !defined(_WIN32_WCE)
{
HMODULE handle = NULL;
BOOL ret;
/* We don't use the DSO route for WIN32 because there is a better way */
ret = GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
| GET_MODULE_HANDLE_EX_FLAG_PIN,
(void *)&base_inited, &handle);
OSSL_TRACE1(INIT,
"ossl_init_load_crypto_nodelete: "
"obtained DSO reference? %s\n",
(ret == TRUE ? "No!" : "Yes."));
return (ret == TRUE) ? 1 : 0;
}