Add support for GetEntPropString(Prop_Send) with netvars backed by string_t vars.

This commit is contained in:
Nicholas Hastings 2015-07-02 14:00:47 -04:00
parent f960c64dc6
commit 93bec920cf

View File

@ -1886,7 +1886,6 @@ static cell_t GetEntPropString(IPluginContext *pContext, const cell_t *params)
char *prop; char *prop;
int offset; int offset;
edict_t *pEdict; edict_t *pEdict;
bool bIsStringIndex;
int element = 0; int element = 0;
if (params[0] >= 6) if (params[0] >= 6)
@ -1901,12 +1900,13 @@ static cell_t GetEntPropString(IPluginContext *pContext, const cell_t *params)
pContext->LocalToString(params[3], &prop); pContext->LocalToString(params[3], &prop);
bIsStringIndex = false; const char *src;
switch (params[2]) switch (params[2])
{ {
case Prop_Data: case Prop_Data:
{ {
bool bIsStringIndex = false;
typedescription_t *td; typedescription_t *td;
FIND_PROP_DATA(td); FIND_PROP_DATA(td);
@ -1942,6 +1942,15 @@ static cell_t GetEntPropString(IPluginContext *pContext, const cell_t *params)
if (bIsStringIndex) if (bIsStringIndex)
{ {
offset += (element * (td->fieldSizeInBytes / td->fieldSize)); offset += (element * (td->fieldSizeInBytes / td->fieldSize));
string_t idx;
idx = *(string_t *) ((uint8_t *) pEntity + offset);
src = (idx == NULL_STRING) ? "" : STRING(idx);
}
else
{
src = (char *) ((uint8_t *) pEntity + offset);
} }
break; break;
} }
@ -1979,6 +1988,17 @@ static cell_t GetEntPropString(IPluginContext *pContext, const cell_t *params)
prop, prop,
element); element);
} }
if (info.prop->GetProxyFn())
{
DVariant var;
info.prop->GetProxyFn()(info.prop, pEntity, (const void *) ((intptr_t) pEntity + offset), &var, element, params[1]);
src = var.m_pString;
}
else
{
src = (char *) ((uint8_t *) pEntity + offset);
}
break; break;
} }
@ -1989,22 +2009,7 @@ static cell_t GetEntPropString(IPluginContext *pContext, const cell_t *params)
} }
size_t len; size_t len;
const char *src;
if (!bIsStringIndex)
{
src = (char *)((uint8_t *)pEntity + offset);
}
else
{
string_t idx;
idx = *(string_t *)((uint8_t *)pEntity + offset);
src = (idx == NULL_STRING) ? "" : STRING(idx);
}
pContext->StringToLocalUTF8(params[4], params[5], src, &len); pContext->StringToLocalUTF8(params[4], params[5], src, &len);
return len; return len;
} }