[AJUDA] Sistema de BAN ta com um BUG!
#1

Galera, o [FeK]Knife fez um sistema de ban para mim.
Salva as contas banidas em uma pasta...
Mas o problema й esse, as contas nгo estгo sendo salvas na pasta, e para desbanir uma pessoa eu tenho que entra no jogo digita /desbanip e reinicia o server

Vou postar os codigos que eu acho que precisa:

//Topo do GM, em baixo das define:

pawn Код:
forward CarregarBans( playerid)   ;
forward SBan( playerid)   ;
enum bBInfo
{
    bBan,
    bMotivo[126],
    bQuemBaniu[MAX_PLAYER_NAME],
} ;
new BanInfo[MAX_PLAYERS][bBInfo] ;


//Comeзo do GM No OnPlayerConnect:

pawn Код:
CarregarBans( playerid)   ;
if ( BanInfo[playerid][bBan] >= 1)
        {
new cooordstring[256],lstring[256] ;
format( lstring, sizeof( lstring)  , "Vocк foi banido pelo Administrador \n%s\n\nResumo :\n %s\n\nCaso ache que foi algum erro visite nosso forum\n               www.lifegamesrpg.forumeiros.com\n",BanInfo[playerid][bQuemBaniu],BanInfo[playerid][bMotivo])   ;
strcat( cooordstring,lstring)   ;
ShowPlayerDialog( playerid, 10120, DIALOG_STYLE_MSGBOX, "Banido", cooordstring, "Ok", "Fechar")   ;
Kick( playerid)   ;


//Comando do /ban:

pawn Код:
if(strcmp(cmd, "/ban", true) == 0)
    {
     if(IsPlayerConnected(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USE: /ban [ id ] [reason]");
                return 1;
            }
            giveplayerid = ReturnUser(tmp);
            if (PlayerInfo[playerid][pAdmin] >= 1)
            {
                if(admtrampando[playerid] < 1)
                {
                SendClientMessage(playerid, COLOR_GRAD1, "Vocк nгo estб trabalhando! (/profadmin)");
                return 1;
                }
                if(IsPlayerConnected(giveplayerid))
                {
                    if(giveplayerid != INVALID_PLAYER_ID)
                    {
                        GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        new length = strlen(cmdtext);
                        while ((idx < length) && (cmdtext[idx] <= ' '))
                        {
                            idx++;
                        }
                        new offset = idx;
                        new result[64];
                        while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
                        {
                            result[idx - offset] = cmdtext[idx];
                            idx++;
                        }
                        result[idx - offset] = EOS;
                        if(!strlen(result))
                        {
                            SendClientMessage(playerid, COLOR_GRAD2, "USE: /ban [ id ] [reason]");
                            return 1;
                        }
                        new year, month,day;
                        getdate(year, month, day);
                        format(string, sizeof(string), "ADMIN CMD: %s foi banido pelo Admin %s, Motivo: %s (%d-%d-%d)", giveplayer, sendername, (result),month,day,year);
                        BanLog(string);
                        format(string, sizeof(string), "ADMIN CMD: %s foi banido pelo Admin %s, Motivo: %s", giveplayer, sendername, (result));
                        SendClientMessageToAll(COLOR_LIGHTRED, string);
                        Kick(playerid);
                        //PlayerInfo[giveplayerid][pBan] = 1;
                        //Ban(giveplayerid);
                        strmid( BanInfo[giveplayerid][bMotivo], string, 0, strlen( string)  , 256)   ;
                        strmid( BanInfo[giveplayerid][bQuemBaniu], giveplayer, 0, strlen( giveplayer)  , 256)   ;
                        BanInfo[playerid][bBan] = 1 ;
                        SBan( playerid)   ;
                        return 1;
                    }
                }//not connected
            }
            else
            {
                format(string, sizeof(string), "   %d e um player inativo.", giveplayerid);
                SendClientMessage(playerid, COLOR_GRAD1, string);
            }
        }
        return 1;
    }


//O Banimento quando o player tiver 3 avisos, COMANDO /aviso:

pawn Код:
if ( strcmp( cmd, "/aviso", true)   == 0)
    {
        if ( IsPlayerConnected( playerid)  )
        {
            tmp = strtok( cmdtext, idx)   ;
            if ( !strlen( tmp)  )
            {
                SendClientMessage( playerid, COLOR_GRAD2, "Use : /aviso [Id / Nome] [reason]")   ;
                return 1 ;
            }
            giveplayerid = ReturnUser( tmp)   ;
            if ( PlayerInfo[playerid][pAdmin] >= 1)
            {
                if ( IsPlayerConnected( giveplayerid)  )
                {
                    if ( giveplayerid != INVALID_PLAYER_ID)
                    {
                        GetPlayerName( giveplayerid, giveplayer, sizeof( giveplayer)  )   ;
                        GetPlayerName( playerid, sendername, sizeof( sendername)  )   ;
                        new length = strlen( cmdtext)   ;
                        while ( ( idx < length)   && ( cmdtext[idx] <= ' ')  )
                        {
                            idx++ ;
                        }
                        new offset = idx ;
                        new result[64] ;
                        while ( ( idx < length)   && ( ( idx - offset)   < ( sizeof( result)   - 1)  )  )
                        {
                            result[idx - offset] = cmdtext[idx] ;
                            idx++ ;
                        }
                        result[idx - offset] = EOS ;
                        if ( !strlen( result)  )
                        {
                            SendClientMessage( playerid, COLOR_GRAD2, "Use : /aviso [Id / Nome] [reason]")   ;
                            return 1 ;
                        }
                        PlayerInfo[giveplayerid][pWarns] += 1 ;
                        if ( PlayerInfo[giveplayerid][pWarns] >= 3)
                        {
                            new year, month,day ;
                            getdate( year, month, day)   ;
                            format( string, sizeof( string)  , "%s foi banido por %s, razгo: %s ( %d-%d-%d)  ", giveplayer, sendername, ( result)  ,month,day,year)   ;
                            //BanLog( string)   ;
                            format( string, sizeof( string)  , "%s foi banido por %s ( 3 avisos)  , razгo: %s", giveplayer, sendername, ( result)  )   ;
                            SendClientMessageToAll( COLOR_LIGHTRED, string)   ;
                            new cooordstring[256],lstring[256] ;
                            format( lstring, sizeof( lstring)  , "Vocк foi banido pelo Administrador %s\n\nMotivo : %s\n\nCaso ache que foi algum erro visite nosso forum\n               Forum aki\n",sendername,( result)  )   ;
                            strcat( cooordstring,lstring)   ;
                            ShowPlayerDialog( playerid, 1000, DIALOG_STYLE_MSGBOX, "Banido", cooordstring, "Ok", "Fechar")   ;
                            strmid( BanInfo[giveplayerid][bMotivo], string, 0, strlen( string)  , 256)   ;
                            strmid( BanInfo[giveplayerid][bQuemBaniu], giveplayer, 0, strlen( giveplayer)  , 256)   ;
                            BanInfo[playerid][bBan] = 1 ;
                            SBan( playerid)   ;
                            //Ban( giveplayerid)   ;
                            return 1 ;
                        }
                        format( string, sizeof( string)  , "Vocк execultou uma advertкncia sobre %s, razгo: %s", giveplayer, ( result)  )   ;
                        SendClientMessage( playerid, COLOR_LIGHTRED, string)   ;
                        format( string, sizeof( string)  , "Vocк foi advertido por %s, razгo: %s", sendername, ( result)  )   ;
                        SendClientMessage( giveplayerid, COLOR_LIGHTRED, string)   ;
                        return 1 ;
                    }
                }//not connected
            }
            else
            {
                format( string, sizeof( string)  , "   %d nгo й um jogador ativo.", giveplayerid)   ;
                SendClientMessage( playerid, COLOR_GRAD1, string)   ;
            }
        }
        return 1 ;
    }



//Final do GM, na public sBan:

pawn Код:
public SBan( playerid)
{
 new file[128] ;
    new name[MAX_PLAYER_NAME] ;
    GetPlayerName( playerid, name, sizeof( name) )  ;
    format( file,sizeof( file) ,"/Banidos/Contas/%s.ini",name)  ;
    if ( fexist( file) )
    {
dini_IntSet( file,"Banido",BanInfo[playerid][bBan])  ;
        dini_IntSet( file,"Motivo",BanInfo[playerid][bMotivo])  ;
        dini_IntSet( file,"Administrador",BanInfo[playerid][bQuemBaniu])  ;
    }
    return 1 ;
}

public CarregarBans( playerid)
{
    new arquivo[256] ;
    new pNome[MAX_PLAYER_NAME] ;
    GetPlayerName( playerid,pNome,sizeof( pNome) )  ;
    format( arquivo, sizeof( arquivo) , "/Banidos/Contas/%s.ini",pNome[playerid])  ;
    if ( dini_Exists( arquivo) )
    {
        BanInfo[playerid][bBan] = dini_Int( arquivo,"Banido")  ;
        strmid( BanInfo[playerid][bMotivo], dini_Get( arquivo,"Motivo") , 0, strlen( dini_Get( arquivo,"Motivo") ) , 255)  ;
        strmid( BanInfo[playerid][bQuemBaniu], dini_Get( arquivo,"Administrador") , 0, strlen( dini_Get( arquivo,"Administrador") ) , 255)  ;
    }
        return 1 ;
    }



Eu queria que alguem arrumasse para que quando alguem fosse banido criasse uma pasta, й a seguinte pasta /Banidos/Contas/%s.ini ou sу /Banidos/%s.ini



E para desbanir a conta era sу eu digitar in-game:
/desbanconta e /desbanip

Aqui vai os comando do /desbanconta e /desbanip:



//Desbanconta:


pawn Код:
if(strcmp(cmd,"/desbanconta",true)==0 || strcmp(cmd,"/unbannome",true)==0 || strcmp(cmd,"/desbannome",true)==0)
        {
            if(PlayerInfo[playerid][pAdmin] >= 1337)
                {
                    if(admtrampando[playerid] < 1 && PlayerInfo[playerid][pAdmin] != 1342)
                        {
                        SendClientMessage(playerid, COLOR_GRAD1, "Vocк nгo estб trabalhando! (/profadmin)");
                        return 1;
                        }
                    tmp = strtok(cmdtext,idx);
                    if(!strlen(tmp))
                    {
                        SendClientMessage(playerid,COLOR_WHITE,"USE: /nomedesban [NOME DO JOGADOR]");
                        return 1;
                        }
                        new arquivo[64];
                        format(arquivo, sizeof(arquivo), "/Banidos/Contas/%s.ini",tmp);
                        if(!dini_Exists(arquivo))
                        {
                        SendClientMessage(playerid,COLOR_GRAD1,"Nick nгo encontrado na base de dados");
                        return 1;
                        }
                        else
                        {
                                dini_Remove(arquivo);
                        }
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        {
                                format(string, 128, "ADM: %s desbaniu o Nick %s", sendername,tmp);
                                ABroadCast(COLOR_YELLOW,string,1);
                        }
                }
                return 1;
        }


//Desban IP:


pawn Код:
if(strcmp(cmd,"/desbanip",true)==0)
    {
        if(PlayerInfo[playerid][pAdmin] >= 1337)
        {
            if(admtrampando[playerid] < 1)
            {
                SendClientMessage(playerid, COLOR_GRAD1, "Vocк nгo estб trabalhando! (/profadmin)");
                return 1;
            }
            tmp = strtok(cmdtext,idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid,COLOR_GRAD1,"USE: /desbanip [IP DO JOGADOR]");
                return 1;
            }

            format(string,sizeof(string),"unbanip %s",tmp);
            SendRconCommand(string);
            SendRconCommand("reloadbans");
            GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
            GetPlayerName(playerid, sendername, sizeof(sendername));
            format(string, 256, "ADM: %s desbaniu o IP %s", sendername,tmp);
            ABroadCast(COLOR_YELLOW,string,1);
        }
        return 1;
    }



Eu queria que alguem arrumasse para que quando alguem fosse banido criasse uma pasta, й a seguinte pasta /Banidos/Contas/%s.ini ou sу /Banidos/%s.ini



E para desbanir a conta era sу eu digitar in-game:
/desbanconta e /desbanip

Aqui vai os comando do /desbanconta e /desbanip:

Porfavor, me ajudem!
Reply
#2

Outro tуpico? Esse GM que vocк usa tб ruim hein.
Reply
#3

atй que consiga concertar..
vai nos arquivo do sv e depois usa /rcon login senha..
e /rcon reloadbans
^^
Reply
#4

Quote:
Originally Posted by Black Sσldiєя
Посмотреть сообщение
Outro tуpico? Esse GM que vocк usa tб ruim hein.
Tou desbugando ele, ja desbuguei UM MONNTE de coisas nele! Agora sу falta isso e o /amarrar para desbugar!
Reply
#5

pawn Код:
stock ban(playerid)
{
    new arquivo[256];
    BanInfo[playerid][bBan] = 1;
    format(arquivo, sizeof(arquivo), "banidos.ini");
    return arquivo;
}
Agora й sу vocк colocar no:

pawn Код:
BanLog(playerid);
pawn Код:
ban(playerid);//Assim. Criando o jogador no arquivo em dini e setando o banimento dele.
Reply
#6

Sa-mp scripter Le O Pm Que Irei Te Mandar
Reply
#7

Eu coloquei o ban(playerid); desse jeito:

pawn Код:
public BanLog(string[])
{
    ban(playerid);//Assim. Criando o jogador no arquivo em dini e setando o banimento dele.
    new entry[256];
    format(entry, sizeof(entry), "%s\n",string);
    new File:hFile;
    hFile = fopen("ban.log", io_append);
    fwrite(hFile, entry);
    fclose(hFile);
}
Tem um monte de BanLog O_o
Ai deu esse erro:

pawn Код:
(6015) : error 017: undefined symbol "playerid"
Linha:
pawn Код:
ban(playerid);//Assim. Criando o jogador no arquivo em dini e setando o banimento dele.
Reply
#8

Nгo. Й no lugar do:

pawn Код:
BanLog(playerid);
Do seu comando.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)