Sistema de Registro + Profissão + Sistema de Administração

Olá galera estarei encinando a vocês a como criar um Sistema de Registro com Profissões, Então vamos lá !

1º Crie essas New's (No Topo do GM)

Code:
new file[256];
new logado[MAX_PLAYERS];
2º Crie essas Enum (Pode ser embaixo das New's, tanto faz)
Code:
enum pInfo
{
        Admin,
        Cash,
        Score,
        SWAT,
        REPORTER,
        Warns,
}
new PlayerInfo[MAX_PLAYERS][pInfo];
Explicando: Warns(Isso daqui é as vezes que você errou a senha, caso erre 5 vezes será kickado !), SWAT (Essa ja é uma profissão de MEMBRO da SWAT) & REPORTER (Essa ja é uma profissão de REPORTER)


3º No seu OnPlayerConnect coloque isto:
Code:
public OnPlayerConnect(playerid)
{
 logado[playerid] = 0;
 new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
 new String[128];
 format(String, sizeof(String), "%.ini", name);
    format(file, sizeof(file), "%s.ini", name);
    if (!dini_Exists(file))
    {
  format(String, sizeof(String), "{7FFFD4}Nick: {1E90FF}%s  {1E90FF}Não Registrado\n\n{FFFFFF} Digite Uma {FF0000}Senha {FFFFFF}Para Continuar", name);
  ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Registro", String, "Registrar", "Sair");
    }
    if(fexist(file))
    {
  format(String, sizeof(String), "{7FFFD4}Nick: {1E90FF}%s  {1E90FF}Registrado\n\n{FFFFFF} Digite Sua {FF0000}Senha {FFFFFF}Para Logar", name);
  ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Login", String, "Logar", "Sair");
    }
    if(PlayerInfo[playerid][Warns] == 5)
    {
        SendClientMessage(playerid, 0xFF00CC, "[GTE INFORMA]: Você foi kickado por errar sua senha 5 vezes !");
                Kick(playerid);
        }
 return 1;
}
Explicando: Os Nicks Serão salvo na extensão .ini na pasta scriptfiles.

4º No seu OnPlayerDisconnect coloque isto:
Code:
public OnPlayerDisconnect(playerid, reason)
{
    GetPlayerName(playerid,name,24);
    format(file,sizeof(file),"%s.ini",name);
    if(dini_Exists(file))
    {
        dini_IntSet(file,"Cash",GetPlayerMoney(playerid));
        dini_IntSet(file,"Score",GetPlayerScore(playerid));
        dini_IntSet(file,"Level",PlayerInfo[playerid][Admin]);
        dini_IntSet(file,"LevelSwat",PlayerInfo[playerid][SWAT]);
        dini_IntSet(file,"LevelReporter",PlayerInfo[playerid][REPORTER]);
        dini_IntSet(file,"Warns",PlayerInfo[playerid][Warns]);
        logado[playerid] = 0;
  }
            return 1;
}
5º Se caso queira saber se tem algum mebro da Swat ou Reporter Online. Adicione este Comando na PublicOnPlayerCommandText
Code:
        if(!strcmp(cmdtext, "/admins", true))
        {
            SendClientMessage(playerid, 0x33AAFFFF, "** Todos os Administradores Online **");
                new count=0;
                for(new i=0; i<MAX_PLAYERS; i++)
                {
                if(IsPlayerConnected(i))
                {
                    if(logado[i] == 1)
                    {
                                        if(PlayerInfo[i][Admin] >= 1)
                                        {
                                                new str[256];
                                                new pname[24];
                                                GetPlayerName(i, pname, 24);
                                                format(str, 256, "Administrador - %s - [Cargo %d] ", pname, PlayerInfo[i][Admin]);
                                                SendClientMessage(playerid, 0xC0C0C0FF, str);
                                                count++;
                                        }
                                }
                        }
                }
                if(count == 0)
                {
                SendClientMessage(playerid, 0x00FFFFAA, "Nenhum Administrador online !");
                }
                return 1;
        }
PS: Antes que perguntem, como faço para mudar para REPÓRTER OU SWAT? Simples, troque a Variavel
Code:
if(PlayerInfo[i][Admin] >= 1)
PARA
Code:
if(PlayerInfo[i][SWAT] >= 1)
OU
Code:
if(PlayerInfo[i][REPORTER] >= 1)
OBS: NÃO ESQUEÇA DE TROCAR TAMBÉM ESTÁ PARTE AQUI:
Code:
                                                format(str, 256, "Administrador - %s - [Cargo %d] ", pname, PlayerInfo[i][Admin]);
PARA
Code:
                                                format(str, 256, "SWAT - %s - [Cargo %d] ", pname, PlayerInfo[i][SWAT]);
OU
Code:
                                                format(str, 256, "REPORTER - %s - [Cargo %d] ", pname, PlayerInfo[i][REPORTER]);
E troque também o nome do comando 

6º Na sua OnDialogResponse coloque isto:
Code:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if (dialogid == 1)
        {
                new name[MAX_PLAYER_NAME], String[128];
                GetPlayerName(playerid, name, sizeof(name));
    format(String, sizeof(String), "%.ini", name);
                format(file, sizeof(file), "%s.ini", name);
                if(!response) return Kick(playerid);
                if(!strlen(inputtext)) return
    format(String, sizeof(String), "{7FFFD4}Nick: {1E90FF}%s  {1E90FF}Não Registrado\n\n{FFFFFF} Digite Uma {FF0000}Senha {FFFFFF}Para Continuar", name);
    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Registro", String, "Registrar", "Sair");
                dini_Create(file);
                dini_IntSet(file, "Password", udb_hash(inputtext));
                dini_IntSet(file, "Level",PlayerInfo[playerid][Admin] = 0);
                dini_IntSet(file, "Cash",PlayerInfo[playerid][Cash] = 50000); // NASCE COM R$ 50,000 MIL REAIS
                dini_IntSet(file, "Score",PlayerInfo[playerid][Score] = 0);
                dini_IntSet(file, "LevelSwat",PlayerInfo[playerid][SWAT] = 0);
                dini_IntSet(file, "LevelReporter",PlayerInfo[playerid][REPORTER] = 0);
                dini_IntSet(file, "Warns",PlayerInfo[playerid][Warns] = 0);
          dini_IntSet(file,"Preso",PlayerInfo[playerid][Preso] = 0);
          GameTextForPlayer(playerid, "~G~ REGISTRADO COM SUCESSO!",2000,1);
                logado[playerid] = 1;
    ShowPlayerDialog(playerid,985,DIALOG_STYLE_LIST,"Escolha uma Regiao","Centro Oeste\nNorte e Nordeste\nSudeste\nSul","Selecionar","Voltar");
    SetPVarInt(playerid,"Escolha",1);

        }

if (dialogid == 2)
        {
                new name[MAX_PLAYER_NAME], String[128];
      GetPlayerName(playerid, name, sizeof(name));
   format(String, sizeof(String), "%.ini", name);
      format(file, sizeof(file), "%s.ini", name);
      if(!response) return Kick(playerid);
      if (!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Login", String, "Logar", "Sair");
      new tmp;
      tmp = dini_Int(file, "Password");
      if(udb_hash(inputtext) != tmp) {
      SendClientMessage(playerid, 0xFF0000FF, "[ERRO] Senha Incorreta !");
   format(String, sizeof(String), "{7FFFD4}Nick: {1E90FF}%s  {1E90FF}Registrado\n\n{FFFFFF} Digite Sua {FF0000}Senha {FFFFFF}Para Logar", name);
   ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Login", String, "Logar", "Sair");
      }
      else
      {
                logado[playerid] = 1;
        SetPlayerMoney(playerid, dini_Int(file, "Cash"));
        SetPlayerScore(playerid, dini_Int(file, "Score"));
        SetPlayerColor(playerid, dini_Int(file, "Color"));
        PlayerInfo[playerid][Admin] = dini_Int(file, "Level");
        PlayerInfo[playerid][SWAT] = dini_Int(file, "LevelSwat");
        PlayerInfo[playerid][REPORTER] = dini_Int(file, "LevelReporter");
        PlayerInfo[playerid][Warns] = dini_Int(file, "Warns");
        GameTextForPlayer(playerid, "~G~ LOGADO COM SUCESSO!",2000,1);
        }
            return 1;
      }
     return 0;
}
Explicação: a (dialogid == 1) e para registrar e a (dialogid == 2) e para logar 

Agora se você quer botar para seu membro da SWAT Spawnar em algum canto é facil...

7º Na sua Public OnPlayerSpawn coloque isto:

Code:
public OnPlayerSpawn(playerid)
{
        if(PlayerInfo[playerid][GAT] >= 1)
        {
                        // SWAT NASCE
                        SetPlayerInterior(playerid,0); // Interior do Player como ele está na cidade é 0 se fosse dentro de alguma casa ou delegacia etc... seria outro id para ver os ids de interiores digite /interior .
                        SetPlayerPos(playerid,1567.0951,-1696.1991,5.8906); // Seta a posição do Player para algum lugar: Posição X: 1696: Posição Y:. 1991 Posição Z: 1991 Para pegar as posições digite /save.
                        GameTextForPlayer(playerid,"~w~BATALHAO DO GAT", 1000,1); // MENSSAGEM NA TELA SPAWNAR
                        GivePlayerWeapon(playerid,29,999999); // ARMAS
                        GivePlayerWeapon(playerid,27,999999); // ARMAS
                        GivePlayerWeapon(playerid,41,999999); // ARMAS
                        GivePlayerWeapon(playerid,24,999999); // ARMAS
                        GivePlayerWeapon(playerid,4,999999); // ARMAS
                        GivePlayerWeapon(playerid,34,999999); // ARMAS
                        GivePlayerWeapon(playerid,31,999999); // ARMAS
                   SetPlayerColor(playerid, 0xC0C0C0FF); // COR DO NICK
                        SetPlayerSkin(playerid, 285); // SKIN DO PLAYER
                        SetPlayerHealth(playerid, 100.0); // NASCE COM 100 DE VIDA
                        SetPlayerArmour(playerid, 100.0); // NASCE COM 100 DE COLETE
                        SetPlayerVirtualWorld(playerid, 0); // NÃO SEI BEM OQUE É :S
                        TogglePlayerControllable(playerid,1); // PARA O PLAYER PODER CONTROLAR SE BOTAREM 0 O PLAYER FICARÁ CONGELADO
   }
    return 1;
}
FINISH 

É ISSO AÊ GALERA ESPERO QUE AJUDEM, ALGUM DÚVIDA OU ERROR PORFAVOR RELATEM NO TÓPICO !

0 comentários:

Postar um comentário

Cool Red Outer Glow Pointer
▲ Ir para Topo