PHP код:
#define DIALOG_REGISTRO 200
#define DIALOG_LOGAR 201
//JA COLOQUEI EM ONPLAYERCONNECT E TAMBEM NГO DEU
//O DIALOG DO LOGIN TA INGLES POIS COPIEI O SHOWPLAYERDIALOG DO WIKI PARA VER SE FUNCIONAVA!
public OnPlayerRequestClass(playerid, classid)
{
if(Logado[playerid] == 0) {
new arquivo[40], name[MAX_PLAYER_NAME]; //'arquivo' uma string para a format | 'name' para pegar o nome do playerid
GetPlayerName(playerid, name, 32); //Pega o nome do playerid
format(arquivo, 40, "Contas/%s.ini", name); //Formata o arquivo com o nome do playerid
if(DOF2_FileExists(arquivo)) //Verifica se a pasta existe
{ //Caso existir, irб retornar a dialog de Login
ShowPlayerDialog(playerid, 201, DIALOG_STYLE_INPUT, "Login", "Enter your password below:", "Login", "Cancel");
}
else //Caso o arquivo nгo exista
{ //Irб retornar a dialog de registro
ShowPlayerDialog(playerid, 202, DIALOG_STYLE_INPUT, "Registro", "Vocк ainda nгo й Registrado, digite uma senha para se registrar!", "Confirma", "Cancelar");
}
}
return false;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new arquivo[40], name[MAX_PLAYER_NAME]; //'arquivo' uma string para a format | 'name' para pegar o nome do playerid
GetPlayerName(playerid, name, 32); //Para pegar o nome do playerid
format(arquivo, 40, "Contas/%s.ini", name); //Formata o arquivo com o nome do playerid
if(dialogid == DIALOG_REGISTRO)
{
if(!strval(inputtext)) //Verifica se o player digitou LETRAS, caso for true
{ //Retorna a dialog de registro novamente para ele digitar NЪMEROS
ShowPlayerDialog(playerid, 200, DIALOG_STYLE_INPUT, "Registro", "Digite apenas nъmeros!\nDigite sua senha novamente para se registrar!", "Confirma", "Cancelar");
return 1;
}
if(!response) //Verifica se ele clicar em 'Cancelar"
{ //Caso ele clicar em cancelar, irб retornar ao playerid KICK
Kick(playerid);
return 1;
}
else //Verifica se ele Confirma o Registro
{ //Caso for true, ira criar o arquivo na pasta CONTAS
pInfo[playerid][pSenha] = strval(inputtext); //Player[playerid][Senha] vai ser igual ao que ele digitar na dialog Registro
DOF2_CreateFile(arquivo); //Vai criar o arquvivo na pasta Contas
DOF2_GetBool(arquivo, "Cadastrado", pInfo[playerid][pCadastrado]);
DOF2_SetInt(arquivo, "Senha", pInfo[playerid][pSenha]); //Vai salvar a senha do playerid
DOF2_SetInt(arquivo, "Hospital", pInfo[playerid][Hospital]); //Vai salvar quantas vezes ele matou
DOF2_SetInt(arquivo, "Dinheiro", pInfo[playerid][pDinheiro]); //Vai salvar o dinheiro dele
DOF2_SaveFile(); //E finalmente salvando o arquivo, sem essa funзгo o arquivo nгo serб salvo!
//Retornando a dialog de Login ao player no final para ele logar no server
ShowPlayerDialog(playerid, 201, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar");
}
}
if(dialogid == DIALOG_LOGAR)
{
if(!strval(inputtext)) //Verifica se o player digitou letras, caso for true
{ //Retorna a dialog de Login novamente para ele digitar NЪMEROS
ShowPlayerDialog(playerid, 201, DIALOG_STYLE_PASSWORD, "Logar", "Digite apenas nъmeros!\nDigite sua senha cadastrada para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
return 1;
}
if(!response) //Verifica se ele clicar em 'Cancelar"
{ //Caso ele clicar em cancelar, irб retornar ao playerid KICK
Kick(playerid);
return 1;
}
else //Verifica se ele Confirma o Login
{ //Caso for true, ira verificar se o que ele digitar serб a mesma senha que ele se registrou anteriormente
pInfo[playerid][pSenha] = DOF2_GetInt(Contas(playerid), "Senha");
if(strcmp(inputtext, pInfo[playerid][pSenha], true) == 0)
{ //Retornarб os dados do player e apуs irб dar Spawn no mesmo
pInfo[playerid][pCadastrado] = DOF2_GetBool(Contas(playerid), "Cadastrado");
pInfo[playerid][pDinheiro] = DOF2_GetInt(Contas(playerid), "Dinheiro");
GivePlayerMoney(playerid, pInfo[playerid][pDinheiro]);
pInfo[playerid][Hospital] = DOF2_GetInt(Contas(playerid), "Hospital");
SpawnPlayer(playerid);
}
else //Caso ele digitar a senha errada
{
ShowPlayerDialog(playerid, 201, DIALOG_STYLE_PASSWORD, "Logar", "Vocк digitou sua senha errado, digite-a novamente para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
Erro[playerid]++; //O erro vai aumentar cada vez que ele errar
if(Erro[playerid] == 5) //Quando chegar а 5 vezes, irб retornar a msg e o Ban
{
SendClientMessage(playerid, -1, "Sua conta estб banida por errar 5 vezes a sua senha, contacte o Admin para retirar seu Ban!");
Ban(playerid);
return 1;
}
}
}
}
return 1;
}