#include <a_samp>
#include <dini>
#include <dudb>
#include <zcmd>
#include <sscanf>
#pragma unused ret_memcpy
new IsLogged[MAX_PLAYERS];
new gLogged[MAX_PLAYERS];
new gRegistred[MAX_PLAYERS];
new file[256];
enum pInfo
{
AdminLevel,
Cash,
Score,
}
new PlayerInfo[MAX_PLAYERS][pInfo];
COMMAND:register(playerid, params[])
{
new tmp[256];
new name[MAX_PLAYER_NAME];
new id;
GetPlayerName(playerid, name, sizeof(name));
if(!sscanf(params, "u", id))
{
format(file,sizeof(file),"/RicAdmin/users/%s.ini",name);
if(!fexist(file))
{
dini_Create(file);
dini_IntSet(file,"Password", udb_hash(tmp));
dini_IntSet(file,"AdminLevel", 0);
dini_IntSet(file,"Cash", 0);
dini_IntSet(file,"Score", 0);
SendClientMessage(playerid, 0xFFFFFFFF, "[System]: Account Created!");
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
GetPlayerName(playerid, name, sizeof(name));
printf("%s has registered a account!", name);
return 1;
}
else
{
SendClientMessage(playerid, 0xFFFFFFFF, " Account Already Found In Database");
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
return 1;
}
}
else return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /register [password]");
}
COMMAND:login(playerid, params[])
{
new tmp[256], tmp2[256];
new id;
new PlayerName[24];
if(!sscanf(params, "u", id))
{
new name[MAX_PLAYER_NAME];
if(IsLogged[playerid] == 1)
{
GetPlayerName(playerid, name, sizeof(name));
format(file,sizeof(file),"/RicAdmin/users/%s.ini",name);
if(fexist(file))
{
tmp2 = dini_Get(file, "Password");
if(udb_hash(tmp) != strval(tmp2))
{
SendClientMessage(playerid, 0xFFFFFFFF, "Login Failed!");
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
printf("%s has failed to login", name);
IsLogged[playerid] = 1;
SetPlayerMoney(playerid, dini_Int(file, "Cash"));
SetPlayerMoney(playerid, dini_Int(file, "Score"));
PlayerInfo[playerid][AdminLevel] = dini_Int(file, "AdminLevel");
SendClientMessage(playerid, 0xFFFFFFFF, "[System]: Account Logged into!");
}
}
}
else return SendClientMessage(playerid, 0xFFFFFFFF, "You already are logged in!");
}
else return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /login [password]");
return 1;
}
public OnPlayerDisconnect(playerid)
{
new name[24];
GetPlayerName(playerid,name,24);
format(file,sizeof(file),"RicAdmin/users/%s.ini",name);
if(dini_Exists(file))
{
dini_IntSet(file,"Cash",GetPlayerMoney(playerid));
dini_IntSet(file,"Score",GetPlayerScore(playerid));
dini_IntSet(file,"AdminLevel",PlayerInfo[playerid][AdminLevel]);
IsLogged[playerid] = 0;
return 1;
}
return 1;
}
public OnPlayerSpawn(playerid)
{
return 1;
}
public OnPlayerConnect(playerid)
{
if(gLogged[playerid] == 0)
{
SendClientMessage(playerid, 0xFFFFFFFF, "Use /login to login into your account!");
return 1;
}
if(gRegistred[playerid] == 0)
{
SendClientMessage(playerid, 0xFFFFFFFF, "Use /register to register your account!");
return 1;
}
return 1;
}
if(udb_hash(tmp) != strval(tmp2))
if(IsLogged[playerid] == 1)
if(IsLogged[playerid] == 1)
if(IsLogged[playerid] == 0)
I did, i changed the
pawn Код:
pawn Код:
|
if(udb_hash(tmp) == strval(tmp2))
#include <a_samp>
#include <dini>
#include <dudb>
#include <zcmd>
#include <sscanf>
#pragma unused ret_memcpy
new IsLogged[MAX_PLAYERS];
new gLogged[MAX_PLAYERS];
new gRegistred[MAX_PLAYERS];
new file[256];
enum pInfo
{
AdminLevel,
Cash,
Score,
}
new PlayerInfo[MAX_PLAYERS][pInfo];
COMMAND:register(playerid, params[])
{
new tmp[256];
new name[MAX_PLAYER_NAME];
new id;
GetPlayerName(playerid, name, sizeof(name));
if(!sscanf(params, "u", id))
{
format(file,sizeof(file),"/RicAdmin/users/%s.ini",name);
if(!fexist(file))
{
dini_Create(file);
dini_IntSet(file,"Password", udb_hash(tmp));
dini_IntSet(file,"AdminLevel", 0);
dini_IntSet(file,"Cash", 0);
dini_IntSet(file,"Score", 0);
SendClientMessage(playerid, 0xFFFFFFFF, "[System]: Account Created!");
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
GetPlayerName(playerid, name, sizeof(name));
printf("%s has registered a account!", name);
return 1;
}
else
{
SendClientMessage(playerid, 0xFFFFFFFF, " Account Already Found In Database");
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
return 1;
}
}
else return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /register [password]");
}
COMMAND:login(playerid, params[])
{
new tmp[256], tmp2[256];
new id;
new PlayerName[24];
if(!sscanf(params, "u", id))
{
new name[MAX_PLAYER_NAME];
if(IsLogged[playerid] == 0)
{
GetPlayerName(playerid, name, sizeof(name));
format(file,sizeof(file),"/RicAdmin/users/%s.ini",name);
if(fexist(file))
{
tmp2 = dini_Get(file, "Password");
if(udb_hash(tmp) == strval(tmp2))
{
SendClientMessage(playerid, 0xFFFFFFFF, "Login Failed!");
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
printf("%s has failed to login", name);
IsLogged[playerid] = 1;
SetPlayerMoney(playerid, dini_Int(file, "Cash"));
SetPlayerMoney(playerid, dini_Int(file, "Score"));
PlayerInfo[playerid][AdminLevel] = dini_Int(file, "AdminLevel");
SendClientMessage(playerid, 0xFFFFFFFF, "[System]: Account Logged into!");
}
}
}
else return SendClientMessage(playerid, 0xFFFFFFFF, "You already are logged in!");
}
else return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /login [password]");
return 1;
}
public OnPlayerDisconnect(playerid)
{
new name[24];
GetPlayerName(playerid,name,24);
format(file,sizeof(file),"RicAdmin/users/%s.ini",name);
if(dini_Exists(file))
{
dini_IntSet(file,"Cash",GetPlayerMoney(playerid));
dini_IntSet(file,"Score",GetPlayerScore(playerid));
dini_IntSet(file,"AdminLevel",PlayerInfo[playerid][AdminLevel]);
IsLogged[playerid] = 0;
return 1;
}
return 1;
}
public OnPlayerSpawn(playerid)
{
return 1;
}
public OnPlayerConnect(playerid)
{
if(gLogged[playerid] == 0)
{
SendClientMessage(playerid, 0xFFFFFFFF, "Use /login to login into your account!");
return 1;
}
if(gRegistred[playerid] == 0)
{
SendClientMessage(playerid, 0xFFFFFFFF, "Use /register to register your account!");
return 1;
}
return 1;
}
if(udb_hash(tmp) == strval(tmp2)) // The passwords matched...so now do the code in the brackets
{
SendClientMessage(playerid, 0xFFFFFFFF, "Login Failed!"); // The login was successful, why do you send them a message saying it failed?
GetPlayerName(playerid, PlayerName, sizeof(PlayerName)); // Get the name and store it in a variable
printf("%s has failed to login", name); // Again, printing that he failed to login, when he didn't?
IsLogged[playerid] = 1; // Setting the IsLogged variable to 1
SetPlayerMoney(playerid, dini_Int(file, "Cash")); // Setting the players money to the value of Cash in the file
SetPlayerMoney(playerid, dini_Int(file, "Score")); // You're setting the money of the person to the value of score in the file, why? Shouldn't you be using SetPlayerScore?
PlayerInfo[playerid][AdminLevel] = dini_Int(file, "AdminLevel"); // Setting the variable to the value of AdminLevel in the file
SendClientMessage(playerid, 0xFFFFFFFF, "[System]: Account Logged into!"); // Telling the player that he logged in!
}
if(udb_hash(tmp) != strval(tmp2))
if(udb_hash(tmp) == strval(tmp2)) // The passwords matched...so now do the code in the brackets
{
SendClientMessage(playerid, 0xFFFFFFFF, "Login Failed!"); // The login was successful, why do you send them a message saying it failed?
GetPlayerName(playerid, PlayerName, sizeof(PlayerName)); // Get the name and store it in a variable
printf("%s has failed to login", name); // Again, printing that he failed to login, when he didn't?
IsLogged[playerid] = 1; // Setting the IsLogged variable to 1
SetPlayerMoney(playerid, dini_Int(file, "Cash")); // Setting the players money to the value of Cash in the file
SetPlayerMoney(playerid, dini_Int(file, "Score")); // You're setting the money of the person to the value of score in the file, why? Shouldn't you be using SetPlayerScore?
PlayerInfo[playerid][AdminLevel] = dini_Int(file, "AdminLevel"); // Setting the variable to the value of AdminLevel in the file
SendClientMessage(playerid, 0xFFFFFFFF, "[System]: Account Logged into!"); // Telling the player that he logged in!
}
else // The passwords didn't match in the "if(udb_hash(tmp) == strval(tmp2))" statement!
{
SendClientMessage(playerid, 0xFFFFFFFF, "[System]: Passwords did not match!");
}