Rank: Fondator Sex : Mesaje : 157 €uro : 86228 Varsta : 30 Joburi/Distractii : Street Workout
| Subiect: sscanf2 - Parametri optionali Mier Apr 10, 2013 10:40 am |
|
| 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. - Cod:
-
sscanf ( params, "iI(21)", p[0], p[1] ); 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: - Cod:
-
sscanf ( params, "iS(pere)[32]", integer, string ); 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: - Cod:
-
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 culorile sunt parametri optionali
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 ). |
|