Skocz do zawartości
Mr_Auto

[ANTY] Najlepsze sposoby na anty cheat'y

Rekomendowane odpowiedzi

To wyłącza bonusy dostawane od singla, dokładnie mi o to chodziło. A po śmierci po prostu przywróci poprzedni stan gotówki. Można dodać też funkcje MoneyAktualize, która będzie ustawiała licznik na prawidłowy stan.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Każdy kij ma 2 końce "włączenie" bonusów  za stunty = wielka wada w zabezpieczeniu. Za to jeśli skrypt skuteczny to nie działa kilka rzeczy z single.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ten AntyGod:

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;
}

Działa? :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
new wid=GetPlayerWeapon(playerid);

if(wid==45 || wid==40 || wid==44 || wid==1) // tak samo jak wyzej' date=' po 1 || wid== itd.

{

//kod banujący

}[/quote']

lepiej dać tak:

if(GetPlayerWeapon(playerid) == 45 | 46 | 40 | 44 | 1)
{
	//kod banujący
}

Pozdr0 xd

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ja zrobiłem tak:

oppf.png

Jeszcze nie dodałem kodu bana ... ;)

Ale mam coś takiego:

C:\Users\Admin\Desktop\SA-MP\*****************\filterscripts\*********.pwn(12399) : error 030: compound statement not closed at the end of file (started at line 12383)
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


1 Error.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie działa :( Tak samo jak wymieniłem wszystkie wid na getplayerweapon. A z tym screenem to specjalnie zrobiłem, żeby było linijki widać, bo w errorze było coś z linijkami ;)

Ok, problem rozwiązany. Brakowało 1 klamry ;)

Dopiero co napisałem anty armour hack ;) Bardzo proste to było, ale jestem z siebie zadowolony, ponieważ nie jestem miszczem pawn :D

Tutaj kod:

public OnPlayerUpdate(playerid)
{

new Float:armour;
GetPlayerArmour(playerid, armour);

if(armour >= 1)
{
	BanEx(playerid, "Armour Hack");
}

return 1;
}

Testowałem i działa :) Więc może by dodać 3. Anty Armour Hack ??

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Przecież nie musisz używać tego kodu. Nikt Ci nie każe. Ale np. ja dałem warunek, że admina nie zbanuje, a prowadzę server gdzie nigdzie nie dostanie się kamizelki, dlatego też tak bardzo mi się to przydawało.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@XJL: Błąd logiczny z Twojej strony. Ktoś musiałby w końcu napisać jakiś porządny poradnik o używaniu flag, bo sporo o tym ostatnio, może nawet ja napiszę, tylko zbiorę wystarczającą ilość cennych informacji na ten temat. A więc wracając do Twojego kodu, pomyliłeś kolejność, wystarczy, że rozłożymy sobie Twój kod na mniejsze czynniki i trochę porozrzucamy kod:

printf(" i=%d, (i==3) => %d, (i==3 || i==5) => %d, (i== 3 | 5) => %d", 
         i,    (i==3)?1:0,   (i==3|i==5)?1:0,      (i==3||5)?1:0);

Widzisz już to, o czym mówię? Mam nadzieję, że na Twojej przeglądarce nie rozrzuciło trochę nie poprawnie tego kodu, jednak liczę, że domyślisz się, o czym mówię.

@Minokon: Twój kod z zastosowaniem flag nie zadziała poprawnie. Zastosowanie flag to nie jest takie o to wyliczanie sobie w zbiorach, przede wszystkim - takie wyliczanki w zbiorach można dokonywać tylko na liczbach potocznie zwanych liczbami bitowymi, które po prostu są dla nas wielokrotnością liczby 2. Dam Wam pole do popisu, żebyście napisali mi, że 1 także jest liczbą bitową, chociaż nie jest wielokrotnością 2, wiem, wiem - wyjątek. Kod Arniego jest w tej chwili przynajmniej niezawodny, ale Twój niestety nie zadziała poprawnie. Chciałem podać parę przykładów, ale sam w życiu miałem okazję spotkać się z operacjami bitowymi parę razy tylko, dlatego nie mam takiego wielkiego doświadczenia w tym. Całość można rozpracować metodą prób i błędów.

Pozdrawiam, NoGravity!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

(3 | 5) = 7, bo:

Liczba 3: 11

Liczba 5: 101

Jeżeli zastosujemy tutaj na każdej parze bitów Alternatywę, czyli przypiszemy wartość prawdziwą, jeżeli na jednej z liczb w parze bitów znajdzie się wartość prawdziwa, to otrzymamy dokładnie 111, czyli 1+2+4, czyli dokładnie 7. :)

Tak się to wszystko powinno liczyć.

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ę.

×