[ARG] Funzioni e Comandi Utili
#202
Inviato il 22 febbraio 2010 - 19:38
Questa funzione svolge un random tra due valori, massimo e minimo. Cioè, per esempio, se prendiamo come valore massimo 20 e valore minimo 10 esegue un random tra 20 e 10.
Fuori da tutto
forward RandomEx(valoremassimo,valoreminimo);
public RandomEx(valoremassimo,valoreminimo) { new Iniziale; //Valore iniziale new Finale; //Valore finale Iniziale = valoremassimo - valoreminimo; random(Iniziale); Finale = valoreminimo + Iniziale; return Finale; }
[FS]_All3Xz_ Anti-Cheat 4
[FS]_All3Xz_ Anti-Cheat 7
[FS]_All3Xz_ Anti-Cheat 8
[GM] PVCM Training 0.? (MySQL)
[APP]_All3Xz_ NPC Generator
[GUIDA] Leggere da file usando dini
[GUIDA] Scripting GTA:IV - Callbacks
[GM] PVCM Training 1 (MySQL)
[GM] PVCM A/D
[GUIDA] Leggere da file usandi dini 2
#204
Inviato il 22 febbraio 2010 - 22:44
Quote
Metti stock al posto di public così non c'è bisogno del forward

Vabbè, è la stessa cosa alla fine

[FS]_All3Xz_ Anti-Cheat 4
[FS]_All3Xz_ Anti-Cheat 7
[FS]_All3Xz_ Anti-Cheat 8
[GM] PVCM Training 0.? (MySQL)
[APP]_All3Xz_ NPC Generator
[GUIDA] Leggere da file usando dini
[GUIDA] Scripting GTA:IV - Callbacks
[GM] PVCM Training 1 (MySQL)
[GM] PVCM A/D
[GUIDA] Leggere da file usandi dini 2
#205
Inviato il 22 febbraio 2010 - 22:54
_sleep(interval, bool:seconds = false) { new _start = tickcount(), _interval = seconds ? 1000*interval : interval; intervalCheck: if(tickcount() - _start < _interval) goto intervalCheck; }
Ho fatto questa funzione per provare delle funzioni del pawno che ho sempre ignorato...
In pratica lo scopo di questa funzione è fermare una parte di codice per determinati millisecondi/secondi per poi continuare ad eseguire il codice.
Per usare la funzione mettete nella parte di codice interessata così:
_sleep(intervallo);
in questo caso l'intervallo è in millisecondi... se volete invece mettere un intervallo in secondi fate cosi:
_sleep(intervallo, true);
Quindi l'intervallo è definito in secondi.
Esempio pratico:
public OnFilterScriptInit() { print("3"); _sleep(1, true); print("2"); _sleep(1, true); print("1"); _sleep(1, true); print("FS Caricato con successo ù.ù") return 1; }
In questo caso quando viene avviato l'fs:
- Digita "1" nella console;
- C'è una pausa di un secondo;
- Digita "2" nella console;
- C'è una pausa di un secondo;
- Digita "1" nella console;
- C'è una pausa di un secondo;
- Digita "FS Caricato con successo ù.ù" nella console;
- Returna 1.
PS: nel pawno c'è già la funzione predefinita "sleep(millisecondi)" ma funziona solo nel main() a differenza della mia...
x Alle: è solo un consiglio, quando non necessitate di usare quella funzione come timer, CallLocalFunction o CallRemoteFunction non serve a niente usare public, ma andrebbe bene anche la funzione senza stock, public o altro...
#206
Inviato il 23 febbraio 2010 - 18:23
[FS]_All3Xz_ Anti-Cheat 4
[FS]_All3Xz_ Anti-Cheat 7
[FS]_All3Xz_ Anti-Cheat 8
[GM] PVCM Training 0.? (MySQL)
[APP]_All3Xz_ NPC Generator
[GUIDA] Leggere da file usando dini
[GUIDA] Scripting GTA:IV - Callbacks
[GM] PVCM Training 1 (MySQL)
[GM] PVCM A/D
[GUIDA] Leggere da file usandi dini 2
#208
Inviato il 23 febbraio 2010 - 22:37
Quote
Mi ricordo una funzione identica o simile nel forum di samp
Forse intendi l'Halt, serve alla stessa cosa, ma funziona diversamente ed ha i parametri in secondi o_O
http://wiki.sa-mp.co...e_Snippets#Halt
#209
Inviato il 23 febbraio 2010 - 22:58
Quote
Questa funzione svolge un random tra due valori, massimo e minimo. Cioè, per esempio, se prendiamo come valore massimo 20 e valore minimo 10 esegue un random tra 20 e 10.
Fuori da tutto
forward RandomEx(valoremassimo,valoreminimo);
public RandomEx(valoremassimo,valoreminimo) { new Iniziale; //Valore iniziale new Finale; //Valore finale Iniziale = valoremassimo - valoreminimo; random(Iniziale); Finale = valoreminimo + Iniziale; return Finale; }
Mi sono permesso di ottimizzare questa funzione, se non ti va bene fa niente ù.ù
#define RandomEx(%1, %2) random(%2-%1)+(%1)
Ha lo stesso funzionamento ma il codice è più corto (è solo una riga di #define) ed è leggermente più veloce perché:
- non vengono create delle variabili
- ci sono meno calcoli infatti se ad esempio si fa
RandomEx(2, 5);
diventa quando lo compila
random(5-2)+2;
inoltre quando lo compila esegue automaticamente il calcolo "valoremassimo-valoreminimo" così
random(3)+2
#210
Inviato il 24 febbraio 2010 - 19:10
Quote
Quote
Mi ricordo una funzione identica o simile nel forum di samp
Forse intendi l'Halt, serve alla stessa cosa, ma funziona diversamente ed ha i parametri in secondi o_O
http://wiki.sa-mp.co...e_Snippets#Halt [/b]
si ecco, grazie per avermi rinfrescato la memoria
[FS]_All3Xz_ Anti-Cheat 4
[FS]_All3Xz_ Anti-Cheat 7
[FS]_All3Xz_ Anti-Cheat 8
[GM] PVCM Training 0.? (MySQL)
[APP]_All3Xz_ NPC Generator
[GUIDA] Leggere da file usando dini
[GUIDA] Scripting GTA:IV - Callbacks
[GM] PVCM Training 1 (MySQL)
[GM] PVCM A/D
[GUIDA] Leggere da file usandi dini 2
#211
Inviato il 08 marzo 2010 - 18:32
#define SendClientMessage(%1,%2,%3,%4); format(string, 128, %3, %4); SendClientMessage(%1, %2, string); #define SendClientMessageToAll(%1,%2,%3); format(string, 128, %2, %3); SendClientMessageToAll(%1, string);
Quando scrivete
SendClientMessage(playerid, colore, "testo");
oppure
SendClientMessageToAll(colore, "testo");
non cambia niente
però con questo define potete saltare il passaggio in cui scrivete
format(string, eccetera);
per inviare messaggi che cambiano in base alle variabili e quindi potete scrivere ad esempio
new string[128];
SendClientMessage(playerid, 0xFFFFFFFF, "OMG %d %s %d", 1, "asd", 2);
Che diciamo che vi fa risparmiare tempo ed è più semplice
ATTENZIONE: prima di questa funzione bisogna creare una stringa di nome string con
new string[128];
se l'avete già creata in quel punto non ricreatela
#212
Inviato il 08 marzo 2010 - 19:55
[FS]_All3Xz_ Anti-Cheat 4
[FS]_All3Xz_ Anti-Cheat 7
[FS]_All3Xz_ Anti-Cheat 8
[GM] PVCM Training 0.? (MySQL)
[APP]_All3Xz_ NPC Generator
[GUIDA] Leggere da file usando dini
[GUIDA] Scripting GTA:IV - Callbacks
[GM] PVCM Training 1 (MySQL)
[GM] PVCM A/D
[GUIDA] Leggere da file usandi dini 2
#214
Inviato il 09 marzo 2010 - 21:15
Quote
A compilare compila e dovrebbe andare al 99% asd ù.ù
vabbè compilare != funzionare, dico, l'hai testato in game?
[FS]_All3Xz_ Anti-Cheat 4
[FS]_All3Xz_ Anti-Cheat 7
[FS]_All3Xz_ Anti-Cheat 8
[GM] PVCM Training 0.? (MySQL)
[APP]_All3Xz_ NPC Generator
[GUIDA] Leggere da file usando dini
[GUIDA] Scripting GTA:IV - Callbacks
[GM] PVCM Training 1 (MySQL)
[GM] PVCM A/D
[GUIDA] Leggere da file usandi dini 2
#217
Inviato il 09 marzo 2010 - 22:37
Quote
Quote
non ho detto compila quindi funziona, ma ho detto compila E dovrebbe funzionare, perché non vedo niente di errato nel codice, che è un semplice define asd
Vabbe testarlo in game almeno xD [/b]
Avevo appena editato il messaggi, leggi: testato e funzionante asd
#218
Inviato il 09 marzo 2010 - 23:49
Quote
In cima:
#define SendClientMessage(%1,%2,%3,%4); format(string, 128, %3, %4); SendClientMessage(%1, %2, string); #define SendClientMessageToAll(%1,%2,%3); format(string, 128, %2, %3); SendClientMessageToAll(%1, string);
Quando scrivete
SendClientMessage(playerid, colore, "testo");
oppure
SendClientMessageToAll(colore, "testo");
non cambia niente
però con questo define potete saltare il passaggio in cui scrivete
format(string, eccetera);
per inviare messaggi che cambiano in base alle variabili e quindi potete scrivere ad esempio
new string[128];
SendClientMessage(playerid, 0xFFFFFFFF, "OMG %d %s %d", 1, "asd", 2);
Che diciamo che vi fa risparmiare tempo ed è più semplice
ATTENZIONE: prima di questa funzione bisogna creare una stringa di nome string con
new string[128];
se l'avete già creata in quel punto non ricreatela
Cazzo questo è utile. Grazie
