12.03.2010, 21:19
vai em DCMD
tenta nao tenho a certeza ke funcione ate pk pode conter erros e eu nao testei...
pawn Code:
//topo
new gPlayerLogged[MAX_PLAYERS];
forward OnPlayerLogin(playerid,password[]);
forward OnPlayerRegister(playerid, password[]);
//COMANDOS
dcmd_login(playerid, params[])
{
if(IsPlayerConnected(playerid))
{
new tmppass[64];
if(gPlayerLogged[playerid] == 1)
{
SendClientMessage(playerid, COLOR_WHITE, "Ja estas logado");
return 1;
}
if(!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "[Uso]: /login [password]");
strmid(tmppass, params, 0, strlen(params), 255);
OnPlayerLogin(playerid,tmppass);
}
return 1;
}
dcmd_registar(playerid, params[])
{
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid] == 1)
{
SendClientMessage(playerid, COLOR_WHITE, "Ja estas logado");
return 1;
}
new sendername[MAX_PLAYER_NAME];
new string[256];
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "%s.ini", sendername);
new File: hFile = fopen(string, io_read);
if (hFile)
{
SendClientMessage(playerid, COLOR_YELLOW, "Este nome ja esta em uso!");
fclose(hFile);
return 1;
}
new tmppass[64];
if(!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "[Uso]: /registar [password]");
strmid(tmppass, params, 0, strlen(params), 255);
OnPlayerRegister(playerid,tmppass);
}
return 1;
}
public OnPlayerLogin(playerid,password[])
{
new StringC[256];
new string2[256];
new tmp2[256];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(st,sizeof(st),"%s.ini",name);
StringC = dini_Get((st), "Password");
if (udb_hash(password) != strval(StringC))
{
SendClientMessage(playerid, COLOR_WHITE, "SERVIDOR: Password Incorrecta.");
gPlayerLogged[playerid] = 0;
}
else
{
dini_Set((st),"Key",password);
new playername2[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername2, sizeof(playername2));
format(StringC, sizeof(StringC), "%s.ini", playername2);
new File: UserFile = fopen(StringC, io_read);
if ( UserFile )
{
new PassData[256];
new keytmp[256];
fread( UserFile , PassData , sizeof( PassData ) );
keytmp = ini_GetKey( PassData );
{
new key[ 256 ] , val[ 256 ];
new Data[ 256 ];
while ( fread( UserFile , Data , sizeof( Data ) ) )
{
key = ini_GetKey( Data );
if( strcmp( key , "NIVEL" , true ) == 0 ) { val = ini_GetValue( Data ); nivel[playerid] = strval( val ); }
}
gPlayerLogged[playerid] = 1;
fclose(UserFile);
ResetPlayerMoney(playerid);
format(string2, sizeof(string2), "SERVIDOR: Bem-Vindo %s",playername2);
SendClientMessage(playerid, COLOR_WHITE,string2);
printf("%s has logged in.",playername2);
SpawnPlayer(playerid);
format(tmp2, sizeof(tmp2), "~w~Bem-Vindo ~n~~y~ %s", playername2);
GameTextForPlayer(playerid, tmp2, 5000, 1);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_CYAN, "Tu ainda nгo tens conta usa /registar [Password]");
return 1;
}
}
return 1;
}
public OnPlayerRegister(playerid, password[])
{
if(IsPlayerConnected(playerid))
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(st,sizeof(st),"%s.ini",name);
dini_Create((st));
dini_IntSet((st), "Password", udb_hash(password));
dini_Set((st),"Key",password);
dini_IntSet((st), "NIVEL", 0);
SendClientMessage(playerid, COLOR_YELLOW, "Conta registada podes agora fazer login utiliza /login [password]");
}
return 1;
}