GCSDK::ConvertFieldArrayToInText
0x00090650 · 403 bytes · __cdecl
_ZN5GCSDK25ConvertFieldArrayToInTextERKNS_11CColumnInfoEPhiPcib
Decompiled
undefined (6 params)
/* GCSDK::ConvertFieldArrayToInText(GCSDK::CColumnInfo const&, unsigned char*, int, char*, int,
bool) */
void GCSDK::ConvertFieldArrayToInText
(CColumnInfo *param_1,uchar *param_2,int param_3,char *param_4,int param_5,
bool param_6)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
uint uVar5;
int iVar6;
int iVar7;
char *pcVar8;
iVar1 = *(int *)(param_1 + 0x90);
*param_4 = '(';
iVar2 = param_3 / iVar1;
if (iVar2 < 1) {
iVar6 = 1;
}
else {
iVar3 = iVar2 + -1;
iVar6 = 1;
iVar7 = 0;
do {
if (param_6) {
iVar4 = iVar6 + 1;
param_4[iVar6] = '?';
if (iVar7 < iVar3) {
iVar6 = iVar6 + 2;
param_4[iVar4] = ',';
}
else {
iVar6 = iVar6 + 2;
param_4[iVar4] = ')';
}
}
else {
iVar4 = *(int *)(param_1 + 0x84);
if (iVar4 == 3) {
uVar5 = (uint)(short)*(uint *)param_2;
if (iVar3 <= iVar7) goto LAB_00090774;
pcVar8 = "%d,";
}
else {
if (iVar4 < 4) {
if (iVar4 != 2) goto LAB_00090740;
uVar5 = (uint)(byte)*(uint *)param_2;
}
else {
if (iVar4 != 4) {
if (iVar4 != 5) goto LAB_00090740;
if (iVar7 < iVar3) {
pcVar8 = "%lld,";
}
else {
pcVar8 = "%lld)";
}
iVar4 = V_snprintf(param_4 + iVar6,param_5 - iVar6,pcVar8,*(uint *)param_2,
*(uint *)((int)param_2 + 4));
iVar6 = iVar6 + iVar4;
goto joined_r0x000906c5;
}
uVar5 = *(uint *)param_2;
}
if (iVar7 < iVar3) {
pcVar8 = "%d,";
}
else {
LAB_00090774:
pcVar8 = "%d)";
}
}
iVar4 = V_snprintf(param_4 + iVar6,param_5 - iVar6,pcVar8,uVar5);
iVar6 = iVar6 + iVar4;
}
joined_r0x000906c5:
if (param_5 + -1 <= iVar6) {
LAB_00090740:
*param_4 = '\0';
return;
}
iVar7 = iVar7 + 1;
param_2 = (uchar *)((int)param_2 + iVar1);
} while (iVar7 != iVar2);
}
param_4[iVar6] = '\0';
return;
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
used as the SourceMod key — change to fit your plugin's convention
SourceMod library name (server / engine / matchmaking)
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.
Gamedata KeyValues
DHooks plugin example
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.