-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathSteamCBHandler.cpp
More file actions
79 lines (67 loc) · 2.79 KB
/
SteamCBHandler.cpp
File metadata and controls
79 lines (67 loc) · 2.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include "SteamCBHandler.h"
#include "steam.h"
//defined in dllmain.cpp
extern void nlog(const char* str, ...);
CSteamCBHandler* gSteamCBHandler = NULL;
CSteamCBHandler* SteamCBHandler() { return gSteamCBHandler; }
void CSteamCBHandler::RequestEncryptedAppTicket(uint8_t *encryptedData, size_t encryptedDataLen)
{
SteamAPICall_t hSteamAPICall = SteamUser()->RequestEncryptedAppTicket(encryptedData, encryptedDataLen);
m_SteamCallResultEncryptedAppTicket.Set(hSteamAPICall, this, &CSteamCBHandler::OnRequestEncryptedAppTicket);
}
void CSteamCBHandler::OnP2PSessionRequest(P2PSessionRequest_t* pRequest) {
nlog("User %llu is requesting a P2P session with us", pRequest->m_steamIDRemote.ConvertToUint64());
SteamNetworking()->AcceptP2PSessionWithUser(pRequest->m_steamIDRemote);
}
void CSteamCBHandler::OnUserStatsReceived(UserStatsReceived_t* pReceived) {
nlog("Stats were received for %llu = %i", pReceived->m_steamIDUser, pReceived->m_eResult);
}
void CSteamCBHandler::OnRequestEncryptedAppTicket(EncryptedAppTicketResponse_t* pEncryptedAppTicketResponse, bool bIOFailure)
{
if (pEncryptedAppTicketResponse->m_eResult == k_EResultOK)
{
SteamUser()->GetEncryptedAppTicket(encryptedAppTicket, sizeof(encryptedAppTicket), &encryptedAppTicketSize);
nlog("Got Steam encrypted appticket of size %i", encryptedAppTicketSize);
}
else
{
nlog("Failed to get encrypted app ticket (response %i)", pEncryptedAppTicketResponse->m_eResult);
}
}
void CSteamCBHandler::OnGameRichPresenceJoinRequested(GameRichPresenceJoinRequested_t* pCallback)
{
nlog("Steam invite (rich presence) accepted");
pendingInvite = pCallback->m_steamIDFriend;
hasPendingInvite = true;
}
void CSteamCBHandler::OnGameLobbyJoinRequested(GameLobbyJoinRequested_t* pCallback)
{
nlog("Steam invite (lobby) accepted");
pendingInvite = pCallback->m_steamIDFriend;
hasPendingInvite = true;
}
void CSteamCBHandler::__OnValidateAuthTicket(ValidateAuthTicketResponse_t* pCallback)
{
nlog("Auth ticket validation for %llu resulted in state %u", pCallback->m_SteamID.ConvertToUint64(), pCallback->m_eAuthSessionResponse);
SteamUser()->EndAuthSession(pCallback->m_SteamID); // we do not care about VAC and we do not care about *exploit here*
if (OnValidateAuthTicket)
{
OnValidateAuthTicket(pCallback);
}
}
void CSteamCBHandler::OnLobbyEnter(LobbyEnter_t* pCallback)
{
auto ownerXuid = SteamMatchmaking()->GetLobbyOwner(pCallback->m_ulSteamIDLobby); // <3
if (ownerXuid != SteamUser()->GetSteamID())
{
SteamMatchmaking()->LeaveLobby(pCallback->m_ulSteamIDLobby);
SteamMatchmaking()->CreateLobby(k_ELobbyTypePublic, 18);
}
else
{
char xuid[64]{ 0 };
sprintf(xuid, "%llu", SteamUser()->GetSteamID().ConvertToUint64());
SteamMatchmaking()->SetLobbyData(pCallback->m_ulSteamIDLobby, "connect_host", xuid);
gLobbyID = pCallback->m_ulSteamIDLobby;
}
}