GTA-Center.com » Forum http://www.gta-center.com/forums/ |
|
[GUIDA] Creare un Anti MoneyHack http://www.gta-center.com/forums/viewtopic.php?f=40&t=229 |
Pagina 1 di 1 |
Autore: | Peppinux AKA Peppe_Stasu [ 05/11/2010, 21:30 ] |
Oggetto del messaggio: | [GUIDA] Creare un Anti MoneyHack |
Salve a tutti in questa guida spiegherò come creare un Anti MoneyHack funzionante. Questo Anti MoneyHack si baserà sul salvataggio dei soldi di un player in una variabile. Se i soldi della variabile dati con la rispettiva funzione non corrispondono a quelli che si hanno in game, viene richiamata la funzione OnPlayerMoneyHack e voi potrete decidere cosa fare. Iniziamo! Per prima cosa, in cima alla GameMode, inseriamo: Codice: new Cash[MAX_PLAYERS]; Così facendo creeremo la variabile dove salveremo i soldi non hackerati del player. Fatto questo, sotto l'OnPlayerConnect, inseriamo: Codice: SetTimerEx("CheckPlayerCash", 1000, true, "d", playerid); E così abbiamo creato il timer che controllerà i soldi del player Adesso, fuori da tutto, inseriamo: Codice: stock GivePlayerCash(playerid, soldi) { GivePlayerMoney(playerid, soldi); Cash[playerid] += soldi; } stock SetPlayerCash(playerid, soldi) { ResetPlayerMoney(playerid); GivePlayerMoney(playerid, soldi); Cash[playerid] = soldi; } stock ResetPlayerCash(playerid) { ResetPlayerMoney(playerid); Cash[playerid] = 0; } stock GetPlayerCash(playerid) { return Cash[playerid]; } Che saranno le funzioni che serviranno per dare, settare, resettare e ghettare i soldi non hackerati al player E sempre fuori da tutto: Codice: forward CheckPlayerCash(playerid); public CheckPlayerCash(playerid) { if(GetPlayerMoney(playerid) > Cash[playerid]) { new hackedmoney = GetPlayerMoney(playerid) - Cash[playerid]; OnPlayerMoneyHack(playerid, hackedmoney); } return 1; } forward OnPlayerMoneyHack(playerid, hackedmoney); public OnPlayerMoneyHack(playerid, hackedmoney) { return 1; } Così abbiamo implementato nella GameMode una funzione che controlla quando il player hackera dei soldi ed una che viene richiamata quando i soldi vengono hackerati. L'unica cosa che ci rimane da fare è decidere cosa far avvenire quando un player hackera dei soldi. Ciò che dovrà avvenire lo dovremo inserire sotto la funzione OnPlayerMoneyHack, creata precedentemente. Esempi: Togliere solo i soldi hackerati al cheater Codice: //Sotto OnPlayerMoneyHack new string[128], pName[24]; GetPlayerName(playerid, pName, 24); SetPlayerCash(playerid, GetPlayerMoney(playerid) - GetPlayerCash(playerid)); format(string, 128, "[AVVISO:] %s ha hackerato $%d e gli sono stati settati i suoi vecchi soldi ($%d).", pName, hackedmoney, GetPlayerCash(playerid)); SendClientMessageToAll(0xF60000AA, string); Resettare tutti i soldi al cheater Codice: //Sotto OnPlayerMoneyHack new string[128], pName[24]; GetPlayerName(playerid, pName, 24); ResetPlayerCash(playerid); format(string, 128, "[AVVISO:] %s ha hackerato $%d e gli sono stati resettati i soldi.", pName, hackedmoney); SendClientMessageToAll(0xF60000AA, string); Bannare il cheater Codice: //Sotto OnPlayerMoneyHack new string[128], pName[24]; GetPlayerName(playerid, pName, 24); format(string, 128, "[AVVISO:] %s ha hackerato $%d ed è stato bannato.", pName, hackedmoney); SendClientMessageToAll(0xF60000AA, string); Ban(playerid); Beh altre funzioni da far accadere quando si hackerano dei soldi potete anche crearle voi Nuove funzioni: GivePlayerCash: Da soldi non hackerati al player SetPlayerCash: Setta soldi non hackerati al player ResetPlayerCash: Resetta soldi non hackerati al player GetPlayerCash: Ghetta soldi non hackerati al player Ultime cose da fare: Per finire, l'unica cosa che dovrete fare, sarà sostituire GivePlayerMoney, ResetPlayerMoney e GetPlayerMoney con GivePlayerCash, ResetPlayerCash e GetPlayerCash. Se non farete così, anche quando darete dei soldi usando le normali funzioni come GivePlayerMoney il player sarà riconosciuto come cheater. Vi consiglio di usare la combinazione di tasti CTRL+H sul PAWN per sostituire velocemente le funzioni. "Bugs": Se per esempio vincerete soldi al casinò oppure guadagnerete soldi stuntando verrete riconosciuti come cheater. Quindi è meglio stare attenti! Ultimi avvertimenti: Questo AntiCheat potrebbe andare in conflitto con la vostra GM se usate un sistema di registrazione dato che i soldi della variabile saranno diversi da quelli salvati nel file del player. Si può facilmente ovviare mettendo nella funzione dove viene eseguito il login, alla fine di tutto, Codice: Cash[playerid] = GetPlayerMoney(playerid); Spero di aver fatto un buon lavoro. Aspetto commenti Se trovate bugs, segnalate =D Vietato copiare la guida senza inserire i crediti! Enjoy ^^ |
Autore: | Angelo [ 05/11/2010, 21:36 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti MoneyHack |
Anche se già ne esisteva una, concordo dicendo che questa è migliore xD peccato il bug del casinò =( cmq bel lavoro |
Autore: | Peppinux AKA Peppe_Stasu [ 05/11/2010, 21:40 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti MoneyHack |
Grazie mille Angelo! E' bello ricevere i complimenti da un moderatore della sezione . Comunque l'ho creata proprio perchè l'altra, postata da NOS ma presa dal SA:MP Forum non avrebbe mai potuto funzionare a causa di svariati bugs. Comunque aspetto altri pareri |
Autore: | Giuseppe_Mazzei [ 07/11/2010, 13:05 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti MoneyHack |
Ora la inserisco tra le varie guide |
Autore: | Peppinux AKA Peppe_Stasu [ 07/11/2010, 13:41 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti MoneyHack |
Grazie |
Autore: | barletheking [ 03/01/2011, 19:01 ] |
Oggetto del messaggio: | Re: [GUIDA] Creare un Anti MoneyHack |
Per disattivare gli stunt, mettere in OnGameModeInit/OnFilterScriptInit questo: Codice: EnableStuntBonusForAll(0); Scusate l'up di una discussione vecchia ma penso sia utile per chi seguirà la guida. |
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/ |