SA-MP Forums

SA-MP Forums (https://forum.sa-mp.com/index.php)
-   Lançamentos/Releases (https://forum.sa-mp.com/forumdisplay.php?f=56)
-   -   [FilterScript] Anti-ESC (https://forum.sa-mp.com/showthread.php?t=253709)

Shadoww5 07/05/2011 05:33 PM

Anti-ESC
 
ANTI-ESC

Desenvolvido por Shadoww5

Descrição:

Notei que aqui no sub-forum Portugues não há topicos bem feitos com um sistema anti-esc. Alem disso, os que encontrei eram em outra lingua e com dcmd.

Então resolvi criar um FILTERSCRIPT para quem quiser implantar o comando "/esc" no se GAMEMODE.

Este é o meu primeiro filterscript, caso tenha algo errado peço que me mostrem como e o que consertar.

Quando você fizer o download (ou pegar do pastebin), peço que leia o arquivo "LEIA-ME.txt" que está na pasta principal. Lá está tudo bem explicado.

Qualquer duvida, estou à disposição.

Screenshot:

http://imageshack.us/photo/my-images...713274969.jpg/

Download:
Código:

PHP Code:

/*                  NÃO RETIRE OS CREDITOS !!
                NÃO RETIRE OS CREDITOS !!

                        SISTEMA ANTI-ESC

    CREDITOS:

 | Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5  |
 | hadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 S |
 | adoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Sh |
 | doww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Sha |
 | oww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shad |
 | ww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shado |
 | w5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadow |
 | 5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww |
 |  Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 Shadoww5 |

                    http://forum.sa-mp.com/member.php?u=123990                        */
#define FILTERSCRIPT

#include <a_samp>

forward AntiEsc(pIDFloat:XFloat:YFloat:Z);

public 
OnFilterScriptInit()
{
    print(
"--------------------------------------");
    print(
"     ANTI-ESC CARREGADO COM SUCESSO");
    print(
"           Criado por Shadoww5");
    print(
"--------------------------------------\n");
    return 
1;
}

public 
OnFilterScriptExit()
{
    print(
"--------------------------------------");
    print(
"         ANTI-ESC DESCARREGADO");
    print(
"          Criado por Shadoww5");
    print(
"--------------------------------------\n");
    return 
1;
}
public 
OnPlayerConnect(playerid) return SendClientMessage(playerid,0xFFFF00FF," Este servidor usa o Sistema ANTI-ESC - Desenvolvido por Shadoww5");

public 
OnPlayerCommandText(playeridcmdtext[])
{
    new 
cmd[256], idx;
    
cmd strtok(cmdtextidx);
    if(
strcmp(cmd"/esc"true) == 0)
    {
        new 
id[256], acusadoFloat:Pos[3];
        if(
GetTickCount() - GetPVarInt(playerid"Tick") < 120000) return SendClientMessage(playerid0xFFFFFFAA" Aguarde 2 minutos para acusar outra pessoa novamente !");
        
id strtok(cmdtext,idx);
        if(!
strlen(id)) return SendClientMessage(playerid0xFFFFFFFF"USO: /esc [playerid/Parte-do-Nick]");
        
acusado strval(id);
        if(!
IsPlayerConnected(acusado)) return SendClientMessage(playerid0xFFFFFFAA" O jogador está OFFLINE.");
        
GetPlayerPos(acusadoPos[0], Pos[1], Pos[2]);
        if(!
IsPlayerInRangeOfPoint(playerid5.0Pos[0], Pos[1], Pos[2])) return SendClientMessage(playerid0xFFFFFFAA" Você está longe do acusado !");
        
SendClientMessage(playerid0xAFAFAFAA" Você acusou alguem de estar de ESC");
        
SendClientMessage(acusado0xFFFF00FF" Você foi acusado de estar de ESC. Mova-se ou será kickado !");
        
SetPVarInt(playerid"Tick"GetTickCount());
        
SetTimerEx("AntiEsc"5000false"dfff"acusadoPos[0], Pos[1], Pos[2]);
        return 
1;
    }
    return 
0;
}
public 
AntiEsc(pIDFloat:XFloat:YFloat:Z)
{
    new 
Float:Pos[3], nome[MAX_PLAYER_NAME];
    
GetPlayerPos(pIDPos[0], Pos[1], Pos[2]);
    
GetPlayerName(pID,nome,sizeof(nome));
    if(
Pos[0] == && Pos[1] == && Pos[2] == Z)
    {
        new 
string[75];
        
SendClientMessage(pID,0xFF0000FF" Você foi kickado por estar de ESC !");
        
Kick(pID);
        
format(string,sizeof(string)," %s foi kickado por ESC/RT !"nome);
        
SendClientMessageToAll(0x04D62EFFstring);
    }
    else { 
SendClientMessage(pID,0xFFFF00FF" Você se moveu e por isso não será kickado."); }
    return 
1;
}
strtok(const string[], &index)
{
    new 
length strlen(string);
    while ((
index length) && (string[index] <= ' '))
    {
        
index++;
    }

    new 
offset index;
    new 
result[20];
    while ((
index length) && (string[index] > ' ') && ((index offset) < (sizeof(result) - 1)))
    {
        
result[index offset] = string[index];
        
index++;
    }
    
result[index offset] = EOS;
    return 
result;


OBS: Os codigos e links foram atualizados no dia 25/06/2011.

TheGarfield 07/05/2011 05:45 PM

Re: Anti-ESC
 
bom, podias usar boorleanas para nom disperdiçar variáveis(variações da variável que ficam variando xD)

gostei :D

Shadoww5 07/05/2011 05:49 PM

Re: Anti-ESC
 
Ok, mas de que forma eu usaria a bool ? Em qual função ? (Sei fazer mas não pensei nisto).

[S]trong 07/05/2011 05:54 PM

Re: Anti-ESC
 
Você não precisa usar um timer para fazer o "antiflood". E cara por favor né, isso é só um comando não precisava de uma filterscript podia ser um código útil.

Shadoww5 07/05/2011 06:01 PM

Re: Anti-ESC
 
1 - Nem todo mundo sabe implantar codigos no script ou você que todos já nasceram sabendo mexer com PAWNO ?

2 - Coloquei um SetTimer, porque o jogador acusado deve ter um tempo para se mover.

[S]trong 07/05/2011 06:04 PM

Re: Anti-ESC
 
essa não é a questão e sim que uma filterscript deveria ser usado para casos realmente necessários exemplo um admin system e não somente um comando, e também cara o limite de filterscripts é 16 ou seja é muito limitado e como falei não existe necessidade de usar o timer para verificar o tempo que ele usou o comando, eu estou falando do timer de verificar os dois minutos para usar o comando meu amigo e não o do jogador, existe outras maneiras de verificar com tempos e também como você está verificando o tempo não precisaria nem de váriaveis, estude aprenda e faça da forma certa, afinal timers lagam o servidor.

edit: você poderia ter feito destá forma.

pawn Code:
static IsFlooding[MAX_PLAYERS];
CMD:esc(playerid,params[])
{
    if (sscanf(params,"u",params[0])) {
        return SendClientMessage(playerid,0xFFFFFFFF,"-ServerError- /esc <playerid> exemplo, /esc 20");
    }
    else if(GetTickCount() - IsFlooding[playerid] < 120000) {
        return SendClientMessage(playerid,0xFFFFFFFF,"Você precisa aguardar dois minutos para usar este comando novamente.");
    }
    else if (!IsPlayerConnected(params[0])) {
        return SendClientMessage(playerid,0xFFFFFFFF,"-ServerError- jogador não conectádo.");
    }
    else {
        static Float:Float[3];
        GetPlayerPos(params[0],Float[0],Float[1],Float[2]);
        SetTimerEx("CheckEsc",5000,false,"dfff",params[0],Float[0],Float[1],Float[2]);
        IsFlooding[playerid] = GetTickCount();
    }
    return true;
}


forward CheckEsc(playerid,Float:Cordx,Float:Cordy,Float:Cordz);
public CheckEsc(playerid,Float:Cordx,Float:Cordy,Float:Cordz)
{
    static Float:Coords[3];
    GetPlayerPos(playerid,Coords[0],Coords[1],Coords[2]);
    if(Coords[0] == Cordx && Coords[1] == Cordy && Coords[2] == Cordz) {
        SendClientMessage(playerid,0xFFFFFFFF,"Você foi kickado por não se mover.");
        Kick(playerid);
    }
    else {
        SendClientMessage(playerid,0xFFFFFFFF,"Você se moveu e o processo foi cancelado.");
    }
    return true;
}
intendeu agora o que eu estou falando? Intendeu o tanto de váriaveis que eu economizei? bom pense nisso cara.

Shadoww5 07/05/2011 06:28 PM

Re: Anti-ESC
 
Está correto o filterscript, caso alguem tenha 15 filterscripts é problema dele, é ele quem tem que aprender, agora, caso você não saiba ou não tenha prestado atenção, estou tentando aprender e compartilhar isto com os outros.

Odeio que não ajuda e só faz reclamar ... Deu alguma solução ? Não ! Então fica quieto mano ! É só isso que eu te peço: Clica no logout.

[S]trong 07/05/2011 06:32 PM

Re: Anti-ESC
 
Você querendo ou não isso nunca vai ser uma filterscript meu amigo, isso é mais um código que deveria ser útil mas no final é totalmente inútil e você não tem a mínima noção do que está fazendo é só um editor de GF atoa, só de passagem achei mais de três erros no código inteiro e nem estou falando da forma que você mata o seu gm e sim dos erros mesmo.

Shadoww5 07/05/2011 06:36 PM

Re: Anti-ESC
 
Hm .. que bom ... Leu a minha ultima frase no meu ultimo post ? Não ? Leia então ...

@EDIT

Neste seu ultimo post você só fez copiar e modificar algumas coisas de um outro ANTI-ESC. Eu ja vi ele .. Por isto criei este filterscript.

[S]trong 07/05/2011 06:41 PM

Re: Anti-ESC
 
Não preciso editar ou copiar códigos, uso os meus próprios e não preciso editar godfathers e retirar os créditos dos outros meu amigo está é a forma certa e otimizada e isso é um código útil diferente do seu.


All times are GMT. The time now is 12:55 PM.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.