Sveiki, kadangi senas narys, seno administratoriaus buvo ištrintos jo visos pamokos aš pasidalinsiu savomis, o jo temos bus ištrintos.
Šiandien pristatysiu anti ping sistemą.
Susikurkime taimer'io forwardą, jį galite prisirašyti prie kitų forward.
forward AntiPingas();
Tada susirandame callback'ą OnGameModeInit() ir po juo sukuriame taimer'į
SetTimer("AntiPingas",5000,true); // Karojame kas 10s
Paaiškinimai:
SetTimer - Funkcija kuriame galime pradėti taimer'io skaičiavimą "AntiPingas" - Pavadinimas taimer'io funkcijos kurią naudosime kurdami sistemą 10000 - Laikas kas kiek laiko kartos taimer'io funkciją, šiuo atveju kas 10s. Kadangi sa-mp'e viskas skaičiuojama milisekundėmis turime prirašyti 3 nulius prie skaičiaus. true - Tai reiškia, kad kartos taimer'is visą laiką.
Dabar eikime prie savo funkcijų arba į gamemode galą.
public AntiPingas() { for(new p; p < MAX_PLAYERS; p++) { if(GetPlayerPing(p) >= 500) // 500 pasikeičiame į savo tai yra maksimalus pingas { new vardas[64]; // Kintamasis kurį panaudosime išgaunant vardą(vardo ilgis max 64 simboliai) GetPlayerName(p, vardas, sizeof(vardas)); // išgauname vardą ir panaudojame kintamajį vardas new tekstas[200]; // Sukuriame kintamajį kuriuo vaizduosime tekstą format(tekstas, sizeof(tekstas), "[Serveris] Žaidėjas %s buvo išmestas iš žaidimo už pernelyg didelį ping(500)", pName); // formatuojame žinutė kurią siūsime serverio žaidėjams kurie prisijungė SendClientMessageToAll(-1, tekstas); //Siunčiame tekstą -1 tai spalva, o tekstas kintamasis kurį formatavome Kick(p); // Išmetame žaidėją } } return 1; }
Iškilus klausimams arba jeigu išmes klaidas rašykite į temą.
Laiko neturėjau ištestuoti