-Enot
Компетентный
Начал писать регу и столкнулся с такой проблемой, как некорректная работа ее.
Суть в чем, толи проверки неправильные, толи я где-то накосячил.
В общем, при вводе пароля, если вводить 6 - 15 символов, все нормально.
Если ввести один символ, вылазит текст, но диалог не обновляется.
Если ввожу на русском, мне выскакивает флуд текстом в строк 5-7 и появляется следующий диалог.
С эмэйлом и ником почти так-же.
Только при вводе ника, на русском или нет, без разницы, пишет "Неверный формат электронного адреса" и бла-бла-бла.
Так-же диалог просто исчезает.
При нажатии кнопки "Далее" он просто переходит на следующий диалог, что выполняет кнопка "Пропустить".
С эмэйлом тоже самый косяк, только он не выводит диалог выбора пола, а сразу выбивает текст, что я зарегистрировался.
Код кинул под спойлер.
Суть в чем, толи проверки неправильные, толи я где-то накосячил.
В общем, при вводе пароля, если вводить 6 - 15 символов, все нормально.
Если ввести один символ, вылазит текст, но диалог не обновляется.
Если ввожу на русском, мне выскакивает флуд текстом в строк 5-7 и появляется следующий диалог.
С эмэйлом и ником почти так-же.
Только при вводе ника, на русском или нет, без разницы, пишет "Неверный формат электронного адреса" и бла-бла-бла.
Так-же диалог просто исчезает.
При нажатии кнопки "Далее" он просто переходит на следующий диалог, что выполняет кнопка "Пропустить".
С эмэйлом тоже самый косяк, только он не выводит диалог выбора пола, а сразу выбивает текст, что я зарегистрировался.
Код кинул под спойлер.
PHP:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new string[210];
switch(dialogid)
{
case 1:
{
if(response)
{
if(!strlen(inputtext))
{
f("{CFCFCF}____________________________________\n\nДобро пожаловать на Samp Virtual Life\n Регистрация нового персонажа\n\nЛогин: %s\nВведите пароль:\n____________________________________",GN(playerid));
SPD(playerid, 1, DSI, "{FFFFFF}Регистрация", string, "Готово", "Отмена");
return true;
}
for(new i = strlen(inputtext); i != 0; --i)
switch(inputtext[i])
{
case 'А'..'Я', 'а'..'я': SCM(playerid, 0x1DCF91,"Ошибка: Пароль не должен содержать русские буквы и символы!");
}
if(strlen(inputtext) < 6 || strlen(inputtext) > 15) return SCM(playerid, 0xE66363, "Ошибка: Длинна пароля должна быть от 6 до 15 символов!");
strmid(Player[playerid][pPass], inputtext, 0, strlen(inputtext), 15);
/*SPD(playerid, 2, DSM, "{CFCFCF}Правила сервера",
"\
1. Игровой процесс\n\
Запрещено:\n\
- Использование любых программ, скриптов, читов и т.п. дающих нечестное преимущество в игре.\n\
- Использование багов (ошибок,неисправностей мода).\n\
- Использовать ESC в целях ухода от погони/смерти.\n\
- Убивать игроков на спавне (Место возраждения, базы организаций).\n\
- Убивать игроков при помощи транспорта (Давить, стрелять с водительского места).\n\
- Убийство/нанесение физического вреда игрокам без причины (ДМ - Death Match).\n\
- Развод игроков на деньги.\n\
- Просьбы, вымогательства паролей от акканута.\n\
- Выдача себя за членов администрации\n\
- Злоупотребление игровыми возможностями для создания неудобства игрокам.\n\n\
2. Ник в игре\n\
(сменить ник можно через /mm >> Настройки >> Сменить ник)\n\
- Ник должен состоять из Имени_Фамилии с заглавных букв.\n\
Запрещено:\n\
- Использовать чужие (Уже кем-то занятые) ники.\n\
- Использовать ники содержащие Нецензурные или оскорбительные слова.\n\
- Отправлять более одной заявки в час (Исключение: Просьба администрации).\n\
- Если вам отказали в смене ника, Значит нельзя.",
"Согласен", "Выйти");*/
new rules_mes_1[sizeof(rules_1)];
format(rules_mes_1, sizeof(rules_mes_1),rules_1);
SPD(playerid, 2, DSM, "{CFCFCF}Правила сервера", rules_mes_1, "Согласен", "Выйти");
}
else
{
Kick(playerid);
}
}
case 2:
{
if(response)
{
/*SPD(playerid, 3, DSM, "{CFCFCF}Правила сервера",
"\
3. Чат сервера.\n\
OOC (Out Of Character) - это все, что касается реального мира.\n\
IC (In Character) - это все, что касается виртуального мира, то есть игры\n\
Запрещено:\n\
- Ругательство, оскорбления или нецензурная речь.\n\
- Угрозы игрокам (Не относящиеся к игровому процессу).\n\
- Писать сообщения в верхнем регистре (Caps Lock).\n\
- Писать в чат объявлений сообщения не относящихся к Role Play.\n\
- Использование OOC информации в IC (Metagaming).\n\
- Писать одно и тоже сообщение слишком часто.\n\
- Обсуждать, критиковать действия администрации.\n\
- Реклама сторонних ресурсов.\n\n\
4. Админстрация.\n\
- Сообщать админстрации о каких либо нарушениях из данных правил (/mm >> Репорт).\n\
- Администрация самостоятельно выбирает штрафные санкции для каждого из случаев.\n\
- Запрещено препятствовать администрации в работе.\n\
- Решение администрации является окончательным и не подлежит обсуждению.\n\n\
5. Торговля.\n\
- Запрещены любые денежные махинации.\n\
- Запрещена продажа / покупка чего либо, за реальные деньги.\n\
- Запрещен обмен внеигровых предметов в любой форме, на игровые.\n\
- Запрещен обмен чего либо между игровыми серверами.\n\
- Запрещена продажа / передача аккаунов.",
"Согласен", "Выйти");*/
new rules_mes_2[sizeof(rules_2)];
format(rules_mes_2, sizeof(rules_mes_2),rules_2);
SPD(playerid, 3, DSM, "{CFCFCF}Правила сервера", rules_mes_2, "Согласен", "Выйти");
}
else
{
Kick(playerid);
}
}
case 3:
{
if(response)
{
if(!strlen(inputtext))
{
new message[129];
fmes("{CFCFCF}Введите ник пригласившего вас игрока:\n\n\
Информация: При достижении 3-го уровня, этот игрок получит 100 000 вирт.");
SPD(playerid, 4, DSI, "{CFCFCF}Ник пригласившего", message, "Далее", "Пропустить");
return true;
}
for(new i = strlen(inputtext)-1; i != -1; i--)
{
switch(inputtext[i])
{
case '0'..'9', 'а'..'я', 'a'..'z', 'А'..'Я', 'A'..'Z': continue;
default: return SCM(playerid, 0xE8954F,"Ошибка: Ник не должен содержать русские буквы и/или символы.");
}
if(strlen(inputtext) > 20) return SCM(playerid, 0xE8954F,"Ошибка: Ник не может быть длиннее 20 сиволов");
strmid(GN(playerid), inputtext, 0, strlen(inputtext), 20);
new message[129];
fmes("{CFCFCF}Введите ник пригласившего вас игрока:\n\n\
Информация: При достижении 3-го уровня, этот игрок получит 100 000 вирт.");
SPD(playerid, 3, DSI, "{CFCFCF}Ник пригласившего", message, "Далее", "Пропустить");
}
}
else
{
SPD(playerid, 4, DSI, "E-Mail", "Введите Ваш действующий электронный адрес\n\n\
Подсказка: Используйте почтовый сервис @Yandex.ru, Mail.ru или Gmail.com", "Далее", "Пропустить");
}
}
case 4:
{
for(new i = strlen(inputtext); i != 0; --i)
switch(inputtext[i]) {case 'А'..'Я', 'а'..'я', '=', ' ': return SCM(playerid,0xE66363,"Ошибка: Неверный формат электронного адреса");}
new sabaka;
for(new i = strlen(inputtext); i != 0; --i)
{
switch(inputtext[i])
{
case '@': sabaka++;
}
}
if(strlen(inputtext) < 5 || strlen(inputtext) > 40) return SPD(playerid,5,DSI,"E-Mail", "Введите Ваш действующий электронный адрес\n\n\
Подсказка: Используйте почтовый сервис @Yandex.ru, Mail.ru или Gmail.com","Далее","Пропустить");
if(sabaka == 0) return SCM(playerid,0xE66363,"Ошибка: Неверный формат электронного адреса");
SPD(playerid, 5, DSM, "Регистрация", "Какого пола будет Ваш персонаж?", "Мужской", "Женский");
}
case 5:
{
if(response)
{
Player[playerid][pSex] = 1;
Player[playerid][pSkin] = 137;
}
else
{
Player[playerid][pSex] = 2;
Player[playerid][pSkin] = 77;
}
Player[playerid][pLevel] = 1;
mysql_format(ConnectSVL, string, sizeof(string), "INSERT INTO `accounts` (`Name`, `Level`, `Skin`, `Sex`, `Pass`, `Email`) VALUES ('%s', '%d', '%d', '%d', '%s', '%s')", GN(playerid), Player[playerid][pLevel], Player[playerid][pSkin], Player[playerid][pSex], Player[playerid][pPass], Player[playerid][pEmail]);
mysql_function_query(ConnectSVL, string, true, "Registr", "d", playerid);
Login[playerid] = true;
SpawnPlayer(playerid);
SCM(playerid,-1,"Вы успешно зарегистрировались");
}
}
return true;
}
