[Ajuda] Mostrar a mensagem do ban
#1

Seguinte tenho um comando que quando alguйm loga na "Rcon" toma ban automaticamente,porem a mensagem do ban nгo aparece pra pessoa que tomou ban,alguйm poderia me ajudar?

PHP код:
stock Nome(playerid)
{
    new 
pname[24];
    
GetPlayerName(playeridpnamesizeof(pname));
    return 
pname;
}
public 
OnRconLoginAttempt(ip[], password[], success)
{
    new 
pip[16], str[200];
    for(new 
0MAX_PLAYERSi++)
    {
        
GetPlayerIp(ipipsizeof(pip));
        if(!
strcmp(ippiptrue))
        {
            if(
strcmp(Nome(i), "[L.H]Pedro."false))// && strcmp(Nome(i), "Nick2", false) && strcmp(Name(i), "Nick3", false))
            
{
                
format(strsizeof(str), "| BvD-Admin | O(a) Admistrador(a) [L.H]Guardiao Baniu o(a) Jogador(a) %s (Motivo: Tentativa de Logar na Rcon.)"Nome(i));
                
SendClientMessageToAll(0xFF0000FFstr);
                
Ban(i);
            }
        }
    }
    return 
1;

Reply
#2

Usa um timer para fazer o banimento.
A versгo passada do SA-MP veio com esse bug. Essa eu nгo sei ao certo.
Reply
#3

De acordo com a wiki, funзхes como a SendClientMessage nгo chegarгo no jogador se o Ban for usado, eu experimentei usar timer no localhost, e mesmo assim nгo funcionou, pode ser que funcione em jogadores com ping maior por demorar mais para processar tudo, mas nгo sei sobre isso ainda.

O que vocк pode fazer, que й garantia de funcionar й checar pelo ban no OnPlayerConnect e usar o Kick ao invйs do Ban, testei aqui e estб funcionando com delay de atй 200 milisegundos.
Reply
#4

Код:
forward BanTimer(playerid);
public BanTimer(playerid);
{
Ban(playerid);
return 1;
}

public OnRconLoginAttempt(ip[], password[], success) 
{ 
    new pip[16], str[200]; 
    for(new i = 0; i < MAX_PLAYERS; i++) 
    { 
        GetPlayerIp(i, pip, sizeof(pip)); 
        if(!strcmp(ip, pip, true)) 
        { 
            if(strcmp(Nome(i), "[L.H]Pedro.", false))// && strcmp(Nome(i), "Nick2", false) && strcmp(Name(i), "Nick3", false)) 
            { 
                format(str, sizeof(str), "| BvD-Admin | O(a) Admistrador(a) [L.H]Guardiao Baniu o(a) Jogador(a) %s (Motivo: Tentativa de Logar na Rcon.)", Nome(i)); 
                SendClientMessageToAll(0xFF0000FF, str); 
                SetTimer("BanTimer", 3000, 0);
            } 
        } 
    } 
    return 1; 
}
Reply
#5

Topo do GM:

PHP код:
#define Kick(%0) SetTimerEx("Kicka", 100, false, "i", %0)
forward Kicka(p); public Kicka(p)
{
#undef Kick
Kick(p);
#define Kick(%0) SetTimerEx("Kicka", 100, false, "i", %0)
return 1;
}
#define Ban(%0) SetTimerEx("Bana", 100, false, "i", %0)
forward Bana(p); public Bana(p)
{
#undef Ban
Ban(p);
#define Ban(%0) SetTimerEx("Bana", 100, false, "i", %0)
return 1;

Reply
#6

Quote:
Originally Posted by Detoria
Посмотреть сообщение
De acordo com a wiki, funзхes como a SendClientMessage nгo chegarгo no jogador se o Ban for usado, eu experimentei usar timer no localhost, e mesmo assim nгo funcionou, pode ser que funcione em jogadores com ping maior por demorar mais para processar tudo, mas nгo sei sobre isso ainda.

O que vocк pode fazer, que й garantia de funcionar й checar pelo ban no OnPlayerConnect e usar o Kick ao invйs do Ban, testei aqui e estб funcionando com delay de atй 200 milisegundos.
Na wiki hб um exemplo de como fazer a mensagem chegar. E sim, й atravйs de um timer.
Reply
#7

Obrigado a tds!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)