[Ajuda] Login
#1

@Resolvido
Reply
#2

poste as dialogs ... em on player dialog.
Reply
#3

@Resolvido
Reply
#4

tenta assim.
@edit
Troque isso:
Quote:

if(strcmp(encrypt(inputtext), senhaacc, true) == 0)

Por :
PHP код:
if(!strcmp(senhaaccencrypt(inputtext)) && strlen(encrypt(inputtext)) > 0
Reply
#5

@Resolvido
Reply
#6

seu cуdigo pode ser muito mais otimizado... teste pra ver se funciona.

PHP код:
if(dialogid == LOGIN)
{
    new 
P_NOME[MAX_PLAYER_NAME], senhaacc[256]; GetPlayerName(playeridP_NOMEMAX_PLAYER_NAME);
    
    
format(filesizeof(file), PASTA_CONTASP_NOME);
    if(
response)
    {
        if(!
strlen(inputtext))
        {
            
SendClientMessage(playeridVermelho,"| CONTA | Digite uma senha, nгo deixe em branco.!");
            
format(STRXsizeof(STRX), "{F60000}Senha incorreta, {579AF1}%s! {FFFFFF}Logue-se em sua conta.\n\n{FFFFFF}Digite sua senha e clique em \"{64EE45}Logar\"."P_NOME);
            
ShowPlayerDialog(playeridLOGINDIALOG_STYLE_PASSWORD"{F60000}CONTA"STRX"Logar""Sair");
            return 
1;
        }
        
senhaacc dini_Get(file"Senha");
        if(
strcmp(encrypt(inputtext), senhaacctrue) == 0)
        {
            
SetSpawnInfo(playerid0dini_Int(file"Skin"), dini_Int(file"CasaX"), dini_Int(file"CasaY"), dini_Int(file"CasaZ"), 354.1657000000);
            
            if(
dini_Int(file"Continuar") == 1)
            {
                
SendClientMessage(playerid,Branco,"| INFO | Vocк pode voltar a sua posiзгo anterior, use {CFCDCD}/continuar {FFFFFF}Vocк tem apenas 30 segundos para usar esse comando !");
            }
            
            
pAdmin[playerid] = dini_Int(file"Admin");
            
guardiao[playerid] = dini_Int(file"Guardiao");
            if(
dini_Int(file"Bloco") == 1)
            {
                new 
stringlembrete[128];
                
format(stringlembretesizeof(stringlembrete), "Lembrete: %s."dini_Get(file"Lembrete"));
                
SendClientMessage(playeridAzulClarostringlembrete);
            }
            if(
dini_Int(file,"novato") == 2)
            {
                new 
ip[128];
                
GetPlayerIp(playerid,ip,128);
                
format(gstringsizeof(gstring), "Seja bem vindo {CFCDCD}%s seu id й o {CFCDCD}[%d] {FFFFFF}tenha um bom jogo!"P_NOME,playerid);
                
SendClientMessage(playeridBrancogstring);
            }
            
            
SetTimerEx("continuar"30000false"i"playerid);
            if(!
AlreadyGiveWeapons[playerid]) SetTimerEx("LoadArmasToFile"2000false,"i",playerid);
            
PlayerInfo[playerid][pProfissao] = dini_Int(file"Profissao");
            
PlayerInfo[playerid][pExpe] = dini_Int(file"EXP");
            
PlayerInfo[playerid][pLevel] = dini_Int(file"Level");
            
PlayerInfo[playerid][pPlano] = dini_Int(file"PlanodeSaude");
            
PlayerInfo[playerid][pTcasa] = dini_Int(file"TCasa");
            
PlayerInfo[playerid][pPunidop] = dini_Int(file"Punidop");
            
PlayerInfo[playerid][pCorregedor] = dini_Int(file"Corregedor");
            
sequestrado[playerid] = dini_Int(file"sequestrado");
            
SetPlayerWantedLevel(playeriddini_Int(file"Procurado"));
            
preso[playerid] =  dini_Int(file"Preso");
            
PlayerInfo[playerid][pRouboubanco] =  dini_Int(file"rouboubanco");
            
jasequestro[playerid] =  dini_Int(file"jasequestro");
            
PlayerInfo[playerid][pHabTerrestre] =  dini_Int(file"HabTerrestre");
            
PlayerInfo[playerid][pHabNautica] =  dini_Int(file"HabNautica");
            
PlayerInfo[playerid][pHabAerea] =  dini_Int(file"HabAerea");
            
PlayerInfo[playerid][pPorte] =  dini_Int(file"Porte");
            
PlayerInfo[playerid][pTitulo] =  dini_Int(file"Titulo");
            
PlayerInfo[playerid][pFunc1] =  dini_Int(file"piao");
            
PlayerInfo[playerid][pFunc2] =  dini_Int(file"piao1");
            
PlayerInfo[playerid][pFunc3] =  dini_Int(file"piao2");
            
PlayerInfoplayerid ][ Abuser ] = dini_Int(file"Abuser" );
            
PlayerInfoplayerid ][ pPreso ] = dini_Int(file"pPreso" );
            
PlayerInfoplayerid][ Avisos ] = dini_Int(file"Avisos" );
            
playerinterior[playerid]=-1;
            
EntrouDM[playerid] = 0;
            
DMLiberado2[playerid] = 0;
            
PlayerInfo[playerid][pTcaminhao] =  0;
            
KillTimer(TimerLoArear[playerid]);
            
msgcount[playerid] = -1;
            
msgconvi[playerid] = 0;
            
convidou[playerid] = -1;
            
Mute[playerid]= 0;
            
Lendotutorial[playerid] = 0;
            
nautlls[playerid]= 0;
            
nobarlv[playerid]=0;
            
nobarls[playerid]=0;
            
nobarsf[playerid]=0;
            
nobarfc[playerid]=0;
            
Algemado[playerid]=false;
            
sequestro[playerid]=0;
            
aviso[playerid]=0;
            
gmod[playerid]=0;
            
amod[playerid]=0;
            
cacando[playerid]=0;
            
prefsf[playerid]=0;
            
preflv[playerid]=0;
            
prefls[playerid]=0;
            
vercmds[playerid]=0;
            
Dplos[playerid] = 0;
            
Dpsan[playerid] = 0;
            
Dpford[playerid] = 0;
            
Dpventura[playerid] = 0;
            
            
KillTimer(timercou[playerid]);
            
KillTimer(TimerLocalizar[playerid]);
            
            
votou[playerid] = false;
            
PlayerInfo[playerid][pLogged] = 1;
            
GivePlayerGrana(playeriddini_Int(file"Dinheiro"));
            
PlayAudioStreamForPlayer(playerid"http://stream.radioeletrohits.net:9990/");
            
minUP[playerid] = dini_Int(file"Relogioupm"); //RELOGIO UP
            
segUP[playerid] = dini_Int(file"Relogioups");
            
SendClientMessage(playerid0xFFFFFFAA"| CONTA | Logado com sucesso!");
            
TextDrawHideForPlayer (playeridevento [playerid]);
            
TextDrawHideForPlayer(playeridBEMVINDO1);
            
SpawnPlayer(playerid);
            
SpawnPlayerAtHouse(playerid);
            
Casalogin(playerid);
            
SpawnPresidente(playerid);
            new 
ano,mes,dia;
            
getdate(anomesdia);
            
format(stringsizeof(string), " (%d/%d/%d)"dia,mes,ano);
            
dini_Set(file"logoem"string);
            new 
IP[128];
            new 
sip[222];
            
GetPlayerIp(playeridIPsizeof(IP));
            
format(sipsizeof(sip), "%d"IP);
            
dini_Set(file"IP"sip);
        }
        else
        {
            
SendClientMessage(playeridVermelho,"| CONTA | Senha incorreta, Se errar 3 vezes serб kickado!");
            
format(STRXsizeof(STRX), "{F60000}Senha incorreta, {579AF1}%s! {FFFFFF}Logue-se em sua conta.\n\n{FFFFFF}Digite sua senha e clique em \"{64EE45}Logar\"."P_NOME);
            
ShowPlayerDialog(playeridLOGINDIALOG_STYLE_PASSWORD"{F60000}CONTA"STRX"Logar""Sair");
            
PlayerInfo[playerid][pLoginsFalsos]++;
            if(
PlayerInfo[playerid][pLoginsFalsos] >= 3)
            {
                
SendClientMessage(playeridVermelho,"| CONTA | Vocк errou a senha 3 vezes e foi kickado!");
                
Kick(playerid);
            }
        }
    }
    else
    {
        
Kick(playerid);
    }

Reply
#7

@Resolvido
Reply
#8

@Resolvido
Reply
#9

Quote:
Originally Posted by Malbeck
Посмотреть сообщение
Man quase deu so q a hora q eu apertei o enter logo mas fica no dialog pra digita a senha
como assim vocк digita a senha incorreta ou nao digita a dialog volta certo ?, se vocк digita a senha correta ele loga ? e spawna o player ?

veja.. teste assim.

PHP код:
if(dialogid == LOGIN)
{
    new 
P_NOME[MAX_PLAYER_NAME], senhaacc[256]; GetPlayerName(playeridP_NOMEMAX_PLAYER_NAME);
    
    
format(filesizeof(file), PASTA_CONTASP_NOME);
    if(
response)
    {
        if(!
strlen(inputtext))
        {
            
SendClientMessage(playeridVermelho,"| CONTA | Digite uma senha, nгo deixe em branco.!");
            
format(STRXsizeof(STRX), "{F60000}Senha incorreta, {579AF1}%s! {FFFFFF}Logue-se em sua conta.\n\n{FFFFFF}Digite sua senha e clique em \"{64EE45}Logar\"."P_NOME);
            
ShowPlayerDialog(playeridLOGINDIALOG_STYLE_PASSWORD"{F60000}CONTA"STRX"Logar""Sair");
            return 
1;
        }
        
senhaacc dini_Get(file"Senha");
        if(
strcmp(encrypt(inputtext), senhaacctrue) == 0)
        {
            
SetSpawnInfo(playerid0dini_Int(file"Skin"), dini_Int(file"CasaX"), dini_Int(file"CasaY"), dini_Int(file"CasaZ"), 354.1657000000);
            
            if(
dini_Int(file"Continuar") == 1)
            {
                
SendClientMessage(playerid,Branco,"| INFO | Vocк pode voltar a sua posiзгo anterior, use {CFCDCD}/continuar {FFFFFF}Vocк tem apenas 30 segundos para usar esse comando !");
            }
            
            
pAdmin[playerid] = dini_Int(file"Admin");
            
guardiao[playerid] = dini_Int(file"Guardiao");
            if(
dini_Int(file"Bloco") == 1)
            {
                new 
stringlembrete[128];
                
format(stringlembretesizeof(stringlembrete), "Lembrete: %s."dini_Get(file"Lembrete"));
                
SendClientMessage(playeridAzulClarostringlembrete);
            }
            if(
dini_Int(file,"novato") == 2)
            {
                new 
ip[128];
                
GetPlayerIp(playerid,ip,128);
                
format(gstringsizeof(gstring), "Seja bem vindo {CFCDCD}%s seu id й o {CFCDCD}[%d] {FFFFFF}tenha um bom jogo!"P_NOME,playerid);
                
SendClientMessage(playeridBrancogstring);
            }
            
            
SetTimerEx("continuar"30000false"i"playerid);
            if(!
AlreadyGiveWeapons[playerid]) SetTimerEx("LoadArmasToFile"2000false,"i",playerid);
            
PlayerInfo[playerid][pProfissao] = dini_Int(file"Profissao");
            
PlayerInfo[playerid][pExpe] = dini_Int(file"EXP");
            
PlayerInfo[playerid][pLevel] = dini_Int(file"Level");
            
PlayerInfo[playerid][pPlano] = dini_Int(file"PlanodeSaude");
            
PlayerInfo[playerid][pTcasa] = dini_Int(file"TCasa");
            
PlayerInfo[playerid][pPunidop] = dini_Int(file"Punidop");
            
PlayerInfo[playerid][pCorregedor] = dini_Int(file"Corregedor");
            
sequestrado[playerid] = dini_Int(file"sequestrado");
            
SetPlayerWantedLevel(playeriddini_Int(file"Procurado"));
            
preso[playerid] =  dini_Int(file"Preso");
            
PlayerInfo[playerid][pRouboubanco] =  dini_Int(file"rouboubanco");
            
jasequestro[playerid] =  dini_Int(file"jasequestro");
            
PlayerInfo[playerid][pHabTerrestre] =  dini_Int(file"HabTerrestre");
            
PlayerInfo[playerid][pHabNautica] =  dini_Int(file"HabNautica");
            
PlayerInfo[playerid][pHabAerea] =  dini_Int(file"HabAerea");
            
PlayerInfo[playerid][pPorte] =  dini_Int(file"Porte");
            
PlayerInfo[playerid][pTitulo] =  dini_Int(file"Titulo");
            
PlayerInfo[playerid][pFunc1] =  dini_Int(file"piao");
            
PlayerInfo[playerid][pFunc2] =  dini_Int(file"piao1");
            
PlayerInfo[playerid][pFunc3] =  dini_Int(file"piao2");
            
PlayerInfoplayerid ][ Abuser ] = dini_Int(file"Abuser" );
            
PlayerInfoplayerid ][ pPreso ] = dini_Int(file"pPreso" );
            
PlayerInfoplayerid][ Avisos ] = dini_Int(file"Avisos" );
            
playerinterior[playerid]=-1;
            
EntrouDM[playerid] = 0;
            
DMLiberado2[playerid] = 0;
            
PlayerInfo[playerid][pTcaminhao] =  0;
            
KillTimer(TimerLoArear[playerid]);
            
msgcount[playerid] = -1;
            
msgconvi[playerid] = 0;
            
convidou[playerid] = -1;
            
Mute[playerid]= 0;
            
Lendotutorial[playerid] = 0;
            
nautlls[playerid]= 0;
            
nobarlv[playerid]=0;
            
nobarls[playerid]=0;
            
nobarsf[playerid]=0;
            
nobarfc[playerid]=0;
            
Algemado[playerid]=false;
            
sequestro[playerid]=0;
            
aviso[playerid]=0;
            
gmod[playerid]=0;
            
amod[playerid]=0;
            
cacando[playerid]=0;
            
prefsf[playerid]=0;
            
preflv[playerid]=0;
            
prefls[playerid]=0;
            
vercmds[playerid]=0;
            
Dplos[playerid] = 0;
            
Dpsan[playerid] = 0;
            
Dpford[playerid] = 0;
            
Dpventura[playerid] = 0;
            
            
KillTimer(timercou[playerid]);
            
KillTimer(TimerLocalizar[playerid]);
            
            
votou[playerid] = false;
            
PlayerInfo[playerid][pLogged] = 1;
            
GivePlayerGrana(playeriddini_Int(file"Dinheiro"));
            
PlayAudioStreamForPlayer(playerid"http://stream.radioeletrohits.net:9990/");
            
minUP[playerid] = dini_Int(file"Relogioupm"); //RELOGIO UP
            
segUP[playerid] = dini_Int(file"Relogioups");
            
SendClientMessage(playerid0xFFFFFFAA"| CONTA | Logado com sucesso!");
            
TextDrawHideForPlayer (playeridevento [playerid]);
            
TextDrawHideForPlayer(playeridBEMVINDO1);
            
SpawnPlayer(playerid);
            
SpawnPlayerAtHouse(playerid);
            
Casalogin(playerid);
            
SpawnPresidente(playerid);
            new 
ano,mes,dia;
            
getdate(anomesdia);
            
format(stringsizeof(string), " (%d/%d/%d)"dia,mes,ano);
            
dini_Set(file"logoem"string);
            new 
IP[128];
            new 
sip[222];
            
GetPlayerIp(playeridIPsizeof(IP));
            
format(sipsizeof(sip), "%d"IP);
            
dini_Set(file"IP"sip);
        }
        else
        {
            
SendClientMessage(playeridVermelho,"| CONTA | Senha incorreta, Se errar 3 vezes serб kickado!");
            
format(STRXsizeof(STRX), "{F60000}Senha incorreta, {579AF1}%s! {FFFFFF}Logue-se em sua conta.\n\n{FFFFFF}Digite sua senha e clique em \"{64EE45}Logar\"."P_NOME);
            
ShowPlayerDialog(playeridLOGINDIALOG_STYLE_PASSWORD"{F60000}CONTA"STRX"Logar""Sair");
            
PlayerInfo[playerid][pLoginsFalsos]++;
            if(
PlayerInfo[playerid][pLoginsFalsos] >= 3)
            {
                
SendClientMessage(playeridVermelho,"| CONTA | Vocк errou a senha 3 vezes e foi kickado!");
                
Kick(playerid);
            }
        }
    }
    else
    {
        
Kick(playerid);
    }

Reply
#10

Quote:
Originally Posted by Whoo
Посмотреть сообщение
como assim vocк digita a senha incorreta ou nao digita a dialog volta certo ?, se vocк digita a senha correta ele loga ? e spawna o player ?

veja.. teste assim.

PHP код:
if(dialogid == LOGIN)
{
    new 
P_NOME[MAX_PLAYER_NAME], senhaacc[256]; GetPlayerName(playeridP_NOMEMAX_PLAYER_NAME);
    
    
format(filesizeof(file), PASTA_CONTASP_NOME);
    if(
response)
    {
        if(!
strlen(inputtext))
        {
            
SendClientMessage(playeridVermelho,"| CONTA | Digite uma senha, nгo deixe em branco.!");
            
format(STRXsizeof(STRX), "{F60000}Senha incorreta, {579AF1}%s! {FFFFFF}Logue-se em sua conta.\n\n{FFFFFF}Digite sua senha e clique em \"{64EE45}Logar\"."P_NOME);
            
ShowPlayerDialog(playeridLOGINDIALOG_STYLE_PASSWORD"{F60000}CONTA"STRX"Logar""Sair");
            return 
1;
        }
        
senhaacc dini_Get(file"Senha");
        if(
strcmp(encrypt(inputtext), senhaacctrue) == 0)
        {
            
SetSpawnInfo(playerid0dini_Int(file"Skin"), dini_Int(file"CasaX"), dini_Int(file"CasaY"), dini_Int(file"CasaZ"), 354.1657000000);
            
            if(
dini_Int(file"Continuar") == 1)
            {
                
SendClientMessage(playerid,Branco,"| INFO | Vocк pode voltar a sua posiзгo anterior, use {CFCDCD}/continuar {FFFFFF}Vocк tem apenas 30 segundos para usar esse comando !");
            }
            
            
pAdmin[playerid] = dini_Int(file"Admin");
            
guardiao[playerid] = dini_Int(file"Guardiao");
            if(
dini_Int(file"Bloco") == 1)
            {
                new 
stringlembrete[128];
                
format(stringlembretesizeof(stringlembrete), "Lembrete: %s."dini_Get(file"Lembrete"));
                
SendClientMessage(playeridAzulClarostringlembrete);
            }
            if(
dini_Int(file,"novato") == 2)
            {
                new 
ip[128];
                
GetPlayerIp(playerid,ip,128);
                
format(gstringsizeof(gstring), "Seja bem vindo {CFCDCD}%s seu id й o {CFCDCD}[%d] {FFFFFF}tenha um bom jogo!"P_NOME,playerid);
                
SendClientMessage(playeridBrancogstring);
            }
            
            
SetTimerEx("continuar"30000false"i"playerid);
            if(!
AlreadyGiveWeapons[playerid]) SetTimerEx("LoadArmasToFile"2000false,"i",playerid);
            
PlayerInfo[playerid][pProfissao] = dini_Int(file"Profissao");
            
PlayerInfo[playerid][pExpe] = dini_Int(file"EXP");
            
PlayerInfo[playerid][pLevel] = dini_Int(file"Level");
            
PlayerInfo[playerid][pPlano] = dini_Int(file"PlanodeSaude");
            
PlayerInfo[playerid][pTcasa] = dini_Int(file"TCasa");
            
PlayerInfo[playerid][pPunidop] = dini_Int(file"Punidop");
            
PlayerInfo[playerid][pCorregedor] = dini_Int(file"Corregedor");
            
sequestrado[playerid] = dini_Int(file"sequestrado");
            
SetPlayerWantedLevel(playeriddini_Int(file"Procurado"));
            
preso[playerid] =  dini_Int(file"Preso");
            
PlayerInfo[playerid][pRouboubanco] =  dini_Int(file"rouboubanco");
            
jasequestro[playerid] =  dini_Int(file"jasequestro");
            
PlayerInfo[playerid][pHabTerrestre] =  dini_Int(file"HabTerrestre");
            
PlayerInfo[playerid][pHabNautica] =  dini_Int(file"HabNautica");
            
PlayerInfo[playerid][pHabAerea] =  dini_Int(file"HabAerea");
            
PlayerInfo[playerid][pPorte] =  dini_Int(file"Porte");
            
PlayerInfo[playerid][pTitulo] =  dini_Int(file"Titulo");
            
PlayerInfo[playerid][pFunc1] =  dini_Int(file"piao");
            
PlayerInfo[playerid][pFunc2] =  dini_Int(file"piao1");
            
PlayerInfo[playerid][pFunc3] =  dini_Int(file"piao2");
            
PlayerInfoplayerid ][ Abuser ] = dini_Int(file"Abuser" );
            
PlayerInfoplayerid ][ pPreso ] = dini_Int(file"pPreso" );
            
PlayerInfoplayerid][ Avisos ] = dini_Int(file"Avisos" );
            
playerinterior[playerid]=-1;
            
EntrouDM[playerid] = 0;
            
DMLiberado2[playerid] = 0;
            
PlayerInfo[playerid][pTcaminhao] =  0;
            
KillTimer(TimerLoArear[playerid]);
            
msgcount[playerid] = -1;
            
msgconvi[playerid] = 0;
            
convidou[playerid] = -1;
            
Mute[playerid]= 0;
            
Lendotutorial[playerid] = 0;
            
nautlls[playerid]= 0;
            
nobarlv[playerid]=0;
            
nobarls[playerid]=0;
            
nobarsf[playerid]=0;
            
nobarfc[playerid]=0;
            
Algemado[playerid]=false;
            
sequestro[playerid]=0;
            
aviso[playerid]=0;
            
gmod[playerid]=0;
            
amod[playerid]=0;
            
cacando[playerid]=0;
            
prefsf[playerid]=0;
            
preflv[playerid]=0;
            
prefls[playerid]=0;
            
vercmds[playerid]=0;
            
Dplos[playerid] = 0;
            
Dpsan[playerid] = 0;
            
Dpford[playerid] = 0;
            
Dpventura[playerid] = 0;
            
            
KillTimer(timercou[playerid]);
            
KillTimer(TimerLocalizar[playerid]);
            
            
votou[playerid] = false;
            
PlayerInfo[playerid][pLogged] = 1;
            
GivePlayerGrana(playeriddini_Int(file"Dinheiro"));
            
PlayAudioStreamForPlayer(playerid"http://stream.radioeletrohits.net:9990/");
            
minUP[playerid] = dini_Int(file"Relogioupm"); //RELOGIO UP
            
segUP[playerid] = dini_Int(file"Relogioups");
            
SendClientMessage(playerid0xFFFFFFAA"| CONTA | Logado com sucesso!");
            
TextDrawHideForPlayer (playeridevento [playerid]);
            
TextDrawHideForPlayer(playeridBEMVINDO1);
            
SpawnPlayer(playerid);
            
SpawnPlayerAtHouse(playerid);
            
Casalogin(playerid);
            
SpawnPresidente(playerid);
            new 
ano,mes,dia;
            
getdate(anomesdia);
            
format(stringsizeof(string), " (%d/%d/%d)"dia,mes,ano);
            
dini_Set(file"logoem"string);
            new 
IP[128];
            new 
sip[222];
            
GetPlayerIp(playeridIPsizeof(IP));
            
format(sipsizeof(sip), "%d"IP);
            
dini_Set(file"IP"sip);
        }
        else
        {
            
SendClientMessage(playeridVermelho,"| CONTA | Senha incorreta, Se errar 3 vezes serб kickado!");
            
format(STRXsizeof(STRX), "{F60000}Senha incorreta, {579AF1}%s! {FFFFFF}Logue-se em sua conta.\n\n{FFFFFF}Digite sua senha e clique em \"{64EE45}Logar\"."P_NOME);
            
ShowPlayerDialog(playeridLOGINDIALOG_STYLE_PASSWORD"{F60000}CONTA"STRX"Logar""Sair");
            
PlayerInfo[playerid][pLoginsFalsos]++;
            if(
PlayerInfo[playerid][pLoginsFalsos] >= 3)
            {
                
SendClientMessage(playeridVermelho,"| CONTA | Vocк errou a senha 3 vezes e foi kickado!");
                
Kick(playerid);
            }
        }
    }
    else
    {
        
Kick(playerid);
    }

Opa agora deu mano, muito obrigado pela ajuda e pela atenзгo

@Resolvido
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)