GTA-Center.com » Forum http://www.gta-center.com/forums/ |
|
[GUIDA] Creare un Anti HighPing http://www.gta-center.com/forums/viewtopic.php?f=40&t=241 |
Pagina 1 di 2 |
Autore: | Peppinux AKA Peppe_Stasu [ 07/11/2010, 0:11 ] |
Oggetto del messaggio: | [GUIDA] Creare un Anti HighPing |
Bene in questa guida spiegherò come creare un semplicissimo Anti HighPing quindi uno script che permetta di far eseguire un'azione scelta da voi sul player che ha il ping più alto del limite (Sempre scelto da voi). Iniziamo! Per prima cosa, in cima, creiamo le variabili che ci faranno riconoscere: 1.Il limite di ping - 2.I massimi avvisi di ping - 3.Avvisi che ha ricevuto ogni player. Quindi inseriamo: Codice: new maxPing = 500, maxAvvisiPing = 3, avvisiPingRicevuti[MAX_PLAYERS]; Cambiando 500 con il limite di ping e 3 con i massimi avvisi di eccesso ping Sotto l'OnPlayerConnect mettiamo: Codice: avvisiPingRicevuti[playerid] = 0; Così setteremo che, alla connessione, non si è ricevuto neanche un avviso Adesso creiamo il vero e proprio "Anti HighPing". Sotto l'OnPlayerUpdate mettiamo: Codice: if(GetPlayerPing(playerid) >= maxPing && GetPlayerPing(playerid) != 65535) OnPlayerHaveHighPing(playerid); Che ci servirà per capire se il ping del playerid che si aggiorna è maggiore o uguale al limite di ping. Se sarà così verrà richiamata la funzione OnPlayerHaveHighPing ((Scusate per il nome ma non sapevo che metterci )) che adesso creeremo. Per finire, fuori da tutto, inseriamo questa funzione con la quale decideremo cosa fare quando un player viene avvisato di ping alto: Codice: OnPlayerHaveHighPing(playerid) { avvisiPingRicevuti[playerid]++; if(avvisiPingRicevuti[playerid] < maxAvvisiPing) { //Qui mettere le funzioni che devono avvenire se gli avvisi di ping alto sono minori del massimo degli avvisi di ping } else { //Qui mettere le funzioni che devono avvenire se gli avvisi di ping alto sono maggiori del massimo degli avvisi di ping } return 1; } Ricordate che sotto il primo if dovrete mettere le funzioni che dovranno avvenire se gli avvisi di ping sono minori dei massimi avvisi e sotto l'else le funzioni che dovranno avvenire se gli avvisi di ping sono maggiori dei massimi avvisi. Quindi dovrete decidere voi cosa fare! Per finire, potete anche creare dei comandi (riservati agli admins) che permettano di: 1.Modificare il limite del ping - 2.Modificare il limite degli avvisi - 3.Resettare gli avvisi di un player Dato che già li ho creati io, potrete direttamente usarli. Ma ricordo che per questi comandi serve lo strtok. Codice: //Sotto OnPlayerCommandText if(!strcmp(cmd, "/setmaxping", true)) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xF60000AA, "[ERRORE:] Devi essere Admin."); new tmp[256], newMaxPing = strval(tmp), pName[24], string[128]; if(!strlen(tmp)) return SendClientMessage(playerid, 0xF6D500AA, "[USO:] /setmaxping [Nuovo limite ping]"); GetPlayerName(playerid, pName, 24); format(string, 128, "[AVVISO:] L'Admin %s ha cambiato il limite di ping da %d a %d.", pName, maxPing, newMaxPing); SendClientMessageToAll(0xF66200AA, string); maxPing = newMaxPing; return 1; } if(!strcmp(cmd, "/setmaxpingwarns", true)) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xF60000AA, "[ERRORE:] Devi essere Admin."); new tmp[256], newMaxAvvisiPing = strval(tmp), pName[24], string[128]; if(!strlen(tmp)) return SendClientMessage(playerid, 0xF6D500AA, "[USO:] /setmaxpingwarns [Nuovo limite avvisi ping]"); GetPlayerName(playerid, pName, 24); format(string, 128, "[AVVISO:] L'Admin %s ha cambiato il limite di avvisi ping da %d a %d.", pName, maxAvvisiPing, newMaxAvvisiPing); SendClientMessageToAll(0xF66200AA, string); maxAvvisiPing = newMaxAvvisiPing; return 1; } if(!strcmp(cmd, "/resetpingwarns", true)) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xF60000AA, "[ERRORE:] Devi essere Admin."); new tmp[256], id = strval(tmp), pName[24], idName[24], string[128]; if(!strlen(tmp)) return SendClientMessage(playerid, 0xF6D500AA, "[USO:] /resetpingwatns [PlayerID]"); GetPlayerName(playerid, pName, 24); GetPlayerName(id, idName, 24); format(string, 128, "[AVVISO:] L'Admin %s ha resettato gli avvisi ping a [%d] %s.", pName, id, idName); SendClientMessageToAll(0xF66200AA, string); return 1; } Spero che la guida sia stata utile, specialmente ai novellini. Commentate e se avete dubbi/problemi o altro, beh... postate ^^ Gentilmente non copiate la guida senza inserire i crediti! |
Autore: | ReVo_ [ 07/11/2010, 0:16 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
Ottimo lavoro.. anche se meglio non usare l'OnPlayerUpdate sinnò ti kicka subito essendo chiamato ogni 40ms.. |
Autore: | Angelo [ 07/11/2010, 1:06 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
Semplice ma utile |
Autore: | Den_Zarock [ 07/11/2010, 3:34 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
Questi 2 valori "maxPing,maxAvvisiPing" si sta di meno a definirli in cima alla GM, meno casino per modificarli e non serve mettere niente nel "OnGameModeInit".. |
Autore: | Peppinux AKA Peppe_Stasu [ 07/11/2010, 10:32 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
@Revo: Grazie ma a volte il ping alto dura anche per pochissimi millisecondi. In caso modificherò nel modo migliore. Consigliami tu @Angelo: Thx Comunque le guide semplici possono sempre essere utili @Den: Beh non cambia molto |
Autore: | Peppe [ 07/11/2010, 10:52 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
Den_Zarock ha scritto: Questi 2 valori "maxPing,maxAvvisiPing" si sta di meno a definirli in cima alla GM, meno casino per modificarli e non serve mettere niente nel "OnGameModeInit".. Quoto, definendoli con il #define non vai ad occupare memoria nell'amx :/ |
Autore: | Peppinux AKA Peppe_Stasu [ 07/11/2010, 11:19 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
Si ma con le variabili, se magari vuoi fare un comando Admin che cambia il ping, puoi. Con i define non lo so D: |
Autore: | ReVo_ [ 07/11/2010, 11:34 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
#define MAX_PING 250 Nel Cmd #undef MAX_PING #define MAX_PING NUOVOPING Esempio pratico: Codice: #define MAX_PING 250 Codice: new newlimit = 5;
#undef MAX_PING #define MAX_PING newlimit printf("%d",MAX_PING); |
Autore: | Peppinux AKA Peppe_Stasu [ 07/11/2010, 11:39 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
Ok grazie per la dritta. Si può sempre imparare . Correggo subito |
Autore: | Peppe [ 07/11/2010, 11:39 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
ReVo_ ha scritto: #define MAX_PING 250 Nel Cmd #undef MAX_PING #define MAX_PING NUOVOPING Esempio pratico: Codice: #define MAX_PING 250 Codice: new newlimit = 5; #undef MAX_PING #define MAX_PING newlimit printf("%d",MAX_PING); Cazzo dici :/ I define vengono interpretati al momento della compilazione. |
Autore: | ReVo_ [ 07/11/2010, 11:42 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
Peppe ha scritto: ReVo_ ha scritto: #define MAX_PING 250 Nel Cmd #undef MAX_PING #define MAX_PING NUOVOPING Esempio pratico: Codice: #define MAX_PING 250 Codice: new newlimit = 5; #undef MAX_PING #define MAX_PING newlimit printf("%d",MAX_PING); Cazzo dici :/ I define vengono interpretati al momento della compilazione. Funziona anche cosi, per il fatto che vengono implementati al momento della compilazione lo so ma come ho fatto io dovrebbe funzionare comunque |
Autore: | Peppe [ 07/11/2010, 11:47 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
ReVo_ ha scritto: Peppe ha scritto: ReVo_ ha scritto: #define MAX_PING 250 Nel Cmd #undef MAX_PING #define MAX_PING NUOVOPING Esempio pratico: Codice: #define MAX_PING 250 Codice: new newlimit = 5; #undef MAX_PING #define MAX_PING newlimit printf("%d",MAX_PING); Cazzo dici :/ I define vengono interpretati al momento della compilazione. Funziona anche cosi, per il fatto che vengono implementati al momento della compilazione lo so ma come ho fatto io dovrebbe funzionare comunque No, come hai fatto tu il comando viene interpretato così: new newlimit = 5; printf("%d",newlimit); Quindi non avrebbe senso. |
Autore: | Beyond [ 07/11/2010, 11:48 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
In effetti definire una costante per poi "undefinirla" e per poi definirla con il valore di una variabile.. non è che abbia un filo logico. |
Autore: | Peppinux AKA Peppe_Stasu [ 07/11/2010, 11:51 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
Abbiamo capito. Non modifico niente che è meglio . Stavo per modificare la guida e leggo questo lol. Io la lascio così, tanto funziona lo stesso :ghfuma:. Se qualche Admin/Mod vuole la modifica ma io non ci metto più mano . |
Autore: | ReVo_ [ 07/11/2010, 11:55 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
Beyond ha scritto: In effetti definire una costante per poi "undefinirla" e per poi definirla con il valore di una variabile.. non è che abbia un filo logico. Un filo logico ce l'ha quando devi modificare il MAX_PLAYERS oppure MAX_VEHICLES. Tipo questo Codice: #undef MAX_PLAYERS
#define MAX_PLAYERS 20 #undef MAX_VEHICLES #define MAX_VEHICLES 100 |
Autore: | Beyond [ 07/11/2010, 11:56 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
ReVo_ ha scritto: Beyond ha scritto: In effetti definire una costante per poi "undefinirla" e per poi definirla con il valore di una variabile.. non è che abbia un filo logico. Un filo logico ce l'ha quando devi modificare il MAX_PLAYERS oppure MAX_VEHICLES. Tipo questo Codice: #undef MAX_PLAYERS #define MAX_PLAYERS 20 #undef MAX_VEHICLES #define MAX_VEHICLES 100 Esatto, ma nel tuo esempio non ci stava. |
Autore: | Peppe [ 07/11/2010, 11:57 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
ReVo_ ha scritto: Beyond ha scritto: In effetti definire una costante per poi "undefinirla" e per poi definirla con il valore di una variabile.. non è che abbia un filo logico. Un filo logico ce l'ha quando devi modificare il MAX_PLAYERS oppure MAX_VEHICLES. Tipo questo Codice: #undef MAX_PLAYERS #define MAX_PLAYERS 20 #undef MAX_VEHICLES #define MAX_VEHICLES 100 Be, quando sono già definite tipo in un include si, ma come avevi fatto tu no o.ò |
Autore: | Beyond [ 07/11/2010, 11:58 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
Adesso però forse è meglio ritornare sull'argomento Antiping Il resto è stato appurato |
Autore: | Giuseppe_Mazzei [ 07/11/2010, 13:12 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
Se non sbaglio, da quando il giocatore si connette a qualche secondo dopo che spawni, ha ping 65535 (infatti http://wiki.sa-mp.com/wiki/GetPlayerPing). |
Autore: | Den_Zarock [ 07/11/2010, 13:30 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti HighPing |
Peppinux AKA Peppe_Stasu ha scritto: Si ma con le variabili, se magari vuoi fare un comando Admin che cambia il ping, puoi. Con i define non lo so D: Si le variabili vanno bene per cambiare il ping massimo, e il numero massimo di avvertimenti, ma nella guida non l'hai spiegato, se non devi modificarli in game conviene definirli |
Pagina 1 di 2 | Tutti gli orari sono UTC + 1 ora [ ora legale ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |