public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(register, 8, cmdtext);
dcmd(login, 5, cmdtext);
return 1;
}
dcmd_register(playerid, params[])
{
if (dini_Exists(gPlayerfile[playerid]))
{
SendClientMessage(playerid, 0xFF0000FF, "You have already registered.");
return 0;
}
else
{
if (!params[0])
{
SendClientMessage(playerid, 0xFF0000FF, "Usage: /register <password>");
return 0;
}
else
{
dini_Create(gPlayerfile[playerid]);
dini_Set(gPlayerfile[playerid], "Password", params);
SendClientMessage(playerid, 0x00FF00FF, "You have successfully registered. Proceed to login thanks.");
return 1;
}
}
}
dcmd_login(playerid, params[])
{
if (!dini_Exists(gPlayerfile[playerid]))
{
SendClientMessage(playerid, 0xFF0000FF, "You have not registered.");
return 0;
}
else if (gPlayerlogged[playerid])
{
SendClientMessage(playerid, 0x00FF00FF, "You have already logged in.");
return 0;
}
else
{
new pw[1000];
pw = dini_Get(gPlayerfile[playerid], "Password");
if (params == pw) // THIS LINE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
{
gPlayerlogged[playerid] = 1;
SendClientMessage(playerid, 0x00FF00FF, "Login successful.");
return 1;
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "Wrong password.");
return 0;
}
}
}

|
Originally Posted by 0rb
Strings are compared with the function 'strcmp'
You save/load passwords unencryted? ![]() |
new pw[1000];
pw = dini_Get(gPlayerfile[playerid], "Password");
gPlayerlogged[playerid] = 1;
for (new x = 0; x<=(sizeof(pw)); x++)
{
if (params[x] != pw[x]) gPlayerlogged[playerid] = 0;
}
|
Originally Posted by iMr
I know it could be done alot easier, but I can't use strcmp :S
|
{
new pw[128];
pw = dini_Get(gPlayerfile[playerid], "Password");
if ( !strcmp(params, pw, true) ) // THIS LINE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
{
gPlayerlogged[playerid] = 1;
SendClientMessage(playerid, 0x00FF00FF, "Login successful.");
return 1;
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "Wrong password.");
return 0;
}
}