This will get the full argument, including the quotes. There may be a native that I don't know about that does this. Not thoroughly tested.
Input: amx_test "123" 456 "789" "1"
Output:
Code:
4 args
Arg[0]="123"
Arg[1]=456
Arg[2]="789"
Arg[3]="1"
PHP Code:
#include <amxmodx>
public plugin_init()
{
register_concmd( "amx_test" , "Test" );
}
public Test( id )
{
new szArgs[ 10 ][ 32 ];
new iNumArgs = GetArgs( szArgs , sizeof( szArgs ) , charsmax( szArgs[] ) );
server_print( "%d args" , iNumArgs );
for ( new i = 0 ; i < iNumArgs ; i++ )
{
server_print( "Arg[%d]=%s" , i , szArgs[ i ] );
}
}
GetArgs( szArgs[][] , iSize , iLen )
{
new szText[ 128 ] , iSourceLen , iPos , bool:bInArg , iArgIndex , iArgPos;
iSourceLen = read_args( szText , charsmax( szText ) );
while ( ( iPos < iSourceLen ) && ( iArgIndex < iSize ) )
{
if ( !bInArg && szText[ iPos ] != ' ' )
bInArg = true;
if ( szText[ iPos ] != ' ' )
{
szArgs[ iArgIndex ][ iArgPos++ ] = szText[ iPos ];
if ( iArgPos >= iLen )
{
while ( ( iPos < iSourceLen ) && szText[ ++iPos ] != ' ' )
{}
bInArg = false;
iArgIndex++;
iArgPos = 0;
}
}
else if ( bInArg && ( szText[ iPos ] == ' ' ) )
{
bInArg = false;
iArgIndex++;
iArgPos = 0;
}
iPos++;
}
return ( iArgIndex + 1 );
}
__________________