[Ajuda] Ban bugado
#1

eu vou banir um player e o ban vem pra mim... aonde ta o bug no codigo??

pawn Код:
CMD:banper(playerid, params[])
{
    if(ChecarPermissoes(playerid)) return 1;
    if(AdmServer(playerid, 4)) return 1;
    new StringBP[64], pFile[64];
    if(!IsPlayerConnected(strval(params))) return Msg(playerid, Vermelho, "Este jogador nгo estб online.");
    if(sscanf(params, "s[64]",StringBP)) return Msg(playerid, Vermelho, "[x]: {FFFFFF}Uso Correto: {FF0000}/Car [id/nome] ");
    if(!IsNumeric(BanPerma))
    {
        gpci(strval(params), StringBP, sizeof(StringBP));
        format(pFile, sizeof(pFile), BanPerma, StringBP);
        DOF2_CreateFile(pFile);
        DOF2_SetString(pFile, "Nome", Nome(playerid),Nome(iddele));
        DOF2_SaveFile();
        Msg(strval(params), -1, "Banido!");
        Kick(playerid);
    }
    return 1;
}
Reply
#2

Na verdade esse seu comando estб todo errado. Se vocк digitar um nome invйs de um ID vai dar problema mas...

O comando estб usando playerid como se fosse o ID do jogador informado porйm playerid armazena o ID do jogador que usou o comando.

Substitua o playerid, no bloco de puniзгo, pela variбvel que armazena o ID do jogador. No seu comando estб bem claro qual й.
Reply
#3

Quote:
Originally Posted by Kamper
Посмотреть сообщение
Na verdade esse seu comando estб todo errado. Se vocк digitar um nome invйs de um ID vai dar problema mas...

O comando estб usando playerid como se fosse o ID do jogador informado porйm playerid armazena o ID do jogador que usou o comando.

Substitua o playerid, no bloco de puniзгo, pela variбvel que armazena o ID do jogador. No seu comando estб bem claro qual й.
ficaria assim?

pawn Код:
CMD:banper(playerid, params[])
{
    if(ChecarPermissoes(playerid)) return 1;
    if(AdmServer(playerid, 4)) return 1;
    new StringBP[64], pFile[64];
    if(!IsPlayerConnected(strval(params))) return Msg(playerid, Vermelho, "Este jogador nгo estб online.");
    if(sscanf(params, "s[64]",iddele)) return Msg(playerid, Vermelho, "[x]: {FFFFFF}Uso Correto: {FF0000}/Car [id/nome] ");
    if(!IsNumeric(BanPerma))
    {
        gpci(strval(params), StringBP, sizeof(StringBP));
        format(pFile, sizeof(pFile), BanPerma, StringBP);
        DOF2_CreateFile(pFile);
        DOF2_SetString(pFile, "Nome", Nome(playerid),Nome(iddele));
        DOF2_SaveFile();
        Msg(strval(params), -1, "Banido!");
        Kick(playerid);
    }
    return 1;
}
Reply
#4

Nгo. Tira o playerid das funзхes de punir e usa strval(params) que й a forma de obter o id do jogador. Isso que ele quis dizer.
Reply
#5

Quote:
Originally Posted by TheJoaoPedro
Посмотреть сообщение
Nгo. Tira o playerid das funзхes de punir e usa strval(params) que й a forma de obter o id do jogador. Isso que ele quis dizer.
pawn Код:
if(sscanf(params, "s[64]",iddele[ID DO PLAYER])) return Msg(playerid, Vermelho, "[x]: {FFFFFF}Uso Correto: {FF0000}/Car [id/nome] ");
    if(!IsNumeric(BanPerma [FUNЗГO DE BANIR]))
    {
        gpci(strval(params), StringBP, sizeof(StringBP));
        format(pFile, sizeof(pFile), BanPerma, StringBP);
        DOF2_CreateFile(pFile);
        DOF2_SetString(pFile, "Nome", Nome(playerid),Nome(iddele));
        DOF2_SaveFile();
        Msg(strval(params), -1, "Banido!");
        Kick(playerid);
    }
nгo estou vendo onde esta o erro.. pelo que li no wiki o IsNumeric esta certo
Reply
#6

Velho, quem estб falando de IsNumeric? TU й cego?

Й tгo simples, faz o que te falei carai. Tira o playerid DA FUNЗГO DE PUNIR e usa a outra la que o cara mandou no lugar.

O QUE TEM DE DIFICIL NISSO?

Sйrio nгo nasci pra isso #desisto
Reply
#7

Quote:
Originally Posted by Kamper
Посмотреть сообщение
Velho, quem estб falando de IsNumeric? TU й cego?

Й tгo simples, faz o que te falei carai. Tira o playerid DA FUNЗГO DE PUNIR e usa a outra la que o cara mandou no lugar.

O QUE TEM DE DIFICIL NISSO?

Sйrio nгo nasci pra isso #desisto
assim?

pawn Код:
DOF2_SetString(pFile, "Nome", Nome(strval(params)),Nome(iddele));
Reply
#8

No kick tambйm... Antes de perguntar se funcionou, testa.
Reply
#9

Sua lуgica й estranha... mistura os parвmetros e sscanf quando poderia utilizar somente sscanf.
sscanf converte mais rбpido que strval, logo quando nos referimos a inteiro podemos apelar ao sscanf.

Pode nгo estar certo, e realmente espero que nгo esteja, pois quero que afunde a cara no cуdigo e entenda o algoritmo:
Код:
CMD:banper(playerid, params[])
{
	if(ChecarPermissoes(playerid)) return 1;
	if(AdmServer(playerid, 4)) return 1;
	
	new StringBP[64], TargetID, pFile[64];
	
	if(sscanf(params, "u", TargetID)) return Msg(playerid, Vermelho, "[x]: {FFFFFF}Uso Correto: {FF0000}/Car [id/nome] ");
	
 	if(!IsPlayerConnected(TargetID) return Msg(playerid, Vermelho, "Este jogador nгo estб online.");
	
	if(!IsNumeric(BanPerma))
 	{
		gpci(TargetID, StringBP, sizeof(StringBP));
		
		format(pFile, sizeof(pFile), BanPerma, StringBP);
		
		DOF2_CreateFile(pFile);
   		DOF2_SetString(pFile, "Nome", Nome(playerid), Nome(TargetID));
		DOF2_SaveFile();
		
		Msg(TargetID, -1, "Banido!");
		
		Kick(TargetID);
	}
	return 1;
}
P.S: Nгo mexi em todo o cуdigo, hб coisas que eu realmente nгo entendi, entгo deixei como estava, apenas dei um pouco mais de sentido ao cуdigo.
Reply
#10

Muleque fica horas quebrando a cabeзa com um comando simples, mas nгo fica 10 minutos pra ler um tutorial.

https://sampforum.blast.hk/showthread.php?tid=277842
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)