public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { new nome[MAX_PLAYER_NAME]; new arquivo[40]; GetPlayerName(playerid, nome, 32); format(arquivo, 40, "players/%s.ini", nome); if(dialogid == DIALOG_REGISTRO) { if(!strval(inputtext)) { ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "servidor", "digite a senha para cadastrar","Cadastrar", "Sair"); return 1; } if(!response) { Kick(playerid); return 1; } else { Player[playerid][Senha] = strval(inputtext); DOF2_CreateFile(arquivo); DOF2_SetInt(arquivo, "Senha", Player[playerid][Senha]); DOF2_SaveFile(); ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar"); } } if(dialogid == DIALOG_LOGAR) { if(!strval(inputtext)){ ShowPlayerDialog(playerid, DIALOG_LOGAR, 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) { Kick(playerid); return 1; } else { Player[playerid][Senha] = DOF2_GetInt(arquivo, "Senha"); if(strval(inputtext) == Player[playerid][Senha]) { SpawnPlayer(playerid); return 1; } } } return 1; }
DOF2_SetInt(arquivo, "Senha", Player[playerid][Senha]);
DOF2_SetString(arquivo, "Senha", Player[playerid][Senha]);
Troque
pawn Код:
pawn Код:
Sobre as funзoes do DOF2: https://sampforum.blast.hk/showthread.php?tid=483705 |
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new nome[MAX_PLAYER_NAME], arquivo[40];
GetPlayerName(playerid, nome, sizeof(nome));
format(arquivo, sizeof(arquivo), "players/%s.ini", nome);
if(dialogid == DIALOG_REGISTRO)
{
if(!response) return Kick(playerid);
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "servidor", "digite a senha para cadastrar","Cadastrar", "Sair");
DOF2_CreateFile(arquivo);
DOF2_SetString(arquivo, "Senha", inputtext);
DOF2_SaveFile();
ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar");
return 1;
}
if(dialogid == DIALOG_LOGAR)
{
if(!response) return Kick(playerid);
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Digite apenas nъmeros!\nDigite sua senha cadastrada para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
if(strcmp(DOF2_GetString(arquivo, "Senha"), inputtext, true) == 0)
{
SpawnPlayer(playerid);
}
return 1;
}
return 1;
}
Nгo й sу isso nгo...
Tem como fazer de um jeito mais simples, sem precisar ficar usando 'Player[playerid][Senha]'. Dei uma "ajeitada" no code, tente compreendк-lo. pawn Код:
Qualquer erro ou bug, sу avisar que eu corrijo. Fiz o cуdigo com pressa e estou com sono kk' |
Obrigado mais ta dando isso no bloco de notas la ... Senha = (null)
|
#include <a_samp>
#include DOF2
#define DIALOG_LOGAR 1
#define DIALOG_REGISTRO 2
new ErrouSenha[MAX_PLAYERS];
main()
{
print("\n----------------------------------");
print(" Testes HEUHEU");
print("----------------------------------\n");
}
public OnGameModeInit()
{
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnGameModeExit()
{
DOF2_Exit();
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerConnect(playerid)
{
ErrouSenha[playerid] = 0;
if(!DOF2_FileExists(Conta(playerid)))
{
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Servidor", "Digite a senha para cadastrar","Cadastrar", "Sair");
}
else if (DOF2_FileExists(Conta(playerid)))
{
ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Digite sua senha para logar.\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_REGISTRO)
{
if(!response) return Kick(playerid);
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Servidor", "Digite a senha para cadastrar","Cadastrar", "Sair");
DOF2_CreateFile(Conta(playerid));
DOF2_SetString(Conta(playerid), "Senha", inputtext);
DOF2_SaveFile();
ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar");
return 1;
}
if(dialogid == DIALOG_LOGAR)
{
if(!response) return Kick(playerid);
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Digite sua senha para logar.\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
if(strcmp(DOF2_GetString(Conta(playerid), "Senha"), inputtext, true) == 0)
{
SpawnPlayer(playerid);
SendClientMessage(playerid, -1, "LOOOOGADO COM SUCESSO! EEEEE o/");
}
else
{
ErrouSenha[playerid] ++;
if(ErrouSenha[playerid] == 5)
{
SendClientMessage(playerid, -1, "Errou a senha 5 vezes e foi banido.");
Ban(playerid);
}
else if(ErrouSenha[playerid] < 5) return ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD,"Logar","Senha incorreta, tente outra vez.\nSe errar 5 vezes sua conta serб banida!","Confirma","Cancelar");
}
return 1;
}
return 1;
}
Nome(playerid)
{
new np[MAX_PLAYER_NAME];
GetPlayerName(playerid, np, sizeof(np));
return np;
}
Conta(playerid)
{
new arq[56];
format(arq, sizeof(arq),"players/%s.ini", Nome(playerid));
return arq;
}
Acabei de realizar os testes e estб funcionando corretamente. Ainda adicionei mais algumas coisas ao cуdigo e testei outras vezes, e estб tudo certo. Teste usando sу esse script.
OBS: Jб coloquei pra banir quando errar a senha 5 vezes. pawn Код:
|