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: dexi - 2012. július 09. - 16:17:47

Cím: Ékezetes parancs SSCANF-al!
Írta: dexi - 2012. július 09. - 16:17:47
Minap rájöttem hogy az f_command egy irgalmatlanul bugos f*stalicska (a paraméterek szétvágása miatt). Mivel az ékezetet meg akarom tartani a parancsokban úgy gondoltam írok egy olyan kis dolgot amivel ékezetes parancsokat tudunk írni sscanf segítségével.
Készítette: Fl0rian (Horváth Flórián)
A kód:
 
forward AccidentSSCANF( playerid, command[], params[] );
public OnPlayerCommandText( playerid, cmdtext[ ] ) {
new params[ 356 + 1 ],
   Spaces,
   i_Space,
   g_szrCommand[ 192 + 1 ];
i_Space = strfind( cmdtext, \" \" );
format( g_szrCommand, (192), \"%s\", cmdtext );
strdel( g_szrCommand, i_Space, strlen(cmdtext) );
format( params, (356), \"%s\", cmdtext );
strdel( params, (0), i_Space + 1 );
for( new x; x < strlen(params); x++ ) {
    if( params
  • == \' \' ) {

        Spaces ++;
}
}
if( i_Space == (-1) || Compare(params, g_szrCommand) || Spaces == strlen(params) ) return CallLocalFunction( \"AccidentSSCANF\", \"iss\", playerid, g_szrCommand, \" \" );
CallLocalFunction( \"AccidentSSCANF\", \"iss\", playerid, g_szrCommand, params );
return 1;
}

 
Használata:
 
public AccidentSSCANF( playerid, command[], params[] ) {
if( strcmp(command, \"/parancs\") ) { // MIT CSINÁLJON }
}
Cím: Ékezetes parancs SSCANF-al!
Írta: Mike. - 2012. július 09. - 16:38:12
Nekem bejön.
Szép munka.  :)
Cím: Ékezetes parancs SSCANF-al!
Írta: Dead - 2012. július 10. - 07:14:23
Idézetet írta: Mike. date=1341844692\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"24060\" data-ipsquote-contentclass=\"forums_Topic
Nekem bejön.
Szép munka.  :)
 
és, ment a + :D
Cím: Ékezetes parancs SSCANF-al!
Írta: ilyesdenis - 2012. augusztus 15. - 11:34:51
Nekem is tetszik.
Cím: Ékezetes parancs SSCANF-al!
Írta: Zsolesszka - 2012. augusztus 15. - 19:18:05
Nekem nem annyira, nem értem mire jó ez az egész, egy példával valaki szemléltethetné, és leírhatná mi van benne ami különlegessé teszi.
Ránézésre csak ennyit látok ami túl lett bonyolítva:
 
public OnPlayerCommandText( playerid, cmdtext[ ] ) 
{
    if(strcmp(cmdtext, \"/parancs\") ) { // MIT CSINÁLJON }

 
 és nem találom a fõposztban a sscanf alkalmazását sem.
Cím: Ékezetes parancs SSCANF-al!
Írta: dexi - 2012. augusztus 15. - 21:50:13
public AccidentSSCANF( playerid, command[], params[] ) {
     if( strcmp(command, \"/parancs\") ) {
          new ID;
          if( sscanf(params, \"u\", ID) ) return SendClientMessage( playerid, (-1), \"HASZNÁLAT: /parancs <id>\" );
          return 1;
     }
     return 1;
}

 
Remélem így már érthetõ, hogy miért egyszerûbb mint az általad írt verziónál a paraméteres parancsok létrehozása.
Cím: Ékezetes parancs SSCANF-al!
Írta: Zsolesszka - 2012. augusztus 15. - 22:40:05
Ok értem, és így talán nem mûködne?
 
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, \"/parancs\"))
{
new
   ID;
if(sscanf(cmdtext[8], \"u\", ID)) return SendClientMessage( playerid, (-1), \"HASZNÁLAT: /parancs <id>\" );
return 1;
}
return 0;
}
Cím: Ékezetes parancs SSCANF-al!
Írta: dexi - 2012. augusztus 16. - 09:54:08
You Win.
Igazad van, erre nem gondoltam.
Mindegy, maradok az általam írt dolognál.
Cím: Ékezetes parancs SSCANF-al!
Írta: Sramm - 2012. augusztus 16. - 13:17:38
Idézetet írta: ɐʞzssǝlosz date=1345063205\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"24060\" data-ipsquote-contentclass=\"forums_Topic
Ok értem, és így talán nem mûködne?
 
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, \"/parancs\"))
{
new
   ID;
if(sscanf(cmdtext[8], \"u\", ID)) return SendClientMessage( playerid, (-1), \"HASZNÁLAT: /parancs <id>\" );
return 1;
}
return 0;
}

 

Nem mûködne. Próbáld ki.
Cím: Ékezetes parancs SSCANF-al!
Írta: DrAkE - 2012. augusztus 16. - 13:19:12
Nem is az strcmp visszatérésén van most a hangsúly. :facepalm: Hanem a feldarabolásról, és mûködik mellékesen.  :facepalm: