Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Entrar

descriptionSistema de Registro EmptySistema de Registro

more_horiz

Código:


//Sistema de Registro

#include a_samp
#include DOF2

new corda[128];//string

enum Info
{
   pMorreu,
   pMatou
};
new PlayerInfo[MAX_PLAYERS][Info];

/* dialogs */

const DRegistro = 1;
const DLogin = 2;

public OnPlayerConnect(playerid)
{
   format(corda, 36, "Contas/%s.ini", pNome(playerid));
   if(!DOF2_FileExists(corda))
   {
      format(corda, 123, "Bem vindo %s\nSeu registro não foi encontrado na database\nDigite uma senha para fazer seu registro.", pNome(playerid));
      ShowPlayerDialog(playerid, DRegistro, 1, "Registro", corda, "Registrar", "Cancelar");
   }
   else
   {
       format(corda, 113, "Bem Vindo %s\nSeu registro foi localizado no banco de dados\nDigite sua senha para logar.", pNome(playerid));
       ShowPlayerDialog(playerid, DLogin, 1, "Login", corda, "Logar", "Cancelar");
       return 1;
   }
   return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
   PlayerInfo[playerid][pMorreu] ++;
   PlayerInfo[killerid][pMatou] ++;
   return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
   switch(dialogid)
   {
       case DRegistro:
       {
           if(!response) return SendClientMessage(playerid, 0xFFFFFFAA, "Kickado Por Não Registrar-se"), Kick(playerid);
         else
         {
             new pass = strlen(inputtext);
             if(pass < 1 || pass > 15) return ShowPlayerDialog(playerid, DRegistro, 1, "Registro", "A Senha Deve Conter Entre 1 e 15 Caracteres\nDigite Uma Senha Valida Para Registrar-se.", "Registrar", "Cancelar");
            format(corda, 36, "Contas/%s.ini", pNome(playerid));
            DOF2_CreateFile(corda);
            DOF2_SetString(corda, "Senha", inputtext);
            DOF2_SetInt(corda, "Matou", PlayerInfo[playerid][pMatou]);
            DOF2_SetInt(corda, "Morreu", PlayerInfo[playerid][pMorreu]);
            ShowPlayerDialog(playerid, DLogin, 1, "Login", "Conta Registrada com Sucesso\nDigite sua senha para logar.", "Logar", "Cancelar");
            return 1;
         }
      }
      case DLogin:
      {
          if(!response) return SendClientMessage(playerid, 0xFFFFFFAA, "Kickado Por Não Logar."), Kick(playerid);
          else
          {
              format(corda, 36, "Contas/%s.ini", pNome(playerid));
              if(strcmp(inputtext,DOF2_GetString(corda, "Senha"), true) == 0)
              {
                  PlayerInfo[playerid][pMorreu] = DOF2_GetInt(corda, "Morreu");
                  PlayerInfo[playerid][pMatou] = DOF2_GetInt(corda, "Matou");
                  SendClientMessage(playerid, 0xFFFFFFAA, "Logado com Sucesso.");
               SpawnPlayer(playerid);
            }
              else return ShowPlayerDialog(playerid, DLogin, 1, "Login", "Senha Incorreta\nDigite sua verdadeira senha para logar.", "Logar", "Cancelar");
         }
         return 1;
      }
   }
   return 1;
}

public OnPlayerDisconnect(playerid)
{
   format(corda, 36, "Contas/%s.ini", pNome(playerid));
   DOF2_SetInt(corda, "Matou", PlayerInfo[playerid][pMatou]);
   DOF2_SetInt(corda, "Morreu", PlayerInfo[playerid][pMorreu]);
   return 1;
}

stock pNome(playerid)
{
   new name[24];
   GetPlayerName(playerid, name, 24);
   return name;
}

public OnFilterScriptExit() { DOF2_Exit(); return 1; }


Qualquer bug me avisem.

descriptionSistema de Registro EmptyRe: Sistema de Registro

more_horiz
É mais recomendável que você use break em vez de return em case's pois com ele você consegue quebrar o loop ao achar um resultado compatível.
new name[24]; Você esqueceu do caracter NULL poderia ter usado MAX_PLAYER_NAME que assume o valor de 25 que são 24 arrays equivalente ao nome do player +1 do NULL.
Apesar de você só conseguir entrar com um nome de 20 caracteres no samp se tem o valor de 24 alguma razão tem.
Sua identação falha em muitos pontos, principalmente no OnDialogResponse.

De resto, é um bom sistema, parabéns. Ficou realmente bom.

descriptionSistema de Registro EmptyRe: Sistema de Registro

more_horiz
A identacao falhou, pq eu copiei do meu pawn e ja colei no code, no mais a identacao e perfeita, se quiser ate passo o .pwn, quanto ao break vou procurar estudar sobre isso, obg pelas dicas.

descriptionSistema de Registro EmptyRe: Sistema de Registro

more_horiz
privacy_tip Permissões neste sub-fórum
Não podes responder a tópicos
power_settings_newInicie sessão para responder