Szerző Téma: Ékezetes parancs SSCANF-al!  (Megtekintve 2745 alkalommal)

dexi

  • Vendég
Ékezetes parancs SSCANF-al!
« Dátum: 2012. július 09. - 16:17:47 »
+13 Show voters
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 }
}
« Utoljára szerkesztve: 2012. július 09. - 20:46:06 írta Fl0rian »

Nem elérhető Mike.

  • 720
    • Profil megtekintése
Ékezetes parancs SSCANF-al!
« Válasz #1 Dátum: 2012. július 09. - 16:38:12 »
0 Show voters
Nekem bejön.
Szép munka.  :)

Nem elérhető Dead

  • 2045
    • Profil megtekintése
Ékezetes parancs SSCANF-al!
« Válasz #2 Dátum: 2012. július 10. - 07:14:23 »
0 Show voters
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

Nem elérhető ilyesdenis

  • 92
  • ilyesdenis
    • Profil megtekintése
Ékezetes parancs SSCANF-al!
« Válasz #3 Dátum: 2012. augusztus 15. - 11:34:51 »
0 Show voters
Nekem is tetszik.

Ékezetes parancs SSCANF-al!
« Válasz #4 Dátum: 2012. augusztus 15. - 19:18:05 »
0 Show voters
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.

dexi

  • Vendég
Ékezetes parancs SSCANF-al!
« Válasz #5 Dátum: 2012. augusztus 15. - 21:50:13 »
0 Show voters
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.

Ékezetes parancs SSCANF-al!
« Válasz #6 Dátum: 2012. augusztus 15. - 22:40:05 »
0 Show voters
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;
}

dexi

  • Vendég
Ékezetes parancs SSCANF-al!
« Válasz #7 Dátum: 2012. augusztus 16. - 09:54:08 »
0 Show voters
You Win.
Igazad van, erre nem gondoltam.
Mindegy, maradok az általam írt dolognál.

Nem elérhető Sramm

  • 596
    • Profil megtekintése
Ékezetes parancs SSCANF-al!
« Válasz #8 Dátum: 2012. augusztus 16. - 13:17:38 »
0 Show voters
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.

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
Ékezetes parancs SSCANF-al!
« Válasz #9 Dátum: 2012. augusztus 16. - 13:19:12 »
0 Show voters
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:

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal