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