plugins Init sscanf
#include <zSINI>
#include <sscanf>
#define PASTAPLAYERS "Registro/%s.ini"
enum gAdmin
{
bool:Logado,
Nivel
}
new AdminInfo[MAX_PLAYERS][gAdmin];
new string[200];
CMD:nome_do_comando(playerid, params[])
{
return 1;
}
CMD:registrar(playerid, params[])
{
// Criamos uma array para pegar o nome do jogador
new Nome[24];
// Armazenamos na array "Nome" o nome do jogador
GetPlayerName(playerid, Nome, 24);
// Formatamos a "string" em base da nossa definiзгo. Exemplo:
// Registro/zSuYaNw.ini
format(string, sizeof(string), PASTAPLAYERS, Nome);
// Verificamos se o arquivo existe, se ele existir informa para o jogador que jб existe uma conta
// com o mesmo nome.
if(fexist(string))
return SendClientMessage(playerid, -1, "Erro: Vocк jб estб registrado!");
// agora iremos pegar a senha do jogador, precisaremos de uma array de 32 cйlulas:
new Senha[32];
if(sscanf(params,"s[32]", Senha))
return SendClientMessage(playerid, Cor,"[ERRO]: /Registrar <senha>");
// Criamos a conta do jogador
IniCreate(string);
// Agora vamos abrir a conta que criamos acima."
IniOpen(string);
{
IniSet("Senha", Senha); // Salvamos a senha do jogador na conta
IniIntSet("Score", GetPlayerScore(playerid)); // Salvamos agora o score do jogador.
IniIntSet("Nivel", 0); // Salvamos tambйm o nнvel administrativo
}
// Depois de fazer as operaзхes no arquivo de texto, iremos salvar.. para salvar usamos a funзгo InClose.
IniClose();
// Informamos para o servidor que o jogador nгo estб logado:
AdminInfo[playerid][Logado] = false;
// Informamos tambйm o nнvel administrativo do jogador:
AdminInfo[playerid][Nivel] = 0; // Nнvel 0 = Sem administraзгo.
// Enviamos uma mensagem informando a senha:
format(string, sizeof(string),"Registrado com sucesso! Senha: %s", Senha);
SendClientMessage(playerid, -1, string);
return 1;
}
CMD:logar(playerid, params[])
{
// Criamos uma array para pegar o nome do jogador
new Nome[24];
// Armazenamos na array "Nome" o nome do jogador
GetPlayerName(playerid, Nome, 24);
// Formatamos a "string" em base da nossa definiзгo. Exemplo:
// Registro/zSuYaNw.ini
format(string, sizeof(string), PASTAPLAYERS, Nome);
// Verificamos se o arquivo existe, se ele existir informa para o jogador que jб existe uma conta
// com o mesmo nome caso o arquivo nгo existir ele informa que nгo estб registrado.
if(!fexist(string))
return SendClientMessage(playerid, -1, "Erro: Vocк nгo estб registrado!");
// Agora iremos pegar a senha do jogador, precisaremos de uma array de 32 cйlulas:
new Senha[32];
// A Funзгo do sscanf extrai parвmetros da strings, e neste caso iremos estrair a senha:
if(sscanf(params,"s[32]", Senha))
return SendClientMessage(playerid, -1,"[ERRO]: /Logar <senha>");
// Vamos veriricar se a senha que o jogador digitou й a correta:
// Para isso, precisaremos abrir o arquivo e comparar a senha Armazenada na variбvel "Senha"
// comparar com oque estб salvo no arquivo:
new Senha2[32];
IniOpen(string);
{
// Iremos armazenar
format(Senha2, 32, "%s", IniGet("Senha"));
}
// Iremos fechar nosso arquivo.
IniClose();
// A Funзгo strcmp compara duas strings que no nosso caso й a Senhas do jogadores:
// A Array Senha2 Retorna a senha do Arquivo e a Array Senha retorna a senha digitada
// E se for incorrecta retornarб uma mensagem.
if(strcmp(Senha2, Senha, true) != 0)
return SendClientMessage(playerid, -1,"[ERRO]: Senha Icorreta!");
// Caso as senhas se coincidirem continua a funзгo:
// Precisaremos abrir novamente o arquivo para pegar as informaзхes:
IniOpen(string);
{
SetPlayerScore(playerid, IniIntGet("Score");
AdminInfo[playerid][Nivel] = IniIntGet("Nivel");
}
// Apуs que pegarmos as informaзхes iremos fechar nosso arquivo.
IniClose();
// Informamos que o jogador estб logado:
AdminInfo[playerid][Logado] = true;
// Enviamos uma mensagem informando a senha:
format(string, sizeof(string),"Logado com sucesso! Senha: %s", Senha);
SendClientMessage(playerid, -1, string);
return 1;
}
CMD:setlevel(playerid, params[])
{
// Vamos verificar se o jogador estб logado na RCON, caso nгo estiver ele a condiзгo verifica se ele й admin nнvel 5:
if(!IsPlayerAdmin(playerid))
{
//Caso o jogador nгo estiver logado na RCON ele faz outra verificaзгo de nнvel
if(AdminInfo[playerid][Nivel] < 5)
return SendClientMessage(playerid, -1,"[ERRO]: Seu nнvel й insuficiente para setar como admin ou nгo estб logado na rcon.");
}
// Caso o jogador em questгo for nнvel 5 ou administrador na RCON o comando irб prosseguir. e o primeiro passo й criar as variбveis:
new
outro_jogador, // serб usada para informar o jogador que serб promovido
outro_nivel // nнvel do jogador que serб promovido.
;
// Utilizamos a funзгo sscanf para extrair da nossa string o jogador (ID) e o nнvel que iremos promover
if(sscanf(params, "ud", outro_jogador, outro_nivel)
return SendClientMessage(playerid, -1,"[ERRO]: Correto: /SetNivel [ID] [Nivel].");
// Vamos limitar o nнvel. sendo o 5 o mбximo de nivel e o nнvel 1 como o mнnimo
if(outro_nivel > 5 ||outro_nivelLevel < 1)
return SendClientMessage(playerid, -1,"[ERRO]: Bote nivel maior que 1 e menor que 5!");
// Agora iremos verificar se o jogador que serб promovido estб online, esta verificaзгo й muito importante para evitar
// crash do servidor.
if(IsPlayerConnected(outro_jogador))
return SendClientMessage(playerid, -1, "Jogador nгo conectado!");
// Promovendo:
// Modificamos a variбvel do jogador para o nнvel desejado do administrador
AdminInfo[outro_jogador][Nivel] == outro_nivel;
// Enviando a mensagem para o jogador promovido:
SendClientMessage(outro_jogador, -1, "[INFO]: Parabйns, vocк й um adminstrador");
// Enviando mensagem para o jogador que promoveu:
SendClientMessage(playerid, -1, "[INFO]: Parabйns, promoveu o jogador!");
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
// Criamos uma array para pegar o nome do jogador
new Nome[24];
// Armazenamos na array "Nome" o nome do jogador
GetPlayerName(playerid, Nome, 24);
// Formatamos a "string" em base da nossa definiзгo. Exemplo:
// Registro/zSuYaNw.ini
format(string, sizeof(string), PASTAPLAYERS, Nome);
// Verificamos se o arquivo existe, se ele existir salvaremos a conta do jogador
if(fexist(string))
{
// Agora vamos abrir a conta que criamos acima."
IniOpen(string);
{
IniSet("Senha", Senha); // Salvamos a senha do jogador na conta
IniIntSet("Score", GetPlayerScore(playerid)); // Salvamos agora o score do jogador.
IniIntSet("Nivel", AdminInfo[playerid][Nivel]); // Salvamos tambйm o nнvel administrativo
}
// Depois de fazer as operaзхes no arquivo de texto, iremos salvar.. para salvar usamos a funзгo InClose.
IniClose();
}
// Apуs salvar as informaзхes iremos limpar nossos dados:
AdminInfo[playerid][Nivel] = 0;
AdminInfo[playerid][Logado] = false;
return 1;
}
C:\Users\Samuel\Documents\GTA\samp03csvr_R2-2_win32\gamemodes\serverSV.pwn(130) : error 017: undefined symbol "AdminInfo" C:\Users\Samuel\Documents\GTA\samp03csvr_R2-2_win32\gamemodes\serverSV.pwn(130) : warning 215: expression has no effect C:\Users\Samuel\Documents\GTA\samp03csvr_R2-2_win32\gamemodes\serverSV.pwn(130) : error 001: expected token: ";", but found "]" C:\Users\Samuel\Documents\GTA\samp03csvr_R2-2_win32\gamemodes\serverSV.pwn(130) : error 029: invalid expression, assumed zero C:\Users\Samuel\Documents\GTA\samp03csvr_R2-2_win32\gamemodes\serverSV.pwn(130) : fatal error 107: too many error messages on one line Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 4 Errors. |
enum gAdmin
{
bool:Logado,
Nivel
}
new AdminInfo[MAX_PLAYERS];