Skocz do zawartości
Mr_Auto

[ANTY] Najlepsze sposoby na anty cheat'y

Rekomendowane odpowiedzi

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.

pojazd policyjny ten duży daje kamizelkę

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

pojazd policyjny ten duży daje kamizelkę

Enforcer. Wystarczy jedna tablica i już możesz to wyeliminować.

new bool:Vehicles[MAX_PLAYERS][MAX_VEHICLES];

Oraz tutaj dodawać czy odwiedził dany samochód + czy model to enforcer.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@Ząb omg ? 500 * 2000 pamięci, naprawdę polecam .... ogólnie nie rozumiem twojego toku rozumowania, lepiej dać PVar'a czy wszedł do tego pojazdu i po wszystkim zabrać mu ta kamizelkę...

nie mowie że się nie da tylko odpowiadam WojteQ udowadniając że każdy anty cheat powinien mieć jakieś warunki, ustępstwa

a ogólnie do tematu mam zamiar go nieco zaktualizować ale ostatnio nie mam zbytnio czasu, do tego nie mogę znaleźć działającego cheat'a dzięki któremu mógłbym testować swoje sposoby

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@Ząb omg ? 500 * 2000 pamięci, naprawdę polecam ....

1/8*500*2000 = 125kB, wcale nie tak dużo.

ogólnie nie rozumiem twojego toku rozumowania, lepiej dać PVar'a czy wszedł do tego pojazdu i po wszystkim zabrać mu ta kamizelkę...

Albo po prostu w momencie gdy skrypt sprawdza stan kamizelki sprawdzać GetVehicleModel(GetPlayerVehicleID(playerid)) i porównywać z enforcerem. Oczywiście wymaga to aby kod sprawdzający działał w OnPlayerUpdate a nie w jakimś timerze, oraz mimo wszystko może doprowadzić do tzw. false positives. Tak samo jak i kod sprawdzający bronie - wiele razy widziałem u graczy, przez moment, bronie których nie powinni mieć i których nie mieli bo żadnego wh nie używali. Takie sytuacje zdarzały się przy lostach/lagach.

Dlatego też automatyczne banowanie jest zawsze złym rozwiązaniem - SetPlayerArmour(playerid,0.0)+komunikat do sytuacji do admina w zupełności rozwiązuje ten problem.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wydaje mi się, że zmieniliście temat odnośnie AntyChetów na temat do przechwałek i wygłaszania kogo rozwiązanie jest lepsze  ???

Sprawa A 

    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.

pojazd policyjny ten duży daje kamizelkę

Może nie ma takiego pojazdu w swojej mapie i nie ma problemu przy tym kodzie?  :-\ 

Sprawa B

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.

To następnym razem może podaj pod jakimi warunkami twój kod będzie działa dobrze ok ? bo ta 'dyskusja', która przerodziła się w pokaz umiejętności  wystartowała przez to niedociągnięcie.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wydaje mi się, że zmieniliście temat odnośnie AntyChetów na temat do przechwałek i wygłaszania kogo rozwiązanie jest lepsze  ???

Ja bym to nazwał dążeniem do lepszego (krótszego, optymalniejszego, wydajniejszego) kodu, a w tym chyba nie ma nic złego. Jeśli mi ktoś wytknie błąd w moim kodzie albo zaprezentuje lepszy sposób, to mogę się tylko z tego ucieszyć.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
1/8*500*2000 = 125kB, wcale nie tak dużo.

Raczej 4*500*2000 = 4 MB, przecież jedna komórka w PAWN (cell) ma 4 bajty.

Poza tym prze anty-cheatach należy pamiętać o latencjach. Np. jeśli mamy anty-cheata na mini i mamy też arenę mini, to po opuszczeniu areny musimy zablokować antycheata na mini dla danego gracza na przynajmniej 3 sek, aby polecenie SetPlayerAmmo/ResetPlayerWeapons doszło. Z resztą sa:mp może przestać reagować (chodzisz normalnie po mapie i inni tez się poruszaja, lecz nie aktualizują się TD'y, ani nic innego) i wtedy... niesłuszny ban.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Moim zdaniem anty-cheat powinien być wbudowany w sa:mp. On ma możliwość sprawdzania, czy pakiety dochodzą. Niektóre luki są aż takie wielkie, że na 100% wie o nich samp dev. Chyba samp to najbardziej podatana na cheaty gra. COD 4 ma nawet taką aplikację, która pozwala u graczy wykrywać mody i cheaty zanim ich użyją.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Problemy są dwa:

1. Każde zabezpieczenie da się obejść

2. Jak ktoś jest inteligentny, to nie wpadnie z czitami. Mam możliwość i sposoby wykrycia praktycznie od ręki sobeita u gracza i dość często u nas (na FS) gracz dostaje kicka i nie może wejść dopóki go nie odinstaluje. W praktyce jednak łapiemy tylko osoby które myślą że mogą włączyć sobie goda, wziąść mini i latać po mapie. Jeśli ktoś jest inteligentny to będzie tak czitował, że nikt, nigdy go nie złapie ani nawet o czity podejrzewać nie będzie.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli chcecie to wam powiem jak wykrywają sobka na FS. Sprawdzają broń gracza i jeśli w pięści są naboje oznacza to że ma sobka  :D Zauważyłem to jak sam dostałem bana, ale nie dlatego że czitowałem, miałem tylko sobka bo często edytuje coś w mapie i się przydaje. Gracz może to obejść wiem jak lecz nie powiem jak, niech dzieci dostają bany, a jak ktoś myśli to się domyśli.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zrobiłem system Anty Bronie działa wyrzuca ładnie, ale nie pisze mi napisu, jak to zrobić ?


forward OnPlayerUpdate(playerid);
public OnPlayerUpdate(playerid){

new wid=GetPlayerWeapon(playerid);
if(wid==38) // tak samo jak wyzej, po 1 || wid== itd.
{
Kick(playerid);

}

return 1;
}
[/code]

Co tam muszę dodać aby psiało wszystkim że został wyrzucony ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

sformatować tekst.

new string[60];
format(string, sizeof string, " %s [id: %d] został wyrzucony przez anty cheat. ", PlayerName(playerid), playerid);
SendClientMessageToAll(-1, string);
daj to przed funkcją Kick(playerid); a na dole mapy :
stock PlayerName(playerid)
{
    new name[24];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    return name;
}

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

×