/* Idiomas
- Linguagem 1 - Ingles
- Linguagem 2 - Portugues
- Sexo 1 - Homem
- Sexo 2 - Mulher
Usei SetInt Para Setar Nъmeros para nгo ter dificuldades para vocк no futuro.
*/
#include <a_samp>
#include <DOF2>
#define REGISTRO 0
#define LOGIN 1
#define IDIOMA 2
#define SEXO 3
#define IDADE 4
#define DIA_NASCIMENTO 5
#define MES_NASCIMENTO 6
#define ANO_NASCIMENTO 7
#define MensagemFormatada(%1,%2,%3,%4) do{format(gstring,sizeof(gstring),%3,%4 );SendClientMessage(%1,%2,gstring );}while(IsPlayerConnected(-1))
main()
{
print("Servidor ligado/carregado com sucesso.");
}
enum PlayerInfo
{
Linguagem,
Sexo,
Idade,
Dia_Nascimento,
Mes_Nascimento,
Ano_Nascimento
}
new pInfo[MAX_PLAYERS][PlayerInfo];
new gstring[500];
new tentativas[MAX_PLAYERS];
public OnGameModeInit()
{
return 1;
}
public OnGameModeExit()
{
DOF2_Exit();
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
if(!DOF2_FileExists(Conta(playerid)))
{
format(gstring, sizeof(gstring), "Olб Jogador %s, vocк nгo й registrado, Digite uma senha para vocк se registrar.", PlayerName(playerid));
format(gstring, sizeof(gstring), "%s\n\nDepois de colocar sua senha responda as perguntas bбsicas.\n", gstring);
ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_INPUT, "Registro", gstring, "Registrar", "Sair");
}
else
{
format(gstring, sizeof(gstring), "Olб Jogador %s, vocк й registrado, digite sua senha para logar", PlayerName(playerid));
format(gstring, sizeof(gstring), "%s\n\nAcompanhe nosso Server pelo Fуrum: DigiteSeuForumAqui.com\n", gstring);
ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Login", gstring, "Logar", "Sair");
}
return 1;
}
public OnPlayerDisconnect(playerid)
{
SalvarConta(playerid);
ResetarVariaveis(playerid);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new len = strlen(inputtext), val = strval(inputtext);
if(dialogid == REGISTRO)
{
if(!response) return Kick(playerid);
if(4 <= len <= 20)
{
SendClientMessage(playerid, -1, "| ERROR | Please enter a password between 4 and 20 characters!");
ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_INPUT, "Register", "| ERROR | Please enter a password between 4 and 20 characters!", "Register", "Exit");
}
else
{
DOF2_CreateFile(Conta(playerid));
DOF2_SetString(Conta(playerid), "Senha", inputtext);
ShowPlayerDialog(playerid, IDIOMA, DIALOG_STYLE_LIST, "What is your language?", "English\nPortuguкs", "Selecionar", "Cancelar");
}
}
if(dialogid == LOGIN)
{
if(strcmp(inputtext, DOF2_GetString(Conta(playerid), "Senha"), true) == 0)
{
if(pInfo[playerid][Linguagem] == 1) return SendClientMessage(playerid, -1, "| INFO | successfully logged in");
else SendClientMessage(playerid, -1, "| INFO | Logado com sucesso.");
CarregarConta(playerid);
}
else
{
if(tentativas[playerid] == 3)
{
if(pInfo[playerid][Linguagem] == 1) return SendClientMessage(playerid, -1, "You've made a mistake 3 times and been kicked.");
else SendClientMessage(playerid, -1, "Vocк errou a senha 3 vezes e foi kikado.");
Kick(playerid);
}
else
{
new stg[100];
tentativas[playerid] ++;
if(pInfo[playerid][Linguagem] == 1)
{
format(stg, sizeof(stg), "Number of attempts to log in to the server: (%d/3)", tentativas[playerid]);
SendClientMessage(playerid, -1, stg);
ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Enter the password correctly, you have 3 attempts", "Next", "Exit");
}
else
{
format(stg, sizeof(stg), "Nъmero de Tentativas para vocк logar no servidor: (%d/3)", tentativas[playerid]);
SendClientMessage(playerid, -1, stg);
ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Digite sua senha correta, vocк tem 3 Tentativas", "Proximo", "Sair");
}
}
}
}
if(dialogid == IDIOMA)
{
if(!response) return ShowPlayerDialog(playerid, IDIOMA, DIALOG_STYLE_LIST, "What is your language?", "English\nPortuguкs", "Selecionar", "Cancelar");
if(listitem == 0)
{
pInfo[playerid][Linguagem] = 1;
ShowPlayerDialog(playerid, SEXO, DIALOG_STYLE_MSGBOX, "Your Sex", "Choose man or woman according to your gender", "Man", "Woman");
}
if(listitem == 1)
{
pInfo[playerid][Linguagem] = 2;
ShowPlayerDialog(playerid, SEXO, DIALOG_STYLE_MSGBOX, "Seu Sexo", "Escolha Homem ou Mulher de acordo com seu Sexo", "Homem", "Mulher");
}
}
if(dialogid == SEXO)
{
if(response)
{
pInfo[playerid][Sexo] = 1;
if(pInfo[playerid][Linguagem] == 1) return ShowPlayerDialog(playerid, IDADE, DIALOG_STYLE_INPUT, "Your Age", "Enter what is your age", "Next", "Exit");
else ShowPlayerDialog(playerid, IDADE, DIALOG_STYLE_INPUT, "Sua Idade", "Digite quantos anos vocк tem", "Proximo", "Sair");
}
else
{
pInfo[playerid][Sexo] = 2;
if(pInfo[playerid][Linguagem] == 1) return ShowPlayerDialog(playerid, IDADE, DIALOG_STYLE_INPUT, "Your Age", "Enter what is your age", "Next", "Exit");
else ShowPlayerDialog(playerid, IDADE, DIALOG_STYLE_INPUT, "Sua Idade", "Digite quantos anos vocк tem", "Proximo", "Sair");
}
}
if(dialogid == IDADE)
{
if(16 <= val <= 70)
{
if(pInfo[playerid][Linguagem] == 1) return ShowPlayerDialog(playerid, IDADE, DIALOG_STYLE_INPUT, "Your Age", "Enter how old you are between the ages of 11 and 70", "Next", "Exit");
else ShowPlayerDialog(playerid, IDADE, DIALOG_STYLE_INPUT, "Sua Idade", "Digite quantos anos vocк tem entre 11 e 70 Anos", "Proximo", "Sair");
}
else pInfo[playerid][Idade] = strval(inputtext);
if(pInfo[playerid][Linguagem] == 1) return ShowPlayerDialog(playerid, DIA_NASCIMENTO, DIALOG_STYLE_INPUT, "Your birth day", "now enter your birth day", "Next", "Exit");
else ShowPlayerDialog(playerid, DIA_NASCIMENTO, DIALOG_STYLE_INPUT, "Seu Dia de Nascimento", "Digite seu Dia de Nascimento", "Proximo", "Sair");
}
if(dialogid == DIA_NASCIMENTO)
{
if(1 <= val <= 31)
{
if(pInfo[playerid][Linguagem] == 1) return ShowPlayerDialog(playerid, DIA_NASCIMENTO, DIALOG_STYLE_INPUT, "Your birth day", "Enter your date of birth between 1 and 31", "Next", "Exit");
else ShowPlayerDialog(playerid, DIA_NASCIMENTO, DIALOG_STYLE_INPUT, "Seu Dia de Aniversбrio", "Digite entre 1 e 31 a data do seu Aniversбrio", "Proximo", "Sair");
}
else pInfo[playerid][Dia_Nascimento] = strval(inputtext);
if(pInfo[playerid][Linguagem] == 1) return ShowPlayerDialog(playerid, MES_NASCIMENTO, DIALOG_STYLE_INPUT, "your month of birth", "Enter your month of birth", "Next", "Exit");
else ShowPlayerDialog(playerid, MES_NASCIMENTO, DIALOG_STYLE_INPUT, "Seu Mкs de Nascimento", "Digite seu Mкs de Nascimento", "Proximo", "Sair");
}
if(dialogid == MES_NASCIMENTO)
{
if(1 <= val <= 12)
{
if(pInfo[playerid][Linguagem] == 1) return ShowPlayerDialog(playerid, MES_NASCIMENTO, DIALOG_STYLE_INPUT, "your month of birth", "Enter your birthday month between 1 and 12", "Next", "Exit");
else ShowPlayerDialog(playerid, MES_NASCIMENTO, DIALOG_STYLE_INPUT, "Seu Mкs de Aniversбrio", "Digite o seu mкs de aniversбrio entre 1 e 12", "Proximo", "Sair");
}
else pInfo[playerid][Mes_Nascimento] = strval(inputtext);
if(pInfo[playerid][Linguagem] == 1) return ShowPlayerDialog(playerid, ANO_NASCIMENTO, DIALOG_STYLE_INPUT, "your birth year", "type the year you were born", "Next", "Exit");
else ShowPlayerDialog(playerid, ANO_NASCIMENTO, DIALOG_STYLE_INPUT, "Seu Ano de Nascimento", "Digite o ano que vocк nasceu", "Proximo", "Sair");
}
if(dialogid == ANO_NASCIMENTO)
{
if(1970 <= val <= 2013)
{
if(pInfo[playerid][Linguagem] == 1) return ShowPlayerDialog(playerid, ANO_NASCIMENTO, DIALOG_STYLE_INPUT, "Your birth year", "Enter between the years of 1970 and 2013 the year you were born", "Next", "Exit");
else ShowPlayerDialog(playerid, ANO_NASCIMENTO, DIALOG_STYLE_INPUT, "Seu ano de Aniversбrio", "Digite entra 1970 e 2013 o ano que vocк nasceu!", "Proximo", "Sair");
}
else pInfo[playerid][Ano_Nascimento] = strval(inputtext);
SpawnPlayer(playerid);
if(pInfo[playerid][Linguagem] == 1) return SendClientMessage(playerid, -1, "| INFO | We finished our questions, now play at will!");
else SendClientMessage(playerid, -1, "| INFO | Terminamos nossas perguntas, agora jogue avontade!");
}
return 0;
}
static SalvarConta(playerid)
{
DOF2_SetInt(Conta(playerid), "Linguagem", pInfo[playerid][Linguagem]);
DOF2_SetInt(Conta(playerid), "Sexo", pInfo[playerid][Sexo]);
DOF2_SetInt(Conta(playerid), "Idade", pInfo[playerid][Idade]);
DOF2_SetInt(Conta(playerid), "DiaNascimento", pInfo[playerid][Dia_Nascimento]);
DOF2_SetInt(Conta(playerid), "MesNascimento", pInfo[playerid][Mes_Nascimento]);
DOF2_SetInt(Conta(playerid), "AnoNascimento", pInfo[playerid][Ano_Nascimento]);
DOF2_SaveFile();
return 1;
}
static CarregarConta(playerid)
{
DOF2_GetInt(Conta(playerid), "Linguagem", pInfo[playerid][Linguagem]);
DOF2_GetInt(Conta(playerid), "Sexo", pInfo[playerid][Sexo]);
DOF2_GetInt(Conta(playerid), "Idade", pInfo[playerid][Idade]);
DOF2_GetInt(Conta(playerid), "DiaNascimento", pInfo[playerid][Dia_Nascimento]);
DOF2_GetInt(Conta(playerid), "MesNascimento", pInfo[playerid][Mes_Nascimento]);
DOF2_GetInt(Conta(playerid), "AnoNascimento", pInfo[playerid][Ano_Nascimento]);
SpawnPlayer(playerid);
if(pInfo[playerid][Linguagem] == 1)
{
MensagemFormatada(playerid, -1, "Hello player %s, welcome back to the server", PlayerName(playerid));
}
else MensagemFormatada(playerid, -1, "Olб player %s, bem vindo ao servidor novamente", PlayerName(playerid));
return 1;
}
static Conta(playerid)
{
new Arquivo[100];
format(Arquivo, sizeof(Arquivo), "/Contas/%s.ini", PlayerName(playerid));
return Arquivo;
}
static ResetarVariaveis(playerid)
{
pInfo[playerid][Linguagem] = 0,
pInfo[playerid][Sexo] = 0,
pInfo[playerid][Idade] = 0,
pInfo[playerid][Dia_Nascimento] = 0,
pInfo[playerid][Mes_Nascimento] = 0,
pInfo[playerid][Ano_Nascimento] = 0;
}
static PlayerName(playerid)
{
new Nome[MAX_PLAYER_NAME];
GetPlayerName(playerid, Nome, 20);
return Nome;
}
if(strlen(inputtext) < 4 || strlen(inputtext) > 20)
new len = strlen(inputtext); if(4 <= len <= 20))
@GuiKommander, vou lhe dar pequenas dicas para melhorias futuras.
#1 Este cуdigo й relativamente simples. Entrei achando que vocк havia feito de alguma forma diferente, porйm sгo apenas condicionais.... #2 Код:
if(strlen(inputtext) < 4 || strlen(inputtext) > 20) Outra forma de otimizaзгo й fazer assim: Код:
new len = strlen(inputtext); if(4 <= len <= 20)) A funзгo ResetarVariaveis(playerid) й utilizada ao conectar e desconectar e, de momento, nгo hб necessidade de zerar duas vezes. #4 A funзгo Conta(playerid) й utilizada vбrias vezes na mesma funзгo e ela faz, respectivamente: - formata a var Arquivo com a funзгo format; - formata a var Nome e define o valor de nome com GetPlayerName. Essa ordem й feita diversas vezes. Recomendo armazenar o valor em uma variбvel. ________________ Sгo alguns pontos que vi no seu cуdigo que podem ser melhorados. |
Conta(playerid)
Bom trabalho, nгo ligue para certas pessoas que querem lhe jogar para baixo! ninguйm nasce sabendo, continue estudando sempre para seu aprendizado sempre estб melhorando! +REP
|
Enfim eu acredito que fez melhor que vender ao menos pode ensinar outros a estudar para melhorarem
|