[INC+FS] Provjera Roleplay Imena (9 Slučaja) + REGULACIJA 1.2.6

Započeo Slay, Mart 07, 2013, 22:02:45 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 2 gostiju pregledaju ovu temu.

Evo bilo mi je malo dosadno pa sam napravio jednostavnu funkciju za provjeru imena i prezimena za roleplay servere.

PREDNOSTI:

  • Vračanje svakog mogućeg slučaja za bolje navoÄ'enje igrača s greÅ¡kom u nicku
  • Lako podeÅ¡avanje tj. dodavanje zabranjenih znakova u imenu
  • U funkciji možete postaviti zanemarivi nick, primjer Admin, i funkcija će automatski dopustiti konekciju tom igraču.
  • Mogućnost paljenja/gaÅ¡enja automatske regulacije nicka za popravak velikog početnog slova imena i prezimena i popravak malih slova poslije prvog slova imena i prezimena ili točnije regulator za slučaj 5 i 6

MANE:

  • Skripta koristi 2 petlje od toga je slučaj sa petljom unutar petlje, Å¡to znači da je funkcija malo sporija ali to je skroz zanemarivo i neće stvarati nikakve probleme.




VRAÄŒANJE SLUÄŒAJA:

Slučaj 1: Ime i prezime su ispravni, ime je uspješno prošlo provjeru.
Slučaj 2: Ime nije prošlo provjeru jer nema povlaku za odvajanje imena od prezimena.
Slučaj 3: Ime nije prošlo provjeru jer ima više od jedne povlake
Slučaj 4: Ime nije prošlo provjeru jer sadržava zabranjene znakove (brojeve, [, ]...)
Slučaj 5: Prvo slovo imena ili prezimena ne počinje velikim slovom
Slučaj 6: Slova poslije imena ili prezimena moraju biti mala slova
Slučaj 7: Povlaka je prvo ili zadnje slovo u nicku
Slučaj 8: Ime ima manje od 3 slova
Slučaj 9: Prezime ima manje od 3 slova

FUNKCIJA:

isRoleplayName(playerid, zanemai[], bool:senzitivno, bool:autoRegulacija)

PRIMJER KORIÅ TENJA:

public OnPlayerConnect(playerid)
{
   switch(isRoleplayName(playerid, _, _, false))
   {
             case (1): SendClientMessage(playerid, -1, "Vase ime je ispravno! :)");
             case (2): { SendClientMessage(playerid, -1, "Vase ime nema niti jednu povlaku!"); Kick(playerid); }
             case (3): { SendClientMessage(playerid, -1, "Vase ime ne smije imati vise od 1 povlake!"); Kick(playerid); }
             case (4): { SendClientMessage(playerid, -1, "Vase ime ne smije imati zabranjene znakove!"); Kick(playerid); }
             case (5): { SendClientMessage(playerid, -1, "Prvo slovo imena ili prezimena nije veliko slovo!"); Kick(playerid); }
             case (6): { SendClientMessage(playerid, -1, "Slova poslije prvog slova imena i prezimena moraju biti mala!"); Kick(playerid); }
             case (7): { SendClientMessage(playerid, -1, "Povlaka ne smije biti prvo slovo vaÅ¡eg imena! Koristi povlaku za odvajanje Imena od Prezimena"); Kick(playerid); }
             case (8): { SendClientMessage(playerid, -1, "VaÅ¡e ime ima manje od 3 slova!"); Kick(playerid); }
             case (9): { SendClientMessage(playerid, -1, "VaÅ¡e prezime ima manje od 3 slova!"); Kick(playerid); }
   }
        return (true);
}


SKRIPTA:

Pastebin: http://pastebin.com/dwsJtXnk

NEZNAM, KAKO OVO KORISTITI:

Evo neki od vas su me pitali kako da ovo koriste, pa sam odlučio olakšati još za one koji ne znaju kako ovo koristiti, ako ste vi jedan od njih, sve što trebate je skinuti ovaj link sa solidfiles-a i unzipati ga, unutra ima dvije datoteke (rpProvjera.pwn i rpProvjera.amx) kopirajte rpProvjera.amx u vaš filterscripts folder i u server.cfg na liniji filterscripts dodajte rpProvjera i to je to!

http://www.solidfiles.com/d/31a126a199/

NAPOMENA:

U slučaju nekakvih problema, kritike, komentari, tu pišite, pozdrav!

UPDATE 1.1.5:

Popravljen bug sa filterskriptom, nije izbacivala sa servera, sada je popravljena i testirana, hvala Wucha
Popravljen još jedan exploid kada je zadnje slovo nicka povala _ sada to vrača kao slučaj 7 kao i kada je povlaka prvo slovo u imenu!
Poboljšana točnost funkcije od sada Ime mora imati minimalno 3 slova, kao i prezime, kada ime ima manje od tri slova vrača slučaj 8, a kada prezime ima manje od 3 slova vrača slučaj 9!


UPDATE 1.2:

Evo poslušao sam savjet i doradio po zadnji put ovu funkciju, od sada možete postaviti zanemarivi nick, u slučaju da npr. vi kao vlasnik servera želite koristiti nick, primjer: Administrator samo postavite u funkciju isRoleplayName(playerid, "Administrator", true) i funkcija će dopustiti priključenje tom nicku.

PRIMJER 1.2:

public OnPlayerConnect(playerid)
{
     if(isRoleplayName(playerid, "Administrator", _) == 1) print("ID %i je uspjesno prosao provjeru nicka!", playerid);
}


UPDATE 1.2.5:

Dodan argument u funkciji, mogućnost paljenje/gašenja auto-regulatora za slučajeve 5 i 6, znači ako upalite regulaciju ako se igrač priključi primjer sa nickom kRISTIJAN_sTIPIC funkcija će mu automatski regulirati nick u Kristijan_Stipic, ako je regulacija ugašena funkcija će dalje vračati slučaj 5 ili slučaj 6

UPDATE 1.2.6:

Popravljen jedan mali bug i uklonjena potreba za korištenjem niza za spremanje imena kod auto-regulacije sada se za to brine macro funkcija (konstanta)
Poslednja Izmena: Maj 09, 2013, 12:11:58 POSLE PODNE od Slay_
Kristijan Stipić


EDIT:

Mali update, skužio sam da automatsko postavljanje velikog i malog slova Ime Prezime neće funkcionirati jer ne mogu koristiti setplayername jer je case senzitivan pa ce returnati false, pa sam ipak to morao napraviti samo kao 2 dodatna slucaja (case 5 i case 6)... ako neko uopce ovo koristi neka update-a obavezno :)

i promijenio sam argument isRoleplayName(ime[]) u isRoleplayName(playerid)
to bi vam trebalo malčice olakšati :P
Poslednja Izmena: Mart 07, 2013, 22:59:10 POSLE PODNE od Slay_
Kristijan Stipić





Hvala svima...
btw: update-ao sam skriptu, nema nikakve razlike osim u brzini funkcije i novom slučaju, izbačen je jedna petlja jer sam se sjetio boljeg načina da prebrojim povlake....
popravio sam exploid sa povlakom kao prvo slovo u nicku.... sada slučajem br. 7 možete registrirati ako je nick igrača, primjer: _kristijan

i dodani su dodatni zabranjeni znakovi -> ( ) . â,¬ $ @ { }

pastebin link je update-an :)
Poslednja Izmena: Mart 08, 2013, 14:58:43 POSLE PODNE od Slay_
Kristijan Stipić





stvarno super stvar ! 10/10

Veliki REP++++++ za ove momke:
[BC:RP] Mr.Gagi
Blaeks
ɴᴇʟʟʏâ,,¢