Change if to switch for ObjectString use one vec for Get/Set Object Vector
This commit is contained in:
parent
e06b52c1ec
commit
e07e2286cb
93
natives.cpp
93
natives.cpp
@ -826,33 +826,30 @@ cell_t Native_GetParamObjectPtrVarVector(IPluginContext *pContext, const cell_t
|
|||||||
cell_t *buffer;
|
cell_t *buffer;
|
||||||
pContext->LocalToPhysAddr(params[5], &buffer);
|
pContext->LocalToPhysAddr(params[5], &buffer);
|
||||||
|
|
||||||
if((ObjectValueType)params[4] == ObjectValueType_VectorPtr)
|
if((ObjectValueType)params[4] == ObjectValueType_VectorPtr || (ObjectValueType)params[4] == ObjectValueType_Vector)
|
||||||
{
|
{
|
||||||
Vector *vec = *(Vector **)(addr + params[3]);
|
Vector *vec;
|
||||||
if(vec == NULL)
|
|
||||||
|
if((ObjectValueType)params[4] == ObjectValueType_VectorPtr)
|
||||||
{
|
{
|
||||||
return pContext->ThrowNativeError("Trying to get value for null pointer.");
|
vec = *(Vector **)(addr + params[3]);
|
||||||
|
if(vec == NULL)
|
||||||
|
{
|
||||||
|
return pContext->ThrowNativeError("Trying to get value for null pointer.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
buffer[0] = sp_ftoc(vec->x);
|
vec = (Vector *)(addr + params[3]);
|
||||||
buffer[1] = sp_ftoc(vec->y);
|
|
||||||
buffer[2] = sp_ftoc(vec->z);
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if((ObjectValueType)params[4] == ObjectValueType_Vector)
|
buffer[0] = sp_ftoc(vec->x);
|
||||||
{
|
buffer[1] = sp_ftoc(vec->y);
|
||||||
Vector vec = *(Vector *)(addr + params[3]);
|
buffer[2] = sp_ftoc(vec->z);
|
||||||
buffer[0] = sp_ftoc(vec.x);
|
|
||||||
buffer[1] = sp_ftoc(vec.y);
|
|
||||||
buffer[2] = sp_ftoc(vec.z);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
return pContext->ThrowNativeError("Invalid Object value type (not a type of vector)");
|
||||||
return pContext->ThrowNativeError("Invalid Object value type (not a type of vector)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//native DHookSetParamObjectPtrVarVector(Handle:hParams, num, offset, ObjectValueType:type, Float:value[3]);
|
//native DHookSetParamObjectPtrVarVector(Handle:hParams, num, offset, ObjectValueType:type, Float:value[3]);
|
||||||
@ -884,30 +881,27 @@ cell_t Native_SetParamObjectPtrVarVector(IPluginContext *pContext, const cell_t
|
|||||||
|
|
||||||
if((ObjectValueType)params[4] == ObjectValueType_VectorPtr)
|
if((ObjectValueType)params[4] == ObjectValueType_VectorPtr)
|
||||||
{
|
{
|
||||||
Vector *vec = *(Vector **)(addr + params[3]);
|
Vector *vec;
|
||||||
if(vec == NULL)
|
|
||||||
|
if((ObjectValueType)params[4] == ObjectValueType_VectorPtr)
|
||||||
{
|
{
|
||||||
return pContext->ThrowNativeError("Trying to set value for null pointer.");
|
vec = *(Vector **)(addr + params[3]);
|
||||||
|
if(vec == NULL)
|
||||||
|
{
|
||||||
|
return pContext->ThrowNativeError("Trying to set value for null pointer.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
vec->x = sp_ctof(buffer[0]);
|
vec = (Vector *)(addr + params[3]);
|
||||||
vec->y = sp_ctof(buffer[1]);
|
|
||||||
vec->z = sp_ctof(buffer[2]);
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if((ObjectValueType)params[4] == ObjectValueType_Vector)
|
vec->x = sp_ctof(buffer[0]);
|
||||||
{
|
vec->y = sp_ctof(buffer[1]);
|
||||||
(*(Vector *)(addr + params[3])).x = sp_ctof(buffer[0]);
|
vec->z = sp_ctof(buffer[2]);
|
||||||
(*(Vector *)(addr + params[3])).y = sp_ctof(buffer[1]);
|
|
||||||
(*(Vector *)(addr + params[3])).z = sp_ctof(buffer[2]);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else
|
return pContext->ThrowNativeError("Invalid Object value type (not a type of vector)");
|
||||||
{
|
|
||||||
return pContext->ThrowNativeError("Invalid Object value type (not a type of vector)");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//native DHookGetParamObjectPtrString(Handle:hParams, num, offset, ObjectValueType:type, String:buffer[], size)
|
//native DHookGetParamObjectPtrString(Handle:hParams, num, offset, ObjectValueType:type, String:buffer[], size)
|
||||||
@ -934,19 +928,22 @@ cell_t Native_GetParamObjectPtrString(IPluginContext *pContext, const cell_t *pa
|
|||||||
|
|
||||||
intptr_t addr = GetObjectAddr(paramStruct->dg->params.Element(index).type, paramStruct->orgParams, index);
|
intptr_t addr = GetObjectAddr(paramStruct->dg->params.Element(index).type, paramStruct->orgParams, index);
|
||||||
|
|
||||||
if((ObjectValueType)params[4] == ObjectValueType_CharPtr)
|
switch((ObjectValueType)params[4])
|
||||||
{
|
{
|
||||||
char *ptr = *(char **)(addr + params[3]);
|
case ObjectValueType_CharPtr:
|
||||||
pContext->StringToLocal(params[5], params[6], ptr == NULL ? "" : (const char *)ptr);
|
{
|
||||||
}
|
char *ptr = *(char **)(addr + params[3]);
|
||||||
else if((ObjectValueType)params[4] == ObjectValueType_String)
|
pContext->StringToLocal(params[5], params[6], ptr == NULL ? "" : (const char *)ptr);
|
||||||
{
|
break;
|
||||||
string_t string = *(string_t *)(addr + params[3]);
|
}
|
||||||
pContext->StringToLocal(params[5], params[6], string == NULL_STRING ? "" : STRING(string));
|
case ObjectValueType_String:
|
||||||
}
|
{
|
||||||
else
|
string_t string = *(string_t *)(addr + params[3]);
|
||||||
{
|
pContext->StringToLocal(params[5], params[6], string == NULL_STRING ? "" : STRING(string));
|
||||||
return pContext->ThrowNativeError("Invalid Object value type (not a type of string)");
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return pContext->ThrowNativeError("Invalid Object value type (not a type of string)");
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user