Skocz do zawartości
Mr_Auto

[ANTY] Najlepsze sposoby na anty cheat'y

Rekomendowane odpowiedzi

Coraz więcej jest mini poradniczków które dają sposoby na cheat'erów ale może lepiej zebrać to w jeden poradnik dlatego zakładam ten temat:

Opiszę podstawę:

anty cheat'y można robić w dwóch miejscach:

  • w public'ku OnPlayerUpdate(playerid)
  • w stworzonym przez siebie timerze

(przy pisaniu kolejnych kodów prosiłbym napisać gdzie wkleić, czy w public OnPlayrUpdate czy timer)

Jak zrobić timer chyba każdy wie, według mnie najoptymalniejsza prędkość powtarzania to 200-500 ms

public OnPlayerUpdate odtwarza się dużo częściej nieraz nawet co 1 ms, jednak przy robieniu timer'a trzeba pamiętać o pętli dla każdego gracza

1. Anty Speed Hack (tylko pojazdy)

Potrzebna nam jakaś funkcja na prędkość, np. taka:

Float:GetPlayerVehicleSpeed(playerid)
{
	new Float:Vx,Float:Vy,Float:Vz;
	GetVehicleVelocity(GetPlayerVehicleID(playerid),Vx,Vy,Vz);
	return floatmul(floatmul(floatsqroot(floatpower(floatabs(Vx),2)+floatpower(floatabs(Vy),2)+floatpower(floatabs(Vz),2)),100),1.61);
}
testując wnioskuję że max prędkość w sa:mp według tego kodu to 532, ale jesto mało znacząca informacja ponieważ na speed hack'u prędkość wynosi momentami nawet 1300 teraz, możemy to dać w OnPlayerUpdate by dobrze wyeliminować cheat'ów, ale w timer'ze o podanym przeze mnie czasie też kod powinien działać, a kod wygląda tak:
	if(IsPlayerInAnyVehicle(playerid) && GetPlayerVehicleSpeed(playerid)>700)
	{
		//new string[128];
		//format(string,128,"Gracz %s został zbanowany za speed hack!",PlayerName(playerid));
		//SendClientMessageToAll(CZERWONY,string);
		//BanEx(playerid,"Speed Hack");
	}
dałem ograniczenie 700 ale można dać inną liczbę ponieważ na speed hack'u prędkość prawie zawsze zahacza o 1000 2. Anty Weapon Hack Najpierw trzeba sobie pomyśleć jakich broni gracz nie może używać, pamiętajcie przy ty o tym że - spadochron można uzyskać z każdego pojazdu latającego (także z poduszkowca jeśli się nie mylę) - w radiowozie policyjnym można dostać broń shout gun i 8 ammo do niego gdy już mamy ustalone to w najlepiej w OnPlayerUpdate dajemy: jeśli mamy wybrane do 3 boni:
	if(GetPlayerWeapon(playerid)==45) // jesli chcemy wiecej to za 45 dajemy || i znowu GetPlayerWeapon(playerid)== itd.
	{
		//Kod banujący
	}
jeśli wybraliśmy więcej niż 3 bronie to optymalniej jest zrobić tak:
	new wid=GetPlayerWeapon(playerid);
	if(wid==45 || wid==40 || wid==44 || wid==1) // tak samo jak wyzej, po 1 || wid== itd.
	{
		//kod banujący
	} 
oczywiście liczby 45 40 44 1 wybrałem tak se, to wy według tego co macie na swoim serwerze musicie wybrać id broni, jak by co tu macie spis: http://wiki.pawno.pl/index.php?title=Bronie można też stosować kody od-do czyli np. od 35 do 45 wygląda tak:
(..tu if i wymienione bronie..) || (wid>=35 && wid<=45) )

itp.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dodaj jeszcze Anty Ping.  ;D

Lepiej robić w OnPlayerUpdate, tylko wtedy trzeba maksymalnie optymalizować kod. ;]

@Terminator3, zrób jak najwięcej anty cheatów w jednym poście. ;D

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@DrunkeR to co podałeś to jak dla mnie bardziej skrypt, ogólnie jak chcesz to napisz post o nim bo ty wiesz najlepiej o co tam chodzi...

@Slash anty ping to nie anty cheat, co do "lepiej robić w OnPlayerUpdate (...)" nieraz anty cheat'y mają długie kody i lepiej robić timer który rytmicznie co jakiś czas go wykona niż nieraz wykonywać się będzie co 1ms dla każdego gracza

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Terminator3 za dużo żeś się nie napracował... Każda mapa ma takie coś. Pokazałbyś jak zrobić Anty GodMode itd to by był poradnik...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@IceColdKilla przeczytaj dokładnie mój post, na tej funkcji którą podałem max prędkość to 532

300 ?? to chyba nie jest w km/h ?? bo jeśli tak to albo to bzdura albo na jakimś śmiesznym kodzie

300 to jedynie max na ulicy ale często na serwerach DM są big jump'y itp. a przy swobodnym spadku prędkość jest większa

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

stock GetVehSpeed(vehicleid)
{
   new Float:f[3];
   GetVehicleVelocity(vehicleid, f[0], f[1], f[2]);
   return floatround(floatsqroot(floatpower(f[0], 2) + floatpower(f[1], 2) + floatpower(f[2], 2)) * 200);
}

Ta funkcja to maksymalnie 300 - nawet hydrą szybciej nie polecisz..

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@Fuuniks ja już dzięki ziomal'owi zrobiłem dobry anty air break, nawet nie myślałem że można wykryć jak ktoś się porusza na air break'u, a ziomal'owi chodziło o anty speed hack

jak będę miał czas to dodam do pierwszego postu anty air break

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dodaj do pierwszego postu anty spam, anty przekleństwa (nie wiedziałem jak to nazwać :D)

Mój anty god.

forward AntyGod();
public AntyGod()
{
	new Float:HP, Float:LastHP, Nick[MAX_PLAYER_NAME];
	for(new i = 0 ; i < GetMaxPlayers(); i++)
	{
		if(IsPlayerConnected(i))
		{
			if(!IsPlayerAdmin(i))
			{
				GetPlayerHealth(i, LastHP);
			    SetPlayerHealth(i, -0.1);
				GetPlayerHealth(i, HP);
				if(HP == LastHP)
				{
				    new string[64];
					GetPlayerName(i, Nick, sizeof(Nick));
					format(string, sizeof(string), "Gracz %s został zbanowany! Powód: God Mode!", Nick);
					SendClientMessageToAll(kolor, string);
					Ban(i);
				} else SetPlayerHealth(i, LastHP);
			}
		}
	}
	return 1;
}

Nie jestem pewien czy dziala poprawnie.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam, mam problem gdyż wsadziłem Anty Speed hack do OnPlayerUpdate i cały serwer laguje :/ Jeśli ktoś przejedzie obok ciebie to widzisz jak stoi na dachu a on jezdzi nie wiem co to moze byc ... Czy mam problem z optymalizacja to moj kod:

public OnPlayerUpdate(playerid)
{
if(GetPlayerSpeed(playerid) > 185 && !IsPlayerAdmin(playerid))
	{
		SendClientMessage(playerid, COLOR_LIGHTRED, "Zostałeś zkickowany przez Anty-Cheat, powód: SpeedHack");
                SetVehicleToRespawn(GetPlayerVehicleID(playerid));
		Kick(playerid);
	return 1;
	}
return 0;
}

Proszę o szybką odpowiedź..

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie chce robić offtopa ale nazwa tematu jest zdeka zła ;p bo wg niej powinienem odpowiedzieć...

Najlepszym sposobem na anty cheata jest sobeit którego polecam...  ;)

PS: da sie w tym badziewnym silniku wygaszać posty?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie chce robić offtopa ale nazwa tematu jest zdeka zła ;p bo wg niej powinienem odpowiedzieć...

Najlepszym sposobem na anty cheata jest sobeit którego polecam...  ;)

PS: da sie w tym badziewnym silniku wygaszać posty?

s0beit jest cheatem :D

nie da się wygaszać postów, poza tym Przemo to nie jest silnik napisany od zera, jest to głupia kolekcja modyfikacji.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dodaj do pierwszego postu anty spam, anty przekleństwa (nie wiedziałem jak to nazwać :D)

Mój anty god.

forward AntyGod();
public AntyGod()
{
	new Float:HP, Float:LastHP, Nick[MAX_PLAYER_NAME];
	for(new i = 0 ; i < GetMaxPlayers(); i++)
	{
		if(IsPlayerConnected(i))
		{
			if(!IsPlayerAdmin(i))
			{
				GetPlayerHealth(i, LastHP);
			    SetPlayerHealth(i, -0.1);
				GetPlayerHealth(i, HP);
				if(HP == LastHP)
				{
				    new string[64];
					GetPlayerName(i, Nick, sizeof(Nick));
					format(string, sizeof(string), "Gracz %s został zbanowany! Powód: God Mode!", Nick);
					SendClientMessageToAll(kolor, string);
					Ban(i);
				} else SetPlayerHealth(i, LastHP);
			}
		}
	}
	return 1;
}
Nie jestem pewien czy dziala poprawnie.
Jest! Znalazłem błąd :D nie dałeś
new Nick[/*Jakaś liczba*/];
Haha! Mój anty car-spawn (Wiecie o co kaman, przywoływanie pojazdów przez cheaty) Góra skryptu/mapy:
new ZakazanyPojazd;
OnFilterScriptInit/GameModeInit
ZakazanyPojazd = CreateVehicle(...); //Ustawiamy pojazd w NIEDOSTĘPNYM dla graczy miejscu
OnPlayerUpdate:
if(newstate = PLAYERS_STATE_DRIVER)
{
	if(GetPlayerVehicleID(playerid) == ZakazanyPojazd)
	{
		//BanEx(playerid, "Car Spawn"); || Kick(playerid); //Jak kto woli
		new pName[64];
		GetPlayerName(playerid, pName, sizeof(pName));
		new pString[128];
		format(pString, sizeof(pString), "%s wyrzucony za car spawn", pName);
		SendClientMessageToAll(COLOR_RED, pString); //zmienić kolor
		SetVehicleToRespawn(ZakazanyPojazd); //Zeby inni w niego nie wchodzili
	}
	return 0; //Nie wiem czy return 0 ma być czy 1 ale chyba jest dobrze
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

To bezpieczny anty cheat na pieniądze. Nigdy się nie myli. A taki głupi cziter myśli że ma tą kase a jej nie ma ;).

#define GetPlayerMoney(%1) GetPVarInt(%1,"Money")
#define SetPlayerMoney(%1,%2) SetPVarInt(%1,"Money",GetPVarInt(%1,"Money")+%2);ResetPlayerMoney(%1);GivePlayerMoney(%1,%2)

Na góre kodu idzie.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×