Rp név ellenorzoTudom, Spatrik már írt egyet, de én megpróbáltam egy más szemszögbol megközelíteni, ez a függvény viszont csupán a megadott névrol állapítja meg, RP szabványnak megfelelo vagy sem, de mellékletnek írtam egy \"bemutatót\", ami csatlakozásnál ellenoriz, és nem megfelelo név esetén kirúg. Megpróbáltam minnél egyszerubben, és hatékonyan megoldani, de biztos lehet még jobb változat is...
Aki nem tudja, mi ez valamennyire felvázolnám neki:
Ez a kód csak Role Play (RP/RPG) szervereken hasznos, magyarul szerepjáték, amit minél inkább próbálnak a való világ mintájára szabni, ami elég jó, ha a felhasználók nevében is megmutatkozik. Vezetékneved_Keresztneved alatt nem feltétlenül a saját nevedet kell érteni, ki is találhatsz egy nevet, ami a karakteredhez illik. például: Szakacs_Adam, Kovacs_Ferenc...
stock CheckRpName(const name[]) {
// Változók létrehozása
new length=strlen(name),
ch;
// Ha nem találunk vonalat, nincs értelme folytatni,
// mivel a név nem felel meg...
for(ch=0; ch<length; ch++) if(name[ch]) break;
if(ch==(length+1)) return false;
// Ciklus lefuttatása, ezzel végigmegyünk a karaktereken
for(ch=0; ch<length; ch++) {
// Ha a 2. és az utolsó-2 karakteren belül vagyunk,
// és a karakter angol abc betu, vagy vonal, akkor
// nem teszünk semmit
if((ch>=2) && (ch<=(length-2))) {
if((name[ch]>=\'a\')&&(name[ch]<=\'z\')||(name[ch]>=\'A\')&&(name[ch]<=\'Z\')||name[ch]==\'_\') {}
else return false;
}
else {
// Ha nem a megfelelo karaktereken belül vagyunk,
// de a karakter egy vonal, akkor a név nem megfelelo
if(name[ch]==\'_\') return false;
}
}
// Ha a név átment a fenti ellenorzéseken,
// akkor megfelelo, igaz érték visszaadása
return true;
}
És akkor jöjjön a csatlakozásnál való ellenorzés, amit fent említettem...
public OnPlayerConnect(playerid)
{
// Tároló létrehozása
new player_name[MAX_PLAYER_NAME];
// Név tárolása
GetPlayerName(playerid,player_name,sizeof player_name);
// Ha a név RP szabványoknak megfelelo,
// nem teszünk semmit...
if(CheckRpName(player_name)) { }
// Ellenkezo esetben küldünk a játékosnak egy
// figyelmezteto üzenetet, majd kirúgjuk
else {
SendClientMessage(playerid,0xAA3333AA,\"A neved nem felel meg az RP szabványnak. Kérlek térj vissza megfelelo névvel.\");
SendClientMessage(playerid,0xAA3333AA,\"Plélda a megfelelo névre: Vezetékneved_Keresztneved\");
Kick(playerid);
}
return 1;
}
Remélem segítettem vele.