[AJUDA]Anti-Cheater
#1

bom, estou criando um anti-cheater para meu servidor e tenho 3 duvidas:
1 - Como mandar uma mensagem para o administrador de como o player foi banido; ex: jetpack, vida, etc.
2 - Como Banir Por Exemplo, JetPack;
3 - Banir por vida..

Aqui vai um exemplo, sу sei fazer com armas

pawn Код:
if(GetPlayerWeapon(playerid) == 38)
    {
        if(!IsPlayerAdmin(playerid))
        {
            SendClientMessage(playerid, AMARELO, "~~~~~~~~~~~~~~~~~~~~~~~~ BANIDO ~~~~~~~~~~~~~~~~~~~~~~~~");
            SendClientMessage(playerid, BRANCO, "{30DDE7}•{FFFFFF} Vocк Foi Banido Por Estar Usando Uma Minigum!");
            SendClientMessage(playerid, BRANCO, "{30DDE7}•{FFFFFF} Tire Um Print Screen (F8) Se Acha que Foi Banido Injustamente!");
            SendClientMessage(playerid, BRANCO, "{30DDE7}•{FFFFFF} E Poste em Nossa Comunidade!");
            SendClientMessage(playerid, BRANCO, "{30DDE7}•{FFFFFF} http://www.orkut.com.br/Main#Community?cmm=-----------!");
            SendClientMessage(playerid, AMARELO, "~~~~~~~~~~~~~~~~~~~~~~~~ BANIDO ~~~~~~~~~~~~~~~~~~~~~~~~");
            Ban(playerid);
            return 1;
    }
}
Reply
#2

1: Mandar mensagens ao admins: http://forum.sa-mp.com/showpost.php?...9&postcount=10


pawn Код:
if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK)
{
       SendClientMessage(playerid, -1,"[INFO]: Vocк foi banido saaabiiiiaaa ?????, Motivo: Uso de Jetpack!");
       BanEx(playerid,"JetPack");
       return 0;
}

pawn Код:
// toopo:
new Float:Vidap[MAX_PLAYERS][2];
public OnPlayerUpdate(playerid)
{
      if(Vidap[playerid][0] == 0) return GetPlayerHealth(playerid, Vidap[playerid][1]),1;
      if(Vidap[playerid][0] > Vidap[playerid][1])
      {
             SendClientMessage(playerid, -1,"Banido por vida");
             Ban(playerid);
      }
      return 1;
}

/\ tudo isto, by: iGarfield
Reply
#3

GetPlayerSpecialAction, ex:
pawn Код:
if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK)
{
    Ban(playerid);
}
no caso da vida

pawn Код:
new Float:Health;
GetPlayerHealth(playerid,Health);
if(Health > 100) {
    Ban(playerid);
}
Reply
#4

Valeu
Reply
#5

PHP код:
#define LIFE 150 
//TROQUE O DEFINE PELO MAXIMO DE VIDA PERMITIDO
forward Check(playerid);
public 
OnGameModeInit()
{
    
SetTimer("Check"1000true);
    return 
1;
}
public 
Check(playerid)
{
    for( new 
0MAX_PLAYERS++)
    {
        if(
GetPlayerSpecialAction(i) == 2)
        {
            
SendClientMessage(i, -1"Vocк foi banido por usar Jet Pack.");
            
SetPVarInt(i"JetPack"1);
            
Ban(i);
        }
        new 
Float:Vida;
        
GetPlayerHealth(iVida);
        if(
Vida LIFE && !IsPlayerAdmin(i))
        {
            
SendClientMessage(i, -1"Vocк foi banido por estar com Health Hack.");
            
SetPVarInt(i"Vida"1);
            
Ban(i);
            return 
1;
        }
    }
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
    new 
str[128], n[24];
    
GetPlayerName(playerid,n,MAX_PLAYER_NAME);
    if(
GetPVarInt(playerid"Vida") == 1) return format(string,sizeof string,"%s foi banido do servidor por uso de Health Hack.",n);
    if(
GetPVarInt(playerid"JetPack") == 1)  return format(string,sizeof string,"%s foi banido do servidor por uso de Jet Pack.",n); }
    for( new 
0MAX_PLAYERS++)
    {
        if(
IsPlayerAdmin(i))
        {
            
SendClientMessage(x, -1str);
            return 
1;
        }
    }
    return 
1;

Reply
#6

Shadoww nгo entendi muito bem, tem como mandar sу a parte de mandar a mensagem ao administrador?, para mim colocar aonde jб estб o anti-cheater..
Reply
#7

Olha sу, basta sу vocк fazer isto:
  • Colocar o define no topo do GM, substituindo o 150 pelo maximo de vida que um jogador pode ter.
  • Colocar a "forward Check(playerid);" tambйm no topo do GM.
  • Na public OnGameModeInit, colocar isto na primeira linha: "SetTimer("Check", 1000, true);"
  • Colocar esta public no final do GM:

    pawn Код:
    public Check(playerid)
    {
        for( new i = 0; i < MAX_PLAYERS; i ++)
        {
            if(GetPlayerSpecialAction(i) == 2)
            {
                SendClientMessage(i, -1, "Vocк foi banido por usar Jet Pack.");
                SetPVarInt(i, "JetPack", 1);
                Ban(i);
            }
            new Float:Vida;
            GetPlayerHealth(i, Vida);
            if(Vida > LIFE && !IsPlayerAdmin(i))
            {
                SendClientMessage(i, -1, "Vocк foi banido por estar com Health Hack.");
                SetPVarInt(i, "Vida", 1);
                Ban(i);
                return 1;
            }
        }
        return 1;
    }
  • Por fim, vб na public OnPlayerDisconnect e adicione isto no final dela:

    pawn Код:
    new str[128], n[24];
        GetPlayerName(playerid,n,MAX_PLAYER_NAME);
        if(GetPVarInt(playerid, "Vida") == 1) return format(string,sizeof string,"%s foi banido do servidor por uso de Health Hack.",n);
        if(GetPVarInt(playerid, "JetPack") == 1) return format(string,sizeof string,"%s foi banido do servidor por uso de Jet Pack.",n);
        for( new i = 0; i < MAX_PLAYERS; i ++)
        {
            if(IsPlayerAdmin(i))
            {
                SendClientMessage(x, -1, str);
                return 1;
            }
        }
Reply
#8

Shadoww eu gostaria apenas de adaptar o meu que ja ta pronto para por exemplo :
pawn Код:
if(GetPlayerWeapon(playerid) == 42)
    {
        if(!IsPlayerAdmin(playerid))
        {
            SendClientMessage(playerid, AMARELO, "~~~~~~~~~~~~~~~~~~~~~~~~ BANIDO ~~~~~~~~~~~~~~~~~~~~~~~~");
            SendClientMessage(playerid, BRANCO, "{30DDE7}•{FFFFFF} Vocк Foi Banido Por Estar Usando Um Extintor!");
            SendClientMessage(playerid, BRANCO, "{30DDE7}•{FFFFFF} Tire Um Print Screen (F8) Se Acha que Foi Banido Injustamente!");
            SendClientMessage(playerid, BRANCO, "{30DDE7}•{FFFFFF} E Poste em Nossa Comunidade!");
            SendClientMessage(playerid, BRANCO, "{30DDE7}•{FFFFFF} http://www.orkut.com.br/Main#Community?cmm=lalalalalala!");
            SendClientMessage(playerid, AMARELO, "~~~~~~~~~~~~~~~~~~~~~~~~ BANIDO ~~~~~~~~~~~~~~~~~~~~~~~~");
            Ban(playerid);
            return 1;
        }
    }
e assim em cada dessas, mandar a mensagem para o administrador.
Reply
#9

Para o caso do jet pack e da vida, use as que eu falei.

Caso nгo queira, adapte ao seu GM, pois isto eu nгo irei fazer.

Quanto ao ANTI Weapon-Hack:

PHP код:
if(GetPlayerWeapon(playerid) == 42)
{
    if(!
IsPlayerAdmin(playerid))
    {
        
SendClientMessage(playeridAMARELO"~~~~~~~~~~~~~~~~~~~~~~~~ BANIDO ~~~~~~~~~~~~~~~~~~~~~~~~");
        
SendClientMessage(playeridBRANCO"{30DDE7}•{FFFFFF} Vocк Foi Banido Por Estar Usando Um Extintor!");
        
SendClientMessage(playeridBRANCO"{30DDE7}•{FFFFFF} Tire Um Print Screen (F8) Se Acha que Foi Banido Injustamente!");
        
SendClientMessage(playeridBRANCO"{30DDE7}•{FFFFFF} E Poste em Nossa Comunidade!");
        
SendClientMessage(playeridBRANCO"{30DDE7}•{FFFFFF} http://www.orkut.com.br/Main#Community?cmm=lalalalalala!");
        
SendClientMessage(playeridAMARELO"~~~~~~~~~~~~~~~~~~~~~~~~ BANIDO ~~~~~~~~~~~~~~~~~~~~~~~~");
        
SetPVarInt(playerid"WH"1);
        
Ban(playerid);
        return 
1;
    }
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
    new 
str[128], n[24];
    
GetPlayerName(playerid,n,MAX_PLAYER_NAME);
    if(
GetPVarInt(playerid"WH") == 1) return format(string,sizeof string,"%s foi banido do servidor por uso de Weapon Hack.",n);
    for( new 
0MAX_PLAYERS++)
    {
        if(
IsPlayerAdmin(i))
        {
            
SendClientMessage(i, -1str);
            return 
1;
        }
    }
    return 
1;

Reply
#10

Era isto mesmo que eu queria saber, mas tenho um pequeno problema!

Quote:

C:\Users\Renan\Desktop\pawno\gamemodes\CGU123.pwn( 155) : error 017: undefined symbol "x"
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


1 Error.

linha:
pawn Код:
SendClientMessage(x, -1, str);
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)