GTA-Center.com » Forum
http://www.gta-center.com/forums/

[INCLUDE]Raccolta funzioni.
http://www.gta-center.com/forums/viewtopic.php?f=42&t=1054
Pagina 1 di 1

Autore:  mitosking [ 31/03/2011, 13:47 ]
Oggetto del messaggio:  [INCLUDE]Raccolta funzioni.

Salve a tutti. E' da un po' che creo funzioni e per questo vorrei condividerle con voi (:asd:). Premetto che le funzioni sono mie. Se trovate delle funzioni precise, ditemelo che le tolgo subito.

INTRODUZIONE


Come ho già detto, è da un po' che creo funzioni un po' semplici, ma che possono essere molto utili ai nuovi arrivati. Le idee quindi sono tutte mie e faccio tutto da solo. Se trovate funzioni già create in precedenza, ditemelo che le cancello.

GUIDA


Per chi non sa come mettere un include, basta seguire questi semplici passaggi:

1) Scaricare l'include dal download che posterò sotto;
2) Adesso incollate il file scaricato nella cartella /pawno/include;
3) Dirigetevi nella vostra GameMode/FilterScript e, sotto #include <a_samp>, scrivete:

Codice:
#include <funcmit>


4) (scusate per il nome, ma non ho fantasia :asd:) Compilate e tutto dovrebbe andare bene.

N.B: SE il Pawn vi da errore di Include inesistente, fate così:

1) Dirigetevi nella cartella /pawno dove avete incollato l'include;
2) Aprite il Pawno.exe presente dentro la cartella;
3) Cliccate su File -> Open;
4) Cercate il percorso della GameMode/FilterScript ed aprite il file;
5) A questo punto compilate ed, al 90%, non dovrebbe dare errore.

INSTRUZIONI


Questo include è in continuo aggiornamento. Rilascio qui le spiegazioni per ogni Funzione.

RandomNumber(num1, num2)

Questa funzione crea un numero random tra num1 (numero maggiore) e num2 (numero minore). Ad esempio, se voglio trovare un numero random tra 14 e 30, basterà fare:

Codice:
RandomNumber(30, 14)


Quindi 30, che è maggiore di 14, va prima.

SendFormatMessageToPlayer(playerid, colore, messaggio)

Questa funzione invia un messaggio formattato al Player. Molti sanno che, per formattare un testo, bisogna sempre fare un casino assurdo. Tipo:

Codice:
new string[128];
format(string, 128, "Hai %d ammo", GetPlayerAmmo(playerid));
SendClientMessage(playerid, colore, string);


Sinceramente, quando non si ha tempo da perdere, secca un bel po'. Con questa funzione, invece, potete fare:

Codice:
SendFormatMessageToPlayer(playerid, colore, "Hai %d ammo", GetPlayerAmmo(playerid));


SendFormatMessageToAll(colore, messaggio)

La stessa cosa del SendFormatMessageToPlayer, ma questa volta invierà il messaggio a tutti quanti.

SendRangedMessage(playerid, colore, messaggio, raggio)

Questa funzione invierà un messaggio a tutti i player presenti nel raggio di un player. Esistono tante funzioni come queste (ricordiamo il ProxDetector), ma l'ho fatta da 0 semplificandone i parametri e somiglia molto (come struttura) ai SendClientMessage. Ecco come potrebbe essere usato:

Codice:
SendRangedMessage(playerid, colore, "Ciao", 15.0);


In questo modo, tutti i player che staranno nel raggio di 15 metri rispetto a "playerid", riceveranno il messaggio "Ciao".

FormatRangedMessage(playerid, colore, messaggio, raggio)

Questa funzione invierà un messaggio a tutti i player che si trovano nel raggio scelto da voi rispetto a playerid. Questa volta però, il messaggio potrà essere formattato direttamente. Esempio:

Codice:
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
FormatRangedMessage(playerid, colore, "%s ha %d ammo", pName, GetPlayerAmmo(playerid), 15.0);


SendPointMessage(colore, messaggio, x, y, z, raggio)

Questa funzione invierà a tutti i player che si troveranno nel raggio scelto da voi rispetto alle coordinate x, y e z. Quindi, se io voglio inviare un messaggio a tutti i player che si troveranno nel raggio di 15 metri rispetto alla coordinata x (2.0), y (3.0) e z (4.0), scriverò:

Codice:
SendPointMessage(colore, "Ciao a tutti", 2.0, 3.0, 4.0, 15.0);


ApplyAnimation(playerid, libreria[], anim[], Velocità, loop, lockx, locky, freeze, tempo)

Allora questa funzione risolve un "bug" (che poi non è bug) di SAMP riguardo le anim. Infatti, se noterete, le anim non vengono viste dagli altri player, ma le vede solo il player che le sta compiendo. Intanto ringrazio i due moderatori Peppinux e Angelo che mi hanno fatto notare questo bug in un mio topic di aiuto. In poche parole, il forcesync è settato a 0. Si potrebbe cambiare, ma per chi vuole lasciare il proprio a_samp "originale", basta che usa questa funzione normalmente. E' tutto normale, risolverà solo il bug. Esempio:

Codice:
ApplyAnimation(playerid, "PED", "run_civi", 10.0, 0, 1, 1, 1, 0);


Dove: PED è la libreria, run_civi è il nome dell'anim presente in PED, 10.0 è la velocità dell'animazione, 0 indica il loop (ovvero che non verrà ripetuto), 1 ed 1 indicano che, a fine Animazione, il player non ritornerà alla vecchia posizione ed 1 e 0 indicano rispettivamente che il player non verrà frezzato ed il Timer in millisecondi. Per una spiegazione maggiore, visitare questo post della Wiki SAMP Uso dell'ApplyAnimation

IsPlayerInRangeOfAnyVehicle(playerid, raggio)

Questa funzione vedrà se il "playerid", si troverà nel raggio di un qualsiasi veicolo. Esempio:

Codice:
if(IsPlayerInRangeOfAnyVehicle(playerid, 15.0))
{
SendClientMessage(playerid, -1, "Sei vicino un veicolo");
return 1;
}


IsPlayerInRangeOfVehicle(playerid, vehicleid, raggio)

Con questa funzione vedrete se "playerid" si troverà nel raggio (scelto sempre da voi) di "vehicleid". Esempio:

Codice:
if(IsPlayerInRangeOfPoint(playerid, 5, 15.0))
{
SendClientMessage(playerid, -1, "Sei vicino il veicolo 5");
return 1;
}


GetPlayerIDFromName(nome)

Questa funzione returnerà l'ID del nome. Esempio: Se l'ID n° 2 si chiama "Gta_Center" e (nel parametro nome), scriviamo "Gta_Center", essò returnerà 2.

Codice:
new string[128];
format(string, 128, "L'ID del nome "Gta_Center" è %d", GetPlayerIDFromName("Gta_Center"));


N.B: Returnerà -1 se l'ID non è connesso.

SendClientMessageName(playerid, colore, messaggio, playername, posizione)

Questa funzione servirà ad inviare un messaggio con il nome del player scelto da voi. I primi 3 parametri credo che possiate sapere cosa sono. Playername consiste nell'ID del Player. Esempio: se voglio prendere, come nome, l'ID del player che scrive, scriverò playerid. Posizione è la posizione nella stringa in cui volete inserire il nome. Prenderemo come esempio: Ciao NOME, come stai? Quindi noi dobbiamo inserire, al posto NOME, il nome del playerid. Quindi contiamo (partendo da 0), le lettere da sinistra verso destra (includendo anche gli spazi): C (0) i (1) a (2) o (3) (4, che c'è lo spazio). Bene, le prime 4 "posizioni" formano la parola Ciao . Quindi noi metteremo, come posizione, 5 (e non 4, va aggiunta un'unità). Ovviamente poi, il metodo di calcolo lo stabilite voi. L'importante è che vi esca fuori la posizione esatta. Adesso faremo:

Codice:
SendClientMessageName(playerid, -1, "Ciao , come stai?", playerid, 5);


IsPlayerInRangeOfPlayer(playerid, playerid2, raggio)

Questa funzione controlla se il player è vicino ad un altro player con il raggio scelto da voi. Esempio: se noi vogliamo controllare che playerid si trovi vicino a playerid2 nel raggio di 15 metri, scriveremo:

Codice:
IsPlayerInRangeOfPlayer(playerid, playerid2, 15.0);


BanDown(playerid)

Questa funzione bannerà tutti gli ID più bassi di playerid. Esempio: se voglio fare che, tutti i player che hanno un ID da 10 a 0 vengano bannati, basta scrivere:

Codice:
BanDown(10)


BanUp(playerid)

Questa funzione bannerà tutti gli ID più alti di playerid. Esempio: se voglio fare che, tutti i player che hanno uN ID da 10 in su vengano bannati, basta scrivere:

Codice:
BanUp(10)


BanPoint(x, y, z, raggio)

Questa funzione bannerà tutti i players presenti nel raggio (scelto da voi) delle coordinate x, y e z. Esempio: se voglio bannare tutti i player presenti nel raggio di 15 metri alle coordinate 1.0, 2.0 e 3.0 scriverò:

Codice:
BanPoint(1.0, 2.0, 3.0, 15.0);


KickPoint(x, y, z, raggio)
Questa funzione kickerà tutti i players presenti nel raggio (scelto da voi) delle coordinate x, y e z. Esempio: se voglio kickare tutti i player presenti nel raggio di 15 metri alle coordinate 1.0, 2.0, e 3.0 scriverò:

Codice:
KickPoint(1.0, 2.0, 3.0, 15.0);


KillPoint(x, y, z, raggio)

Questa funzione killerà tutti i players presenti nel raggio (scelto da voi) delle coordinate x, y e z. Esempio: se voglio killare tutti i player presenti nel raggio di 15 metri alle coordinate 1.0, 2.0, e 3.0 scriverò:

Codice:
KillPoint(1.0, 2.0, 3.0, 15.0);


TeleportForPlayer(playerid, x, y, z, raggio, tx, ty, tz)

Questa funzione creerà un teletrasporto. In poche parole, se il playerid si trova nel raggio (scelto da voi) di x, y e z verrà gotato alle coordinate tx, ty e tz. Esempio: se voglio gotare playerid alle coordinate 1.0, 2.0 e 3.0 quando si troverà nelle coordinate 4.0, 5.0 e 6.0 nel raggio di 15 metri, scriverò:

Codice:
TeleportForPlayer(playerid, 4.0, 5.0, 6.0, 15.0, 1.0, 2.0, 3.0);


TeleportForAll(x, y, z, raggio, tx, ty, tz)

Questa funzione creerà un teletrasporto. In poche parole, se un player si trova nel raggio (scelto da voi) di x, y e z verrà gotato alle coordinate tx, ty e tz. Esempio: se voglio gotare un player alle coordinate 1.0, 2.0 e 3.0 quando si troverà nelle coordinate 4.0, 5.0 e 6.0 nel raggio di 15 metri, scriverò:

Codice:
TeleportForAll(4.0, 5.0, 6.0, 15.0, 1.0, 2.0, 3.0);


PlayerName(playerid)

Questa funzione returna il nome di playerid. Esempio: se voglio returnare il nome dell'ID numero 2, scriverò: PlayerName(2). Che differenza c'è tra GetPlayerName e PlayerName? Se vogliamo scrivere il messaggio Ciao TUONOME, ecco i due modi messi a confronto:

Codice:
new string[128], nome[MAX_PLAYER_NAME];
GetPlayerName(playerid, nome, sizeof(nome));
format(string, 128, "Ciao %s", nome);
SendClientMessage(playerid, -1, string);


Con PlayerName:

Codice:
new string[128];
format(string, 128, "Ciao %s", PlayerName(playerid));
SendClientMessage(playerid, -1, string);


N.B: Questa funzione l'ho sentita "nominare" dal moderatore Peppinux AKA Peppe_Stasu e l'ho ricreata. Quindi l'idea l'ho presa da lui.

PlayerWeapon(playerid)
Questa funzione returna il nome dell'arma di playerid. Esempio: se voglio returnare l'arma dell'ID numero 2, scriverò: PlayerWeapon(2). Che differenza c'è tra GetWeaponName e PlayerWeapon? Se vogliamo scrivere il messaggio Ciao possiedi l'arma NOMEARMA, ecco i due modi messi a confronto:

Codice:
new string[128], arma[MAX_PLAYER_WEAPON];
GetWeaponName(playerid, arma, sizeof(arma));
format(string, 128, "Ciao possiedi l'arma %s", arma);
SendClientMessage(playerid, -1, string);


Con PlayerWeapon:

Codice:
new string[128];
format(string, 128, "Ciao possiedi l'arma %s", PlayerWeapon(playerid));
SendClientMessage(playerid, -1, string);


N.B: Questa funzione l'ho sentita "nominare" dal moderatore Peppinux AKA Peppe_Stasu e l'ho ricreata. Quindi l'idea l'ho presa da lui.

CONCLUSIONE


Include interamente fatto da me. Ogni giorno aggiornerò sia il topic sia l'include.

DOWNLOAD: http://www.gta-center.com/area_download/index.php?act=view&id=1810

Autore:  Alby Fire [ 31/03/2011, 14:06 ]
Oggetto del messaggio:  Re: [INCLUDE]Raccolta funzioni.

Scusa ma perchè non l'hai creato con il formato .inc?
E comunque se metti
Cita:
#include <funcmit>

non potrebbe funzionare, visto che includerebbe il file funcmit.inc (che non esiste), semmai
Cita:
#include <funcmit.ini>

Anche se ti consiglio vivamente di riupparlo con il formato .inc

Autore:  mitosking [ 31/03/2011, 14:09 ]
Oggetto del messaggio:  Re: [INCLUDE]Raccolta funzioni.

Ma infatti è formato .inc :asd:

EDIT: D'oh ho scritto .ini anzicché .inc. Sostituisco subito, scusate :asd:

EDIT2: Link sostituito. Ringrazio Alby per avermelo fatto notare.

Autore:  Peppinux AKA Peppe_Stasu [ 31/03/2011, 16:25 ]
Oggetto del messaggio:  Re: [INCLUDE]Raccolta funzioni.

Utile ;).

Autore:  mitosking [ 31/03/2011, 16:30 ]
Oggetto del messaggio:  Re: [INCLUDE]Raccolta funzioni.

Grazie ;). Comunque ho creato nuove funzioni... Adesso che torno, le aggiungo all'include.

Autore:  mitosking [ 01/04/2011, 17:58 ]
Oggetto del messaggio:  Re: [INCLUDE]Raccolta funzioni.

Topic Aggiornato!!!

Funzioni aggiunte: GetPlayerIDFromName e SendClientMessageName.

Autore:  barletheking [ 01/04/2011, 20:14 ]
Oggetto del messaggio:  Re: [INCLUDE]Raccolta funzioni.

Figo

Autore:  mitosking [ 01/04/2011, 23:53 ]
Oggetto del messaggio:  Re: [INCLUDE]Raccolta funzioni.

lol grazie.

Autore:  mitosking [ 02/04/2011, 13:44 ]
Oggetto del messaggio:  Re: [INCLUDE]Raccolta funzioni.

Topic Aggiornato!!!

Funzioni aggiunte: IsPlayerInRangeOfPlayer, BanDown, BanUp, BanPoint, KickPoint, KillPoint, TeleportForPlayer, TeleportForAll.

Autore:  mitosking [ 04/04/2011, 11:51 ]
Oggetto del messaggio:  Re: [INCLUDE]Raccolta funzioni.

Topic Aggiornato!!!

Funzioni aggiunte: PlayerName, PlayerWeapon.

Pagina 1 di 1 Tutti gli orari sono UTC + 1 ora [ ora legale ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/