Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Anti-Ping pamoka


Jonas13

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2792 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Nežinau ar buvo ar ne, bet įkeliu savo.

Š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[24]; // 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)", vardas); // 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

Pamoka kurta Jonas13
Redaguota , nario Jonas13
Nuoroda į komentarą
Dalintis per kitą puslapį

Na, buvo panašių pamokų jau sukurta. Paprasta, nesudėtinga. Šaunu, kad bent jau paaiškinai, kas, ką daro - naujiems bus aiškiau :)

 

Panašios pamokos:

- https://www.supergames.lt/topic/74932-pamoka-antiping/

- https://www.supergames.lt/topic/154330-mini-pamoka-anti-ping/

Nuoroda į komentarą
Dalintis per kitą puslapį

(redaguota)

Na, buvo panašių pamokų jau sukurta. Paprasta, nesudėtinga. Šaunu, kad bent jau paaiškinai, kas, ką daro - naujiems bus aiškiau :)

 

Panašios pamokos:

- https://www.supergames.lt/topic/74932-pamoka-antiping/

- https://www.supergames.lt/topic/154330-mini-pamoka-anti-ping/

onplayerupdate atsinauji kas 100ms sekundžių todėl apkraus serverį :). O jeigu užkyla pingas jis laikysis virš 10 s ir daugiau todėl aptiks ir  bus iškikintas ir nėra paaiškinimų

 

Redaguoju:

Ten net nepamokos nėra paaiškinimų nieko, tiesiog skripto gabalas ten.

Redaguota , nario Jonas13
Nuoroda į komentarą
Dalintis per kitą puslapį

onplayerupdate atsinauji kas 100ms sekundžių todėl apkraus serverį :). O jeigu užkyla pingas jis laikysis virš 10 s ir daugiau todėl aptiks ir  bus iškikintas ir nėra paaiškinimų

su update geriau, nors ir iškviečiamas kas 100ms. Gali padaryti tikrinima kiek kart pakilo pingas. ir neišmes jo iškart :)

Nuoroda į komentarą
Dalintis per kitą puslapį

Nežinau ar buvo ar ne, bet įkeliu savo.

Š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

Pamoka kurta Jonas13

Atleisk, bet nelogiškai darai.

Kam vardo kintamąjam naudot 64 simbolių string'ą jeigu sa-mp'as leidžia max 24 simboliu slapyvardi?

Nuoroda į komentarą
Dalintis per kitą puslapį

  • Parašė po 2 mėnesių...

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2792 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...