10 horas atrás
(Esta mensagem foi modificada pela última vez a: 7 horas atrás por LOS_SANTOS.)
como eu faco aqui para quando um player ja for registrado e ele logar ele ja passa pela public onplayerrequestclass ai ele selecionar a skin e quando ele sair do servidor ele logar novamente nao precisar passar pela selecao de skin novamente ja logar com a skin que ele escolheu antes prq toda vez que logo eu passo pela callback onplayerrequestclass queria que o jogador so precissase passar uma unica vez me ajudem nisso ou me diga como faco
Código:
#include a_samp
#include dini
#define DIALOG_REGISTER 0
#define DIALOG_LOGIN 1
main(){}
new Logged[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
new name[MAX_PLAYER_NAME], file[200];
GetPlayerName(playerid, name, sizeof(name));
format(file, sizeof(file), "\\users\\%s.ini", name);
Logged[playerid] = 0;
if (!dini_Exists(file))
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Autorizacao", "{ff0000}»{ffffff} Por favor, insira uma senha para se registrar:", "Registrar","");
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "{ff0000}»{ffffff} Por favor, insira sua senha:", "Logar","");
}
return 1;
}
public OnPlayerRequestClass(playerid,classid)
{
if(Logged[playerid] == 1)//se tiver logado
{
SetPlayerFacingAngle( playerid, 177.5789 );
SetPlayerPos(playerid, 1479.2330,-1672.9246,14.0469);
SetPlayerCameraPos(playerid, 1478.4987,-1678.3760,14.0469);
SetPlayerCameraLookAt(playerid, 1478.6217,-1675.4032,14.0469);
return 1;
}
else if(Logged[playerid]== 0)//se nao tiver logado
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "{ff0000}»{ffffff} Por favor, insira sua senha:", "Logar","");
return 1;
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])//dialogresponse
{
if(response == 1) // Se o jogador clicou em "Registrar" ou "Logar"
{
if (strlen(inputtext) == 0)
{
//SendClientMessage(playerid, vermelho, "» voce precisa inserir uma senha!");
if (dialogid == DIALOG_REGISTER)
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Autorizacao", "{ff0000}»{ffffff} Por favor, insira uma senha para se registrar:", "Registrar","");
}
else if (dialogid == DIALOG_LOGIN)
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "{ff0000}»{ffffff} Por favor, insira sua senha:", "Logar","");
}
return 1;
}
new name[MAX_PLAYER_NAME], file[200];
GetPlayerName(playerid, name, sizeof(name));
format(file, sizeof(file), "\\users\\%s.ini", name);
if (dialogid == DIALOG_REGISTER) // Registro
{
if (strlen(inputtext) < 4) // Verifica se a senha tem no mínimo 4 caracteres
{
SendClientMessage(playerid, 0x00ffffaa, "{ff0000}»{ffffff} a senha deve ter no minimo 4 caracteres.");
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Autorizacao", "{ff0000}»{ffffff} Por favor, insira uma senha para se registrar:", "Registrar", "");
return 1;
}
dini_Create(file);
dini_IntSet(file, "password", adler32_hash(inputtext)); // Armazena a senha com hash
dini_IntSet(file, "cash", 0);
dini_IntSet(file, "score", 0);
SendClientMessage(playerid, -1, "{ff0000}»{ffffff} voce se registrou com sucesso");
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "{ff0000}»{ffffff} Por favor, insira sua senha:", "Logar", "");
return 1;
}
else if (dialogid == DIALOG_LOGIN) // Login
{
if (!dini_Exists(file)) // Verifica se o arquivo do jogador existe
{
SendClientMessage(playerid, 0x00ffffaa, "{ff0000}»{ffffff} o arquivo de usuario nao foi encontrado. Por favor, registre-se.");
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Registro", "{ff0000}»{ffffff} Por favor, insira uma senha para se registrar:", "Registrar","");
return 1;
}
if (adler32_hash(inputtext) != dini_Int(file, "password")) // Verifica se a senha esta correta
{
SendClientMessage(playerid, 0x00ffffaa, "{ff0000}»{ffffff} senha incorreta! Tente novamente.");
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Login", "{ff0000}»{ffffff} Senha incorreta! Por favor, tente novamente:", "Logar","");
return 1;
}
Logged[playerid] = 1;
GivePlayerMoney(playerid, dini_Int(file, "cash"));
SetPlayerScore(playerid, dini_Int(file, "score"));
SendClientMessage(playerid, -1, "{ff0000}»{ffffff} voce esta logado com sucesso!");
return 1;
}
}
return 1;
}
adler32_hash(buf[])
{
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n<length; n++)
{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s2 << 16) + s1;
}