v1.0
O FS tem:
- Registro (/registrar) e login (/logar) opcional (Registra e loga somente se quiser, bom para servidores de DM);
- Após o registro não é necessário /logar e o comando de login é bloqueado;
- Se erra a senha 5 vezes o player é banido;
- Sistema em Dialog;
- Salvamento em DOF2 (apenas senha, por isso é simples u.u).
Erros ou bugs? Avise-me.
Talvez farei novas versões salvando score, dinheiro, etc.
Sugestões ou críticas? Pode falar!
Créditos? O FS eu sei que fui eu que fiz, não sei quem fez o DOF2 e eu nem ligo pra créditos também, se quiserem tirar to nem ligando.
Defeitos do FS: Todas mensagens são com a cor branca rsrs, não é colorido. '-'
Não se esqueçam de criar a pasta Contas em scriptfiles!
Pastebin: http://pastebin.com/FUzUrEwn
Rede Upload: FSRegistroELogin_RedeUpload.pwn - 4 KB
pawn Code:
#include <a_samp> #include <DOF2> #define FileUsers "Contas/%s.ini" #define DIALOG_REGISTRO 1 #define DIALOG_LOGIN 2 new SenhaErrada[MAX_PLAYERS]; new bool: Conectado[MAX_PLAYERS] = false; stock ReturnFileUser(playerid) { new File[156],Name[MAX_PLAYER_NAME]; GetPlayerName(playerid,Name,sizeof(Name)); format(File,sizeof(File),FileUsers,Name); return File; } public OnFilterScriptInit() { print("\n--------------------------------------"); print(" FS criado por Aninhaah"); print("--------------------------------------\n"); return 1; } public OnFilterScriptExit() { DOF2_Exit(); return 1; } public OnPlayerConnect(playerid) { if(!DOF2_FileExists(ReturnFileUser(playerid))) return SendClientMessage(playerid,-1,"Olá, sua conta não é registrada. Para ter uma conta e salvar seus dados use /registrar."); else if(DOF2_FileExists(ReturnFileUser(playerid))) return SendClientMessage(playerid,-1,"Olá, sua conta já é registrada. Para carregar seus dados use /logar."); return 1; } public OnPlayerDisconnect(playerid, reason) { Conectado[playerid] = false; return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp(cmdtext, "/registrar",true) == 0) { if(DOF2_FileExists(ReturnFileUser(playerid))) return SendClientMessage(playerid,-1,"Essa conta já está registrada."); new string[115]; format(string,sizeof(string),"Seu nome: %s\nDeseja mesmo se registrar? Se sim, digite uma senha, se não, clique em Cancelar", PlayerName(playerid)); ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT,"[NOME] - Registro", string, "Registrar","Cancelar"); return 1; } if(strcmp(cmdtext,"/logar", true) == 0) { if(!DOF2_FileExists(ReturnFileUser(playerid))) return SendClientMessage(playerid,-1,"Essa conta não está registrada. Se registre primeiro usando /registrar."); if(Conectado[playerid] == true) return SendClientMessage(playerid,-1,"Você já está logado!"); ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"[Nome] - Login", "Para logar digite sua senha", "Logar","Cancelar"); return 1; } return 0; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_REGISTRO) { if(!response) return SendClientMessage(playerid,-1,"Você decidiu não se registrar. Seus dados não serão salvos."); if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_REGISTRO,DIALOG_STYLE_INPUT,"[NOME] - Registro","Digite uma senha para se registrar","Registrar","Cancelar"); if(strlen(inputtext) < 5 || strlen(inputtext) > 12) return ShowPlayerDialog(playerid,DIALOG_REGISTRO,DIALOG_STYLE_INPUT,"[NOME] - Registro","A senha deve ter de 5 a 12 caracteres","Registrar","Cancelar"); new string[70]; format(string,sizeof(string),"Conta registrada com sucesso! Senha: %s", inputtext); SendClientMessage(playerid,-1,string); DOF2_CreateFile(ReturnFileUser(playerid)); DOF2_SetString(ReturnFileUser(playerid),"Senha",inputtext); DOF2_SaveFile(); SetSpawnInfo(playerid, 0, 0, 1722.5123, -1912.7931, 13.5647, 269.15, 0, 0, 0, 0, 0, 0); SpawnPlayer(playerid); GivePlayerMoney(playerid, 1000); GivePlayerWeapon(playerid, 24, 50); SetPlayerScore(playerid,1); Conectado[playerid] = true; return 1; } if(dialogid == DIALOG_LOGIN) { if(!response) return SendClientMessage(playerid,-1,"Você decidiu não logar. Seus dados não serão carregados"); if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"[NOME] - Login","Digite sua senha","Logar","Cancelar"); if(strcmp(inputtext,DOF2_GetString(ReturnFileUser(playerid),"Senha"),true) == 0) { SetSpawnInfo(playerid, 0, 0, 1722.5123, -1912.7931, 13.5647, 269.15, 0, 0, 0, 0, 0, 0); SpawnPlayer(playerid); GivePlayerMoney(playerid, 1000); GivePlayerWeapon(playerid, 24, 50); Conectado[playerid] = true; } else { if(SenhaErrada[playerid] == 4) { SendClientMessage(playerid,-1,"Você foi banido por errar a senha 5 vezes."); Ban(playerid); } else if(SenhaErrada[playerid] < 4) { SenhaErrada[playerid] ++; ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"[NOME] - Login","Senha incorreta, tente novamente. Se errar a senha 5 vezes será banido!","Logar","Sair"); } } return 1; } return 1; } stock PlayerName(playerid) { new Name[MAX_PLAYERS]; GetPlayerName(playerid, Name, sizeof(Name)); return Name; }
Atualização v1.1
Adicionado:
-Sistema de salvar score;
-Sistema de salvar dinheiro.
Para salvar é necessário estar registrado/logado e para carregar é necessário /logar.
Downloads:
FS Registro e Login v1.1 - 5 KB
Include DOF2
Pastebin FS: http://pastebin.com/VwK6bmY0
Foi testado, mas se encontrar algum bug avise-me por favor!
Atualização v1.2
Adicionado:
-Comando /mudarsenha (apenas para logados/registrados);
-Comando /mudarnick (apenas para logados/registrados);
-Mais mensagens e cores.
Pastebin:http://pastebin.com/A5SmtGKD
FS Registro e Login Opcional v1.2 - 8 KB

---------------------------------------------------