Jump to content

sscanf2 - Parametri optionali


RaZVaN ^ xD

Recommended Posts

sscanf2 - Parametri optionali

Ce este un parametru optional?

Un parametru optional este un parametru de care nu depinde functionarea unei comenzi.

Cum poate recunoaste sscanf2 un parametru optional?

sscanf2 nu poate sti ce parametru doriti dvs. sa fie optional, asa ca trebuie sa interveniti. Un parametru optional se noteaza cu majuscula specificatorului ( ex: pentru string este "S", pentru integer este "I" sau "D", pentru hex este "X" sau "H", pentru nume de jucator este "U" ).

Notarea si valoarea implicita a unui parametru optional:

Imediat dupa ce se noteaza un parametru optional cu majuscula specificatorului, trebuie notata valoarea implicita intre doua paranteze rotunde.

[pawn]sscanf ( params, "iI(21)", p[0], p[1] );[/pawn]

In codul de mai sus exista doi parametri, ambii integer:

  • primul parametru este unul obligatoriu
  • al doilea parametru este optional, cu valoarea implicita = 21

NOTA:

In cazul unui parametru optional ce este string, mai intai se face notarea valoii implicite, apoi marimea string-ului:

[pawn]sscanf ( params, "iS(pere)[32]", integer, string );[/pawn]

In codul de mai sus exista doi parametri:

  • primul parametru este unul obligatoriu, integer
  • al doilea parametru este optional, string de marimea "32", cu valoarea implicita = "pere"

Exemple:

CMD:veh ( playerid, params [ ] )
{
	new
	    param [ 3 ]
	;
	if ( sscanf ( params, "iI(-1)I(-1)", param [ 0 ], param [ 1 ], param [ 2 ] ) )
	    return SendClientMessage ( playerid, -1, "/veh <id> <culoare 1> <culoare 2>" ); // unde culorile sunt parametri optionali

	new
	    Float:pos[3],
	;
	GetPlayerPos ( playerid, pos [ 0 ], pos [ 1 ], pos [ 2 ] );

	CreateVehicle ( param [ 0 ], pos [ 0 ], pos [ 1 ], pos [ 2 ], 0.0, param [ 1 ], param [ 2 ], -1 );
	return 1;
}

CMD:kick ( playerid, params [ ] )
{
	new
	    giveplayerid,
	    motiv [ 32 ]
	;
	if ( sscanf ( params, "uS()[32]", giveplayerid, motiv ) ) // motivul este optional si are valoarea implicita NULA
	    return SendClientMessage ( playerid, -1, "/kick <playerid/nume> <motiv>" );

	if ( isnull ( motiv ) ) // nu s-a introdus nici un motiv
	{
	    SendClientMessage ( giveplayerid, -1, "* Ati primit kick fara motiv." );
	}
	else // s-a introdus un motiv
	{
     	new
 			string [ 64 ]
  		;
  		format ( string, sizeof ( string ), "* Ati primit kick. Motiv: %s", motiv );
  		SendClientMessage ( giveplayerid, -1, string );
	}
	Kick ( giveplayerid );
	return 1;
}

CMD:fine ( playerid, params [ ] )
{
	new
	    param [ 2 ]
	;
	if ( sscanf ( params, "uI(-1)", param [ 0 ], param [ 1 ] ) )
	    return SendClientMessage ( playerid, -1, "/fine <playerid/nume> <bani>" ); // unde "bani" este parametrul optional

	if ( param [ 1 ] == -1 ) // Nu s-a introdus parametrul optional
	{
	    ResetPlayerMoney ( param [ 0 ] );
	}
	else // Parametrul optional a fost introdus
	{
	    GivePlayerMoney ( param [ 0 ], -param [ 1 ] );
	}
	return 1;
}

NOTA:

Aceasta metoda nu se poate aplica pe prima versiune sscanf ( stock ).

Y!M: [email protected] ( nu este ID pt. help-center )

Link to comment
Share on other sites

[pawn]CMD:say( playerid, params[ ] )

{

        new

              string[250],

              playername[MAX_PLAYER_NAME];

if( sscanf(params, "s[128]", params[0]) )

return SendClientMessage(playerid, 0xFF0606FF, "{FFFFFF}|| {FFAF00}/say {B7FF00}[Text] {FFFFFF}||");

GetPlayerName(playerid, playername, sizeof(playername));

format(string, sizeof(string), ""G"**VIP: %s"W": %s", playername,params[0]);

SendClientMessageToAll(0xFFFFFFFF, string);

        printf(""G"**VIP: %s"W": %s", playername,params[0]);

return 1;

}[/pawn]

Uite un exemplu domn profesor :P

idiots.png
Link to comment
Share on other sites

Pai uite la ce se refera prim params ..

CMD:veh ( playerid, params [ ] )
{
	if ( sscanf ( params, "iI(-1)I(-1)", params [ 0 ], params [ 1 ], params [ 2 ] ) )
	    return SendClientMessage ( playerid, -1, "/veh <id> <culoare 1> <culoare 2>" ); // unde culorile sunt parametri optionali

	new
	    Float:pos[3],
	;
	GetPlayerPos ( playerid, pos [ 0 ], pos [ 1 ], pos [ 2 ] );

	CreateVehicle ( params [ 0 ], pos [ 0 ], pos [ 1 ], pos [ 2 ], 0.0, params [ 1 ], params[ 2 ], -1 );
	return 1;
}

I'm back bitches.

Link to comment
Share on other sites

cum adica valoarea implcita

adica

[pawn]

new valore, float;

if(ssscanf(params,"iF[2.0]",valore, float) ) return SnedClientMessage(playerid,COLOR_GREEN,"/test [integrer] [float = optional");

[/pawn]

adica aici daca float nu este introdus, inseamna ca acesta va avea valoarea default 2.0?

Eu sunt nimeni. Dar prefer sa fiu un nimeni inconjurat de prieteni adevarati, decat un om faimos inconjurat de falsi.

Nu sunt un scripter perfect, nu sunt nici macar pe aproape, insa in in ciuda acestui fapt incerc sa invat sa le fac pe toate.

Link to comment
Share on other sites

cum adica valoarea implcita

adica

[pawn]

new valore, float;

if(ssscanf(params,"iF[2.0]",valore, float) ) return SnedClientMessage(playerid,COLOR_GREEN,"/test [integrer] [float = optional");

[/pawn]

adica aici daca float nu este introdus, inseamna ca acesta va avea valoarea default 2.0?

Da, doar ca valoarea implicita ( default ) trebuie scrisa intre paranteze rotunde, nu patrate.

Y!M: [email protected] ( nu este ID pt. help-center )

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.