Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-------------------------------------------------------------------//
- //**************************** INCLUDES *****************************//
- //-------------------------------------------------------------------//
- #include <a_samp>
- #include <crashdetect>
- #include <YSI\y_iterate>
- #include <a_mysql>
- #include <a_mysql_yinline>
- #include <CTime>
- #include <Pawn.CMD>
- #include <sscanf2>
- //-------------------------------------------------------------------//
- //************************* DEFINIÇÕES ******************************//
- //********************* Você pode alterar ***************************//
- //-------------------------------------------------------------------//
- // --> Configurações
- #define SERVER_NAME ("EasyWay")
- #define SERVER_VERSION ("0.1")
- #define MAX_LOGIN_ATTEMPTS (3) // --> Máximo de tentativas para acertar a senha
- #define MAX_CONNECTIONS_FROM_IP (3) // --> Máximo de IPs conectados ao mesmo tempo
- #define MINUTES_TO_LOGIN (5) // --> Em minutos, tempo limite para o jogador se logar / registrar.
- // --> Mensagens
- #define MSG_CMD_WITHOUT_PERMISSION "Você não tem permissão para usar este comando."
- #define MSG_PLAYER_OFF "Jogador não conectado."
- // --> Cores
- #define COLOR_BLUE (0x2641FEFF)
- #define COLOR_GREY (0xAFAFAFFF)
- #define COLOR_LIGHTRED (0xFF6347FF)
- #define COLOR_LIGHTBLUE (0x33CCFFAA)
- #define COLOR_LIGHTGREEN (0x66ff66FF)
- #define COLOR_CLIENT (0xAAC4E5FF)
- #define COLOR_TEAL (0x00A180FF)
- #define COLOR_ORANGE (0xFF9409FF)
- #define COLOR_PURPLE (0xD0AEEBFF)
- #define COLOR_OPENSERV (0xFFBD9DFF)
- #define COLOR_WHITE (0xFFFFFFFF)
- #define COLOR_PINK (0xFF66FFAA)
- #define COLOR_RED (0xFF0000AA)
- #define COLOR_YELLOW (0xFFFF00AA)
- #define COLOR_GREEN (0x33AA33AA)
- #define COLOR_LIGHTBLUE2 (0x99ccffAA)
- #define COLOR_BROWN (0xA8623EAA)
- #define COLOR_LIGHTBROWN (0xf4ac94AA)
- #define COLOR_LIGHTBROWN2 (0xc7a6afAA)
- // --> Cores para dialogs e afins
- #define COLOR_TITLE_DIALOG "{00a180}"
- #define COLORT_GREEN "{49ad00}"
- #define COLORT_YELLOW "{fff600}"
- #define COLORT_WHITE "{ffffff}"
- #define COLORT_LIGHTRED "{e44235}"
- #define COLORT_ORANGE "{ff9409}"
- #define COLORT_ORANGE2 "{f2bb73}"
- #define COLORT_GREY "{a4a4a4}"
- //-------------------------------------------------------------------//
- //************************ !DEFINIÇÕES! *****************************//
- //******************** Cuidado ao alterar ***************************//
- //-------------------------------------------------------------------//
- #define DIALOG_REGISTER (1) // até 20
- #define DIALOG_LOGIN (21) // até 24
- #define DIALOG_KICK (25)
- #define DIALOG_MESSAGE (26)
- #define DIALOG_UNBAN (27)
- #define sendServerMessage(%0,%1) \
- sendClientMessageEx(%0, COLOR_TEAL, "[SERVER]:{FFFFFF} "%1)
- #define sendSyntaxMessage(%0,%1) \
- sendClientMessageEx(%0, COLOR_GREY, "[USO CORRETO]:{FFFFFF} "%1)
- #define sendErrorMessage(%0,%1) \
- sendClientMessageEx(%0, COLOR_LIGHTRED, "[ERRO]:{FFFFFF} "%1)
- #define sendAdminAction(%0,%1) \
- sendClientMessageEx(%0, COLOR_CLIENT, "[ADMIN]:{FFFFFF} "%1)
- #define sendWarningMessage(%0,%1) \
- sendClientMessageEx(%0, COLOR_YELLOW, "[AVISO]: "%1)
- #define MENU_LOGIN_INDEX (1)
- #define MENU_LOGIN_REGISTER (2)
- #define MENU_LOGIN_REGISTER_STAGE_1 (3)
- #define MENU_LOGIN_REGISTER_STAGE_2 (4)
- #define MENU_LOGIN_REGISTER_STAGE_3 (5)
- //-------------------------------------------------------------------//
- //*************************** VARIÁVEIS *****************************//
- //-------------------------------------------------------------------//
- new Dialog[2048],
- String[1024],
- Query[1024],
- MySQL:MySQL_Connection = MYSQL_INVALID_HANDLE;
- enum enum_Player
- {
- // Data
- ORM:pORM,
- pAccountID,
- pName[24],
- pPassword[65],
- pEmail[64],
- pRegisterDate,
- pLastLogin,
- pAdmin,
- // Non-data
- pDialogID,
- bool:pKicked,
- bool:pLogged,
- pMaxLoginAttempts,
- pTimerPlayer,
- pIP[64],
- pTimeToLogin,
- // Registro
- registerPassword[30]
- }
- new Player[MAX_PLAYERS][enum_Player];
- //-------------------------------------------------------------------//
- //**************************** FORWARDS *****************************//
- //-------------------------------------------------------------------//
- forward KickTimer(playerid);
- forward OnPlayerDataLoaded(playerid);
- forward OnPlayerRegister(playerid);
- forward OnPlayerUpdateEx(playerid);
- forward TimerOneMinute();
- //-------------------------------------------------------------------//
- main()
- {
- print("\n----------------------------------");
- printf("%s [v%s]", SERVER_NAME, SERVER_VERSION);
- print("----------------------------------\n");
- }
- public OnGameModeInit()
- {
- print("[MySQL] Estabelecendo conexão com o servidor..");
- MySQL_Connection = mysql_connect_file("mysql_connection.ini");
- mysql_log(ALL);
- if(MySQL_Connection == MYSQL_INVALID_HANDLE)
- {
- print("[MySQL] Não foi possível realizar a conexão, desligando servidor..");
- SendRconCommand("exit");
- }
- else
- print("[MySQL] Conexão estabelecida com sucesso.");
- format(String, sizeof(String), "%s [v%s]", SERVER_NAME, SERVER_VERSION);
- SetGameModeText(String);
- SetTimer("TimerOneMinute", 1000*60, true);
- AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
- return 1;
- }
- public OnGameModeExit()
- {
- mysql_close(MySQL_Connection);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- static connecting_ip[64];
- GetPlayerIp(playerid, connecting_ip, 64);
- if(getNumberOfPlayersOnThisIP(connecting_ip) > MAX_CONNECTIONS_FROM_IP)
- return Kick(playerid);
- if(!IsPlayerNPC(playerid))
- {
- SetSpawnInfo(playerid, 0, 23, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
- clearPlayerVars(playerid);
- loadPlayer(playerid);
- Player[playerid][pTimerPlayer] = SetTimerEx("OnPlayerUpdateEx", 1000, true, "i", playerid);
- }
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- if(!IsPlayerNPC(playerid))
- {
- TogglePlayerSpectating(playerid, true);
- InterpolateCameraPos(playerid, 1350.289306, -1399.634887, 39.952976, 1346.096069, -989.852233, 74.761276, 1000*40);
- InterpolateCameraLookAt(playerid, 1350.505981, -1394.746826, 38.923583, 1348.108398, -985.276794, 74.885650, 1000*40);
- orm_setkey(Player[playerid][pORM], "Name");
- orm_select(Player[playerid][pORM], "OnPlayerDataLoaded", "d", playerid);
- }
- return 1;
- }
- public OnPlayerDataLoaded(playerid)
- {
- orm_setkey(Player[playerid][pORM], "ID");
- switch(orm_errno(Player[playerid][pORM]))
- {
- case ERROR_INVALID:
- {
- sendServerMessage(playerid, "Ocorreu algum problema, entre novamente..");
- kickEx(playerid);
- }
- case ERROR_OK: showLoginMenu(playerid, MENU_LOGIN_INDEX);
- case ERROR_NO_DATA: showLoginMenu(playerid, MENU_LOGIN_REGISTER);
- }
- mysql_format(MySQL_Connection, Query, sizeof(Query), "SELECT * FROM `banlist` WHERE (`AccountID` = '%d' OR `IP` = '%e') LIMIT 1", Player[playerid][pAccountID], Player[playerid][pIP]);
- inline OnPlayerBanned()
- {
- if(cache_num_rows()) // --> Checar se existe algum resultado
- {
- static IP[64], bannedBy[24], reason[30], date, banTime, banID;
- cache_get_value_name_int(0, "Date", date);
- cache_get_value_name_int(0, "BanTime", banTime);
- cache_get_value_name(0, "IP", IP);
- cache_get_value_name(0, "BannedBy", bannedBy);
- cache_get_value_name(0, "Reason", reason);
- cache_get_value_name_int(0, "BanID", banID);
- if(banTime > gettime())
- {
- // --> Ainda está banido
- Dialog[0] = EOS;
- format(Dialog, sizeof(Dialog),
- ""#COLORT_YELLOW"Você está banido!\n\n\
- "#COLORT_WHITE"Nick: "#COLORT_GREY"%s\n\
- "#COLORT_WHITE"IP: "#COLORT_GREY"%s\n\
- "#COLORT_WHITE"Banido pelo Administrador: "#COLORT_GREY"%s\n\
- "#COLORT_WHITE"Motivo: "#COLORT_GREY"%s\n\
- "#COLORT_WHITE"Ocorrido em: "#COLORT_GREY"%s\n\
- "#COLORT_WHITE"Banido até "#COLORT_GREY"%s",
- Player[playerid][pName], IP, bannedBy, reason, timestampToDate(date), timestampToDate(banTime));
- showPlayerDialogEx(playerid, DIALOG_KICK, DIALOG_STYLE_MSGBOX, ""#COLOR_TITLE_DIALOG"Banido", Dialog, "Fechar", "");
- kickEx(playerid);
- }
- else
- {
- // --> Banimento chegou ao fim
- format(Query, sizeof(Query), "DELETE FROM `banlist` WHERE `BanID` = '%d'", banID);
- mysql_tquery(MySQL_Connection, Query);
- }
- }
- }
- mysql_tquery_inline(MySQL_Connection, Query, using inline OnPlayerBanned);
- }
- public OnPlayerRegister(playerid)
- {
- sendServerMessage(playerid, "Conta criada com sucesso! Você foi o %dº a criar uma conta.", Player[playerid][pAccountID]);
- Player[playerid][pLogged] = true;
- TogglePlayerSpectating(playerid, false);
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- if(!IsPlayerNPC(playerid))
- {
- if(Player[playerid][pTimerPlayer] != 0)
- KillTimer(Player[playerid][pTimerPlayer]);
- if(Player[playerid][pLogged])
- orm_update(Player[playerid][pORM]);
- orm_destroy(Player[playerid][pORM]);
- clearPlayerVars(playerid);
- }
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- return 1;
- }
- public OnRconCommand(cmd[])
- {
- return 1;
- }
- public OnPlayerRequestSpawn(playerid)
- {
- if(!Player[playerid][pLogged])
- return false;
- return SpawnPlayer(playerid);
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- return 1;
- }
- public OnRconLoginAttempt(ip[], password[], success)
- {
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- return 1;
- }
- public OnPlayerUpdateEx(playerid)
- {
- if(!Player[playerid][pLogged])
- {
- Player[playerid][pTimeToLogin]++;
- if(Player[playerid][pTimeToLogin] > (MINUTES_TO_LOGIN*60))
- {
- sendWarningMessage(playerid, "Você foi kickado por exceder o limite de tempo sem realizar log-in.");
- kickEx(playerid);
- return true;
- }
- }
- return true;
- }
- public TimerOneMinute()
- {
- foreach(new i : Player)
- {
- if(!Player[i][pLogged])
- continue;
- orm_update(Player[i][pORM]);
- }
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
- public KickTimer(playerid)
- {
- if(Player[playerid][pKicked])
- return Kick(playerid);
- return false;
- }
- public OnPlayerCommandReceived(playerid, cmd[], params[], flags)
- {
- if(!Player[playerid][pLogged])
- return false;
- return true;
- }
- public OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags)
- {
- if(result == -1)
- {
- sendErrorMessage(playerid, "Comando \"/%s\" não existente.", cmd);
- return false;
- }
- return true;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(Player[playerid][pDialogID] != dialogid)
- {
- BOT_setPlayerBan(playerid, 30, "Dialog-Hack");
- sendWarningMessage(playerid, "Você foi kickado por suspeita de utilizar Dialog-Hack.");
- return true;
- }
- switch(dialogid)
- {
- case DIALOG_REGISTER:
- {
- if(!response)
- {
- sendServerMessage(playerid, "Tudo bem, volte quando quiser criar uma conta!");
- kickEx(playerid);
- return true;
- }
- showLoginMenu(playerid, MENU_LOGIN_REGISTER_STAGE_1);
- return true;
- }
- case DIALOG_REGISTER+1:
- {
- if(!response)
- {
- sendServerMessage(playerid, "Tudo bem, volte quando quiser criar uma conta!");
- kickEx(playerid);
- return true;
- }
- if(isnull(inputtext))
- return showLoginMenu(playerid, MENU_LOGIN_REGISTER_STAGE_1, ""#COLORT_LIGHTRED"Você precisa digitar uma senha!");
- if(!isValidPassword(inputtext))
- return showLoginMenu(playerid, MENU_LOGIN_REGISTER_STAGE_1, ""#COLORT_LIGHTRED"Senha inválida (somente 6 à 30 dígitos).");
- format(Player[playerid][registerPassword], 30, inputtext);
- showLoginMenu(playerid, MENU_LOGIN_REGISTER_STAGE_2);
- return true;
- }
- case DIALOG_REGISTER+2:
- {
- if(!response)
- {
- Player[playerid][registerPassword][0] = EOS;
- showLoginMenu(playerid, MENU_LOGIN_REGISTER_STAGE_1);
- return true;
- }
- if(isnull(inputtext))
- return showLoginMenu(playerid, MENU_LOGIN_REGISTER_STAGE_2, ""#COLORT_LIGHTRED"Você precisa confirmar sua senha!");
- if(!strcmp(Player[playerid][registerPassword], inputtext))
- showLoginMenu(playerid, MENU_LOGIN_REGISTER_STAGE_3);
- else
- showLoginMenu(playerid, MENU_LOGIN_REGISTER_STAGE_2, ""#COLORT_LIGHTRED"As senhas não combinam!");
- return true;
- }
- case DIALOG_REGISTER+3:
- {
- if(!response)
- {
- Player[playerid][registerPassword][0] = EOS;
- showLoginMenu(playerid, MENU_LOGIN_REGISTER_STAGE_1);
- return true;
- }
- if(isnull(inputtext))
- return showLoginMenu(playerid, MENU_LOGIN_REGISTER_STAGE_3, ""#COLORT_LIGHTRED"Você precisa digitar algum e-mail!");
- if(!isValidEmail(inputtext))
- return showLoginMenu(playerid, MENU_LOGIN_REGISTER_STAGE_3, ""#COLORT_LIGHTRED"Digite um e-mail válido!");
- if(SQL_verifyEmail(inputtext))
- return showLoginMenu(playerid, MENU_LOGIN_REGISTER_STAGE_3, ""#COLORT_LIGHTRED"Este e-mail já está em uso.");
- // --> Registro concluido
- SHA256_PassHash(Player[playerid][registerPassword], "EveryBodyHatesCris", Player[playerid][pPassword], 65);
- format(Player[playerid][pEmail], 64, inputtext);
- Player[playerid][pRegisterDate] = gettime();
- Player[playerid][pLastLogin] = gettime();
- orm_insert(Player[playerid][pORM], "OnPlayerRegister", "d", playerid);
- }
- case DIALOG_LOGIN:
- {
- if(!response)
- {
- sendServerMessage(playerid, "Volte sempre.");
- kickEx(playerid);
- return true;
- }
- if(isnull(inputtext))
- return showLoginMenu(playerid, MENU_LOGIN_INDEX, ""#COLORT_LIGHTRED"Digite sua senha!");
- static hash[65];
- SHA256_PassHash(inputtext, "EveryBodyHatesCris", hash, 65);
- if(!strcmp(hash, Player[playerid][pPassword]))
- {
- Player[playerid][pLogged] = true;
- sendServerMessage(playerid, "Logado com suceso!");
- sendServerMessage(playerid, "Seu último login foi em %s.", timestampToDate(Player[playerid][pLastLogin]));
- Player[playerid][pLastLogin] = gettime();
- TogglePlayerSpectating(playerid, false);
- }
- else
- {
- Player[playerid][pMaxLoginAttempts]++;
- if(Player[playerid][pMaxLoginAttempts] == MAX_LOGIN_ATTEMPTS)
- {
- sendWarningMessage(playerid, "Você foi kickado por excessos de tentativas.");
- kickEx(playerid);
- }
- else showLoginMenu(playerid, MENU_LOGIN_INDEX, ""#COLORT_LIGHTRED"Senha inválida.");
- }
- return true;
- }
- case DIALOG_UNBAN:
- {
- if(!response)
- {
- DeletePVar(playerid, "BanID");
- DeletePVar(playerid, "params");
- return true;
- }
- static banID, params[64];
- banID = GetPVarInt(playerid, "BanID");
- GetPVarString(playerid, "params", params, sizeof(params));
- switch(listitem)
- {
- case 0: // Unban Account
- {
- format(Query, sizeof(Query), "UPDATE `banlist` SET `AccountID` = '-1' WHERE `BanID` = '%d'", banID);
- mysql_tquery(MySQL_Connection, Query);
- sendAdminAction(playerid, "Você desbaniu a conta \"%s\".", params);
- }
- case 1: // Unban IP
- {
- format(Query, sizeof(Query), "UPDATE `banlist` SET `IP` = 'N/A' WHERE `BanID` = '%d'", banID);
- mysql_tquery(MySQL_Connection, Query);
- sendAdminAction(playerid, "Você desbaniu o IP \"%s\".", params);
- }
- case 2: // Unban all
- {
- format(Query, sizeof(Query),"DELETE FROM `banlist` WHERE `BanID` = '%d'", banID);
- mysql_tquery(MySQL_Connection, Query);
- sendAdminAction(playerid, "Você desbaniu tudo de \"%s\".", params);
- }
- }
- return true;
- }
- }
- return false;
- }
- //-------------------------------------------------------------------//
- //*************************** COMANDOS ******************************//
- //-------------------------------------------------------------------//
- CMD:setadmin(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid))
- return sendErrorMessage(playerid, MSG_CMD_WITHOUT_PERMISSION);
- static id, level;
- if(sscanf(params, "ui", id, level))
- return sendSyntaxMessage(playerid, "/setadmin <playerid/nick> <level>");
- if(id == INVALID_PLAYER_ID)
- return sendErrorMessage(playerid, MSG_PLAYER_OFF);
- if(!(level >= 0 && level <= 5))
- return sendSyntaxMessage(playerid, "/setadmin <playerid/nick> <level 0 a 5>");
- Player[id][pAdmin] = level;
- sendAdminAction(id, "%s setou você de level %d de Administrador.", Player[playerid][pName], level);
- sendAdminAction(playerid, "Você setou %s de level %d de Administrador.", Player[id][pName], level);
- return true;
- }
- CMD:ban(playerid, params[])
- {
- if(Player[playerid][pAdmin] < 1)
- return sendErrorMessage(playerid, MSG_CMD_WITHOUT_PERMISSION);
- static id, dias, reason[30];
- if(sscanf(params, "uds[30]", id, dias, reason))
- return sendSyntaxMessage(playerid, "/ban <playerid/nick> <dias> <motivo>");
- if(id == INVALID_PLAYER_ID)
- return sendErrorMessage(playerid, MSG_PLAYER_OFF);
- sendClientMessageToAllEx(COLOR_LIGHTRED, "[ADMIN]: %s foi banido pelo Admin %s por %d dias, motivo: %s", Player[id][pName], Player[playerid][pName], dias, reason);
- setPlayerBan(playerid, id, dias, reason);
- return true;
- }
- CMD:unban(playerid, params[])
- {
- if(Player[playerid][pAdmin] < 1)
- return sendErrorMessage(playerid, MSG_CMD_WITHOUT_PERMISSION);
- if(isnull(params))
- return sendSyntaxMessage(playerid, "/unban <accountid ou ip>");
- mysql_format(MySQL_Connection, Query, sizeof(Query), "SELECT * FROM `banlist` WHERE (`AccountID` = '%d' OR `IP` = '%e') LIMIT 1", strval(params), params);
- inline UnbanPlayer(tmp[])
- {
- if(cache_num_rows())
- {
- static banID, accountID, IP[64];
- cache_get_value_name_int(0, "BanID", banID);
- cache_get_value_name_int(0, "AccountID", accountID);
- cache_get_value_name(0, "IP", IP);
- SetPVarInt(playerid, "BanID", banID);
- SetPVarString(playerid, "params", tmp);
- format(Dialog, sizeof(Dialog), "Desbanir Conta "#COLORT_GREY"[%d]\n"#COLORT_WHITE"Desbanir IP "#COLORT_GREY"[%s]\n"#COLORT_WHITE"Desbanir ambos", accountID, IP);
- showPlayerDialogEx(playerid, DIALOG_UNBAN, DIALOG_STYLE_LIST, ""#COLOR_TITLE_DIALOG"Unban", Dialog, "Selecionar", "Cancelar");
- }
- else sendErrorMessage(playerid, "Não foi possivel encontrar \"%s\" no banco de dados.", params);
- }
- mysql_tquery_inline(MySQL_Connection, Query, using inline UnbanPlayer, "s", params);
- return true;
- }
- //-------------------------------------------------------------------//
- //**************************** FUNÇÕES ******************************//
- //-------------------------------------------------------------------//
- // --> Player
- stock loadPlayer(playerid)
- {
- GetPlayerName(playerid, Player[playerid][pName], 24);
- GetPlayerIp(playerid, Player[playerid][pIP], 64);
- new ORM:ormid = Player[playerid][pORM] = orm_create("players");
- orm_addvar_int(ormid, Player[playerid][pAccountID], "ID");
- orm_addvar_string(ormid, Player[playerid][pName], 24, "Name");
- orm_addvar_string(ormid, Player[playerid][pPassword], 65, "Password");
- orm_addvar_string(ormid, Player[playerid][pEmail], 64, "Email");
- orm_addvar_int(ormid, Player[playerid][pLastLogin], "LastLogin");
- orm_addvar_int(ormid, Player[playerid][pRegisterDate], "RegisterDate");
- orm_addvar_int(ormid, Player[playerid][pAdmin], "Admin");
- }
- stock showLoginMenu(playerid, menuid, message[] = "")
- {
- switch(menuid)
- {
- case MENU_LOGIN_INDEX:
- {
- format(String, sizeof(String), "%s\n\n", message);
- format(Dialog, sizeof(Dialog), ""#COLORT_WHITE"Bem-vindo novamente "#COLORT_YELLOW"%s!\n\n%s"#COLORT_WHITE"Digite sua senha para logar:", Player[playerid][pName], (isnull(message) ? "" : String));
- showPlayerDialogEx(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, ""#COLOR_TITLE_DIALOG"Login", Dialog, "Entrar", "Sair");
- }
- case MENU_LOGIN_REGISTER:
- {
- format(Dialog, sizeof(Dialog), ""#COLORT_WHITE"Bem-vindo "#COLORT_YELLOW"%s!\n\n"#COLORT_WHITE"Vejo que você não tem uma conta, vamos criar uma?", Player[playerid][pName]);
- showPlayerDialogEx(playerid, DIALOG_REGISTER, DIALOG_STYLE_MSGBOX, ""#COLOR_TITLE_DIALOG"Registro", Dialog, "Sim", "Não");
- }
- case MENU_LOGIN_REGISTER_STAGE_1:
- {
- format(String, sizeof(String), "%s\n\n", message);
- format(Dialog, sizeof(Dialog), "%s"COLORT_WHITE"Para começar, digite uma senha de 6 à 30 dígitos:", (isnull(message) ? "" : String));
- showPlayerDialogEx(playerid, DIALOG_REGISTER+1, DIALOG_STYLE_PASSWORD, ""#COLOR_TITLE_DIALOG"Registro [1/3]", Dialog, "Prosseguir", "Sair");
- }
- case MENU_LOGIN_REGISTER_STAGE_2:
- {
- format(String, sizeof(String), "%s\n\n", message);
- format(Dialog, sizeof(Dialog), "%s"COLORT_WHITE"Agora para confirmar, digite novamente a senha escolhida:", (isnull(message) ? "" : String));
- showPlayerDialogEx(playerid, DIALOG_REGISTER+2, DIALOG_STYLE_PASSWORD, ""#COLOR_TITLE_DIALOG"Registro [2/3]", Dialog, "Prosseguir", "Voltar");
- }
- case MENU_LOGIN_REGISTER_STAGE_3:
- {
- format(String, sizeof(String), "%s\n\n", message);
- format(Dialog, sizeof(Dialog), "%s"COLORT_WHITE"Para terminar, digite um e-mail válido:", (isnull(message) ? "" : String));
- showPlayerDialogEx(playerid, DIALOG_REGISTER+3, DIALOG_STYLE_INPUT, ""#COLOR_TITLE_DIALOG"Registro [3/3]", Dialog, "Concluir", "Voltar");
- }
- }
- return true;
- }
- stock clearPlayerVars(playerid)
- {
- // Data
- Player[playerid][pName][0] = EOS;
- Player[playerid][pAccountID] = 0;
- Player[playerid][pPassword][0] = EOS;
- Player[playerid][pEmail][0] = EOS;
- Player[playerid][pRegisterDate] = 0;
- Player[playerid][pLastLogin] = 0;
- // Non-data
- Player[playerid][pKicked] = false;
- Player[playerid][pDialogID] = 0;
- Player[playerid][pLogged] = false;
- Player[playerid][pMaxLoginAttempts] = 0;
- Player[playerid][pIP][0] = EOS;
- Player[playerid][pTimerPlayer] = 0;
- Player[playerid][pTimeToLogin] = 0;
- // Registro
- Player[playerid][registerPassword][0] = EOS;
- }
- stock SQL_isPlayerBanned(playerid)
- {
- static Cache:result, exists;
- mysql_format(MySQL_Connection, Query, sizeof(Query), "SELECT * FROM `banlist` WHERE (`Name` = '%e' OR `IP` = '%e') LIMIT 1", Player[playerid][pName]);
- result = mysql_query(MySQL_Connection, Query, true);
- exists = !!cache_num_rows();
- cache_delete(result);
- return exists;
- }
- stock setPlayerBan(adminid, id, days, reason[])
- {
- static accountid;
- accountid = Player[id][pAccountID];
- if(accountid == 0)
- accountid = -1;
- days = gettime()+((60*60*24)*days);
- mysql_format(MySQL_Connection, Query, sizeof(Query), "INSERT INTO `banlist`(`AccountID`, `IP`, `Reason`, `Date`, `BannedBy`, `BanTime`) VALUES('%d', '%e', '%e', '%d', '%e', '%d')", accountid, Player[id][pIP], reason, gettime(), Player[adminid][pName], days);
- mysql_tquery(MySQL_Connection, Query);
- return kickEx(id);
- }
- stock BOT_setPlayerBan(id, days, reason[])
- {
- static accountid;
- accountid = Player[id][pAccountID];
- if(accountid == 0)
- accountid = -1;
- days = gettime()+((60*60*24)*days);
- mysql_format(MySQL_Connection, Query, sizeof(Query), "INSERT INTO `banlist`(`AccountID`, `IP`, `Reason`, `Date`, `BannedBy`, `BanTime`) VALUES('%d', '%e', '%e', '%d', 'BOT', '%d')", accountid, Player[id][pIP], reason, gettime(), days);
- mysql_tquery(MySQL_Connection, Query);
- return Kick(id);
- }
- // --> Utilidades
- stock sendClientMessageToAllEx(color, const str[], va_args<>)
- {
- va_format(String, 144, str, va_start<2>);
- return SendClientMessageToAll(color, String);
- }
- stock sendClientMessageEx(playerid, color, const str[], va_args<>)
- {
- va_format(String, 144, str, va_start<3>);
- return SendClientMessage(playerid, color, String);
- }
- stock showPlayerDialogEx(playerid, dialogid, style, caption[], info[], button1[], button2[])
- {
- Player[playerid][pDialogID] = dialogid;
- ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
- return dialogid;
- }
- stock kickEx(playerid)
- {
- if(Player[playerid][pKicked])
- return false;
- Player[playerid][pKicked] = true;
- SetTimerEx("KickTimer", 200, false, "d", playerid);
- return true;
- }
- stock isValidPassword(password[])
- {
- if(30 < strlen(password) || strlen(password) < 6)
- return false;
- return true;
- }
- stock SQL_verifyEmail(email[]) // Checar se o email já é usado, true = sim, false = não
- {
- static Cache:result, exists;
- mysql_format(MySQL_Connection, Query, sizeof(Query), "SELECT * FROM `players` WHERE `Email` = '%e' LIMIT 1", email);
- result = mysql_query(MySQL_Connection, Query, true);
- exists = !!cache_num_rows();
- cache_delete(result);
- return exists;
- }
- stock isValidEmail(email[])
- {
- static const ValidEmails[17][16] = {
- {"@gmail.com"},
- {"@hotmail.com.br"},
- {"@hotmail.com"},
- {"@globo.com"},
- {"@globomail.com"},
- {"@uol.com"},
- {"@outlook.com"},
- {"@live.com"},
- {"@msn.com"},
- {"@yahoo.com.br"},
- {"@ymail.com"},
- {"@rocketmail.com"},
- {"@ig.com.br"},
- {"@pop.com.br"},
- {"@bol.com.br"},
- {"@oi.com.br"},
- {"@r7.com"}
- };
- for(new i; i < sizeof ValidEmails; i++)
- if(strfind(email, ValidEmails[i], false) != -1)
- return true;
- return false;
- }
- stock timestampToDate(datetime, style = 0)
- {
- static tm<timestamp>;
- localtime(Time:datetime, timestamp);
- switch(style)
- {
- case 0: strftime(String, 64, "%d/%m/%Y às %X", timestamp);
- case 1: strftime(String, 64, "%d/%m/%Y", timestamp);
- }
- return String;
- }
- stock hideDialog(playerid)
- return showPlayerDialogEx(playerid, -1, DIALOG_STYLE_MSGBOX, " ", " ", " ", " ");
- stock getNumberOfPlayersOnThisIP(test_ip[]) // --> by maxips.pwn, atualizei para uma versão mais compacta
- {
- static against_ip[64], count;
- count = 0;
- foreach(new i : Player)
- {
- GetPlayerIp(i, against_ip, 64);
- if(!strcmp(against_ip, test_ip))
- count++;
- }
- return count;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement