Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* --> News:
- Adicionado limite máximo de tentativas para acertar a rcon
- Callbacks "OnDayChange" e "OnMonthChange" adicionadas
- Salvamento do tempo jogado do jogador
- Função "showPlayerInfo" criada, ela é chamada pelo comando /info e em OnPlayerClickPlayer. Nessa função mostra
- todas as informações do player.
- */
- //-------------------------------------------------------------------//
- //**************************** INCLUDES *****************************//
- //-------------------------------------------------------------------//
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- //-------------------------------------------------------------------//
- //************************* 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.
- #define MAX_RCON_ATTEMPTS (3) // --> Máximo de tentativas para acertar a rcon
- // --> 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 dentre outras coisas
- #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)
- #define PATCH_SERVER "server.INI"
- //-------------------------------------------------------------------//
- //*************************** 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,
- pPlayed,
- // Non-data
- pDialogID,
- bool:pKicked,
- bool:pLogged,
- pAttemptsLogin,
- pAttemptsRcon,
- pTimerPlayer,
- pIP[64],
- pTimeToLogin,
- // Registro
- registerPassword[30]
- }
- new Player[MAX_PLAYERS][enum_Player];
- enum enum_Server
- {
- MonthBuilt[32],
- DayBuilt[32]
- }
- new Server[enum_Server];
- //-------------------------------------------------------------------//
- //**************************** FORWARDS *****************************//
- //-------------------------------------------------------------------//
- forward KickTimer(playerid);
- forward OnPlayerDataLoaded(playerid);
- forward OnPlayerRegister(playerid);
- forward OnPlayerUpdateEx(playerid);
- forward TimerOneMinute();
- forward OnMonthChange();
- forward OnDayChange();
- //-------------------------------------------------------------------//
- main()
- {
- print("n----------------------------------");
- printf("%s [v%s]", SERVER_NAME, SERVER_VERSION);
- print("----------------------------------n");
- INI_Load("server.INI");
- }
- 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!nn
- "#COLORT_WHITE"Nick: "#COLORT_GREY"%sn
- "#COLORT_WHITE"IP: "#COLORT_GREY"%sn
- "#COLORT_WHITE"Banido pelo Administrador: "#COLORT_GREY"%sn
- "#COLORT_WHITE"Motivo: "#COLORT_GREY"%sn
- "#COLORT_WHITE"Ocorrido em: "#COLORT_GREY"%sn
- "#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 OnPlayerRequestSpawn(playerid)
- {
- if(!Player[playerid][pLogged])
- return false;
- return SpawnPlayer(playerid);
- }
- public OnRconLoginAttempt(ip[], password[], success)
- {
- if(!success)
- {
- foreach(new i : Player)
- {
- if(!strcmp(ip, Player[i][pIP]))
- {
- Player[i][pAttemptsRcon]++;
- if(Player[i][pAttemptsRcon] > MAX_RCON_ATTEMPTS)
- {
- if(Player[i][pLogged])
- BOT_setPlayerBan(i, 30, "Rcon abuse");
- else
- Kick(i);
- break;
- }
- }
- }
- }
- 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;
- }
- }
- else
- {
- Player[playerid][pPlayed]++;
- }
- return true;
- }
- public TimerOneMinute()
- {
- foreach(new i : Player)
- {
- if(!Player[i][pLogged])
- continue;
- // --> Salvando todos os jogadores conectados
- orm_update(Player[i][pORM]);
- }
- static date[3];
- getdate(date[0], date[1], date[2]);
- format(String, sizeof(String), "%02d%d", date[1], date[0]);
- if(strcmp(String, Server[MonthBuilt], true))
- {
- new INI:iniFile = INI_Open(PATCH_SERVER);
- INI_SetTag(iniFile, "data");
- INI_WriteString(iniFile, "MonthBuilt", String);
- INI_Close(iniFile);
- CallLocalFunction("OnMonthChange", "");
- }
- format(String, sizeof(String), "%02d%02d%d", date[2], date[1], date[0]);
- if(strcmp(String, Server[DayBuilt], true))
- {
- new INI:iniFile = INI_Open(PATCH_SERVER);
- INI_SetTag(iniFile, "data");
- INI_WriteString(iniFile, "DayBuilt", String);
- INI_Close(iniFile);
- CallLocalFunction("OnDayChange", "");
- }
- INI_Load("server.INI");
- }
- public OnMonthChange()
- {
- // --> Alterou o mês, vamos deletar as contas inativas?
- print("Mudou o mês :DD");
- }
- public OnDayChange()
- {
- // --> alterou o dia, vamos dar salário a todos os trabalhadores?
- print("Mudou o dia :DD");
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- if(!Player[clickedplayerid][pLogged])
- return false;
- return showPlayerInfo(playerid, clickedplayerid);
- }
- 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");
- 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][pAttemptsLogin]++;
- if(Player[playerid][pAttemptsLogin] == 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;
- }
- public KickTimer(playerid)
- {
- if(Player[playerid][pKicked])
- return Kick(playerid);
- return false;
- }
- //-------------------------------------------------------------------//
- //*************************** COMANDOS ******************************//
- //-------------------------------------------------------------------//
- CMD:info(playerid)
- return showPlayerInfo(playerid, playerid);
- 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 ");
- if(id == INVALID_PLAYER_ID)
- return sendErrorMessage(playerid, MSG_PLAYER_OFF);
- if(!(level >= 0 && level 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");
- orm_addvar_int(ormid, Player[playerid][pPlayed], "Played");
- }
- stock showLoginMenu(playerid, menuid, message[] = "")
- {
- switch(menuid)
- {
- case MENU_LOGIN_INDEX:
- {
- format(String, sizeof(String), "%snn", message);
- format(Dialog, sizeof(Dialog), ""#COLORT_WHITE"Bem-vindo novamente "#COLORT_YELLOW"%s!nn%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!nn"#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), "%snn", 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), "%snn", 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), "%snn", 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;
- Player[playerid][pAdmin] = 0;
- Player[playerid][pPlayed] = 0;
- // Non-data
- Player[playerid][pKicked] = false;
- Player[playerid][pDialogID] = 0;
- Player[playerid][pLogged] = false;
- Player[playerid][pIP][0] = EOS;
- Player[playerid][pTimerPlayer] = 0;
- Player[playerid][pTimeToLogin] = 0;
- Player[playerid][pAttemptsLogin] = 0;
- Player[playerid][pAttemptsRcon] = 0;
- // Registro
- Player[playerid][registerPassword][0] = EOS;
- }
- 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);
- }
- stock showPlayerInfo(playerid, target)
- {
- Dialog[0] = EOS;
- format(String, sizeof(String), ""#COLORT_WHITE"Nick: "#COLORT_GREY"%s (ID de Conta: %d)n", Player[target][pName], Player[target][pAccountID]);
- strcat(Dialog, String);
- format(String, sizeof(String), ""#COLORT_WHITE"Registrado em: "#COLORT_GREY"%sn", timestampToDate(Player[target][pRegisterDate]));
- strcat(Dialog, String);
- format(String, sizeof(String), ""#COLORT_WHITE"E-mail: "#COLORT_GREY"%sn", Player[target][pEmail]);
- strcat(Dialog, String);
- format(String, sizeof(String), ""#COLORT_WHITE"Tempo de Jogo: "#COLORT_GREY"%s", convertToTime(Player[target][pPlayed]));
- strcat(Dialog, String);
- return showPlayerDialogEx(playerid, DIALOG_MESSAGE, DIALOG_STYLE_MSGBOX, ""#COLOR_TITLE_DIALOG"Informações da Conta", Dialog, "Fechar", "");
- }
- // --> Utilidades
- stock sendClientMessageToAllEx(color, const str[], va_args)
- {
- va_format(String, 144, str, va_start);
- return SendClientMessageToAll(color, String);
- }
- stock sendClientMessageEx(playerid, color, const str[], va_args)
- {
- va_format(String, 144, str, va_start);
- 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;
- 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;
- }
- INI:server[data](name[], value[])
- {
- INI_String("MonthBuilt", Server[MonthBuilt]);
- INI_String("DayBuilt", Server[DayBuilt]);
- return true;
- }
- stock convertToTime(n) // --> by DanDRT
- {
- static t[5];
- t[4] = n;
- t[0] = t[4] / 3600; // Hour
- t[1] = ((t[4] / 60) - (t[0] * 60)); // Minutes
- t[2] = (t[4] - ((t[0] * 3600) + (t[1] * 60))); // Seconds
- t[3] = (t[0] / 24); // Days
- if(t[3] > 0)
- t[0] = t[0] % 24,
- format(String, sizeof(String), "%dd, %02dh, %02dm e %02ds", t[3], t[0], t[1], t[2]);
- else if(t[0] > 0)
- format(String, sizeof(String), "%02dh %02dm e %02ds", t[0], t[1], t[2]);
- else if(t[1] > 0)
- format(String, sizeof(String), "%02dm e %02ds", t[1], t[2]);
- else
- format(String, sizeof(String), "%02ds", t[2]);
- return String;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement