20.08.2015, 06:53
Код:
#include <a_samp> #include <zcmd> #include <YSI\y_ini> #include <sscanf> udb_hash(buf[]) // By darcoblue | Password hasher . { new s1=1, s2; for(new n; n<strlen(buf); n++) { s1 = (s1 + buf[n]) % 65521; s2 = (s2 + s1) % 65521; } return (s2 << 16) + s1; } CMD:changepassword(playerid, params[]) { new pPass[16], pName[32]; // some news .. GetPlayerName(playerid, pName, sizeof(pName)); // get the player name (who typed) if(sscanf(params,"s", pPass)) return SendClientMessage(playerid, -1 , "/changepassword [NewPassword]"); // Return a message if parameters are null .. if(strlen(pPass) < 3 || strlen(pPass) > 15) return SendClientMessage(playerid, -1, "Your new password need to be between 3 and 15 characters."); if(strfind(pPass, "/") != -1 || strfind(pPass, "\\") != -1 || strfind(pPass, ":") != -1 || strfind(pPass, "*") != -1 || strfind(pPass, "?") != -1 || strfind(pPass, "\"") != -1 || strfind(pPass, "<") != -1 || strfind(pPass, ">") != -1 || strfind(pPass, "|") != -1 || strfind(pPass, "@")) return SendClientMessage(playerid, -1, "INVALID CHARACTERS: '/' '\' ':' '?' '\' '<' '>' '*' '|' '@'"); // Characters black list . new fPath[64]; // create a string format(fPath, sizeof(fPath), "/Users/%s.ini", pName); // Format the fPath string array new INI:File = INI_Open(fPath); // a new initialiser for our INI_Open .. INI_SetTag(File, "data"); // We set tag 'data' INI_WriteInt(File, "Password", udb_hash(pPass)); // Write our hashed password INI_Close(File); // Close the file SendClientMessage(playerid, -1, "You changed your password , at next login you need to type new password."); return 1; }