[Ajuda] Sistema de Banimento de Serial
#1

Estou com problemas no sistema de banimento de serial do meu server, da pra banir a serial normalmente, o problema esta no desban, o comando nao esta funcionando, quando uso o comando aparece "Serial nгo encontrado na base de dados".


PHP Code:
native gpci (playeridserial [], len);
if(
strcmp(cmd"/banserial"true) == 0)
    {
        if(
IsPlayerConnected(playerid))
        {
        if(
PlayerInfo[playerid][pAdmin] != 10) return SendClientMessage(playeridCOLOR_RED" Esse Comando й Totalmente Restrito, Vocк nгo tem acesso a ele.");
            
tmp strtok(cmdtextidx);
            if(!
strlen(tmp))
            {
                
SendClientMessage(playeridCOLOR_GRAD2"USE: /banserial [id] [motivo]");
                return 
1;
            }
                new 
id strval(tmp);
                if(!
IsPlayerConnected(id))
                {
                
SendClientMessage(playeridCOLOR_RED" ID Informado й Invalido.");
                return 
1;
                }
                
giveplayerid ReturnUser(tmp);
                if(
admtrampando[playerid] < && PlayerInfo[playerid][pAdmin] != 10)
                    {
                    
SendClientMessage(playeridCOLOR_GRAD1"Vocк nгo estб trabalhando! (/trabalhar)");
                    return 
1;
                    }
                        
GetPlayerName(giveplayeridgiveplayersizeof(giveplayer));
                        
GetPlayerName(playeridsendernamesizeof(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(playeridCOLOR_GRAD2"USE: /banserial [id] [motivo]");
                            return 
1;
                        }
                        if(
PlayerInfo[giveplayerid][pAdmin] >= 10)
                        {
                            
SendClientMessage(playeridCOLOR_GRAD1"Vocк nгo pode banir um Desenvolvedor !");
                            return 
1;
                        }
                        new 
arquivo[64], tmp2[20], stri[64], playerserial[128], string2[64];
                        
gpci(giveplayeridplayerserialsizeof(playerserial));
                        
format(stringsizeof(string), "O %s %s Baniu o Serial %s de %s"CargoAdmin(playerid), sendernameplayerserialgiveplayer);
                        
ChatDono(COLOR_ORANGEstring10);
                        
getdate(AnoMesDia);
                        
format(tmp20"%d/%d/%d"DiaMesAno);
                        
gettime(HoraMinutoSegundo);
                        
format(tmp220"%d:%d:%d"HoraMinutoSegundo);
                        
format(stringsizeof(string), "O %s %s baniu o Serial do Jogador %s, Motivo: %s",CargoAdmin(playerid), sendernamegiveplayer, (result));
                        
SendClientMessageToAll(COLOR_REDstring);
                        
format(gstring,sizeof(gstring), " %s Serial:%s foi banido pelo %s %s, motivo: %s"PlayerName(giveplayerid), playerserialCargoAdmin(playerid), PlayerName(playerid), resultstring2string);
                        
SBanLog(gstring);
                        
Kick(giveplayerid);
                        if(!
dini_Exists(arquivo))
                        {
                            
format(strisizeof(stri), "SerialBanidos/%s.ini",playerserial);
                            
dini_Create(stri);
                            
dini_Set(stri,"Motivo",(result));
                            
dini_Set(stri,"Admin",PlayerName(playerid));
                            
dini_Set(stri,"Data",tmp);
                            
dini_Set(stri,"Hora",tmp2);
                            
dini_Set(stri,"Nick",PlayerName(giveplayerid));
                            
StatusPlayer(5giveplayerid);
                            return 
1;
                 }
             }
    }
if(
strcmp(cmd,"/desbanserial",true)==0)
       {
        if(
PlayerInfo[playerid][pAdmin] != 10) return SendClientMessage(playeridCOLOR_RED" Apenas O Desenvolvedor pode usar esse comando.");
          {
            
tmp strtok(cmdtext,idx);
            if(!
strlen(tmp))
            {
                
SendClientMessage(playerid,COLOR_GRAD1,"USE: /desbanserial [Serial DO JOGADOR]");
                return 
1;
               }
            
format(gstring,sizeof(gstring), "SerialBanidos/%s.ini"tmp);
            if(
dini_Exists(gstring))
            {
                
GetPlayerName(playeridsendernamesizeof(sendername));
                new 
arquivo[78];
                
format(arquivosizeof(arquivo), "SerialBanidos/%s.ini",tmp);
                
format(string,sizeof(string), "O %s %s desbaniu o Serial do jogador %s",CargoAdmin(playerid), sendernamedini_Get(arquivo,"Nick"));
                
SendClientMessageToAll(COLOR_REDstring);
                
dini_Remove(gstring);
                return 
1;
            }
            else
            {
            
SendClientMessage(playerid,COLOR_GRAD1,"Serial nгo encontrado na base de dados");
            return 
1;
            }
        }
    } 
Reply
#2

Cara, isso tб pйssimo!

Faзa um debug ai nesse "cуdigo", mude isto:
pawn Code:
else
            {
            SendClientMessage(playerid,COLOR_GRAD1,"Serial nгo encontrado na base de dados");
            return 1;
            }
para isto
pawn Code:
else printf("Serial %s nгo encontrado.", tmp)
e veja se o serial printado no console realmente existe no seu diretуrio SerialBanidos.


Pegue esta base
pawn Code:
new idx, cmd[128], tmp[128];
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/banserial", true) == 0)
{
    if(!IsPlayerAdmin(playerid))
        return SendClientMessage(playerid, -1, "Vocк nгo й um RCON.");

    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
        return SendClientMessage(playerid, -1, "/banserial [id]");

    new id = strval(tmp);
    if(!IsPlayerConnected(id))
        return SendClientMessage(playerid, -1, "ID invбlido.");

    new playerSerial[128];
    gpci(id, playerSerial, sizeof(playerSerial));
       
    new string[128];
    format(string, sizeof(string), "SerialBanidos/%s.ini", playerSerial);
    if(!dini_Exists(string)) dini_Create(string);
       
    Ban(id);
    return 1;
}

if(strcmp(cmd, "/desbanserial", true) == 0)
{
    if(!IsPlayerAdmin(playerid))
        return SendClientMessage(playerid, -1, "Vocк nгo й um RCON.");

    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
        return SendClientMessage(playerid, -1, "/desbanserial [SERIAL]");
       
    new string[128];
    format(string, sizeof(string), "SerialBanidos/%s.ini", tmp);
   
    if(!dini_Exists(string))
        return SendClientMessage(playerid, -1, "Serial nгo encontrado.");
       
    printf("Serial %s desbanido", tmp);
    dini_Remove(string);
    return 1;
}

Nгo sei se vocк tem conhecimento disso, mas й bom lembrar:

"O GPCI de um jogador NГO й ЪNICO, alguns jogadores podem ter GPCI similar ou igual, nгo banir apenas devido a uma correspondкncia GPCI."
Reply
#3

usei a funзгo print e sу mostrei metade do serial, como resolvo isso?
Reply
#4

Aumente o tamanho da string que armazena o que foi digitado.
No seu caso a variбvel й tmp.
Reply
#5

Quote:
Originally Posted by InsaneBR
View Post
"O GPCI de um jogador NГO й ЪNICO, alguns jogadores podem ter GPCI similar ou igual, nгo banir apenas devido a uma correspondкncia GPCI."
Como pego realmente o Serial?
Reply
#6

Quote:
Originally Posted by MateGPlay
View Post
Como pego realmente o Serial?
O SA-MP nгo fornece ferramentas para isto, o mбximo й este GPCI, porйm "falho", vocк teria que programar um SOFTWARE para tal coisa.
Reply
#7

Quote:
Originally Posted by InsaneBR
View Post
Aumente o tamanho da string que armazena o que foi digitado.
No seu caso a variбvel й tmp.
msm aumentando continua aparecendo metade do serial.
Reply
#8

Adapte o cуdigo que passei da maneira que desejar que irб resolver.
Reply
#9

Quote:
Originally Posted by InsaneBR
View Post
Adapte o cуdigo que passei da maneira que desejar que irб resolver.
Mesmo usando seu cуdigo usei a funзгo printf e so apareceu metade do serial.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)