Anti-ESC -
Shadoww5 - 07.05.2011
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 код:
/* 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(pID, Float:X, Float:Y, Float: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(playerid, cmdtext[])
{
new cmd[256], idx;
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/esc", true) == 0)
{
new id[256], acusado, Float:Pos[3];
if(GetTickCount() - GetPVarInt(playerid, "Tick") < 120000) return SendClientMessage(playerid, 0xFFFFFFAA, " Aguarde 2 minutos para acusar outra pessoa novamente !");
id = strtok(cmdtext,idx);
if(!strlen(id)) return SendClientMessage(playerid, 0xFFFFFFFF, "USO: /esc [playerid/Parte-do-Nick]");
acusado = strval(id);
if(!IsPlayerConnected(acusado)) return SendClientMessage(playerid, 0xFFFFFFAA, " O jogador estб OFFLINE.");
GetPlayerPos(acusado, Pos[0], Pos[1], Pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 5.0, Pos[0], Pos[1], Pos[2])) return SendClientMessage(playerid, 0xFFFFFFAA, " Vocк estб longe do acusado !");
SendClientMessage(playerid, 0xAFAFAFAA, " Vocк acusou alguem de estar de ESC");
SendClientMessage(acusado, 0xFFFF00FF, " Vocк foi acusado de estar de ESC. Mova-se ou serб kickado !");
SetPVarInt(playerid, "Tick", GetTickCount());
SetTimerEx("AntiEsc", 5000, false, "dfff", acusado, Pos[0], Pos[1], Pos[2]);
return 1;
}
return 0;
}
public AntiEsc(pID, Float:X, Float:Y, Float:Z)
{
new Float:Pos[3], nome[MAX_PLAYER_NAME];
GetPlayerPos(pID, Pos[0], Pos[1], Pos[2]);
GetPlayerName(pID,nome,sizeof(nome));
if(Pos[0] == X && Pos[1] == Y && 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(0x04D62EFF, string);
}
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.
Re: Anti-ESC -
TheGarfield - 07.05.2011
bom, podias usar boorleanas para nom disperdiзar variбveis(variaзхes da variбvel que ficam variando xD)
gostei
Re: Anti-ESC -
Shadoww5 - 07.05.2011
Ok, mas de que forma eu usaria a bool ? Em qual funзгo ? (Sei fazer mas nгo pensei nisto).
Re: Anti-ESC - [S]trong - 07.05.2011
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.
Re: Anti-ESC -
Shadoww5 - 07.05.2011
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.
Re: Anti-ESC - [S]trong - 07.05.2011
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 Код:
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.
Re: Anti-ESC -
Shadoww5 - 07.05.2011
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.
Re: Anti-ESC - [S]trong - 07.05.2011
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.
Re: Anti-ESC -
Shadoww5 - 07.05.2011
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.
Re: Anti-ESC - [S]trong - 07.05.2011
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.