[Tutorial] Sistema de Registro + Profissгo + Sistema de Administraзгo
#1

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)

Код:
new file[256];
new logado[MAX_PLAYERS];
2є Crie essas Enum (Pode ser embaixo das New's, tanto faz)
Код:
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:
Код:
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:
Код:
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 Public OnPlayerCommandText
Код:
        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
Код:
if(PlayerInfo[i][Admin] >= 1)
PARA
Код:
if(PlayerInfo[i][SWAT] >= 1)
OU
Код:
if(PlayerInfo[i][REPORTER] >= 1)
OBS: NГO ESQUEЗA DE TROCAR TAMBЙM ESTБ PARTE AQUI:
Код:
                                                format(str, 256, "Administrador - %s - [Cargo %d] ", pname, PlayerInfo[i][Admin]);
PARA
Код:
                                                format(str, 256, "SWAT - %s - [Cargo %d] ", pname, PlayerInfo[i][SWAT]);
OU
Код:
                                                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:
Код:
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:

Код:
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 !
Reply
#2

Isto nгo й um tutorial, vocк apenas fala para se criar isto ou aquilo e nгo explica como tudo funciona, que й o correto para um tutorial.

a identaзгo nгo й as das melhores e
e o seu desperdнcio de cйlulas й preocupante

pawn Код:
new file[256];
format(file, sizeof(file), "%s.ini", name);
retirar cуdigos de Gamemodes e postar aqui indicando o local onde ser inserido nгo й tutorial algum.

Reply
#3

CTRL+C - CTRL+V


Good try
Reply
#4

Meu 1є Tutorial '-', nгo expliquei *0* entгo explique ai...
Reply
#5

Quote:
Originally Posted by Nake01
Посмотреть сообщение
Meu 1є Tutorial '-', nгo expliquei *0* entгo explique ai...
[Tutorial] Criando Profissхes

[Tutorial] Fini Cache File System


Atenciosamente,
Falcon.
Reply
#6

Isso nгo й tutorial, um filterscript, explique linhas, Exemplo:

SetPlayerPos(playerid, 1001,1002,1003);

SetPlayerPos: Seta a posiзгo do Player para algum lugar.
1001: Posiзгo X. 1002: Posiзгo Y. 1003: Posiзгo Z.
Para pegar as posiзхes digite /save.

Mais ou menos isso

E tб bem mal explicado, tenso wendell...
Reply
#7

Owned

@Topic
Nгo entendi bolotas desde "tutorial"
Reply
#8

Quote:
Originally Posted by Andrew_Guiga
Посмотреть сообщение
Owned

@Topic
Nгo entendi bolotas desde "tutorial"
aff c mate entгo...
Reply
#9

vc explica mal e eu que tenho que me matar? Ja em compensaзгo eu entendi o do falcon, aquele sim й um tutorial de verdade que explica direito as coisas --'
Reply
#10

Nгo Estб Muito Bom, Mais Acho que й Seu Primeiro Tutorial. Aprenda Com Erros, Isso Nгo й Tutorial, Se eu Fosse Vocк Fazia um FilterScript. Muito Bom Pelo Primeiro Projeto.

Usa [pawn] [/pawn da Proxima vez =) espero que melhore. att.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)