PHP код:
#include <a_samp>
#include <zcmd>
#include <YSI\y_ini>
#include <sscanf>
#define HASH // Put '//' in front of define if you don't want a hash for your password ..
// udb_hash can be modified with your hasher if you have another one (if you don't have one you need to put '//' in front of define)
#define TAG // Put '//' if you don't use a tag where you save password.
#if defined HASH
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;
}
#endif
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 ..
#if defined TAG
INI_SetTag(File, "data"); // We set tag 'data'
#endif
#if defined HASH
INI_WriteInt(File, "Password", udb_hash(pPass)); // Write our hashed password
#else
INI_WriteString(File, "Password", pPass); // Write our string password
#endif
INI_Close(File); // Close the file
SendClientMessage(playerid, -1, "You changed your password , at next login you need to type new password.");
return 1;
}