GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => A témát indította: Fl0rian - 2012. november 05. - 14:40:44

Cím: SAMPCommand v1.0
Írta: Fl0rian - 2012. november 05. - 14:40:44
Elég sok parancsfeldolgozót csináltam már, de ez lett a leggyorsabb.
FCMD: 1718

ZCMD: 586


SAMPCommand:
534
teszt script
Haszná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[ ] );
Cím: SAMPCommand v1.0
Írta: N@rbirock - 2012. november 05. - 18:59:44
Itt engedi az ékezeteket?
Cím: SAMPCommand v1.0
Írta: Fl0rian - 2012. november 05. - 19:53:05
Nincs benne ékzet támogatás de 1 pillanat és megalkotom.
Cím: SAMPCommand v1.0
Írta: ZyZu. - 2012. november 05. - 21:36:52
Ez nagyon gyönyörû lett nekem tetszik lenne egy kérdésem ezekrõl van egy tutorial, hogy lehet készíteni ilyesmit?.. Mert engemet is érdekelne a dolog :D
Cím: SAMPCommand v1.0
Írta: Fl0rian - 2012. november 06. - 07:09:09
Nincs, mert csak logika az egész.
Az elv amin próbálj gondolkodni: a szöveg szétválasztása az elsõ szóköz mentén a lehetõ leggyorsabban.
És köszi. :D