• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Ошибка проверка почты при регистрации

s0lnc3v

Новичок
Да, опять я.
В общем, опять по уроке Leona. Делаю регистрацию, проверка пароля збс идёт, а вот с почтой проблемы. При проверке символов через regex_check вылетает ошибка(которая должна быть, если символы не схожи с ведёнными с regex_check).
Пытался переписать с пароля, но так же не работает.

Код:
// INCLUDES
#include <a_samp>
#include <fix>
#include <a_mysql>
#include <streamer>
#include <Pawn.CMD>
#include <sscanf2>
#include <Foreach>
#include <Pawn.Regex>
#include <crashdetect>
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// DEFINES
#define     MYSQL_HOST  "localhost"
#define     MYSQL_USER    "root"
#define     MYSQL_PASS  ""
#define     MYSQL_BASE  "sunRP"

#define     SCM         SendClientMessage
#define     SCMTA         SendClientMessageToAll
#define     SPD         ShowPlayerDialog
#define     DSI            DIALOG_STYLE_INPUT

#define     COLOR_WHITE 0xFFFFFF
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// ENUMES
enum player
{
    ID,
    NAME[MAX_PLAYER_NAME],
    PASSWORD[24],
    MAIL[64],
    REF,
}
enum dialogs
{
    DLG_NONE,
    DLG_REG,
    DLG_REGMAIL,
    DLG_REGREF,
    DLG_REGPOL,
    DLG_LOG,
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// NEW's
new player_info[MAX_PLAYERS][player];
new MySQL:dbHandle;
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

main()
{
    print("\n-------------------------");
    print(" Sun RolePlay | Sun RP");
    print("-------------------------\n");
}

public OnGameModeInit()
{
    SetGameModeText("Sun RolePlay");
    ConnectMySQL();
    return 1;
}
stock ConnectMySQL()
{
    dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_BASE);
    switch(mysql_errno())
    {
        case 0: print("MySQL: loaded");
        default: print("MySQL: NOT loaded!");
    }
    mysql_log(ERROR | WARNING);
    mysql_set_charset("cp1251");
}

public OnGameModeExit()
{
    return 1;
}

public OnPlayerRequestClass(playerid, classid)
{

}

public OnPlayerConnect(playerid)
{
    GetPlayerName(playerid, player_info[playerid][NAME], MAX_PLAYER_NAME);
    static const fmt_query[] = "SELECT `id` FROM `users` WHERE `Name` = '%s'";
    new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)];
    format(query, sizeof(query), fmt_query, player_info[playerid][NAME]);
    mysql_tquery(dbHandle, query, "CheckRegistration", "i", playerid);
    return 1;
}

forward CheckRegistration(playerid);
public CheckRegistration(playerid)
{
    new rows;
    cache_get_row_count(rows);
    if(rows) ShowLogin(playerid);
    else ShowRegistration(playerid);
}

stock ShowLogin(playerid)
{
    SCM(playerid, COLOR_WHITE, "Ïîêà!");
}

stock ShowRegistration(playerid)
{
    new dialog[469+(-2+MAX_PLAYER_NAME)];
    format(dialog, sizeof(dialog),
          "\n\
         {0091ff}%s, {FFFFFF}Äîáðî ïîæàëîâàòü íà {f6ef0b}Sun RolePlay!\n\
        {FFFFFF}Àêêàóíò ñ òàêèì íèêîì {ca0d22}íå {FFFFFF}çàðåãèñòðèðîâàí.\n\
        Äëÿ ïðîäîëæåíèÿ ââåäèòå ïàðîëü, êîòîðûé Âû áóäåòå èñïîëüçîâàòü â äàëüíåéøåì.\n\n\
        Ïðèäóìàéòå ïàðîëü ïîñëîæíåå, ÷òîáû Âàø àêêàóíò íå âçëîìàëè.\n\
        {0089ff}\t• {FFFFFF}Â ïàðîëü äîëæíî âõîäèòü îò 6 äî 24 ñèìâîëîâ.\n\
        {0089ff}\t• {FFFFFF}Ïàðîëü ìîæåò âêëþ÷àòü â ñåáÿ öèôðû.\n\
        {0089ff}\t• {FFFFFF}Ïàðîëü äîëæåí ñîñòîÿòü èç ëàòèíñêèõ ñèìâîëîâ.\n\n\
        ",
    player_info[playerid][NAME]
    );
    SPD(playerid, DLG_REG, DSI, "{FFFFFF}Ðåãèñòðàöèÿ • {ff9300}Ïàðîëü", dialog, "Äàëåå", "Âûõîä");
}

public OnPlayerDisconnect(playerid, reason)
{
    return 1;
}

public OnPlayerSpawn(playerid)
{
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    return 1;
}

public OnVehicleSpawn(vehicleid)
{
    return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
    return 1;
}

public OnPlayerText(playerid, text[])
{
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
    return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
    return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
    return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
    return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
    return 1;
}

public OnRconCommand(cmd[])
{
    return 1;
}

public OnPlayerRequestSpawn(playerid)
{
    return 1;
}

public OnObjectMoved(objectid)
{
    return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
    return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
    return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
    return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
    return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
    return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
    return 1;
}

public OnPlayerExitedMenu(playerid)
{
    return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
    return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
    return 1;
}

public OnPlayerUpdate(playerid)
{
    return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
    return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
    return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
    return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
        case DLG_REG:
        {
            if(response)
            {
                if(!strlen(inputtext))
                {
                    ShowRegistration(playerid);
                    return SCM(playerid, COLOR_WHITE, "{E00D18}[Îøèáêà] {FFFFFF}Âû íå ââåëè ïàðîëü!");
                }
                if(strlen(inputtext) < 6)
                {
                    ShowRegistration(playerid);
                    return SCM(playerid, COLOR_WHITE, "{E00D18}[Îøèáêà] {FFFFFF}Ïàðîëü ñëèøêîì ìàëåíüêèé!");
                }
                if(strlen(inputtext) > 24)
                {
                    ShowRegistration(playerid);
                    return SCM(playerid, COLOR_WHITE, "{E00D18}[Îøèáêà] {FFFFFF}Ïàðîëü ñëèøêîì äëèííûé!");
                }
                new regex:rg_passwordcheck = regex_new("^[a-zA-Z0-9]{1,}$");
                if(regex_check(inputtext, rg_passwordcheck))
                {
                    strmid(player_info[playerid][PASSWORD], inputtext, 0, strlen(inputtext), 24);
                     SPD(playerid, DLG_REGMAIL, DSI, "{FFFFFF}Ðåãèñòðàöèÿ • {ff9300}Ïî÷òà",
                     "{FFFFFF}Ââåäèòå Âàø äåéñòâóéùèé email-àäðåññ.\n\
                      Åñëè Âû ïîòåðÿåòå äîñòóï ê àêêàóíòó, òî âû ñìîæåòå åãî âîññòàíîâèòü\n\n\
                      \tÄîñòóïíûå ïî÷òû:\n\
                    {0089ff}\t• {96d7fb}gmail.com\n\
                    {0089ff}\t• {96d7fb}mail.ru\n\
                    {0089ff}\t• {96d7fb}yandex.ru",
                   "Äàëåå", "");
                }
                else
                {
                    ShowRegistration(playerid);
                    return SCM(playerid, COLOR_WHITE, "{E00D18}[Îøèáêà] {FFFFFF}Âû ââåëè çàïðåù¸ííûå ñèìâîëû!");
                }
                regex_delete(rg_passwordcheck);
            }
            else
            {
                SCM(playerid, COLOR_WHITE, "{E00D18}[Îøèáêà] {FFFFFF}Âû îòêàçàëèñü îò ðåãèñòðàöèè!");
                SCM(playerid, COLOR_WHITE, "×òîáû âûéòè èç èãðû, îòêðîéòå ÷àò è ââåäèòå: \"/q\"");
                return Kick(playerid);
            }
        }
        case DLG_REGMAIL:
        {
                if(!strlen(inputtext))
                {
                    SPD(playerid, DLG_REGMAIL, DSI, "{FFFFFF}Ðåãèñòðàöèÿ • {ff9300}Ïî÷òà",
                     "{E00D18}[Îøèáêà] {FFFFFF}Âû íå ââåëè ïî÷òó!\n\n\
                     {FFFFFF}Ââåäèòå Âàø äåéñòâóéùèé email-àäðåññ.\n\
                      Åñëè Âû ïîòåðÿåòå äîñòóï ê àêêàóíòó, òî âû ñìîæåòå åãî âîññòàíîâèòü\n\n\
                      \tÄîñòóïíûå ïî÷òû:\n\
                    {0089ff}\t• {96d7fb}gmail.com\n\
                    {0089ff}\t• {96d7fb}mail.ru\n\
                    {0089ff}\t• {96d7fb}yandex.ru",
                   "Äàëåå", "");
                }
                if(strlen(inputtext) < 9)
                {
                    SPD(playerid, DLG_REGMAIL, DSI, "{FFFFFF}Ðåãèñòðàöèÿ • {ff9300}Ïî÷òà",
                     "{E00D18}[Îøèáêà] {FFFFFF}Ïî÷òà ñëèøêîì êîðîòêàÿ!\n\n\
                     {FFFFFF}Ââåäèòå Âàø äåéñòâóéùèé email-àäðåññ.\n\
                      Åñëè Âû ïîòåðÿåòå äîñòóï ê àêêàóíòó, òî âû ñìîæåòå åãî âîññòàíîâèòü\n\n\
                      \tÄîñòóïíûå ïî÷òû:\n\
                    {0089ff}\t• {96d7fb}gmail.com\n\
                    {0089ff}\t• {96d7fb}mail.ru\n\
                    {0089ff}\t• {96d7fb}yandex.ru",
                   "Äàëåå", "");
                }
                new regex:rg_emailcheck = regex_new("^[a-zA-Z0-9.-_]$");
                if(regex_check(inputtext, rg_emailcheck))
                {
                    strmid(player_info[playerid][MAIL], inputtext, 0, strlen(inputtext), 64);
                    SPD(playerid, DLG_REGREF, DSI, "{FFFFFF}Ðåãèñòðàöèÿ • {ff9300}Ðåôåðàë",
                        "{FFFFFF}Åñëè Âû áûëè ïðèãëàøåíû íà ñåðâåð ñâîèì äðóãîì, òî ââåäèòå åãî íèê.\n\
                        Ïðè äîñòèæåíèè 5 óðîâíÿ âû îáà ïîëó÷èòå ïî {1b9e02}500.000$\n\
                        ",
                    "Äàëåå", "Ïðîïóñòèòü");
                }
                else
                {
                    SPD(playerid, DLG_REGMAIL, DSI, "{FFFFFF}Ðåãèñòðàöèÿ • {ff9300}Ïî÷òà",
                     "{E00D18}[Îøèáêà] {FFFFFF}Óêàæèòå äåéñòâóéùóþ ïî÷òó!\n\n\
                     {FFFFFF}Ââåäèòå Âàø äåéñòâóéùèé email-àäðåññ.\n\
                      Åñëè Âû ïîòåðÿåòå äîñòóï ê àêêàóíòó, òî âû ñìîæåòå åãî âîññòàíîâèòü\n\n\
                      \tÄîñòóïíûå ïî÷òû:\n\
                    {0089ff}\t• {96d7fb}gmail.com\n\
                    {0089ff}\t• {96d7fb}mail.ru\n\
                    {0089ff}\t• {96d7fb}yandex.ru",
                   "Äàëåå", "");
                }
                regex_delete(rg_emailcheck);
        }
        case DLG_REGREF:
        {
            if(response)
            {
                new regex:rg_refcheck = regex_new("^[a-zA-Z_](3,24$");
                if(regex_check(inputtext, rg_refcheck))
                {
                    static const fmt_query[] = "SELECT * FROM `users` WHERE `Name` = '%s'";
                    new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)];
                    format(query, sizeof(query), fmt_query, inputtext);
                    mysql_tquery(dbHandle, query, "CheckRef", "i", playerid, inputtext);
                    return 1;
                }
                regex_delete(rg_refcheck);
            }
            else
            {
                SPD(playerid, DLG_REGPOL, DSI, "{FFFFFF}Ðåãèñòðàöèÿ • {ff9300}Ïîë",
                "{ffffff}Âûáåðèòå âàø ïîë: (íå ðåêîìåíäóþ áûòü òðàíñîì :d)",
                "Äàëåå", "");
            }
        }
    }
    return 1;
}

forward CheckRef(playerid, ref[]);
public CheckRef(playerid, ref[])
{
    new rows;
    cache_get_row_count(rows);
    if(rows)
    {
        new refid;
        cache_get_value_name_int(0, "id", refid);
        player_info[playerid][REF] = refid;
        SCM(playerid, COLOR_WHITE, "çáñ");
    }
    else
    {
        SPD(playerid, DLG_REGREF, DSI, "{FFFFFF}Ðåãèñòðàöèÿ • {ff9300}Ðåôåðàë",
        "{E00D18}[Îøèáêà] {FFFFFF}Àêêàóíòà ñ òàêèì íèêîì íå ñóùåñòâóåò!\n\n\
        {FFFFFF}Åñëè Âû áûëè ïðèãëàøåíû íà ñåðâåð ñâîèì äðóãîì, òî ââåäèòå åãî íèê.\n\
        Ïðè âàøåì äîñòèæåíèè 5 óðîâíÿ âû îáà ïîëó÷èòå ïî {1b9e02}500.000$\n\
        ",
        "Äàëåå", "Ïðîïóñòèòü");
    }
    return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
    return 1;
}
 
Сверху Снизу