s0lnc3v
Новичок
Да, опять я.
В общем, опять по уроке Leona. Делаю регистрацию, проверка пароля збс идёт, а вот с почтой проблемы. При проверке символов через regex_check вылетает ошибка(которая должна быть, если символы не схожи с ведёнными с regex_check).
Пытался переписать с пароля, но так же не работает.
В общем, опять по уроке 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;
}
