Há tempos criei este FS para meus amigos apreenderem, vou disponibilizar para vocês também
É um FS que tem apenas dois comandos, para quem deseja criar seu próprio sistema de admin..
contém, SetLevel e Kick.
http://pastebin.com/6F2hpNSP
Código:
É um FS que tem apenas dois comandos, para quem deseja criar seu próprio sistema de admin..
contém, SetLevel e Kick.
http://pastebin.com/6F2hpNSP
Código:
- Código:
// Lembre-se de criar a pasta "Contas" !
#include a_samp
#include YSI\y_commands
#include sscanf2
#include bINi
#define GetNick(%0) (GetPlayerName(playerid, gPlayerData[%0][E_NOME], 24), gPlayerData[%0][E_NOME])
#define IsPlayerLogged(%0) gPlayerData[%0][E_LOGGED]
#define Vermelho 0xFF0000FF
enum E_ADMIN{
bool: E_LOGGED,
E_NOME[24],
E_PLAYER,
E_VALOR,
E_NIVEL
};
new
gPlayerData [ MAX_PLAYERS ] [ E_ADMIN ],
gString [128]
;
public OnPlayerConnect(playerid){
for(new i, e = _:E_ADMIN; i != e; ++i){
gPlayerData[playerid][E_ADMIN: i] = 0;
}
return true;
}
public OnPlayerRequestSpawn(playerid){
format(gString, 128, "/Contas/%s.ips", GetNick(playerid));
if(fexist(gString) && !IsPlayerLogged(playerid)){
SendClientMessage(playerid, 0x00FF00FF, "[Info]: Sua conta está registrada em nosso banco de dados, por favor digite /Logar.");
return false;
}
return true;
}
CMD:registrar(playerid, params[]){
if(IsPlayerLogged(playerid)){
return SendClientMessage(playerid, Vermelho, "[Erro]: Você já está logado!");
}
new Senha[32];
if(sscanf(params, "s[32]", Senha))
return SendClientMessage(playerid, Vermelho, "[Erro]: /Registrar <Senha>");
if(strlen(Senha) < 3)
return SendClientMessage(playerid, Vermelho, "[Erro]: Sua senha tem que ter no mínimo 3 caracteres!");
format(gString, 128, "/Contas/%s.ips", GetNick(playerid));
INI_Open(gString);
INI_WriteString(gString, "Senha", Senha);
INI_WriteInt(gString, "Score", GetPlayerScore(playerid));
INI_WriteInt(gString, "Dinheiro", GetPlayerMoney(playerid));
INI_Save();
INI_Close();
SendClientMessage(playerid, -1, "Registrado!");
return true;
}
CMD:logar(playerid, params[]){
if(IsPlayerLogged(playerid)){
return SendClientMessage(playerid, Vermelho, "[Erro]: Você já está logado!");
}
format(gString, 128, "/Contas/%s.ips", GetNick(playerid));
if(!fexist(gString)){
return SendClientMessage(playerid, Vermelho, "[Erro]: Em nosso banco de dados a sua conta não está registrada. Digite /Registrar.");
}
new Senha[32];
if(sscanf(params, "s[32]", Senha))
return SendClientMessage(playerid, Vermelho, "[Erro]: /Logar <Senha>");
if(strlen(Senha) < 3)
return SendClientMessage(playerid, Vermelho, "[Erro]: Sua senha tem que ter no mínimo 3 caracteres!");
INI_Open(gString);
if(strcmp(INI_ReadString(gString, "Senha"), Senha, false) != 0)
return SendClientMessage(playerid, Vermelho, "[Erro]: Senha incorreta.");
ResetPlayerMoney(playerid);
SetPlayerScore(playerid, 0);
SetPlayerScore(playerid, INI_ReadInt(gString, "Score"));
GivePlayerMoney(playerid, INI_ReadInt(gString, "Dinheiro"));
SendClientMessage(playerid, -1, "Logado");
gPlayerData[playerid][E_LOGGED] = true;
return true;
}
CMD:setlevel(playerid, params[]){
if(!IsPlayerAdmin(playerid)){
if(!IsPlayerLogged(playerid))
return SendClientMessage(playerid, Vermelho, "[Erro]: Você não está logado para usar este comando");
if(gPlayerData[playerid][E_NIVEL] < 5)
return SendClientMessage(playerid, Vermelho, "[Erro]: Você não tem nível suficiente para usar este comando!");
}
if(sscanf(params, "ii", gPlayerData[playerid][E_PLAYER], gPlayerData[playerid][E_VALOR]))
return SendClientMessage(playerid, Vermelho, "[Erro]: Uso: /Setlevel <id> <level>");
if(!IsPlayerConnected(gPlayerData[playerid][E_PLAYER]))
return SendClientMessage(playerid, Vermelho, "[Erro]: Player não conectado!");
if(gPlayerData[playerid][E_VALOR] < 0 || gPlayerData[playerid][E_VALOR] > 5)
return SendClientMessage(playerid, Vermelho, "[Erro]: Nível inválido!, escolha de 0(retirar moderação) até 5(admin master)");
static tempID;
tempID = gPlayerData[playerid][E_PLAYER];
if(!gPlayerData[tempID][E_LOGGED])
return SendClientMessage(playerid, Vermelho, "[Erro]: Player não logado!");
gPlayerData[tempID][E_NIVEL] = gPlayerData[playerid][E_VALOR];
format(gString, 128, "O Administrador %s deu ao player %s o nível de administração #%i", GetNick(playerid), GetNick(tempID), gPlayerData[playerid][E_VALOR]);
SendClientMessageToAll(-1, gString);
return true;
}
CMD:kick(playerid, params[]){
if(!IsPlayerLogged(playerid))
return SendClientMessage(playerid, Vermelho, "[Erro]: Você não está logado para usar este comando");
if(gPlayerData[playerid][E_NIVEL] < 3)
return SendClientMessage(playerid, Vermelho, "[Erro]: Você não tem nível suficiente para usar este comando!");
if(sscanf(params, "u", gPlayerData[playerid][E_PLAYER]))
return SendClientMessage(playerid, Vermelho, "[Erro]: Uso: /Kick <id>");
if(!IsPlayerConnected(gPlayerData[playerid][E_PLAYER]))
return SendClientMessage(playerid, Vermelho, "[Erro]: Player não conectado!");
static tempID;
tempID = gPlayerData[playerid][E_PLAYER];
format(gString, 128, "O Administrador %s Kickou o player %s", GetNick(playerid), GetNick(tempID));
SendClientMessageToAll(-1, gString);
Kick(tempID);
return true;
}