[FilterScript] ZAdmin (Bom Para Base Iniciantes)
#1

.:: Sistema de Administraзгo ZAdmin ::.
Reputaзгo serб sempre bem vinda.
- Informaзхes Basicas:

• 3 Leveis Administrativos.
• 11 Comandos para admins.
• 1 Comando para players.
• Sistema de Registro e Login en Box.
• Esse FS й uma base para novatos.

- Crйditos:

• FS - Criado por Zuiudгo
• Testes - Zuiudгo

- Comandos Administrativos:

- Comandos de Admin nivel 1:

• /Ir
• /Trazer
• /Congelar
• /Descongelar
• /AvAdm
• /ComandosAdmin

- Comandos de Admin nivel 2:

• /Kickar
• /Banir
• /SetarVida
• /SetarColete

- Comandos de Admin nivel 3:

• /DarAdmin

- Necessбrio:

• Includes: ZCMD, SSCANF E DINI.
• Pasta " Players " na scritpfiles.

- Downloads:

• Pastebin

• Cуdigo:

pawn Код:
////////////////////////////////////////////////////////////////////////////////
//                          ZUIUDГO SISTEMA DE ADMIN                          //
////////////////////////////////////////////////////////////////////////////////                                                                            */
//=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
#include <a_samp>
#include <zcmd>
#include <sscanf>
#include <dini>

#define DIALOG_LOGIN 47414
#define DIALOG_REGISTER 58515

#define red 0xF00A0AFF
#define blue 0x25A5FAFF
#define green 0x009900FF
#define yellow 0xFFFF00FF
#define cinza 0xB5B5B5FF

#define MAX_PING 700

#pragma tabsize 0

// === Errou a senha 3x = kick ===
new Tentativas[MAX_PLAYERS];

// === Playerinfo ===
enum pInfo
{
    Admin,
    Score,
    Cash
};
new playerinfo[MAX_PLAYERS][pInfo];

//------------------------------------------------------------------------------
public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print("Zuiudгo Sistema de Admin Carregado!");
    print("--------------------------------------\n");
    return 1;
}
//------------------------------------------------------------------------------
public OnPlayerConnect(playerid)
{
    SendClientMessage(playerid,-1,"[INFORMAЗГO]: Esse servidor utiliza um sistema de Administraзгo de Zuiudгo! ( Mais informaзхes em forum.sa-mp.com ..)");
    new arquivoplayers[64], nomeplayer[MAX_PLAYER_NAME];
    GetPlayerName(playerid,nomeplayer,sizeof(nomeplayer));
    format(arquivoplayers,sizeof(arquivoplayers),"/Players/%s.txt",nomeplayer);
    if(dini_Exists(arquivoplayers))
    {
        SetPVarInt(playerid,"Registrado",1);
        SendClientMessage(playerid,red,"Vocк jб estб registrado, use /logar");
        TogglePlayerControllable(playerid,0);
    }
        else
    {
        SendClientMessage(playerid,red,"Vocк nгo estб registrado, use /registrar");
        SetPVarInt(playerid,"Registrado",0);
    }
    return 1;
}
//------------------------------------------------------------------------------
public OnPlayerDisconnect(playerid)
{
    Salvar(playerid);
    return 1;
}
//------------------------------------------------------------------------------
public OnPlayerText(playerid, text[])
{
    if(text[0] == '@' && playerinfo[playerid][Admin] >= 1)
    {
        new string[128];
        format(string,sizeof(string),"Admin: %s [%d]: %s",Nome(playerid),playerid,text[1]);
        SendAdminMessage(blue,string);
        return 0;
    }
    return 1;
}
//------------------------------------------------------------------------------
public OnPlayerRequestSpawn(playerid)
{
    if(GetPVarInt(playerid, "Registrado") && !GetPVarInt(playerid, "Logado"))
    {
        SendClientMessage(playerid,red,"Vocк precisa se logar antes, para poder jogar, digite /logar.");
        return 0;
    }
    return 1;
}
//------------------------------------------------------------------------------
public OnPlayerUpdate(playerid)
{
    new ping = GetPlayerPing(playerid);
    new string[150];
    if(ping > MAX_PING)
    {
        format(string,sizeof(string),"%s Foi Kickado do Servidor por Exercer %d de ping o (Limite).",Nome(playerid),MAX_PING);
        SendClientMessageToAll(yellow,string);
        Kick(playerid);
    }
    return 1;
}
//------------------------------------------------------------------------------
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_LOGIN)
    {
        if(response == 0)
        {
            SendClientMessage(playerid,red,"Sem se logar vocк nгo pode jogar, por isso foi kikado");
            Kick(playerid);
            }
                if(response == 1)
                {
                    if(!strlen(inputtext))
                    {
                        ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Seja Bem vindo, sua conta jб estб registrada. Digite sua senha para poder jogar","Logar","Sair");
                        return 1;
                    }
                    else
                    {
                        Logar(playerid,inputtext);
                        SetPVarInt(playerid,"Logado",1);
                        return 1;
                }
            }
        }
        if(dialogid == DIALOG_REGISTER)
        {
            if(response == 0)
            {
                SendClientMessage(playerid,red,"Para se registrar use /registrar.");
                }
                if(response ==1 )
                {
                    if(!strlen(inputtext))
                    {
                        SendClientMessage(playerid,red,"Vocк precisa digitar uma senha!");
                        ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registro","Seja bem vindo! Registre uma senha para poder jogar!","Registrar","Sair");
                        return 1;
                    }
                    else
                    {
                        Registrar(playerid,inputtext);
                        return 1;
            }
        }
    }
    return 1;
}
//=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

CMD:relato(playerid,params[])
{
    new relato[150],string[200];
    if(sscanf(params,"s",relato)) return SendClientMessage(playerid,-1,"{FF0000}[USE]: {FFFFFF}/Relato <Texto>");
    format(string,sizeof(string),"{FF0000}[ZAdmin]: {FFFFFF}Relato de: %s(%d): %s",Nome(playerid),playerid,relato);
    SendAdminMessage(-1,string);
    SendClientMessage(playerid,-1,"{FF0000}[ZAdmin]: {FFFFFF}Seu Relato Foi Enviado Com Sucesso Para a Administraзгo Online, Aguarde Sua Resposta.");
    return 1;
}

//=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
/*                              Comandos nivel 1:                               */

CMD:comandosadmin(playerid,params[])
{
    new string[1000];
    if(playerinfo[playerid][Admin] < 1)
    {
        strcat(string,"{FF0000}[ZAdmin]: {FFFFFF}Administrador Level 1:\n");
        strcat(string,"{FFFFFF}/Ir /Trazer /Congelar /Descongelar /AvAdm");
    }
    if(playerinfo[playerid][Admin] < 2)
    {
        strcat(string,"{FF0000}[ZAdmin]: {FFFFFF}Administrador Level 2:\n");
        strcat(string,"{FFFFFF}/Kickar /Banir /SetarVida /SetarColete");
    }
    if(playerinfo[playerid][Admin] < 3)
    {
        strcat(string,"{FF0000}[ZAdmin]: {FFFFFF}Administrador Level 3:\n");
        strcat(string,"{FFFFFF}/DarAdmin");
    }
    return 1;
}

CMD:ir(playerid,params[])
{
    new id,string[150];
    new Float:PosX,Float:PosY,Float:PosZ;
    if(playerinfo[playerid][Admin] < 1) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Vocк precisa ser administrador para usar este comando!");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Jogador nгo conectado!");
    if(sscanf(params,"u",id)) return SendClientMessage(playerid,-1,"{FF0000}[USE]: {FFFFFF}/Ir <PlayerID>");
    GetPlayerPos(id,PosX,PosY,PosZ);
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)SetPlayerPos(playerid,PosX,PosY,PosZ); else SetVehiclePos(GetPlayerVehicleID(playerid),PosX,PosY,PosZ);
    SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(id));
    SetPlayerInterior(playerid,GetPlayerInterior(id));
    format(string,sizeof(string),"{FF0000}[ZAdmin]: {FFFFFF}Administrador(a): %s Foi Atй: %s",Nome(playerid),Nome(id));
    SendClientMessageToAll(-1,string);
    return 1;
}

CMD:trazer(playerid,params[])
{
    new idt,string[150];
    new Float:PosX,Float:PosY,Float:PosZ;
    if(playerinfo[playerid][Admin] < 1) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Vocк precisa ser administrador para usar este comando!");
    if(!IsPlayerConnected(idt)) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Jogador nгo conectado!");
    if(sscanf(params,"u",idt)) return SendClientMessage(playerid,-1,"{FF0000}[USE]: {FFFFFF}/Trazer <PlayerID>");
    GetPlayerPos(playerid,PosX,PosY,PosZ);
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)SetPlayerPos(idt,PosX,PosY,PosZ); else SetVehiclePos(GetPlayerVehicleID(idt),PosX,PosY,PosZ);
    SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(idt));
    SetPlayerInterior(playerid,GetPlayerInterior(idt));
    format(string,sizeof(string),"{FF0000}[ZAdmin]: {FFFFFF}Administrador(a): %s Puxou Atй Vocк: %s",Nome(playerid),Nome(idt));
    SendClientMessageToAll(-1,string);
    return 1;
}

CMD:congelar(playerid,params[])
{
    new idc,string[150];
    if(playerinfo[playerid][Admin] < 1) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Vocк precisa ser administrador para usar este comando!");
    if(!IsPlayerConnected(idc)) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Jogador nгo conectado!");
    if(sscanf(params,"u",idc)) return SendClientMessage(playerid,-1,"{FF0000}[USE]: {FFFFFF}/Congelar <PlayerID>");
    TogglePlayerControllable(idc,0);
    format(string,sizeof(string),"{FF0000}[ZAdmin]: {FFFFFF}Administrador(a): %s Congelou: %s",Nome(playerid),Nome(idc));
    SendClientMessageToAll(-1,string);
    return 1;
}

CMD:descongelar(playerid,params[])
{
    new idd,string[150];
    if(playerinfo[playerid][Admin] < 1) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Vocк precisa ser administrador para usar este comando!");
    if(!IsPlayerConnected(idd)) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Jogador nгo conectado!");
    if(sscanf(params,"u",idd)) return SendClientMessage(playerid,-1,"{FF0000}[USE]: {FFFFFF}/Descongelar <PlayerID>");
    TogglePlayerControllable(idd,1);
    format(string,sizeof(string),"{FF0000}[ZAdmin]: {FFFFFF}Administrador(a): %s Descongelou: %s",Nome(playerid),Nome(idd));
    SendClientMessageToAll(-1,string);
    return 1;
}

CMD:avadm(playerid,params[])
{
    new texto[500],string[550];
    if(playerinfo[playerid][Admin] < 1) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Vocк precisa ser administrador para usar este comando!");
    if(sscanf(params,"s",texto)) return SendClientMessage(playerid,-1,"{FF0000}[USE]: {FFFFFF}/AvAdm <Texto>");
    format(string,sizeof(string),"[ZAdmin]: {FF0000}Administrador: %s Diz: {FFFFFF}%s",Nome(playerid),texto);
    SendClientMessageToAll(-1,string);
    return 1;
}
//=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
/*                              Comandos nivel 2:                               */

CMD:kickar(playerid,params[])
{
    new idk,motivo[150],string[250];
    if(playerinfo[playerid][Admin] < 2) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Vocк precisa ser administrador para usar este comando!");
    if(!IsPlayerConnected(idk)) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Jogador nгo conectado!");
    if(sscanf(params,"us",idk,motivo)) return SendClientMessage(playerid,-1,"{FF0000}[USE]: {FFFFFF}/Kickar <PlayerID> <Motivo>");
    format(string,sizeof(string),"[ZAdmin]: Administrador(a): %s - Kickou: %s - Motivo: %s",Nome(playerid),Nome(idk),motivo);
    SendClientMessageToAll(cinza,string);
    Kick(idk);
    return 1;
}

CMD:banir(playerid,params[])
{
    new idb,motivo[150],string[250];
    if(playerinfo[playerid][Admin] < 2) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Vocк precisa ser administrador para usar este comando!");
    if(!IsPlayerConnected(idb)) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Jogador nгo conectado!");
    if(sscanf(params,"us",idb,motivo)) return SendClientMessage(playerid,-1,"{FF0000}[USE]: {FFFFFF}/Banir <PlayerID> <Motivo>");
    format(string,sizeof(string),"[ZAdmin]: Administrador(a): %s - Baniu: %s - Motivo: %s",Nome(playerid),Nome(idb),motivo);
    SendClientMessageToAll(cinza,string);
    Ban(idb);
    return 1;
}

CMD:setarvida(playerid,params[])
{
    new idv,vida,string[150];
    if(playerinfo[playerid][Admin] < 2) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Vocк precisa ser administrador para usar este comando!");
    if(!IsPlayerConnected(idv)) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Jogador nгo conectado!");
    if(sscanf(params,"ud",idv,vida)) return SendClientMessage(playerid,-1,"{FF0000}[USE]: {FFFFFF}/SetarVida <PlayerID> <Quantidade de Vida>");
    SetPlayerHealth(playerid,vida);
    format(string,sizeof(string),"{FF0000}[ZAdmin]: {FFFFFF}Administrador(a): %s Setou Sua Vida Para: %d",Nome(playerid),vida);
    SendClientMessage(idv,blue,string);
    return 1;
}

CMD:setarcolete(playerid,params[])
{
    new idc,colete,string[150];
    if(playerinfo[playerid][Admin] < 2) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Vocк precisa ser administrador para usar este comando!");
    if(!IsPlayerConnected(idc)) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Jogador nгo conectado!");
    if(sscanf(params,"ud",idc,colete)) return SendClientMessage(playerid,-1,"{FF0000}[USE]: {FFFFFF}/SetarVida <PlayerID> <Quantidade de Vida>");
    SetPlayerHealth(playerid,colete);
    format(string,sizeof(string),"{FF0000}[ZAdmin]: {FFFFFF}Administrador(a): %s Setou Seu Colete Para: %d",Nome(playerid),colete);
    SendClientMessage(idc,-1,string);
    return 1;
}
//=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
/*                              Comandos nivel 3:                               */

CMD:daradmin(playerid,params[])
{
    new ida,level,string[250];
    if(playerinfo[playerid][Admin] < 3) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Vocк precisa ser administrador para usar este comando!");
    if(!IsPlayerConnected(ida)) return SendClientMessage(playerid,-1,"{FF0000}[ERRO]: {FFFFFF}Jogador nгo conectado!");
    if(sscanf(params,"ud",ida,level)) return SendClientMessage(playerid,-1,"{FF0000}[USE]: {FFFFFF}/DarAdmin <PlayerID> <Level de 1-3>");
    playerinfo[ida][Admin] = level;
    format(string,sizeof(string),"{FF0000}[ZAdmin]: {FFFFFF}Vamos dar os parabйns б %s Agora й um Administrador(a) Level %d",Nome(ida),level);
    SendClientMessageToAll(-1,string);
    return 1;
}
//=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
stock SendAdminMessage(cor,string[])
{
    for(new d; d < GetMaxPlayers(); ++d)
{
    if(IsPlayerConnected(d) && playerinfo[d][Admin] > 1)
{
    SendClientMessage(d,cor,string);
    }
  }
}
//------------------------------------------------------------------------------
stock Salvar(playerid)
{
    new arquivoplayers[64];
    new Nome1[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Nome1,sizeof(Nome1));
    format(arquivoplayers,sizeof(arquivoplayers),"/Players/%s.txt",Nome1);
    dini_IntSet(arquivoplayers,"Admin",playerinfo[playerid][Admin]);
    dini_IntSet(arquivoplayers,"Score",GetPlayerScore(playerid));
    dini_IntSet(arquivoplayers,"Cash",GetPlayerMoney(playerid));
    return 1;
}
//------------------------------------------------------------------------------
stock Logar(playerid,key[])
{
    new arquivoplayers[64];
    new Nome1[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Nome1,sizeof(Nome1));
    format(arquivoplayers,sizeof(arquivoplayers),"/Players/%s.txt",Nome1);
    if(!strcmp(key,dini_Get(arquivoplayers,"Senha"),false))
    {
        playerinfo[playerid][Admin] = dini_Int(arquivoplayers,"Admin");
        SetPlayerScore(playerid,dini_Int(arquivoplayers,"Score"));
        GivePlayerMoney(playerid, (ResetPlayerMoney(playerid), dini_Int(arquivoplayers,"Cash")));
        SendClientMessage(playerid,green,"CONTA: Vocк foi logado com sucesso!");
        SetPVarInt(playerid,"Logado",1);
        return 1;
    }
    if(Tentativas[playerid]==2)
    {
        SendClientMessage(playerid,red,"Vocк foi kickado por errar a sua senha 3 vezes");
        Kick(playerid);
        return 1;
    }
    else
    {
        ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Digite sua senha para poder logar.","Logar","Sair");
        SendClientMessage(playerid,red,"Sua senha estб errada! Caso vocк a erre mais de 3 vezes vocк serб kickado por motivos de seguranзa!");
        Tentativas[playerid]++;
        return 1;
    }
}
//------------------------------------------------------------------------------
stock Registrar(playerid,key[])
{
    new arquivoplayers[64];
    new Nome1[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Nome1,sizeof(Nome1));
    format(arquivoplayers,sizeof(arquivoplayers),"/Players/%s.txt",Nome1);
    dini_Create(arquivoplayers);
    dini_Set(arquivoplayers,"Senha",key);
    SendClientMessage(playerid,green,"CONTA: Vocк foi registrado e logado com sucesso");
    dini_IntSet(arquivoplayers,"Admin",0);
    dini_IntSet(arquivoplayers,"Score",0);
    dini_IntSet(arquivoplayers,"Cash",0);
    return 1;
}
//------------------------------------------------------------------------------
stock Nome(playerid)
{
    new Name[MAX_PLAYERS];
    GetPlayerName(playerid,Name,sizeof(Name));
    return Name;
}
//=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
public OnFilterScriptExit()
{
    print("\n--------------------------------------");
    print("Zuiudгo Sistema de Admin Descarregado!");
    print("--------------------------------------\n");
    return 1;
}
//=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
Reply
#2

Dei uma lida rбpida e, apesar de simples, gostei, parabйns.

Prevejo gente reclamando do uso de dini.
Reply
#3

Esse era o nome que eu dei ao meu que iria postar essa semana... (Que agora estб com 84 Comandos)

Mas enfim, parabйns...
Reply
#4

dini matou tudo .
Reply
#5

Quote:
Originally Posted by dPlaYer_
Посмотреть сообщение
dini matou tudo .
Eu estou usando DOF2 no meu sistema, vocк acha ele bom?
Reply
#6

Mais do mesmo... mesmo assim й um bom sistema, simples & organizado

https://sampforum.blast.hk/showthread.php?tid=281631
https://sampforum.blast.hk/showthread.php?tid=359949
https://sampforum.blast.hk/showthread.php?tid=364554
Reply
#7

Quote:
Originally Posted by Rhayziin
Посмотреть сообщение
Eu estou usando DOF2 no meu sistema, vocк acha ele bom?
Sem Duvida DOF2 e bem melhor que dini

#Topico

Muito simples mais parabens

7/10
Reply
#8

muito bom dini e muito bom . + rep pela iniciativa que muitos aqui nao tiveram.
Reply
#9

^^

Legal!
Reply
#10

aff vei. imagina sу 10 players se movimentando.

pawn Код:
public OnPlayerUpdate(playerid)
{
    new ping = GetPlayerPing(playerid);
    new string[150];
    if(ping > MAX_PING)
    {
        format(string,sizeof(string),"%s Foi Kickado do Servidor por Exercer %d de ping o (Limite).",Nome(playerid),MAX_PING);
        SendClientMessageToAll(yellow,string);
        Kick(playerid);
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)