[FilterScript] Anti-Aimbot by ipsLeon
#1

Publicaзгo
Bom, depois de um tempo sem desenvolver o Blackbox Anti-Cheater, decidi postar o source do meu anti-aimbot, o qual jб postei um vнdeo e tudo mais, acreidito que vai ajudar bastante gente. Vejo muitas pessoas me pedindo a proteзгo e atй querendo comprar, por isso resolvi postar pra que vocкs tenham capacidade suficiente de defenderem-se contra esse cheat ridнculo. Nгo peзo nenhuma recompensa em troca, apenas de que mantenha os crйditos da postagem caso vб postar em algum outro fуrum/blog.

Detecзгo e eficбcia
A forma de detecзгo й bem simples, ele checa primeiramente se o player estб mirando em outro player (nгo, nгo й sу TargetPlayer) na hora do tiro, e detecta tambйm a distвncia entre o player e a bala real que foi atirada, apуs isso, й feita a detecзгo de lag entre ambas as partes (atirador e alvo) e caso um deles esteja lagado, й enviada uma mensagem para todos os admins logados na RCON (vocк pode facilmente modificar isso por si mesmo). As balas com posiзхes invбlidas sгo canceladas independentemente do caso de lag ou hack (vocк tambйm pode modificar isso), e caso o player tenha mais de 10 warnings de aimbot sem lag ele й kickado do servidor.

Video
Bom, o video jб й meio antigo e fiz umas atualizaзхes no cуdigo depois disso, mas a base continua a mesma:

[ame]http://www.youtube.com/watch?v=7_bOLjRL6qE[/ame]

Download
http://pastebin.com/8Gmm0um9

/-/ fixado problema com loop e novo warning a cada tiro com suspeita de aimbot
/-/ removida a public OnPlayerDisconnect

Crйditos
- Kalcor pelo sa-mp
- niCe pelo script de vetores de cвmera
- ipsLeon pelo filterscript
-SkullFire (Gabriel Marques) por ser um fdptin's e ajudar a testar

Aproveitem, mantenham os cheaters fora de seus servidores, boa sorte
Reply
#2

Nunca vi algo do gкnero, FODA.
Reply
#3

Obrigado, ipsLeon, jб salvei aqui e adicionei os crйditos na FS.

Assim que meu server estiver pronto adicionarei a info no comando /creditos do meu server
Reply
#4

Muito bom.
E sobre o Blackbox, o projeto acabou ou vai continuar desenvolvendo?
Reply
#5

Quote:
Originally Posted by Luan Argolo
Посмотреть сообщение
Muito bom.
E sobre o Blackbox, o projeto acabou ou vai continuar desenvolvendo?
Acho que vou desenvolver o black box apenas pra uso pessoal, estou sem esperanзas de licenзas e outras coisas, basicamente vai ser a proteзгo do meu projeto apenas... Caso eu decida vender licenзas posteriormente eu decidirei quando o script tiver pronto e estбvel...
Reply
#6

Show!
Reply
#7

Muito foda,
Obrigado por postar irar ser ъtil para crai!
Reply
#8

Eu lembro de vocк me mostra esse cуdigo.

Bom trabalho Leo.
Reply
#9

Obrigado galera, fico feliz de poder contribuir pra comunidade. Sobre a postagem anterior ela foi removida, eu estava logado com a conta antiga e postei nela sem querer. Espero que isso ajude bastante gente.
Reply
#10

Parabйns cara, ficou bem interessante e bem legal essa sua decisгo de compartilhar com os demais.



Abraзos...
Reply
#11

Quote:
Originally Posted by ipsNan
View Post
Parabйns cara, ficou bem interessante e bem legal essa sua decisгo de compartilhar com os demais.




Abraзos...
Obrigado, realmente este й um ponto que andei pensando muito ultimamente, visto que sa-mp й um mod bem antigo, repleto de contribuiзхes e pessoas precisando delas, por que nгo compartilhar? Nгo adiantaria eu guardar um script como esse que beneficiaria tanta gente, por isso decidi compartilhar... Acho que amadureci bastante nestes ultimos meses aqui no fуrum, contribuiзхes gigantescas como colAndreas que nгo seria levado а pъblico vai beneficiar praticamente qualquer servidor, isso me deu uma visгo melhor sobre o que devo privar ou nгo. Abraзos
Reply
#12

Уtimo
Reply
#13

Quote:
Originally Posted by ProKillerpa
View Post
Уtimo
Obg
Reply
#14

Foda demais meu caro amigo nomenau,parabйns .

cade meus creditos por eu te ajudar a testar?fdptin\'s
Reply
#15

Quote:
Originally Posted by SkullFire
View Post
Foda demais meu caro amigo nomenau,parabйns .


cade meus creditos por eu te ajudar a testar?fdptin\'s
Esqueci disso kkk vou adcionar.
Reply
#16

Por que nгo posta na board inglesa tambйm?
Reply
#17

Quote:
Originally Posted by JkS
View Post
Por que nгo posta na board inglesa tambйm?
Vou postar mais tarde quando eu estiver no PC
Reply
#18

Parabйns, bom trabalho. Deveria tentar(de novo) fazer para aqueles de mira fixa.
Reply
#19

Quote:
Originally Posted by JonathanFeitosa
View Post
Parabйns, bom trabalho. Deveria tentar(de novo) fazer para aqueles de mira fixa.
Obrigado, preciso re-ver o conceito do cуdigo e melhorar o algorнtimo pra detecзгo, a ъltima vez que mexi no anti-aimlock nгo obtive bons resultados, mas em breve estarei re-fazendo, cуdigo antigo:

Code:
#define WEAPON_MODE_RELEASE 0
#define WEAPON_MODE_HOLD 1
#define WEAPON_MODE_AIM	2

#define PRESSED(%0) \
	(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))

#define RELEASED(%0) \
	(((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
	
forward CheckAimLock(playerid);

enum TargetInfo
{
	targetid,
	Float:pos_x,
	Float:pos_y,
	Float:pos_z
}

new AimLockTarget[MAX_PLAYERS][TargetInfo];
new bool:IsPlayerAiming[MAX_PLAYERS];
new AimLockCheck[MAX_PLAYERS];
new AimAccuracy[MAX_PLAYERS];

GetPlayerSpeed(playerid)
{
	new Float:vx, Float:vy, Float:vz;
	GetPlayerVelocity(playerid, vx, vy, vz);
	return floatsqroot(floatpower(vx, 2) + floatpower(vy, 2) + floatpower(vz, 2));
}

public OnPlayerConnect(playerid)
{
	AimLockTarget[playerid][targetid] = -1;
	AimLockTarget[playerid][pos_x] = -1.0;
	AimLockTarget[playerid][pos_y] = -1.0;
	AimLockTarget[playerid][pos_z] = -1.0;
	
	IsPlayerAiming[playerid] = false;
	AimAccuracy[playerid] = 0;
	return 1;
}

public OnPlayerKeyStateChange(playerid, oldkeys, newkeys)
{
	new weapon = GetPlayerWeapon(playerid);
	if(RELEASED(KEY_AIM) && && IsPlayerAiming[playerid] && !IsPlayerInAnyVehicle(playerid))
	{
		IsPlayerAiming[playerid] = false;
		OnPlayerAim(playerid, weapon, WEAPON_MODE_RELEASE);
		return 1;
	}
	if(PRESSED(KEY_AIM) && !IsPlayerAiming[playerid] && !IsPlayerInAnyVehicle(playerid))//detect if player is holding aim
	{			
		switch(weapon)
		{
			case 22..34, 38:
			{
				IsPlayerAiming[playerid] = true;
				OnPlayerAim(playerid, weapon, WEAPON_MODE_HOLD);				
			}
		}
		return 1;
	}
	if(newkeys & KEY_AIM && !IsPlayerAiming[playerid] && !IsPlayerInAnyVehicle(playerid))//detect if player is holding aim
	{			
		switch(weapon)
		{
			case 22..34, 38:
			{
				IsPlayerAiming[playerid] = true;
				OnPlayerAim(playerid, weapon, WEAPON_MODE_AIM);				
			}
		}
		return 1;
	}
	return 1;
}

forward OnPlayerAim(playerid, &weapon, &mode);
public OnPlayerAim(playerid, &weapon, &mode)
{
	if(!mode)
	{
		AimLockTarget[playerid][targetid] = -1;
		AimLockTarget[playerid][pos_x] = -1.0;
		AimLockTarget[playerid][pos_y] = -1.0;
		AimLockTarget[playerid][pos_z] = -1.0;
		return KillTimer(AimLockCheck[playerid]);
	}
	switch(weapon)
	{
		case 22..33:
		{
			AimLockCheck[playerid] = SetTimerEx("CheckAimlock", 100, true, "i", playerid);
		}
	}
	return 1;
}
/*----------------> events <-------------------*/
public OnPlayerDeath(playerid, killerid, weapon)
{
	return 1;
}

public OnPlayerDisconnect(playerid)
{
	return 1;
}
/*---------------------------------------------*/


public CheckAimLock(playerid)
{	
	if(!IsPlayerAiming(playerid))
	{		
		AimLockTarget[playerid][targetid] = -1;
		AimLockTarget[playerid][pos_x] = -1.0;
		AimLockTarget[playerid][pos_y] = -1.0;
		AimLockTarget[playerid][pos_z] = -1.0;
		return KillTimer(AimLockCheck[playerid]);
	}
	
	if(AimLockTarget[playerid][targetid] >= 0 && AimLockTarget[playerid][targetid] <= MAX_PLAYERS)
	{
		if(!IsPlayerAimingAtPlayer(playerid, AimLockTarget[playerid][targetid]))
		{	
			AimLockTarget[playerid][targetid] = -1;
			AimLockTarget[playerid][pos_x] = -1.0;
			AimLockTarget[playerid][pos_y] = -1.0;
			AimLockTarget[playerid][pos_z] = -1.0;
			AimAccuracy[playerid] --;
		}
	}
	
	new Float:x, Float:y, Float:z;
	GetPlayerPos(playerid, x, y, z);
	
	for(new i; i < MAX_PLAYERS; i++)
	{
		if(!IsPlayerConnected(playerid)) continue;
		if(!IsPlayerInRangeOfPoint(playerid, 20.0, x, y, z)) continue;				
		new Float:tx, Float:ty, Float:tz;
		GetPlayerPos(i, tx, ty, tz);
		if(!IsPlayerAimingAtPlayer(playerid, i)) continue;
		if(GetPlayerSpeed(i) < 0.1) return 1;
		AimLockTarget[playerid][targetid] = i;
		AimLockTarget[playerid][pos_x] = tx;
		AimLockTarget[playerid][pos_y] = ty;
		AimLockTarget[playerid][pos_z] = tz;
		return AimAcuraccy[playerid] ++;
	}
	return 1;
}
Reply
#20

Uma dъvida meio estъpida.... No servidor normal, o player que eu (por exemplo) ataco, vai fazer isso q no vнdeo fez? (Tipo esse Zoom) Ou й do prуprio Hack?
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)