Jump to content
Autentificarea cu Google și Facebook nu mai este disponibilă. ×

[EASY]-Cum sa faci o prescurtare la o functie.


Recommended Posts

Posted

Deci aici am sa va invat cum sa faceti o prescurtare la o functie, ca sa va fie mai usoara viata de scripting.

De exemplu, va este lene sa tot scrieti SendClientMessage( playerid, COLOR, "Mesaj"); de fiecare data?

Cu un mic #define se poate rezolva!

Uitati un exemplu de prescurtare de comanda(FOLOSITI ACEASTA PRESCRUTARE DACA FOLOSIT ACEASI CULOARE SI PARAMETRU DE PLAYERID)

#define SCML(%0) SendClientMessage( playerid, 0x8BA7FBFF, %0);
%0 are rol ca un string, si cand vei folosi SCML(" Mesaj"); prin definitie, deoarece ai pus un %0, vei trimite un mesaj. Exemplu de folosire:
if( strcmp( cmdtext, "/kill", true) == 0 )
{
SetPlayerHealth(playerid, 0.0);
SCML("Te-ai omorat!");
return 1;
}
Sau uite un alt exemplu care iti va economisi randuri.
if( strcmp( cmdtext, "/kill", true) == 0 ) return  SetPlayerHealth(playerid, 0.0),SCML("Te-ai omorat!");
Punand o virgula dupa o functie poti executa un sir de functii cand dai return sau else Uite un alt exemplu de prescurtare.Eu am luato de la Y_Less din topicul lui "Code Optimizations"Si am modificat.
#if !defined FALSE
	stock
	bool:FALSE = false;
#endif
#define FormMessage(%0,%1,%2,%3)\
		do\
		{\
			new str[130];\
			format(str, sizeof (str), (%2), %3);\
			SendClientMessage((%0),(%1), str);\
		}\
		while ( FALSE )

#define FormMessageForAll(%0,%1,%2)\
		do\
		{\
			new str[ 130 ];\
			format( str, sizeof ( str ), ( %1 ), %2);\
			SendClientMessageToAll( ( %0 ), str);\
		}\
		while ( FALSE )
Aceasta functie te va ajuta sa economisesti destule randuri!Deoarece cand formatezi un string trebuie sa ai vreo 3-5 randuri ocupate. E, asa faci mai usor. Ca sa nu mai folosest format(string(...) ) Vei folosi
FormMessage( playerid,  0xFD2F17FF, "Ai %d bani scor %d", GetPlayerMoney( playerid ), GetPlayerSore( playerid ) );
Daca pui asta intr-o comanda de gen /stats si o dezvolti, vai avea succes si performanta. Eu am trecut de la stilul vechi la cel modern si sofisticat. mere ca prin minune, este chiar bun. Mai puteti face MULTE alte prescurtati uitati un alt exemplu
#define COMMAND(%0) if( strcmp( cmdtext, %0, true) == 0 )
Si se va putea folosi in acest caz
COMMAND("/kill")
{
new Nume[MAX_PLAYER_NAME];
GetPlayerName(playerid, Nume, sizeof( Nume) );
SetPlayerHealth( playerid, 0.0 );
//Si acuma folosind prescurtarea de deasupra
SCML("Te-ai omorat");
FormMessageForAll( playerid,  0xFD2F17FF, "Playerul %s s-a sinucis!",Nume);
return 1;
}

Sper ca v-am ajutat prin acest tutorial sa intelegi ceva.

Posted

Se pare ca am facut o mica greseala am pus o paranteza rotunda inloc de paranteza dreapta.

Ar fi dat eroare.Am rezolvat-o.

Ah si as dori ca macar sa incerati...

Posted

puteai sa pui si SCM.%0 (mi se pare mai usor :) )

'faza' cu define e cea mai amuzanta xD

#define pName pName2(playerid)

Poti pune #define SendClientMessage FormMessage ca sa fie mai usor(sa nu te incurci cu alte functii xD)


Frumos :)


Am o mica intrebare pentru cei care stiu:

Care e mai rapid?#define stock sau 'forward;public'?


Off:Am vazut'o pe Selena Gomez,img aia facuta de tine,pe Realitatea TV  :D era Miercuri sau Joi 06:42

Posted

puteai sa pui si SCM.%0 (mi se pare mai usor :) )

'faza' cu define e cea mai amuzanta xD

#define pName pName2(playerid)

Poti pune #define SendClientMessage FormMessage ca sa fie mai usor(sa nu te incurci cu alte functii xD)


Frumos :)


Am o mica intrebare pentru cei care stiu:

Care e mai rapid?#define stock sau 'forward;public'?


Off:Am vazut'o pe Selena Gomez,img aia facuta de tine,pe Realitatea TV  :D era Miercuri sau Joi 06:42

Ai vazuto pe Selena Gomez sau wallpaperu meu?:o

Uhm presupun ca stock dar stock folosesti la functii iar forward;public; la timere etc.

Oricum eu folosesc function Blabla

Si nu inteleg de ce naiba tot dati #define Functieexistenta altafunctie.

E o prostie asa tre sa modifice tot...dih...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.