functii Folositoare
:: Jocuri Online :: SanAndreas MultyPlayer :: Tutoriale
Pagina 1 din 1
functii Folositoare
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... " );
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!
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... " );
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!
- Bani : 0
Data de inscriere : 01/01/1970
:: Jocuri Online :: SanAndreas MultyPlayer :: Tutoriale
Pagina 1 din 1
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum