Перейти к содержанию
Авторизация  

Рекомендуемые сообщения

XxxVipxxX

Всем доброе время суток, уважаемые пользователи. =)
Столкнулся с очень не простой для меня проблемой, с системой даты рождения.
Сама суть проблемы в том, что какое-либо я число не вводил, выдаёт ошибку и просит ввести верное число.
Скину два кода, изначальный и второй код, который пытался сделать хоть как, но только чтобы работало.  :-D 
 

	case 2992:
		if(response)
			{
				if(!strlen(inputtext)) return SPD(playerid,2992,DIALOG_STYLE_INPUT,"{DFFFB5}Возраст", "{BEBEBE}Введите свою дату рождения:\n(От {FFFF00}01/01/1980 {BEBEBE}до {FFFF00}31/12/1998{BEBEBE})", "Далее", "Выход");
				if(strlen(inputtext) < 01/01/1980 || strlen(inputtext) > 31/12/1998) return SPD(playerid,2992,DIALOG_STYLE_INPUT,Error,"{BEBEBE}Год рождения должен быть от {FFFF00}01/01/1980 {BEBEBE}до {FFFF00}31/12/1998 {BEBEBE}", "Далее", "Выход");
				for(new i = strlen(inputtext); i != 0; --i)
				switch(inputtext[i])
				{
					case 'А'..'Я', 'а'..'я', ' ':
					return SPD(playerid,2992,DIALOG_STYLE_MSGBOX, Error,"{FF6347}Дата рождения не должена состоять из латиници!","Повтор","");
				}
  				//---------------------------------------
  				format(string, sizeof(string), "Files/Players/%s.ini", GN(playerid));
				if(fexist(string))
				{
					format(string, sizeof(string), "Files/Players/%s.ini", GN(playerid));
					new File = ini_openFile(string);
					ini_setString(File,"pDataRog",inputtext);
					ini_closeFile(File);
				}
				PINFO[playerid][pPasport] = 1;
				new cenaecs;
				switch(PINFO[playerid][pLVL])
				{
				case 1,2: cenaecs = 250;
				case 3,4,5: cenaecs = 5000;
				default: cenaecs = 5000;
				}
				PINFO[playerid][pCash]-=cenaecs;
				format(string, sizeof(string), "~r~-$%i",cenaecs);
				OnPlayerLogin(playerid,inputtext);
				return true;
			}

Второй код будет попроще:
 

case 2992:
if(response)
{
if(!strval(inputtext)) return SPD(playerid,2992,DIALOG_STYLE_INPUT,"{DFFFB5}Возраст", "{BEBEBE}Введите свою дату рождения:\n(От {FFFF00}1/1/1970 {BEBEBE}до {FFFF00}31/12/1998 {BEBEBE}лет)", "Далее", "Выход");
if(strval(inputtext) < 1/1/1980 || strval(inputtext) > 31/12/1998) return SPD(playerid,2992,DIALOG_STYLE_INPUT,Error,"{BEBEBE}Год рождения должен быть от {FFFF00}1/1/1970 {BEBEBE}до {FFFF00}31/12/1998 {BEBEBE}", "Далее", "Выход");
PINFO[playerid][pDataRog] = strval(inputtext);
PINFO[playerid][pPasport] = 1;
return true;

:-)

Изменено пользователем XxxVipxxX

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
XxxVipxxX

UP!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Predator

Лол, что за бред.

Нужно через if(sscanf(inputtext, "p>iii" )) return SendClientMessage (playerid, - 1,"Формат даты рождения должен иметь вид: 12/02/1992") ;

 

P.S. Пишу с телефона, так что если ошибся - исправьте, буду признателен.

Изменено пользователем Predator

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Frost1218
1/1/1980 || strval(inputtext) > 31/12/1998 

Я так понимаю максимальная дата рождения доходит до 1998 если не ошибаюсь

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Web

@Predator, Так не обязательно.

Оптимальный вариант через регулярочку как по мне.

Изменено пользователем Веб
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
XxxVipxxX

, Мне бы пример, а не через что делать :D83DDE03:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Web

Predator выложил нормальный пример

только подключи sscanf, если не подключен

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.