Bun deci, acest system nu este facut de mine, stiu ca a mai postat si David o modalitate, dar vreau sa va arat si altfel cum se poate face, este cat de cat asemanator.
Pentru inceput trebuie sa adaugati mai sus in gamemode urmatorul cod:
static const antisqlinjection[][] = { "'", "#", "`", "%s", "%d", "%f" };
function CheckCharacters(string[]); public CheckCharacters(string[]) { for(new i; i < sizeof(antisqlinjection); i++) { if(strfind(string, antisqlinjection, true) != -1) { return 1; } } return 0; }
Bun, acum in orice comanda vom adauga urmatorul cod:
if(CheckCharacters(string)) return SendClientMessage(playerid, COLOR_WHITE, "* Te rugam sa nu folosesti charactere speciale.");
Exemplu:
CMD:changepassword(playerid, params[]) { new parola[256]; if(sscanf(params, "s[256]", parola)) return SCM(blabla); if(CheckCharacters(parola)) return SCM(playerid, COLOR_FADE1, "* Te rugam sa nu folosesti caractere interzise."); return 1; }
Daca folositi exemplul dat mai sus aveti toate comenzile protejate asupra injectiilor, acum hai sa ajutam si dialog-urile.
Adaugam mai sus in gamemode:
* Acum trebuie sa schimbati peste tot prin gamemode din ShowPlayerDialog in ShowPlayerDialogEx *
new dDialogID[MAX_PLAYERS]; new dDialogStyle[MAX_PLAYERS]; new dDialogCaption[MAX_PLAYERS][256]; new dDialogInfo[MAX_PLAYERS][256]; new dDialogButton1[MAX_PLAYERS][256]; new dDialogButton2[MAX_PLAYERS][256]; forward ShowPlayerDialogEx(playerid, dialogid, style, caption[], info[], button1[], button2[]); public ShowPlayerDialogEx(playerid, dialogid, style, caption[], info[], button1[], button2[]) { dDialogID[playerid] = dialogid; dDialogStyle[playerid] = style; format(dDialogCaption[playerid], 256, caption); format(dDialogInfo[playerid], 256, info); format(dDialogButton1[playerid], 256, button1); format(dDialogButton2[playerid], 256, button2); ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2); return 1; }
Acum ultimul pas ramas este sa adaugam urmatoarea verificare la inceputul OnDialogResponse
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dDialogStyle[playerid] == DIALOG_STYLE_INPUT) { for(new i; i < sizeof(antisqlinjection); i++) { if(strfind(inputtext, antisqlinjection, true) != -1) { SendClientMessage(playerid, COLOR_WHITE, "* Te rugam sa nu folosesti charactere speciale in dialog."); ShowPlayerDialogEx(playerid, dDialogID[playerid], dDialogStyle[playerid], dDialogCaption[playerid], dDialogInfo[playerid], dDialogButton1[playerid], dDialogButton2[playerid]); return 1; } } } return 0; }
Sper ca a fost de folos ceea ce am postat aici .