Balkan SA:MP

San Andreas Multiplayer - www.sa-mp.com => Tutorijali u vezi SA-MPa => Temu započeo: Dragi poslato Februar 27, 2025, 17:12:20 POSLE PODNE

Naslov: [Tutorial] Validiranje RP imena
Poruka od: Dragi poslato Februar 27, 2025, 17:12:20 POSLE PODNE
Validiranje RP imena

U ovom tutorialu, vodicu vas kroz ozbiljan i kompleksan proces provere RP imena, objasnjavajuci kljucne aspekte koje treba uzeti u obzir prilikom provere imena koje je u skladu sa pravilima zajednice.

Prvenstveno, morate koristiti Regex biblioteku za SA:MP. Ona ce nam neizmerno mnogo uprostiti proces validacije i kodiranja. Ko nece da koristi Regex, ima da se napati i sporije ce mu raditi funkcija.

Ko zeli vise da zna o Regexu, odnosno regularnim izrazima: Link skripte s FTN fakulteta, katedre za elektroniku (https://www.elektronika.ftn.uns.ac.rs/et-sistemi-za-rad-u-realnom-vremenu/wp-content/uploads/sites/142/2018/03/Regularni-izrazi.pdf)
Link SA:MP biblioteke: Link GitHub (https://github.com/katursis/Pawn.Regex)

Sistem je prosao rigorozna testiranja od strane mene, jer je i radjen za neki moj projekat!

Zna se sta se prvo radi:
[pawn]
#include <Pawn.Regex>
[/pawn]

Definisemo potrebne arraye. Menjate po vasem izboru sadrzaj, odnosno zabranjene reci u RP imenu.
[pawn]
// Definisanje niza sa imenom politickih imena
new const PolitickaImena[][] =
{
    "politika1", // Prva politicko ime
    "politika2", // Drugo politicko ime
    "politika3"  // Trece politicko ime
};

// Definisanje niza sa ruznim recima
new const RuzneReci[][] =
{
    "ruzna1", // Prva ruzna rec
    "ruzna2", // Druga ruzna rec
    "ruzna3"  // Treca ruzna rec
};
[/pawn]

Kreiramo funkciju koja ce proveravati RP ime, funkciji moramo proslediti jedan parametar (obavezno const ili pada Pentagon), odnosno ime igraca kako bi ona bila u stanju da izvrsi kompleksne proverice. Prosledimo i ona sama sve resi, mi nista vise ne radimo.
[pawn]
public bool:IsValidRPNick(const name[]) // By Dragan Avdic (Dragi)
{
    // Proverava da li ime sadrzi politicka imena
    for (new i = 0; i < sizeof(PolitickaImena); i++)
    {
        // Ako se politicko ime nadje u imenu, vrati false
        if (strfind(name, PolitickaImena) != -1) return false;
    }

    // Proverava da li ime sadrzi ruzne reci
    for (new j = 0; j < sizeof(RuzneReci); j++)
    {
        // Ako se ruzna rec nadje u imenu, vrati false
        if (strfind(name, RuzneReci[j]) != -1) return false;
    }

   // Proverava ime koristeci regex
   // Ako ime nije validno prema regex-u, vrati false
   if (!IsValidRpNickRegex(name)) return false;

    // Ako su svi uslovi ispunjeni, ime je validno
    return true; // ime je validno
}
[/pawn]

Zatim kreiramo sledecu funkciju koja je pozvana unutar "IsValidRPNick" funkcije. (Gore navedene)
[pawn]
stock IsValidRpNickRegex(const nickname[]) // Funkcija koja proverava validnost RP imena
{
  static Regex:regex; // Deklaracija staticke varijable regex
  if (!regex) regex = Regex_New("[A-Z][a-z]+_[A-Z][a-z]+"); // Ako regex nije inicijalizovan, kreiraj novi regex obrazac

  return Regex_Check(nickname, regex); // Proveri da li nadimak odgovara regex obrascu
}
[/pawn]

Nece proci: ime_prezine, ime_, imeprezime...


To je to. Zavrsili smo potrebno kodiranje. Sad ostaje samo da objasnimo kako se funkcija koristi.

Upotreba:
[pawn]
if(!IsValidRPNick("Jovan_jovanovic")
{
    // Ime nije proslo proveru (npr. malo pocetno slovo u prezimenu)
    // Ispisemo tekst u chatu da ime nije proslo i kickujemo igraca (Delayed kickung!)
}
else
{
    // Ime je proslo proveru
    // Odlicna vest, obavestavamo korisnika kroz dialog da nema registrovan nalog
    // I trazimo od njega da se registruje, unese lozinku, pokazemo tdove, kako vec imate...
}
[/pawn]

Zakljucak
Nadam se da ste nesto naucili i da vam se dopada tutorial. Ako niste, razmislite dobro, pa ponovo procitajte tutorial. Ako i dalje vam nesto nije jasno, slobodno pisite dole da razjasnimo. U zdravlje!


samp rp name check, samp validate rp name, samp isvalidrpname, samp invalid rp name, samp provera rp imena, samp funkcije
Naslov: Odg: [Tutorial] Validiranje RP imena
Poruka od: markosimic poslato Februar 27, 2025, 19:09:23 POSLE PODNE
Lepo, vise preferiram koriscenje gde samo radis proveru i blokiras ukoliko nije ispravno bez regexa, takodje moze se uraditi i sa sscanf ili na ovaj nacin. Korisno.
Naslov: Odg: [Tutorial] Validiranje RP imena
Poruka od: iv0dev poslato Februar 27, 2025, 20:06:30 POSLE PODNE
Respect
Naslov: Odg: [Tutorial] Validiranje RP imena
Poruka od: Đ J Ø ₥ Ⱡ ₳ poslato Mart 01, 2025, 13:49:37 POSLE PODNE
lepo i korisno  ;)