main()
{
if( GetRPName ("Vasya_Pupkin") == 1 ) print("Работает");
if( GetRPName ("Vasya_Pupkin") == 0 ) print("Не работает");
if( GetRPName ("Vasya2_Pupkin") == 1 ) print("Не работает проверка на цифры");
if( GetRPName ("vasya_pupkin") == 1 ) print("Не работает проверка на маленькие буквы");
if( GetRPName ("pupkin_pupkin") == 1 ) print("Не работает проверка на одинковые части");
if( GetRPName ("vasyapupkin") == 1 ) print("Не работает проверка на символ \"_\" ");
}
Не работает Не работает проверка на цифры Не работает проверка на маленькие буквы
stock GetRPName(name[])
{
new f = 0;
new Left[32],Right[32];
if(strfind(name,"_",true,1) != -1) f++;
for(new i ;i < strlen(name); i++)
if( name[i]<='9' && name[i]>='0' ) f--;
new pos = strfind(name,"_",true,-1);
strmid(Left, name, 0, pos,32);
strmid(Right, name, pos+1,32,32);
if(Right[0] >='A' && Right[0] <= 'Z' && Left[0] >='A'&& Left[0] <= 'Z') f++;
if(strcmp(Right, Left, true)) f++;
if(f == 2) return 1;
return 0;
}
for(new i ;i < strlen(name); i++) if( name[i]<='9' && name[i]>='0' ) f--; |
stock GetRPName(name[])
{
new f = 0, pos, Right[MAX_PLAYER_NAME];
/*
* убиваем сразу 3х зайцев:
* 1) проверяем есть ли "_"
* 2) запоминаем где находится "_"
* 3) убеждаемся что "_" не стоит в нулевой позиции, ники типа "_AlexStoyn"
* PS если тебя не кстраивают ники типа A_lexStoyn ставь вместо нуля еденицу. Ну и так далее, если у тебя есть минимальная длина для имени.
*/
if((pos = strfind( name, "_", true)) > 0) f++;
for(new i ;i < strlen(name); i++)
if( '0' <= name[i] <= '9') //равносильно, твоей но нагляднее
{
f--;
break;//нашли одну цифру, обрываем цикл, нафига бежать далее если ник уже не соответствует.
}
if('A' <= name[0] <= 'Z' && 'A' <= name[pos+1] <= 'Z')f++;//все генеальное просто :)
strmid(Right, name, pos+1, strlen(name), MAX_PLAYER_NAME);
if(strcmp(name, Right, true))f++;//вторая переменная не нужна
if(f == 3) return 1;
return 0;
}
можно использовать для выравнивания диалоговых данных, таких как статы напрмер. если владеть ими, то уже наверно обычные строковые функции будет не нужны вовсе...
|