24.12.2012, 12:42
Hey... I tried to make this register/login system from a tutorial, did exact same things but it won't work.
Here are both commands.
The problem is that I get errors like "USAGE:" when I actually type the correct thing, or when I somehow manage to register it tells me that I am not, or if I try to login it will tell me that I am already logged in.. many other things I guess... I didn't know how to fix these so I would really need some help on them, if you can please help me.
Thank you very much!
Here are both commands.
Код:
//====[INCLUDES]====//
#include <a_samp>
#include <sscanf2>
#include <zcmd>
#include <strtok>
#include <sii>
//===[ACCOUNTS]===//
enum PlayerInfo
{
Logged,
Level,
}
//=====[NEW]=====//
new PInfo[MAX_PLAYERS][PlayerInfo];
Код:
public OnPlayerConnect(playerid)
{
new file[64],
PlayerName[25];
GetPlayerName(playerid,PlayerName,sizeof PlayerName);
format(file,sizeof file,"Admin/%s.ini",PlayerName);
if(!fexist(file))
{
SendClientMessage(playerid, COLOR_ERROR, "[ERROR] You aren't registered! Use /register <password>!");
}
else
{
SendClientMessage(playerid, COLOR_ERROR, "[ERROR] You are registered! Use /login <password>!");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
PInfo[playerid][Logged] = 0;
return 1;
}
Код:
CMD:register(playerid, params[])
{
if(PInfo[playerid][Logged] == 1) return SendClientMessage(playerid, COLOR_ERROR, "[ERROR] You are already logged in!");
new password[23];
if(sscanf(params,"s[23]",password)) return SendClientMessage(playerid, COLOR_ORANGE, "USAGE: /register <password>");
new file[64],
PlayerName[24];
GetPlayerName(playerid,PlayerName,sizeof PlayerName);
format(file,sizeof file,"Admin/%s.ini",PlayerName);
if(fexist(file)) return SendClientMessage(playerid, COLOR_ERROR, "[ERROR] Somehow you're already registered!");
INI_Open(file);
INI_WriteString("Password",password);
INI_WriteInt("Level",PInfo[playerid][Level]);
INI_Save();
INI_Close();
SendClientMessage(playerid, COLOR_ACHIEVEMENT, "[REGISTER] You have successfully registered!");
PInfo[playerid][Logged] = 1;
return 1;
}
CMD:login(playerid, params[])
{
if(PInfo[playerid][Logged] == 1) return SendClientMessage(playerid, COLOR_ERROR, "[ERROR] You are already logged in!");
new password[23],
password2[23];
if(sscanf(params,"s[23]",password)) return SendClientMessage(playerid, COLOR_ORANGE, "USAGE: /login <password>");
new file[64],
PlayerName[24];
GetPlayerName(playerid,PlayerName,sizeof PlayerName);
format(file,sizeof file,"Admin/%s.ini",PlayerName);
if(!fexist(file)) return SendClientMessage(playerid, 0xFFFFFFFF, "[ERROR] You aren't registered! Use /register!");
INI_Open(file);
INI_ReadString(password2,"Password");
if(strcmp(password,password2) != 0) return SendClientMessage(playerid, COLOR_ERROR,"[ERROR] Wrong password! Try again!"),
INI_Close();
PInfo[playerid][Level] = INI_ReadInt("Level");
INI_Close();
SendClientMessage(playerid, COLOR_ACHIEVEMENT, "[LOGIN] You have succefully logged in!");
PInfo[playerid][Logged] = 1;
return 1;
}
Thank you very much!

