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
) 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'ApplyAnimationIsPlayerInRangeOfAnyVehicle(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