/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

#define PLUGIN "PEV Test"
#define VERSION "1.0"
#define AUTHOR "29th ID"

/////////////////////////////////////
// USAGE
// Get the PEV number from fakemeta_const.inc
// Each pev_name has a number that goes with it.
// Use the top one as a reference - it's value is 0
// and they go up from there.
//////////////////////////////////////
// RETREIVING DATA

// (All types)
// pevtest PEVNUM
//     Replacing PEVNUM and providing no args
//     Will return current value for specified PEV
//////////////////////////////////
// SETTING DATA

// For integers
// pevtest PEVNUM 1
//     Will set PEVNUM to 1

// For floats
// pevtest PEVNUM 1.0
//     Will set PEVNUM to 1.0

// For Strings
// pevtest PEVNUM stringhere
//     Will set PEVNUM to stringhere

// For Vectors
// pevtest PEVNUM 1.0 1.0 1.0
//     Will set PEVNUM to 1.0, 1.0, 1.0
/////////////////////////////////////////////


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd( "pevtest", "test_pev" );
}

public test_pev( id ) {
	
	new arg1[16], arg2[16], arg3[16], arg4[16];
	read_argv(1, arg1, 15);
	read_argv(2, arg2, 15);
	read_argv(3, arg3, 15);
	read_argv(4, arg4, 15);
	
	// Which PEV to test?
	new m_pev_test = str_to_num(arg1);

	// Vector
	if( pev_vecarray_start < m_pev_test < pev_vecarray_end )
	{
		if( arg2[0] || arg3[0] || arg4[0] )
		{
			new Float:m_set[3];
			m_set[0] = str_to_float(arg2);
			m_set[1] = str_to_float(arg3);
			m_set[2] = str_to_float(arg4);
			set_pev( id, m_pev_test, m_set );
			console_print( id, "Vector Set X: %f Y: %f Z: %f", m_set[0], m_set[1], m_set[2] );
		}
		else if( !arg2[0] && !arg3[0] && !arg4[0] )
		{
			new Float:m_set[3];
			pev( id, m_pev_test, m_set );
			console_print( id, "Vector Get X: %f Y: %f Z: %f", m_set[0], m_set[1], m_set[2] );
		}
	}
	
	// Integer
	else if( pev_int_start < m_pev_test < pev_int_end )
	{
		if( arg2[0] && !arg3[0] && !arg4[0] )
		{
			new m_set = str_to_num(arg2);
			set_pev( id, m_pev_test, m_set );
			console_print( id, "Integer Set %i", m_set );
		}
		else if( !arg2[0] && !arg3[0] && !arg4[0] )
		{
			new Float:m_set;
			pev( id, m_pev_test, m_set );
			console_print( id, "Integer Get %f", m_set );
		}
	}
	
	// Float
	else if( pev_float_start < m_pev_test < pev_float_end )
	{
		if( arg2[0] && !arg3[0] && !arg4[0] )
		{
			new Float:m_set = str_to_float(arg2);
			set_pev( id, m_pev_test, m_set );
			console_print( id, "Float Set %f", m_set );
		}
		else if( !arg2[0] && !arg3[0] && !arg4[0] )
		{
			new Float:m_set;
			pev( id, m_pev_test, m_set );
			console_print( id, "Integer Get %f", m_set );
		}
	}
	
	// String
	else if( (pev_string_start < m_pev_test < pev_string_end) || (pev_string2_begin < m_pev_test < pev_string2_end) )
	{
		if( arg2[0] && !arg3[0] && !arg4[0] )
		{
			set_pev( id, m_pev_test, arg2 );
			console_print( id, "String Set %s", arg1 );
		}
		else if( !arg2[0] && !arg3[0] && !arg4[0] )
		{
			new m_set[128];
			pev( id, m_pev_test, m_set, 127 );
			console_print( id, "String Get %s", m_set );
		}
	}
	else console_print( id, "PEV ERROR" );

	return PLUGIN_HANDLED;
}
