Forums

Nu sunteti conectat. Conectați-vă sau înregistrați-vă

Vezi subiectul anterior Vezi subiectul urmator In jos Mesaj [Pagina 1 din 1]

#1Functi folositoare Empty Functi folositoare Dum Apr 28, 2013 1:05 am

avatar
Functii folositoare

Aici trebuie sa postati numai functii care sa aiba un rol de viteza, si de ingrijirea scriptului vostru, si sa mai scadeti din liniile scriptului.
CustomError( playerid, error );
Cu aceasta functie poti trimite un mesaj printr-un simplu integer, trebuie doar sa setezi tu mai jos diferitele erori pe care le vrei.

Sursa: LAdmin
Poster: Rock

forward CustomError( playerid, error );
public CustomError( playerid, error )
{
if( error == 1 ) return SendClientMessage( playerid, COLOR_RED, "Prima eroare");
if( error == 2 ) return SendClientMessage( playerid, COLOR_RED, "A doua eroare");
if( error == 3 ) return SendClientMessage( playerid, COLOR_RED, "A treia eroare");
//.....poate continua....
return 1;
}

Folosire :
CMD:testerror( playerid, params[ ] )
{
CustomError( playerid, 1 );
return 1;
}

SendClientMessageToAllEX( ex, color, msg[ ] );
Cu aceasta functie poti trimite un mesaj la tot serverul dar cu exceptia jucatorului principal, De exemplu tu faci ceva, sa zicem ca il omori pe X cu arma Y, v-a trimite un mesaj la tot serverul, dar u nu vei vedea deoarece esti pus ca exceptie de parametrul ex.
Quote from: pawn

stock SendClientMessageToAllEX( ex, color, msg[ ] )
{
new p = 0;
for ( p != MAX_PLAYERS; p++ )
{
if ( p != ex )
{
SendClientMessage( ex, color, msg[ ] );
}
}
return 1;
}

Folosire:
Quote from: pawn

SendClientMessageToAlEX( playerid, 0xFFFFFFFF, "Ala care a trimis acest mesaj nu il v-a vedea!" );

FormatNumber( number );
Cu aceasta functie putem transforma atunci cand arata banii de exemplu: 15999454, nu se prea intelege cate ce si cum, cu ajutorul acestei functii vei putea transforma 15999454 in 15.999.454. Nu e neaparat folositor numai la bani si si atunci cand vrei sa arati diferite statistici, adica kills, deaths, mesaje trimise etc.

Quote from: pawn

FormatNumber( number )
{
new Str[ 15 ];
format( Str, 15, "%d", number );

if ( strlen( Str ) < sizeof( Str ) )
{
if ( number >= 1000 && number < 10000 )
strins( Str, ".", 1, sizeof( Str ) );

else if ( number >= 10000 && number < 100000 )
strins( Str, ".", 2, sizeof( Str ) );

else if ( number >= 100000 && number < 1000000 )
strins( Str, ".", 3, sizeof( Str ) );

else if ( number >= 1000000 && number < 10000000 )
strins( Str, ".", 1, sizeof( Str ) ),strins( Str, ".", 5, sizeof( Str ) );

else if ( number >= 10000000 && number < 100000000)
strins( Str, ".", 2, sizeof( Str ) ),strins( Str, ".", 6, sizeof( Str ) );

else if ( number >= 100000000 && number < 1000000000 )
strins( Str, ".", 3, sizeof( Str ) ),strins( Str, ".", 7, sizeof( Str ) );

else if ( number >= 1000000000 && number < 10000000000 )
strins( Str, ".", 1, sizeof( Str ) ),
strins( Str, ".", 5, sizeof( Str ) ),
strins( Str, ".", 9, sizeof( Str ) );
else format( Str, 10, "%d", number );
}
else format( Str, 15, "<ERROR>" );
return Str;
}


Folosire:

Quote from: pawn


new Str[ 256 ],
zMoney = GetPlayerMoney( playerid ) ;

format( Str, sizeof (Str), "Ai $%s", FormatNumber( zMoney );

SendClientMessage( playerid, 0xFF00FFFF, Str );

Date();
In loc sa folositi mereu si mereu getdate si gettime si sa luati din spatiul scriptului, mai bine faceti asta cu usurinta.
Tineti minte: Are nevoie de un %s nu %d deoarece returneaza un STRING
Quote

Date( Sec = false)
{
new zStr[ 30 ];
if ( Sec )
{
new Date[ 6 ];
getdate( Date[ 0 ], Date[ 1 ], Date[ 2 ] );
gettime( Date[ 3 ], Date[ 4 ], Date[ 5 ] );
format( zStr, 30, "%d/%d/%d %d:%d:%d", Date[ 2 ], Date[ 1 ], Date[ 0 ], Date[ 3 ], Date[ 4 ], Date[ 5 ] );
}
else
{
new Date[ 5 ];
getdate( Date[ 0 ], Date[ 1 ], Date[ 2 ] );
gettime( Date[ 3 ], Date[ 4 ] );
format( zStr, 30, "%d/%d/%d %d:%d", Date[ 2 ], Date[ 1 ], Date[ 0 ], Date[ 3 ], Date[ 4 ]);
}
return zStr;
}

Folosire:
Quote

printf("Data si ora actuala: %s", Date( ) );

Rezulta:
Quote

Data si ora actuala: 19/3/2011 10:26


Dar daca vreti sa arata si secundele, doar puneti un true intre ( ).



Name( playerid );
Multi dintre voi folosesc vechea metoda de a prelua numele, adica new name; GetPlayerName etc.
Dar cu functia asta va trebuie doar sa puneti Name( playerid ) < - Depinde ce id vreti sa ia numele.

Quote

Name( playerid )
{
new zName[ MAX_PLAYER_NAME ];
GetPlayerName( playerid, zName, MAX_PLAYER_NAME );
return zName;
}

Folosire:
Quote

new Str[ 50 ];
format( Str, 50, "Numele tau: %s", Name( playerid ) );
SendClientMessage( playerid, -1, Str );


Rezulta:
Quote

Numele tau: (SRC)Zh3r0




GetPVarStringEx( playerid, "String" );
Multi folosesc GetPVarString intr-un fel mai ne-eficient desi asa ar trebui sa fie, voi folositi new String[30]; GetPVarString( playerid, "String", String, 30 ); cea ce este mai greu de folosit si ia spatiu.Am dezvoltat o functie care va ajuta sa o folositi intr-o singura linie!
Quote

GetPVarStringEx( playerid, string[ ] )
{
new Str[ 129 ];
GetPVarString( playerid, string, Str, 129 );
return Str;
}


Folosire:
Sa zicem ca setam stringul "OMG" in "String".
Quote

SetPVarString( playerid, "String", "OMG" );


Acum ca sa preluam valoarea din "String" (Care este "OMG") vom face asa
Quote

new String[ 40 ];
format( String, 40, "GetPVarStringEx : \"%s\"", GetPVarStringEx( playerid, "String" ) );
SendClientMessage( playerid, -1, String );


Rezulta:
Quote

GetPVarStringEx : "OMG"




SendUsage( playerid, usage[ ] )
Va este greu sa faceti, SendClientMessage( playerid, -1, "USAGE: /kick <id> [reason]" ); etc, la orice comanda a voastra?
SendUsage va v-a ajuta!

Quote

SendUsage( playerid, usage[ ] )
{
new Str[ 256 ];
format( Str, 256, "USAGE: {FFFFFF}%s", usage );
SendClientMessage( playerid, 0x30FF30FF, Str );
return 1;
}


Folosire:
Quote

SendUsage( playerid, "/kick <id> [reason]");


Rezulta:
Quote

USAGE: /kick <id> [reason]




SendError( playerid, error[ ] )
la fel ca SendUsage doar ca asta da "EROARE" cum s-ar zice, zicandui jucatorului ca nu are voie la X la Y sau sa faca Z.
Quote

SendError( playerid, error[ ] )
{
new Str[ 256 ];
format( Str, 256, "ERROR: {FFFFFF} %s", error );
SendClientMessage( playerid, 0xFF0000FF, Str );
return 1;
}


Folosire:
Quote

SendError( playerid, "Nu ai voie ba idiotule, comanda asta este pentru cocalari!" );


Rezulta:
Quote

ERROR: Nu ai voie ba idiotule, comanda asta este pentru cocalari!



SendAdminMessage( Color = -1, Message[ ] )
Aceasta functie va trimite un mesaj la toti adminii RCON logati si conectati la joc!
Color = -1 reprezinta, ca daca nu ai setat culoarea, ea va fi setata pe alb.
Quote

SendAdminMessage( Color = -1, Message[ ] )
{
for ( new A = 0; A < MAX_PLAYERS; A ++ )
{
if ( IsPlayerConnected( A ) && IsPlayerAdmin( A ) )
{
SendClientMessage( A, Color, Message );
}
}
return 1;
}


Folosire:
Quote

SendAdminMessage( 0xFF2020FF, "Sunteti niste prosti, incluti, dava-n... Smile" );

Toti adminii vor primi mesajul scris, in culoare rosie.

Iar daca facem asa:
Quote

SendAdminMessage( .Message = "Sunteti Misto!");

Adminii vor primi un mesaj ca sunt misto in culoare alba deoarece "Culoare" nu a fost setat.



FormatMSG
Cu acest macro, putem trimite un mesaj, formatat direct la jucator, fara sa mai facem noi, new String[ 30 ], format(...), SendClientMessage.
Aceasta metod este simpla si este totu intr-un simplu macro, poate fi dezvoltata sa trimita la toti jucatorii, adminii, VIP membri etc.
Quote

stock
bool:False = false,

#define FormatMSG(%0,%1,%2,%3)\
do\
{\
format(_S_T_R_, sizeof (_S_T_R_), (%2), %3);\
SendClientMessage((%0),(%1), _S_T_R_);\
}\
while ( False )


Folosire:
Quote

FormatMSG( playerid, 0x20FF20, "Ai $%d bani, %d scor, si %d idiotenie", GetPLayerMoney( playerid ), GetPlayerScore( playerid ), 9999 );


Rezulta:
Quote

Ai $56000 bani, 16000 scor, si 9999 idiotenie


Cam atata! Mai veniti si voi cu d'ale voastre, folositoare! Postati doar FUNCTII nu comenzi, sau eu stiu ce.
Sa fie folositoare, sa fie mai rapide, sa fie mai usoare de folosit, sa fie mai misto!

NOTICE: Daca tot postati o functie, explicati, cum se foloseste, cum functioneaza, si de ce este mai folositoare! Iar eu daca consider ca este buna, folositoare, o voi adauga in main post cu cuvintele voastre, asa ca, ca sa nu va faceti de ras, fiti creativi!

Vezi subiectul anterior Vezi subiectul urmator Sus Mesaj [Pagina 1 din 1]

Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum