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