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)
2º Crie essas Enum (Pode ser embaixo das New's, tanto faz)
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:
Explicando: Os Nicks Serão salvo na extensão .ini na pasta scriptfiles.
4º No seu OnPlayerDisconnect coloque isto:
5º Se caso queira saber se tem algum mebro da Swat ou Reporter Online. Adicione este Comando na PublicOnPlayerCommandText
PS: Antes que perguntem, como faço para mudar para REPÓRTER OU SWAT? Simples, troque a Variavel
PARA
OU
OBS: NÃO ESQUEÇA DE TROCAR TAMBÉM ESTÁ PARTE AQUI:
PARA
OU
E troque também o nome do comando 
6º Na sua OnDialogResponse coloque isto:
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:
FINISH 
É ISSO AÊ GALERA ESPERO QUE AJUDEM, ALGUM DÚVIDA OU ERROR PORFAVOR RELATEM NO TÓPICO !
1º Crie essas New's (No Topo do GM)
Code:
new file[256]; new logado[MAX_PLAYERS];
Code:
enum pInfo
{
Admin,
Cash,
Score,
SWAT,
REPORTER,
Warns,
}
new PlayerInfo[MAX_PLAYERS][pInfo];
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;
}
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;
}
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;
}
Code:
if(PlayerInfo[i][Admin] >= 1)
Code:
if(PlayerInfo[i][SWAT] >= 1)
Code:
if(PlayerInfo[i][REPORTER] >= 1)
Code:
format(str, 256, "Administrador - %s - [Cargo %d] ", pname, PlayerInfo[i][Admin]);
Code:
format(str, 256, "SWAT - %s - [Cargo %d] ", pname, PlayerInfo[i][SWAT]);
Code:
format(str, 256, "REPORTER - %s - [Cargo %d] ", pname, PlayerInfo[i][REPORTER]);

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;
}

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;
}

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




0 comentários:
Postar um comentário