Elég sok parancsfeldolgozót csináltam már, de ez lett a leggyorsabb.
FCMD: 1718
ZCMD: 586
SAMPCommand: 534teszt scriptHasználata: #define ERROR_COLOR (-1) // A szín amivel majd ki írja azt az üzenetet amikor rossz parancsot gépelünk be.
#define COMMAND_ERROR \"Sajnálom, a szerveren nincs ilyen parancs.\" // A szöveg mikor rossz parancsot gépelünk be.
#include < sampcmd >
SAMPCommand:test( playerid, params[ ] ) {
return 1;
}
SAMPCommand: #if !defined ERROR_COLOR
#error \"Elõször definiáld a hibás színt! (ERROR_COLOR)\"
#endif
#if !defined COMMAND_ERROR
#error \"Elõször definiáld a hiba üzenetet! (COMMAND_ERROR)\"
#endif
#define SAMPCommand:%0(%1,%2) \\
forward sampc_%0(%1,%2); \\
public sampc_%0(%1,%2)
public OnPlayerCommandText( playerid, cmdtext[ ] )
{
new params[ 128 + 1 ],
Spaces,
i_Space,
g_szrCommand[ 128 + 1 ];
i_Space = strfind( cmdtext, \" \" );
if( i_Space == (-1) ) i_Space = strlen( cmdtext );
strmid( g_szrCommand, cmdtext, 0, i_Space );
new com_idx[ 128 + 1 ];
format( com_idx, (128), \"sampc_%s\", g_szrCommand[1] );
if( funcidx(com_idx) == (-1) ) return SendClientMessage( playerid, ERROR_COLOR, COMMAND_ERROR );
strmid( params, cmdtext, i_Space + 1, strlen(cmdtext) );
for( new x; x < strlen(params); x++ )
{
if( params
{
Spaces ++;
}
}
if( i_Space == (strlen(cmdtext)) || Spaces == strlen(params) ) return CallLocalFunction( com_idx, \"is\", playerid, \"\\1\" );
CallLocalFunction( com_idx, \"is\", playerid, params );
return 1;
}
#if defined _ALS_OnPlayerCommandText
#undef OnPlayerCommandText
#else
#define _ALS_OnPlayerCommandText
#endif
#define OnPlayerCommandText sampcommand_OnPlayerCommandText
forward sampcommand_OnPlayerCommandText( playerid, cmdtext[ ] );
Ékezeteket támogató verzió (
LASSABB):
#if !defined ERROR_COLOR
#error \"Elõször definiáld a hibás színt! (ERROR_COLOR)\"
#endif
#if !defined COMMAND_ERROR
#error \"Elõször definiáld a hiba üzenetet! (COMMAND_ERROR)\"
#endif
#define SAMPCommand:%0(%1,%2) \\
forward sampc_%0(%1,%2); \\
public sampc_%0(%1,%2)
public OnPlayerCommandText( playerid, cmdtext[ ] )
{
new ekezetek[ ][ ] =
{
{ \'é\', \'e\' },
{ \'á\', \'a\' },
{ \'ö\', \'o\' },
{ \'õ\', \'o\' },
{ \'ü\', \'u\' },
{ \'û\', \'u\' },
{ \'ó\', \'o\' },
{ \'í\', \'i\' }
};
for( new i_Acc; i_Acc < strlen(cmdtext); i_Acc ++ )
{
for( new i_Ekezet; i_Ekezet < 8; i_Ekezet ++ )
{
if( cmdtext[i_Acc] == ekezetek[i_Ekezet][0] )
{
cmdtext[i_Acc] = ekezetek[i_Ekezet][1];
}
}
}
// -----------------------------------------
new params[ 128 + 1 ],
Spaces,
i_Space,
g_szrCommand[ 128 + 1 ];
i_Space = strfind( cmdtext, \" \" );
if( i_Space == (-1) ) i_Space = strlen( cmdtext );
strmid( g_szrCommand, cmdtext, 0, i_Space );
new com_idx[ 128 + 1 ];
format( com_idx, (128), \"sampc_%s\", g_szrCommand[1] );
if( funcidx(com_idx) == (-1) ) return SendClientMessage( playerid, ERROR_COLOR, COMMAND_ERROR );
strmid( params, cmdtext, i_Space + 1, strlen(cmdtext) );
for( new x; x < strlen(params); x++ )
{
if( params
{
Spaces ++;
}
}
if( i_Space == (strlen(cmdtext)) || Spaces == strlen(params) ) return CallLocalFunction( com_idx, \"is\", playerid, \"\\1\" );
CallLocalFunction( com_idx, \"is\", playerid, params );
return 1;
}
#if defined _ALS_OnPlayerCommandText
#undef OnPlayerCommandText
#else
#define _ALS_OnPlayerCommandText
#endif
#define OnPlayerCommandText sampcommand_OnPlayerCommandText
forward sampcommand_OnPlayerCommandText( playerid, cmdtext[ ] );