CSteam3Server::OnValidateAuthTicketResponse
0x002112d0 · 490 bytes · __thiscall
_ZN13CSteam3Server28OnValidateAuthTicketResponseEP28ValidateAuthTicketResponse_t.part.26
Decompiled
undefined (2 params)
/* CSteam3Server::OnValidateAuthTicketResponse(ValidateAuthTicketResponse_t*) [clone .part.26] */
void __thiscall
CSteam3Server::OnValidateAuthTicketResponse
(CSteam3Server *this,ValidateAuthTicketResponse_t *param_1)
{
code *pcVar1;
int iVar2;
char cVar3;
CSteam3Server *in_EAX;
CBaseClient *pCVar4;
int *piVar5;
netadr_s *pnVar6;
CSteamID *in_EDX;
undefined1 *puVar7;
int in_GS_OFFSET;
USERID_s local_230 [16];
char local_220 [512];
int local_20;
local_20 = *(int *)(in_GS_OFFSET + 0x14);
pCVar4 = (CBaseClient *)ClientFindFromSteamID(in_EAX,in_EDX);
puVar7 = &stack0xfffffda4;
if (pCVar4 != (CBaseClient *)0x0) {
if (*(int *)(in_EDX + 8) == 0) {
(**(code **)(*(int *)pCVar4 + 0x18))();
cVar3 = Filter_IsUserBanned(local_230);
if (cVar3 == '\0') {
cVar3 = CheckForDuplicateSteamID(in_EAX,pCVar4);
iVar2 = *(int *)pCVar4;
if (cVar3 == '\0') {
(**(code **)(iVar2 + 0x2c))();
(**(code **)(*(int *)pCVar4 + 0x14))();
(**(code **)(*(int *)pCVar4 + 0x1c))();
sprintf(local_220,"\"%s<%i><%s><>\" STEAM USERID validated\n");
DevMsg("%s");
CLog::Printf((CLog *)g_Log,"%s");
pcVar1 = *(code **)(*(int *)g_pServerPluginHandler + 0x38);
(**(code **)(*(int *)pCVar4 + 0x2c))();
(**(code **)(*(int *)pCVar4 + 0x1c))();
(*pcVar1)();
if (3 < g_iServerGameClientsVersion) {
pcVar1 = *(code **)(*serverGameClients + 0x40);
(**(code **)(*(int *)pCVar4 + 0x2c))();
(**(code **)(*(int *)pCVar4 + 0x1c))();
(*pcVar1)();
}
}
else {
pcVar1 = *(code **)(iVar2 + 0x3c);
(**(code **)(iVar2 + 0x2c))();
va("STEAM UserID %s is already\nin use on this server");
(*pcVar1)();
}
}
else {
piVar5 = (int *)(**(code **)(*(int *)pCVar4 + 0x20))();
pnVar6 = (netadr_s *)(**(code **)(*piVar5 + 200))();
CBaseServer::RejectConnection((CBaseServer *)&sv,pnVar6,"#Valve_Reject_Banned_From_Server");
pcVar1 = *(code **)(*(int *)pCVar4 + 0x3c);
(**(code **)(*(int *)pCVar4 + 0x2c))();
va("STEAM UserID %s is banned");
(*pcVar1)();
}
pCVar4[0x217] = (CBaseClient)0x1;
puVar7 = &stack0xfffffda0;
}
else {
OnValidateAuthTicketResponseHelper();
puVar7 = &stack0xfffffda4;
}
}
if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
return;
}
/* WARNING: Subroutine does not return */
*(undefined **)(puVar7 + -4) = &UNK_002114cf;
__stack_chk_fail();
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
Just a Signatures{} block, ready to drop into a gamedata
file. Wire it up in your plugin however you like - SDKCall, DHooks,
raw memory ops, or anything else.
Signatures + Functions block. The plugin uses
DHookCreateFromConf - DHooks reads return type, this-type,
calling convention, and argument types straight from the gamedata. Less
boilerplate in the plugin, types travel with the gamedata.
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.