[ajuda] ban nick
#1

Bom Eu Queria Criar Um cmd de ban nick que o player estiver off
tipo /bannick [conta]
o GM ja tem alguns cmd de ban
pawn Код:
COMMAND:ban(playerid, params[])
{
    new PlayerToBan, Days, Hours, Reason[128], TotalBanTime, Msg[128], Name[24], AdminName[24];
    if (APlayerData[playerid][LoggedIn] == true)
    {
        if (APlayerData[playerid][PlayerLevel] >= 3)
        {
            if (sscanf(params, "uiis[128]", PlayerToBan, Days, Hours, Reason))
                SendClientMessage(playerid, 0xFF0000AA, "Use: /ban [id] [dias] [horas] [motivo]");
            else
            {
                if (IsPlayerConnected(PlayerToBan))
                {
                    GetPlayerName(playerid, AdminName, sizeof(AdminName));
                    GetPlayerName(PlayerToBan, Name, sizeof(Name));
                    APlayerData[PlayerToBan][Bans]++;
                    TotalBanTime = (Days * 86400) + (Hours * 3600) + gettime();
                    if (APlayerData[PlayerToBan][Bans] == 5)
                        APlayerData[PlayerToBan][BanTime] = 2147483640;
                    else
                        APlayerData[PlayerToBan][BanTime] = TotalBanTime;
                    if (APlayerData[PlayerToBan][Bans] == 5)
                    {
                        format(Msg, 128, "Vocк foi banido permanentemente por %s, pois ja й o seu 5° banimento.", AdminName);
                        SendClientMessage(PlayerToBan, 0x808080FF, Msg);
                    }
                    else
                    {
                        format(Msg, 128, "Vocк foi banido por %s por %i dias e %i horas.", AdminName, Days, Hours);
                        SendClientMessage(PlayerToBan, 0x808080FF, Msg);
                        format(Msg, 128, "Reason: %s", Reason);
                        SendClientMessage(PlayerToBan, 0x808080FF, Msg);
                        format(Msg, 128, "Vocк jб foi banido %i vezes, a 5° serб permanente.", APlayerData[PlayerToBan][Bans]);
                        SendClientMessage(PlayerToBan, 0x808080FF, Msg);
                    }
                }                
                Kick(PlayerToBan);
                format(Msg, 128, "{FF0000}-| O administrador %s %s baniu %s por %i dias e %i horas |-", AdminLevelName[APlayerData[playerid][PlayerLevel]], AdminName, Name, Days, Hours);
                SendClientMessageToAll(0x808080FF, Msg);
            }
        }
    }
    return 1;
}
COMMAND:banip(playerid, params[])
{
    new PlayerToBan, Reason[128], Msg[128], Name[24], AdminName[24];
    if (APlayerData[playerid][LoggedIn] == true)
    {
        if (APlayerData[playerid][PlayerLevel] >= 4)
        {
            if (sscanf(params, "us[128]", PlayerToBan, Reason))
                SendClientMessage(playerid, 0xFF0000AA, "Use: /banip [id] [motivo]");
            else
            {
                if (IsPlayerConnected(PlayerToBan))
                {
                    if(APlayerData[PlayerToBan][PlayerLevel] <= 5)                    
                    {
                        GetPlayerName(playerid, AdminName, sizeof(AdminName));
                        GetPlayerName(PlayerToBan, Name, sizeof(Name));
                        format(Msg, 128, "Vocк teve o IP banido permanentemente por %s.", AdminName);
                        SendClientMessage(PlayerToBan, 0xFF0000, Msg);
                        format(Msg, 128, "Motivo: {FFFFFF}%s{FF0000}.", Reason);
                        SendClientMessage(PlayerToBan, 0xFF0000, Msg);
                        BanEx(PlayerToBan, Reason);
                        format(Msg, 128, "-| O Administrador %s %s baniu o ip de %s |-", AdminLevelName[APlayerData[playerid][PlayerLevel]], AdminName, Name);
                        SendClientMessageToAll(0xFF0000, Msg);
                    }
                }  
            }
        }
    }
    return 1;
}
COMMAND:banclasse(playerid, params[])
{
    new PlayerToBan, PlayerIP[16], FirstPartsOfIP[16], BanCmd[24], Reason[128], Msg[128], Name[24], AdminName[24];
    if (APlayerData[playerid][LoggedIn] == true)
    {
        if (APlayerData[playerid][PlayerLevel] >= 6)
        {
            if (sscanf(params, "us[128]", PlayerToBan, Reason))
                SendClientMessage(playerid, 0xFF0000AA, "Use: /banbanclasse [id] [motivo]");
            else
            {
                if (IsPlayerConnected(PlayerToBan))
                {
                    if(APlayerData[PlayerToBan][PlayerLevel] <= 5)                    
                    {
                        GetPlayerName(playerid, AdminName, sizeof(AdminName));
                        GetPlayerName(PlayerToBan, Name, sizeof(Name));
                        GetPlayerIp(PlayerToBan, PlayerIP, 16);
                        format(Msg, 128, "Vocк teve a faixa de ip banida permanentemente por %s.", AdminName);
                        SendClientMessage(PlayerToBan, 0xFF0000, Msg);
                        format(Msg, 128, "Motivo: {FFFFFF}%s{FF0000}.", Reason);
                        SendClientMessage(PlayerToBan, 0xFF0000, Msg);
                        FirstPartsOfIP = GetFirstThreeDigitsFromIP(PlayerIP);
                        for (new i; i < 256; i++)
                        {
                            format(BanCmd, 24, "banip %s%i", FirstPartsOfIP, i);
                            SendRconCommand(BanCmd);
                        }
                        Kick(PlayerToBan);
                        format(Msg, 128, "-| O Administrador %s %s baniu a faixa de IP de %s |-", AdminLevelName[APlayerData[playerid][PlayerLevel]], AdminName, Name);
                        SendClientMessageToAll(0xFF0000, Msg);
                   }
               }
           }
        }
    }
    return 1;
}
COMMAND:desbanir(playerid, params[])
{
    new PlayerToUnban[24], Msg[128], Name[24];
    new file[100], File:PFile, LineForFile[100];

    if (APlayerData[playerid][LoggedIn] == true)
    {
        if (APlayerData[playerid][PlayerLevel] >= 4)
        {
            if (sscanf(params, "s[128]", PlayerToUnban))
                SendClientMessage(playerid, 0xFF0000AA, "Use: /desbanir [nick]");
            else
            {
                GetPlayerName(playerid, Name, sizeof(Name));

                format(file, sizeof(file), PlayerFile, PlayerToUnban);

                if (fexist(file))
                {
                    PFile = fopen(file, io_append);

                    format(LineForFile, 100, "BanTime 0\r\n");
                    fwrite(PFile, LineForFile);

                    fclose(PFile);

                    format(Msg, 128, "%s %s desbaniu %s", AdminLevelName[APlayerData[playerid][PlayerLevel]], Name, PlayerToUnban);
                    SendClientMessageToAll(0x808080FF, Msg);
                }
                SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000} Nгo existe nenhuma conta com esse nome.");
            }
        }
    }
    return 1;
}
Reply
#2

Uma base:
pawn Код:
CMD:banconta(playerid, params[])
{
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"Voce nгo й admin");
    new Nome, celula[30], cell[54];
    if(sscanf(params,"s[24]",Nome)) return SendClientMessage(playerid,-1,"/banconta [Conta]");
    format(celula,30,"/Banidos/%s.ini",Nome);
    if(!fexist(celula)) return SendClientMessage(playerid,-1,"Este jogador nгo existe ou nгo estб banido");
    fremove(celula);
    format(cell,54,"* O jogador %s foi desbanido.",Nome);
    SendClientMessage(playerid,-1, cell);
    return true;
}
Reply
#3

Basta criar um arquivo marcando o nome de tal player, apуs isso fazer a verificaзгo por pasta no OnPlayerConnect...
pawn Код:
if ( fexist ( ... ) ) // apontaria que o nome existe, ou seja tu tens de escrever outra func para que proibas o mesmo de conectar.
Nгo й difнcil, podes separar por pasta
Exemplo: pasta - scriptfiles/nicksban/:
pawn Код:
stock Banir_Nick ( filename [] )
{
    new File: wii ;
    if ( fexist ( filename ) )
    {
        return false ;
    }
    wii = fopen ( filename , io_write ) ;
    return fclose ( wii ) ;
}

CMD: banconta ( playerid, params [] )
{
    new cc_params [ MAX_PLAYER_NAME ] ;
    if ( sscanf ( params , "s[24]" , cc_params ) )
    {
        return false ;
    }
    Banir_Nick ( cc_params ) ;
    return true ;
}
E podes complementar com teus codes tambйm, tipo escrever data que foi banido, admin que baniu...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)